46 lines
1.6 KiB
GDScript3
Raw Normal View History

2026-04-13 11:34:00 -05:00
extends Building
2026-04-13 11:34:00 -05:00
func can_citizen_enter(coord: Vector2i, direction: Board.Direction) -> bool:
var coord_adjustment := Board.get_next_direction(Board.Direction.UP, get_rotation_count())
var correct_heading := Board.get_next_direction(Board.Direction.DOWN, get_rotation_count())
return (
coord == starting_coord + Board.get_direction_vector(coord_adjustment)
and direction == correct_heading
)
2026-04-13 11:34:00 -05:00
func get_tile_coords() -> Array[Vector2i]:
var result: Array[Vector2i] = []
result.push_back(starting_coord)
result.push_back(
starting_coord + Vector2i(Vector2.RIGHT.rotated(deg_to_rad(90 * get_rotation_count())))
)
result.push_back(
starting_coord + Vector2i(Vector2.RIGHT.rotated(deg_to_rad(90 * get_rotation_count()))) * 2
)
result.push_back(
(
starting_coord
+ Vector2i(Vector2.RIGHT.rotated(deg_to_rad(90 * get_rotation_count())))
+ Vector2i(Vector2.UP.rotated(deg_to_rad(90 * get_rotation_count())))
)
)
2026-04-13 11:34:00 -05:00
return result
func get_direction_queue(_citizen: Citizen) -> Array[Board.Direction]:
return [
Board.get_next_direction(Board.Direction.RIGHT, get_rotation_count()),
Board.get_next_direction(Board.Direction.UP, get_rotation_count()),
Board.get_next_direction(Board.Direction.DOWN, get_rotation_count()),
Board.get_next_direction(Board.Direction.RIGHT, get_rotation_count()),
Board.get_next_direction(Board.Direction.UP, get_rotation_count())
]
func activate(citizen: Citizen) -> void:
citizen.money += 1 * (citizen.get_status_count(Citizen.Status.CAFFEINATED) + 1)
citizen.remove_all_statuses(Citizen.Status.CAFFEINATED)
citizen.play_money_animation()