diff options
Diffstat (limited to 'scripts/control.gd')
-rw-r--r-- | scripts/control.gd | 86 |
1 files changed, 62 insertions, 24 deletions
diff --git a/scripts/control.gd b/scripts/control.gd index a2d7d2b..0b94adb 100644 --- a/scripts/control.gd +++ b/scripts/control.gd @@ -15,24 +15,28 @@ var pointer : Node var turret_holder : Node var enemies_holder : Node var load_turrets : Node +var saveload_map : Node var path : Node var world : VoxelMesh func fetch (): if load_turrets != null: return var root = get_tree().root.get_node("world") - wave = root.get_node("wave") player = root.get_node("player") resources = player.get_node("resources") placer = player.get_node("placer") + + wave = root.get_node("wave") pointer = root.get_node("pointer") gui = root.get_node("gui") world = root.get_node("world") path = root.get_node("path") turret_holder = root.get_node("turrets") enemies_holder = root.get_node("enemies") + var saveload = root.get_node("saveload") load_turrets = saveload.get_node("load_turrets") + saveload_map = saveload.get_node("saveload_map") if !load_turrets.loaded: yield(load_turrets, "done_loading") func _ready (): @@ -59,16 +63,18 @@ func build_option (st, sttype): var details = world.voxel_set.get_voxel(i) var color = Color(1, 0, 1) if details.has("color"): color = details.color - opts += [ { "type": "color", "name": i, "color": color} ] + opts += [ { "type": "color", "name": str(i), "color": color} ] Globals.PlayerState.EDIT: match sttype: Globals.StateType.TURRET: - var tname = turret_holder.get_node(editing_turret).info.name - for t in load_turrets.get_upg_turrets(tname): + var tinfo = turret_holder.get_node(editing_turret).info + for t in load_turrets.get_upg_turrets(tinfo.name): opts += [ { "type": "turret upg", "name": t.name } ] - opts += [ { "type": "text", "name": "targeting" } ] - opts += [ { "type": "text", "name": "modules" } ] + if tinfo.has("projectile"): + opts += [ { "type": "text", "name": "targeting" } ] + if tinfo.get("modules_max", 0) > 0: + opts += [ { "type": "text", "name": "modules" } ] opts += [ { "type": "text", "name": "sell" } ] opts += [ { "type": "text", "name": "back" } ] @@ -106,7 +112,7 @@ func do (action, par = {}): Globals.PlayerState.PICK: match action: Globals.PlayerActions.PICK: - selected = par.selected + selected = par.name state = Globals.PlayerState.PLACE Globals.PlayerActions.SELECT: @@ -143,10 +149,10 @@ func do (action, par = {}): "path": placer.inst_path(par.pos, par.rot) "end path": placer.inst_path_end(par.pos, par.rot) Globals.StateType.VOXEL: - placer.inst_voxel(par.pos, par.rot) + placer.inst_voxel(par.pos, par.rot, selected) Globals.PlayerActions.PICK: - selected = par.selected + selected = par.name Globals.PlayerActions.DELETE: placer.delete(statetype, par.pos, par.rot) @@ -165,29 +171,40 @@ func do (action, par = {}): Globals.PlayerActions.PICK: match statetype: Globals.StateType.TURRET: - selected = par.selected - match par.selected: - "targeting": - statetype = Globals.StateType.TARGETING + selected = par.name + match par.type: + "turret upg": + var prv = turret_holder.get_node(editing_turret) + var pos = prv.transform.origin + var rot = prv.transform.basis.get_rotation_quat() + placer.delete(statetype, pos, rot) + var obj = placer.inst_turret(pos, rot, par.name) + editing_turret = obj.name + state = Globals.PlayerState.EDIT build_option(state, statetype) - "modules": - statetype = Globals.StateType.MODULES - build_option(state, statetype) - "sell": - sell(editing_turret) - to_pick() - "back": to_pick() + _ : + match par.name: + "targeting": + statetype = Globals.StateType.TARGETING + build_option(state, statetype) + "modules": + statetype = Globals.StateType.MODULES + build_option(state, statetype) + "sell": + sell(editing_turret) + to_pick() + "back": to_pick() Globals.StateType.TARGETING: - selected = par.selected - match par.selected: + selected = par.name + match par.name: "back": statetype = Globals.StateType.TURRET build_option(state, statetype) Globals.StateType.MODULES: - selected = par.selected - match par.selected: + selected = par.name + match par.name: "back": statetype = Globals.StateType.TURRET build_option(state, statetype) @@ -207,6 +224,10 @@ func do (action, par = {}): func gui_editor_toggle_event (): ineditor = !ineditor + if !ineditor: + statetype = Globals.StateType.TURRET + to_pick() + gui.refresh() path.refresh_path(ineditor) @@ -215,3 +236,20 @@ func gui_start_wave_event (): path.refresh_path(ineditor) wave.start() gui.refresh() + +func gui_save_map_event (): saveload_map.map_save() + +func gui_save_as_map_event (mapname : String): + saveload_map.mapname = mapname + saveload_map.map_save() + +func gui_delete_map_event (mapname : String): + saveload_map.map_delete(mapname) + +func gui_change_map_event (mapname : String): + saveload_map.mapname = mapname + saveload_map.map_load() + gui.load_map.visible = false + + path.refresh_path(ineditor) + gui.refresh() |