summaryrefslogtreecommitdiff
path: root/Towers/Tower.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Towers/Tower.gd')
-rw-r--r--Towers/Tower.gd23
1 files changed, 15 insertions, 8 deletions
diff --git a/Towers/Tower.gd b/Towers/Tower.gd
index 4262af1..8e22c3e 100644
--- a/Towers/Tower.gd
+++ b/Towers/Tower.gd
@@ -225,10 +225,7 @@ func _on_h_box_container_gui_input(event: InputEvent) -> void:
if not found:
tower.add_component(preload("res://Towers/Components/FrostComponent.gd").new())
- var data = {"components": []}
- for c in tower.components:
- data["components"].append(c.name)
- Client.update_tower(tower, data)
+ Client.update_tower(tower.get_path(), tower.to_network_data())
func _on_h_box_container_2_gui_input(event: InputEvent) -> void:
@@ -247,24 +244,34 @@ func _on_h_box_container_2_gui_input(event: InputEvent) -> void:
if not found:
tower.add_component(preload("res://Towers/Components/BurnComponent.gd").new())
- var data = {"components": []}
- for c in tower.components:
- data["components"].append(c.name)
- Client.update_tower(tower, data)
+ Client.update_tower(tower.get_path(), tower.to_network_data())
class NetworkData extends Resource:
var name: String
var position: Vector2
+ var components: Array
func to_network_data() -> NetworkData:
var data = NetworkData.new()
data.name = name
data.position = global_position
+ data.components = components.map(func(item: TowerComponent):
+ return item.name
+ )
return data
+func update_with_network_data(data: NetworkData):
+ for component in components.duplicate():
+ remove_component(component.name)
+
+ for component_name in data.components:
+ add_component(
+ load("res://Towers/Components/" + component_name + "Component.gd").new()
+ )
+
static func from_network_data(data: NetworkData) -> Tower:
var tower: Tower = preload("res://Towers/Tower.tscn").instantiate()