generated from krampus/template-godot4
46 lines
1.6 KiB
GDScript
46 lines
1.6 KiB
GDScript
extends Building
|
|
|
|
|
|
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
|
|
)
|
|
|
|
|
|
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())))
|
|
)
|
|
)
|
|
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 += 2 ** citizen.get_status_count(Citizen.Status.CAFFEINATED) + 1
|
|
citizen.remove_all_statuses(Citizen.Status.CAFFEINATED)
|
|
citizen.play_money_animation()
|