extends Node signal changed_resource @export var resources := {} func _on_gained_resource(res: GameResource) -> void: print("Gained Resource: %s" % res) var changed_resources := { res: res.pickup_value } changed_resource.emit(ResourceChangedSignal.new(changed_resources)) func pickup(resource: GameResource) -> void: if not resources.has(resource): resources[resource] = 0 var pickup_amount = min(resource.pickup_value, get_resource_limit(resource) - resources[resource]) if pickup_amount > 0: resources[resource] += pickup_amount var changed_resources := { resource: pickup_amount } changed_resource.emit(ResourceChangedSignal.new(changed_resources)) func has_amount(res: GameResource, amount: int) -> bool: return resources[res] >= amount if resources.has(res) else false func has_resources(cost: Dictionary) -> bool: return cost.keys().reduce(func(accum, res): return accum and has_amount(res, cost[res]), true) func use_resources(cost: Dictionary) -> void: var changed_resources := { } for res in cost.keys(): resources[res] -= cost[res] changed_resources[res] = -cost[res] changed_resource.emit(ResourceChangedSignal.new(changed_resources)) func get_resource_limit(resource: GameResource) -> int: return resource.storage_max * (1 + BuildingManager.get_storage_count_for_resource(resource)) #func _on_timer_timeout() -> void: #var corrupted_resources := Grid.get_corrupted_resources() #if corrupted_resources.size() > 0: #var changed_resources := {} #for corrupted_resource: CellData in corrupted_resources: #var res: GameResource = corrupted_resource.get_resource() #if not resources.has(res): #resources[res] = 0 #resources[res] += res.pickup_value #changed_resources[res] = resources[res] #changed_resource.emit(ResourceChangedSignal.new(changed_resources))