forked from MagicBane/Server
4.1 KiB
4.1 KiB
Building Handler Documentation
Overview
This document describes the database relationships and interactions for the dbBuildingHandler class. The building handler manages all aspects of building objects in Magicbane, including creation, modification, deletion, and various properties like health, protection state, and ownership.
Handler Class
File: src/engine/db/handlers/dbBuildingHandler.java
Class: dbBuildingHandler
Extends: dbHandlerBase
Database Tables
Main Building Table
- Table Name:
obj_building - Description: Core building information including location, mesh, health, and ownership details
- Columns:
- UID (Primary Key)
- parent (Foreign Key to obj_zone)
- ownerUUID (Foreign Key to obj_character)
- name
- meshUUID (Foreign Key to static_building_mesh)
- locX, locY, locZ (Location coordinates)
- meshScale
- currentHP
- protectionState
- currentGold
- rank
- upgradeDate
- blueprintUUID (Foreign Key to static_building_blueprint)
- w, rotY (Rotation data)
- isDeleted
Related Tables
| Table Name | Description | Relationship |
|---|---|---|
dyn_building_friendslist |
Stores friends that can access this building | BuildingID → obj_building.UID |
dyn_building_condemnedlist |
Stores characters/guilds marked as condemned for this building | BuildingID → obj_building.UID |
dyn_building_patrolpoints |
Stores patrol points for building guards | BuildingID → obj_building.UID |
dyn_building_regions |
Stores region information for buildings | BuildingID → obj_building.UID |
Key Queries
Create Building (Stored Procedure)
CALL `building_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
File: dbBuildingHandler.java, Line ~38
Get All Buildings for Zone
SELECT * FROM `obj_building` WHERE `parent` = ?
File: dbBuildingHandler.java, Line ~91
Get Building by UUID
SELECT * FROM `obj_building` WHERE `UID` = ?
File: dbBuildingHandler.java, Line ~110
Get Building by Mesh
SELECT * FROM `obj_building` WHERE `meshUUID` = ?
File: dbBuildingHandler.java, Line ~135
Relationships
- Building to Zone: Many-to-one relationship through
obj_building.parentfield - Building to Owner: Many-to-one relationship through
obj_building.ownerUUIDfield (references obj_character.UID) - Building to Blueprint: Many-to-one relationship through
obj_building.blueprintUUIDfield (references static_building_blueprint.Rank0UUID) - Building to Mesh: Many-to-one relationship through
obj_building.meshUUIDfield (references static_building_mesh.UID) - Building to Friends List: One-to-many relationship through
dyn_building_friendslist.BuildingID - Building to Condemned List: One-to-many relationship through
dyn_building_condemnedlist.BuildingID - Building to Patrol Points: One-to-many relationship through
dyn_building_patrolpoints.BuildingID - Building to Regions: One-to-many relationship through
dyn_building_regions.BuildingID
Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|---|---|---|
parent |
obj_building.parent |
Zone parent ID |
ownerUUID |
obj_building.ownerUUID |
Owner character UID |
name |
obj_building.name |
Building name |
meshUUID |
obj_building.meshUUID |
Mesh identifier |
locX |
obj_building.locX |
X coordinate |
locY |
obj_building.locY |
Y coordinate |
locZ |
obj_building.locZ |
Z coordinate |
meshScale |
obj_building.meshScale |
Scale of mesh |
currentHP |
obj_building.currentHP |
Current health points |
protectionState |
obj_building.protectionState |
Protection state |
currentGold |
obj_building.currentGold |
Current gold amount |
rank |
obj_building.rank |
Building rank |
upgradeDate |
obj_building.upgradeDate |
Upgrade timestamp |
blueprintUUID |
obj_building.blueprintUUID |
Blueprint identifier |
w |
obj_building.w |
Rotation data |
rotY |
obj_building.rotY |
Y rotation angle |