42 lines
1.1 KiB
GDScript
42 lines
1.1 KiB
GDScript
extends Node2D
|
|
class_name Building
|
|
|
|
@export var current_grid_pos: Vector2i = Vector2i.ZERO:
|
|
set(value):
|
|
current_grid_pos = value
|
|
_on_grid_position_changed()
|
|
|
|
@export var direction: Vector2i = Vector2i.RIGHT:
|
|
set(value):
|
|
direction = value
|
|
_on_direction_changed()
|
|
|
|
var game_grid: GameGrid # = get_parent().get_node("GameGrid")
|
|
var tile_map: TileMapLayer
|
|
|
|
func _ready() -> void:
|
|
game_grid = get_tree().root.get_node("Node2D/GameGrid")
|
|
tile_map = game_grid.tile_map
|
|
|
|
func _on_grid_position_changed():
|
|
name = "Building_%s,%s" % [current_grid_pos.x, current_grid_pos.y]
|
|
pass
|
|
|
|
func _on_direction_changed():
|
|
pass
|
|
|
|
func can_accept_item() -> bool:
|
|
push_error("can_accept_item() must be overridden by class %s!" % name)
|
|
return false
|
|
|
|
# Accept item for movement
|
|
func handle_item_entry(item: Item, remaining_delta_from_previous: float = 0.0):
|
|
push_error("handle_item_entry() must be overridden by class %s!" % name)
|
|
|
|
#item.queue_free()
|
|
|
|
# Accept item directly (for item sink). Maybe use same method for both and
|
|
# just ignore delta?
|
|
func handle_item(item: Item):
|
|
push_error("handle_item() must be overridden by class %s!" % name)
|
|
#item.queue_free()
|