Files
Corupture/scripts/cell_data.gd
2024-03-29 10:26:16 -05:00

62 lines
1.7 KiB
GDScript

class_name CellData
extends Resource
const BUILD = preload("res://data/interactions/build/build.tres")
const GATHER = preload("res://data/interactions/gather/gather.tres")
@export var layer_info: Dictionary = {
Constants.TilemapLayers.CORRUPTION: false
}
var _pos: Vector2i
var interaction_display: ProgressBar
func _to_string() -> String:
return "{%s %s}" % [_pos, layer_info]
func _init(pos: Vector2i) -> void:
_pos = pos
func change_layer(layer: int, data: Variant) -> bool:
if layer_info.has(layer) and layer_info[layer] == data:
return false
layer_info[layer] = data
return true
func change_resource(data: GameResource) -> void:
layer_info[Constants.TilemapLayers.ENVIRONMENT] = data
func change_building(data: BuildingBase) -> void:
layer_info[Constants.TilemapLayers.BUILDINGS] = data
func get_resource() -> GameResource:
return layer_info[Constants.TilemapLayers.ENVIRONMENT] as GameResource
func has_resource() -> bool:
return has_layer(Constants.TilemapLayers.ENVIRONMENT)
func get_building() -> BuildingBase:
return layer_info[Constants.TilemapLayers.BUILDINGS] as BuildingBase
func has_building() -> bool:
return has_layer(Constants.TilemapLayers.BUILDINGS)
func is_corrupted() -> bool:
return layer_info[Constants.TilemapLayers.CORRUPTION]
func has_layer(layer: int) -> bool:
return layer_info.has(layer)
func is_interactable() -> bool:
return has_resource() or has_building()
func is_buildable() -> bool:
return not has_resource() and not has_building()
func get_interaction_options() -> Array[Interaction]:
var interactions: Array[Interaction] = []
if has_resource():
interactions.append(GATHER)
if not has_building():
interactions.append(BUILD)
return interactions