diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/base.gd | 16 | ||||
| -rw-r--r-- | scripts/camera.gd | 12 | ||||
| -rw-r--r-- | scripts/combinator_panel.gd | 14 | ||||
| -rw-r--r-- | scripts/hud.gd | 16 | ||||
| -rw-r--r-- | scripts/multiverse_shop.gd | 53 | ||||
| -rw-r--r-- | scripts/player.gd | 17 | ||||
| -rw-r--r-- | scripts/world.gd | 4 |
7 files changed, 123 insertions, 9 deletions
diff --git a/scripts/base.gd b/scripts/base.gd index 6b48222..f89eedc 100644 --- a/scripts/base.gd +++ b/scripts/base.gd @@ -7,6 +7,7 @@ var Incubator = preload("res://incubator.tscn") var cam = null func _ready(): + randomize() self.cam = get_node("Camera") func _process(delta): @@ -20,18 +21,21 @@ func _input(event): elif event.button_index == BUTTON_WHEEL_UP: self.cam.translate(Vector3(0,0,-0.1)) self.cam.reselect() + elif event.button_index == BUTTON_RIGHT: + self.cam.reset() if event.type == InputEvent.MOUSE_MOTION and event.button_mask == BUTTON_MASK_MIDDLE: - get_node("Camera").rot_around(event.relative_x/(30)) + self.cam.rot_around(event.relative_x/(30)) + if event.type == InputEvent.KEY: if event.scancode == KEY_A: - get_node("Camera").translate(Vector3(-0.1,0,0)) + self.cam.translate(Vector3(-0.1,0,0)) if event.scancode == KEY_D: - get_node("Camera").translate(Vector3(0.1,0,0)) + self.cam.translate(Vector3(0.1,0,0)) if event.scancode == KEY_S: - get_node("Camera").translate(Vector3(0,-0.1,0)) + self.cam.translate(Vector3(0,-0.1,0)) if event.scancode == KEY_W: - get_node("Camera").translate(Vector3(0,0.1,0)) + self.cam.translate(Vector3(0,0.1,0)) if event.scancode == KEY_H: - var s = get_node("Camera").get_selected() + var s = self.cam.get_selected() if s != null: get_node("Incubator").push_world(s)
\ No newline at end of file diff --git a/scripts/camera.gd b/scripts/camera.gd index 814a549..b099e16 100644 --- a/scripts/camera.gd +++ b/scripts/camera.gd @@ -3,13 +3,16 @@ extends InterpolatedCamera var selected = null func _ready(): - set_target(get_parent().get_node("overview")) - self.selected = get_parent().get_node("center") + reset() func select(what, new_target): + print("before set") set_target(new_target) + print("after set") if self.selected != what: + print("before interp") set_interpolation_enabled(true) + print("after interp") #set_translation(what.translation + Vector3(1,3,0)) self.selected = what @@ -24,6 +27,11 @@ func rot_around(amount): var rotated = relative.rotated(Vector3(0,1,0), amount) set_translation(self.selected.translation + rotated) reselect() + +func reset(): + set_target(get_parent().get_node("overview")) + set_interpolation_enabled(true) + self.selected = get_parent().get_node("center") func get_selected(): return self.selected
\ No newline at end of file diff --git a/scripts/combinator_panel.gd b/scripts/combinator_panel.gd new file mode 100644 index 0000000..333187f --- /dev/null +++ b/scripts/combinator_panel.gd @@ -0,0 +1,14 @@ +extends Panel + +func _ready(): + set_process_input(true) + +func _input(event): + print(event) + +func _on_Tree_gui_input( ev ): + #print(ev) + pass + +func _on_Tree_mouse_entered(): + print("enter") diff --git a/scripts/hud.gd b/scripts/hud.gd new file mode 100644 index 0000000..4028192 --- /dev/null +++ b/scripts/hud.gd @@ -0,0 +1,16 @@ +extends Node + +func _ready(): + pass + +func _on_ms_button_pressed(): + var visible = get_node("ms").is_visible() + get_node("ms").set_visible(!visible) + if !visible: + get_node("storage").set_visible(false) + +func _on_storage_button_pressed(): + var visible = get_node("storage").is_visible() + get_node("storage").set_visible(!visible) + if !visible: + get_node("ms").set_visible(false) diff --git a/scripts/multiverse_shop.gd b/scripts/multiverse_shop.gd new file mode 100644 index 0000000..177c874 --- /dev/null +++ b/scripts/multiverse_shop.gd @@ -0,0 +1,53 @@ +extends Control + +var data = null + +func _ready(): + var map = {"1": get_node("tabs/*/items"), + "2": get_node("tabs/**/items"), + "3": get_node("tabs/***/items"), + "other": get_node("tabs/other/items")} + var file = File.new() + file.open("res://assets/shop.json", File.READ) + var content = file.get_as_text() + file.close() + self.data = parse_json(content) + for k in self.data.keys(): + var tree = map[k] + var root = tree.create_item() + tree.set_columns(2) + tree.set_column_title(0, "Item") + tree.set_column_title(1, "Cost") + tree.set_column_titles_visible(true) + tree.set_column_expand(1, false) + tree.set_column_min_width(1,40) + tree.set_hide_root(true) + tree.set_select_mode(Tree.SELECT_ROW) + for i in range(self.data[k].size()): + var item = self.data[k][i] + var itm = tree.create_item(root) + itm.set_text(0, item["name"]) + itm.set_text(1, str(item["cost"])) + itm.set_tooltip(0, item["desc"]) + itm.set_metadata(0, item) + itm.set_collapsed(true) + + var desc = tree.create_item(itm) + desc.set_text(0, item["desc"]) + desc.set_selectable(0, false) + +func _on_buy_pressed(): + var tab = get_node("tabs").get_current_tab_control() + var tree = tab.get_node("items") + var itm = tree.get_selected() + if itm != null and itm.is_selected(0): + var item = itm.get_metadata(0) + var player = get_tree().get_root().get_node("Game/Player") + if player.cash >= item["cost"]: + if player.storage.has(item["id"]): + player.storage[item["id"]] += 1 + else: + player.storage[item["id"]] = 1 + player.cash -= item["cost"] + else: + pass
\ No newline at end of file diff --git a/scripts/player.gd b/scripts/player.gd new file mode 100644 index 0000000..85c5f9e --- /dev/null +++ b/scripts/player.gd @@ -0,0 +1,17 @@ +extends Node + +var cash = 1000 setget set_cash, get_cash +var storage = {} + +func _ready(): + _update_hud() + +func get_cash(): + return cash + +func set_cash(csh): + cash = csh + _update_hud() + +func _update_hud(): + get_tree().get_root().get_node("Game/HUD/funds/cash").set_text(str(cash))
\ No newline at end of file diff --git a/scripts/world.gd b/scripts/world.gd index 89df926..9117678 100644 --- a/scripts/world.gd +++ b/scripts/world.gd @@ -41,5 +41,7 @@ func _make_ball(size, center): line_y.append(null) func _on_click(): + print("click") var cam = get_tree().get_root().get_camera() - cam.select(self, get_node("point"))
\ No newline at end of file + cam.select(self, get_node("point")) + cam.reselect()
\ No newline at end of file |
