Skip to content

Commit

Permalink
Allow cancellation of items in the production queue, closes #70
Browse files Browse the repository at this point in the history
  • Loading branch information
Scony committed Nov 19, 2023
1 parent e71705e commit d90dac7
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 2 deletions.
5 changes: 5 additions & 0 deletions source/match/data-model/Player.gd
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ var color = Color.WHITE
var _color_material = null


func add_resources(resources):
for resource in resources:
set(resource, get(resource) + resources[resource])


func has_resources(resources):
if FeatureFlags.allow_resources_deficit_spending:
return true
Expand Down
1 change: 1 addition & 0 deletions source/match/hud/ProductionQueue.gd
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ func _try_rendering_queue():

func _add_queue_element_node(queue_element):
var queue_element_node = ProductionQueueElement.instantiate()
queue_element_node.queue = _production_queue
queue_element_node.queue_element = queue_element
_queue_elements.add_child(queue_element_node)
_queue_elements.move_child(queue_element_node, 0)
Expand Down
4 changes: 4 additions & 0 deletions source/match/hud/ProductionQueueElement.gd
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
extends Button

var queue = null
var queue_element = null


func _ready():
if queue == null or queue_element == null:
return
queue_element.changed.connect(_on_queue_element_changed)
pressed.connect(func(): queue.cancel(queue_element))
text = queue_element.unit_prototype.resource_path[
queue_element.unit_prototype.resource_path.rfind("/") + 1
]
Expand Down
5 changes: 4 additions & 1 deletion source/match/hud/ProductionQueueElement.tscn
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://rtkiiletj253"]
[gd_scene load_steps=3 format=3 uid="uid://rtkiiletj253"]

[ext_resource type="Script" path="res://source/match/hud/ProductionQueueElement.gd" id="1_yaio2"]

[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ar725"]

[node name="ProductionQueueElement" type="Button"]
custom_minimum_size = Vector2(48, 48)
theme_override_styles/focus = SubResource("StyleBoxEmpty_ar725")
text = "Y"
script = ExtResource("1_yaio2")

Expand Down
12 changes: 11 additions & 1 deletion source/match/units/traits/ProductionQueue.gd
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,17 @@ func produce(unit_prototype, ignore_limit = false):

func cancel_all():
for element in _queue.duplicate():
_remove_element(element)
cancel(element)


func cancel(element):
if not element in _queue:
return
var production_cost = Constants.Match.Units.PRODUCTION_COSTS[
element.unit_prototype.resource_path
]
_unit.player.add_resources(production_cost)
_remove_element(element)


func _enqueue_element(element):
Expand Down

0 comments on commit d90dac7

Please sign in to comment.