duncgibbs a9352d337d
Some checks failed
linting & formatting / build (push) Failing after 24s
way too many changes; multiplayer version, like, 0.6 or 0.7
2026-04-20 13:03:39 -05:00

62 lines
1.6 KiB
GDScript

class_name Building extends Node2D
@export var cost: int = 0
var is_placing: bool = false:
set(value):
is_placing = value
for child in get_children():
if child is Area2D:
child.monitoring = !is_placing
var starting_coord: Vector2i
var tile_rotation: Board.Direction = Board.Direction.UP
@onready var size_node: Control = %Size
func building_entered(body: Node2D) -> void:
if body is Citizen:
print("Activate building effect!")
func _on_building_area_entered(area: Area2D) -> void:
var tile = area.get_parent()
if tile is Ground and !is_placing:
tile.queue_free()
func get_rotation_count() -> int:
var rotation_count: int = 0
if tile_rotation == Board.Direction.UP:
rotation_count = 0
elif tile_rotation == Board.Direction.RIGHT:
rotation_count = 1
elif tile_rotation == Board.Direction.DOWN:
rotation_count = 2
elif tile_rotation == Board.Direction.LEFT:
rotation_count = 3
return rotation_count
func serialize() -> Dictionary:
var result = {}
result["scene_file_path"] = scene_file_path
result["starting_coord"] = starting_coord
result["tile_rotation"] = tile_rotation
result["cost"] = cost
result["player"] = null
if get("player") != null:
result["player"] = get("player").serialize()
return result
static func deserialize(data: Dictionary) -> Building:
var building: Building = load(data["scene_file_path"]).instantiate()
building.tile_rotation = data["tile_rotation"]
building.starting_coord = data["starting_coord"]
building.cost = data["cost"]
if data["player"] != null:
building.player = Player.deserialize(data["player"])
return building