Building Model API Reference
The Building Model manages buildings, their properties, equipment, and job positions in the simulation. It handles building-character interactions and maintains building state.
Overview
The Building system consists of several key components: - Building management with physical properties and locations - Equipment handling within buildings - Job position management - Building-character interactions - Building state persistence
Building Class
The main Building class handles building operations and state management.
Properties
guid
: Unique identifier for the buildingname
: Building nameposition
: Building coordinates (xMin, yMin, xMax, yMax)money
: Building's financial balancedescription
: Text describing the buildinginstruction
: Building operation instructionsequipments
: Dictionary of equipment within the buildingjob_positions
: Dictionary of available jobs
Methods
Building Management
def cordinate_in_building(self, x: int, y: int) -> bool
Checks if given coordinates are within building boundaries.
def random_pos_inside(self) -> tuple[int, int]
Returns random valid coordinates inside the building.
Equipment Management
def add_equipments(self, equipments: dict) -> dict
Adds new equipment to the building.
def update_equipments(self, equipments: dict) -> None
Updates existing equipment information.
def equipment_instr(self, equip_name: str) -> str
Returns instructions for specific equipment.
Job Management
def add_jobs(self, jobs: dict) -> dict
Adds new job positions to the building.
def update_jobs(self, jobs: dict) -> None
Updates existing job information.
BuildingList Class
Manages collections of buildings in the simulation.
Methods
def add_building(self, building: Building) -> None
Adds a building to the list.
def get_building_by_id(self, building_id: str) -> Optional[Building]
Retrieves building by ID.
def get_building_by_name(self, building_name: str) -> Optional[Building]
Retrieves building by name.
def get_building_by_pos(self, x: int, y: int) -> Optional[Building]
Retrieves building at specified coordinates.
InBuildingEquip Class
Manages equipment within buildings.
Properties
name
: Equipment nameinstruction
: Usage instructionsstatus
: Current equipment statusinteractable
: Whether equipment can be interacted withfunctions
: Available interaction functions
Methods
def random_choose(self) -> int
Randomly selects an instance from similar equipment.
def modify_internal_properties(self, prop: dict) -> None
Updates equipment properties.
Job Class
Manages job positions within buildings.
Properties
name
: Job titledescription
: Job descriptionsalary
: Job salarynum_positions
: Number of available positionsapplicants
: List of current applicants
Methods
def add_applicant(self, applicant) -> None
Adds new job applicant.
def remove_applicant(self, applicant) -> None
Removes job applicant.
Usage Example
# Create a new building
building = Building(
id=1,
name="Coffee Shop",
llm_cfg={...},
xMin=0, yMin=0, xMax=10, yMax=10,
description="A cozy coffee shop in town",
instruction="Serve coffee and snacks to customers",
equipments={
"coffee_machine": {
"name": "Coffee Machine",
"instruction": "Press button to brew coffee",
"status": "operational"
}
},
jobs={
"barista": {
"description": "Make and serve coffee",
"salary": 15.0,
"num_positions": 2
}
}
)
# Add equipment
building.add_equipments({
"cash_register": {
"name": "Cash Register",
"instruction": "Process payments",
"status": "operational"
}
})
# Check if position is inside building
is_inside = building.cordinate_in_building(5, 5)
# Get available jobs
available_jobs = building.available_jobs