From 349c63ccd7e6665cf2eb321aa5ecbad808f030d2 Mon Sep 17 00:00:00 2001 From: ObeseTermite Date: Sat, 3 May 2025 14:45:16 -0700 Subject: [PATCH] inventory kind of works, working on attachments still --- inventory/inventory.gd | 14 ---- item.gd | 20 ----- items/attachment_points/connector.gd | 33 +++++++++ items/attachment_points/connector.gd.uid | 1 + items/attachment_points/connector.png | Bin 0 -> 149 bytes items/attachment_points/connector.png.import | 34 +++++++++ items/attachment_points/connector.png.pxo | Bin 0 -> 791 bytes items/attachment_points/connector.tscn | 11 +++ items/item.gd | 70 ++++++++++++++++++ item.gd.uid => items/item.gd.uid | 0 items/plasma_gun/plasma_gun.gd | 11 +++ items/plasma_gun/plasma_gun.gd.uid | 1 + items/plasma_gun/plasma_gun.png | Bin 0 -> 409 bytes items/plasma_gun/plasma_gun.png.import | 34 +++++++++ items/plasma_gun/plasma_gun.tscn | 27 +++++++ items/power_capsule/power_capsule.gd | 7 ++ items/power_capsule/power_capsule.tscn | 43 ++++++++++- misc/Zeroes One.otf | Bin 0 -> 27304 bytes misc/Zeroes One.otf.import | 35 +++++++++ misc/globals.gd | 5 ++ misc/globals.gd.uid | 1 + misc/regular.otf | Bin 0 -> 39012 bytes misc/regular.otf.import | 35 +++++++++ project.godot | 55 ++++++++++++++ .../inventory}/inventory-tile.png | Bin .../inventory}/inventory-tile.png.import | 6 +- ui/inventory/inventory.gd | 59 +++++++++++++++ {inventory => ui/inventory}/inventory.gd.uid | 0 {inventory => ui/inventory}/inventory.tscn | 16 +--- ui/menu/camera.gd | 29 ++++++++ ui/menu/camera.gd.uid | 1 + ui/menu/menu.tscn | 22 ++++++ ui/menu/tooltip.gd | 26 +++++++ ui/menu/tooltip.gd.uid | 1 + ui/menu/tooltip.tscn | 47 ++++++++++++ world/world.tscn | 3 + 36 files changed, 594 insertions(+), 53 deletions(-) delete mode 100644 inventory/inventory.gd delete mode 100644 item.gd create mode 100644 items/attachment_points/connector.gd create mode 100644 items/attachment_points/connector.gd.uid create mode 100644 items/attachment_points/connector.png create mode 100644 items/attachment_points/connector.png.import create mode 100644 items/attachment_points/connector.png.pxo create mode 100644 items/attachment_points/connector.tscn create mode 100644 items/item.gd rename item.gd.uid => items/item.gd.uid (100%) create mode 100644 items/plasma_gun/plasma_gun.gd create mode 100644 items/plasma_gun/plasma_gun.gd.uid create mode 100644 items/plasma_gun/plasma_gun.png create mode 100644 items/plasma_gun/plasma_gun.png.import create mode 100644 items/plasma_gun/plasma_gun.tscn create mode 100644 misc/Zeroes One.otf create mode 100644 misc/Zeroes One.otf.import create mode 100644 misc/globals.gd create mode 100644 misc/globals.gd.uid create mode 100644 misc/regular.otf create mode 100644 misc/regular.otf.import rename {inventory => ui/inventory}/inventory-tile.png (100%) rename {inventory => ui/inventory}/inventory-tile.png.import (70%) create mode 100644 ui/inventory/inventory.gd rename {inventory => ui/inventory}/inventory.gd.uid (100%) rename {inventory => ui/inventory}/inventory.tscn (65%) create mode 100644 ui/menu/camera.gd create mode 100644 ui/menu/camera.gd.uid create mode 100644 ui/menu/menu.tscn create mode 100644 ui/menu/tooltip.gd create mode 100644 ui/menu/tooltip.gd.uid create mode 100644 ui/menu/tooltip.tscn create mode 100644 world/world.tscn diff --git a/inventory/inventory.gd b/inventory/inventory.gd deleted file mode 100644 index b65951c..0000000 --- a/inventory/inventory.gd +++ /dev/null @@ -1,14 +0,0 @@ -extends Control - -var inventory : Array[Array] - -func _ready(): - inventory = [[0,0],[0,0]] - update_tiles() - -func update_tiles(): - %InventoryTiles.clear() - for y in range(len(inventory)): - for x in range(len(inventory[0])): - if inventory[y][x] != null: - %InventoryTiles.set_cell(Vector2i(x,y),0,Vector2i(0,0)) diff --git a/item.gd b/item.gd deleted file mode 100644 index eec4c86..0000000 --- a/item.gd +++ /dev/null @@ -1,20 +0,0 @@ -extends Node2D - -class_name Item - -var shape : Array[Array] -var inventory_position : Vector2i - -var draggable = true - -var dragging = false - -var mouse_offset : Vector2 - -func _process(delta: float) -> void: - if dragging: - global_position = get_global_mouse_position() + mouse_offset - - if Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT): - var mouse_difference = get_global_mouse_position() - position - if mouse_difference.x > 0 and mouse_difference.y > 0 and mouse_difference.x: diff --git a/items/attachment_points/connector.gd b/items/attachment_points/connector.gd new file mode 100644 index 0000000..6fa6d33 --- /dev/null +++ b/items/attachment_points/connector.gd @@ -0,0 +1,33 @@ +extends Node2D + +class_name Connector + +enum types {power} + +@export var type : types + +@onready var inventory : Inventory = get_tree().get_first_node_in_group("inventory") + +var color_dictionary = {types.power : Color(0,0,1)} + +func get_connected() -> Item: + var inventory_position = inventory.global_to_inventory(global_position) + var direction + if global_rotation_degrees < 0: global_rotation_degrees += 360 + if 315 <= global_rotation_degrees or global_rotation_degrees < 45: + direction = Vector2i(1,0) + elif 45 <= global_rotation_degrees and global_rotation_degrees < 135: + direction = Vector2i(0,1) + elif 135 <= global_rotation_degrees and global_rotation_degrees < 225: + direction = Vector2i(-1,0) + elif 225 <= global_rotation_degrees and global_rotation_degrees < 315: + direction = Vector2i(0,-1) + var item = inventory.inventory[inventory_position.y+direction.y][inventory_position.x+direction.x] + + if item is Item: + return item + else: + return null + +func _ready(): + %Sprite.modulate = color_dictionary[type] diff --git a/items/attachment_points/connector.gd.uid b/items/attachment_points/connector.gd.uid new file mode 100644 index 0000000..8de7e73 --- /dev/null +++ b/items/attachment_points/connector.gd.uid @@ -0,0 +1 @@ +uid://beun604o128e6 diff --git a/items/attachment_points/connector.png b/items/attachment_points/connector.png new file mode 100644 index 0000000000000000000000000000000000000000..c7144246c00a582f6a434a3985314260b8694399 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|{5@S9Lo9le z6C}1c%<=!U-(vogdZ$+r8!}T85)vvtew1Ve0cB<7%x#O9ovLPZn9t+6{qj*$qd5aB skB3ge5+NPV&Xy@HX#$3xl@AyhSj%17;u3jh1C3_zboFyt=akR{02>4?bN~PV literal 0 HcmV?d00001 diff --git a/items/attachment_points/connector.png.import b/items/attachment_points/connector.png.import new file mode 100644 index 0000000..dd3df7d --- /dev/null +++ b/items/attachment_points/connector.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://eo0hucjrygr8" +path="res://.godot/imported/connector.png-84c229cfebf4e4926836f7f85cbef59c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://items/attachment_points/connector.png" +dest_files=["res://.godot/imported/connector.png-84c229cfebf4e4926836f7f85cbef59c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/items/attachment_points/connector.png.pxo b/items/attachment_points/connector.png.pxo new file mode 100644 index 0000000000000000000000000000000000000000..9cf7c369c328d79c0aacd482ef2db66a1a7d2bf6 GIT binary patch literal 791 zcmWIWW@Zs#VBp|jXewA7_5H`IX9Sx9+?8r+^xHBMsl| zIj?+N1Kt=dI4C6^a#nZctsQ*KBDbGzKjxRly25noL5mX$wjJ7b|3t#uC9_xL2L%1r zvEqtIbkNBA&eL;rl5>la|L5?dyB0Z4yW{F})tV>g%Z(cLWo4I(O<(32POAPSAARX+ zhGRhL>1&(vLfZfFxc079FATW8sEld$C!edUw~JW(`t8LXwsXhjFN-HhUfopJt~)oP zWQpq9(s_;@-&QV7|H={Z!)}|=)+n3#PIZarlNh=lRC%dQPtxI6sdy6*d*r>c^o}R9 zYu+-e&FSGudv}sk_Nq#dSJ0hADamf$w>*sXZ_^Q9MwfuU9G011d&H0x?gOa@rWVB;CMQVDahT)($)02K zYJN74tKEDrmdek*H*tylbjdGQ_>G(Id}%%_Q}p#RHv void: + + if Input.is_action_just_pressed("select") and Globals.selected_item == null: + var mouse_difference : Vector2 = get_global_mouse_position() - global_position + Vector2(len(shape[0])*Globals.tilesize/2,len(shape)*Globals.tilesize/2) + if mouse_difference.x > 0 and mouse_difference.y > 0 and mouse_difference.y < Globals.tilesize*len(shape) and mouse_difference.x < Globals.tilesize*len(shape[0]): + var shape_position : Vector2i = Vector2i(mouse_difference/Globals.tilesize) + if shape[shape_position.y][shape_position.x]: + dragging = true + Globals.selected_item = self + mouse_offset = -get_global_mouse_position() + global_position + if Input.is_action_just_released("select"): + dragging = false + Globals.set_deferred("selected_item", null) + + if dragging: + global_position = get_global_mouse_position() + mouse_offset + + if Input.is_action_just_pressed("rotate_c"): + rotate_shape() + if Input.is_action_just_pressed("rotate_cc"): + rotate_shape(true) + item_process(delta) + +func item_process(delta : float) -> void: + pass + +func get_head_position() -> Vector2: + var return_position = global_position + return_position -= Vector2(len(shape[0])-0.5,len(shape)-0.5) * Globals.tilesize / 2 + + return return_position + +func rotate_shape(counter_clockwise : bool = false): + var new_arr = [] + if !counter_clockwise: + for i in range(len(shape[0])): + var row = [] + for j in range(len(shape)): + row.append(shape[len(shape) - j - 1][i]) + new_arr.append(row) + rotation_degrees += 90 + mouse_offset = Vector2(-mouse_offset.y,mouse_offset.x) + else: + for i in range(len(shape[0])): + var row = [] + for j in range(len(shape)): + row.append(shape[j][len(shape[0])-i-1]) + new_arr.append(row) + rotation_degrees -= 90 + mouse_offset = Vector2(mouse_offset.y,-mouse_offset.x) + global_position = get_global_mouse_position() + mouse_offset + shape = new_arr + +func move_away(): + pass diff --git a/item.gd.uid b/items/item.gd.uid similarity index 100% rename from item.gd.uid rename to items/item.gd.uid diff --git a/items/plasma_gun/plasma_gun.gd b/items/plasma_gun/plasma_gun.gd new file mode 100644 index 0000000..b771366 --- /dev/null +++ b/items/plasma_gun/plasma_gun.gd @@ -0,0 +1,11 @@ +extends Item + +func item_process(delta): + if Input.is_action_just_pressed("shoot"): + var connected = %Connector.get_connected() + if connected != null: + if "power" in connected: + connected.power -= 10 + +func _init(): + shape = [[true,true]] diff --git a/items/plasma_gun/plasma_gun.gd.uid b/items/plasma_gun/plasma_gun.gd.uid new file mode 100644 index 0000000..c98f955 --- /dev/null +++ b/items/plasma_gun/plasma_gun.gd.uid @@ -0,0 +1 @@ +uid://coxkxxcmcpsiy diff --git a/items/plasma_gun/plasma_gun.png b/items/plasma_gun/plasma_gun.png new file mode 100644 index 0000000000000000000000000000000000000000..6944f4e472f7a43d2f54ea31c8afd2a8f7190b63 GIT binary patch literal 409 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 literal 0 HcmV?d00001 diff --git a/misc/Zeroes One.otf.import b/misc/Zeroes One.otf.import new file mode 100644 index 0000000..4ad1132 --- /dev/null +++ b/misc/Zeroes One.otf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://6pxk8w000i2m" +path="res://.godot/imported/Zeroes One.otf-f985ce592f7ea7d127358cf8b820dca7.fontdata" + +[deps] + +source_file="res://misc/Zeroes One.otf" +dest_files=["res://.godot/imported/Zeroes One.otf-f985ce592f7ea7d127358cf8b820dca7.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/misc/globals.gd b/misc/globals.gd new file mode 100644 index 0000000..e660507 --- /dev/null +++ b/misc/globals.gd @@ -0,0 +1,5 @@ +extends Node + +var tilesize : int = 16 + +var selected_item diff --git a/misc/globals.gd.uid b/misc/globals.gd.uid new file mode 100644 index 0000000..cccbd49 --- /dev/null +++ b/misc/globals.gd.uid @@ -0,0 +1 @@ +uid://bqwiglbdjlag1 diff --git a/misc/regular.otf b/misc/regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..f32341b9bcb0230ec475168d66f02fe5fa8705ad GIT binary patch literal 39012 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

aJohxv%01*`h#o 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 X;SYJ%*Hk}Of2#U`|B!R#>XiO(UG$>I literal 0 HcmV?d00001 diff --git a/misc/regular.otf.import b/misc/regular.otf.import new file mode 100644 index 0000000..fdb15e5 --- /dev/null +++ b/misc/regular.otf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://dck6uat43f8rp" +path="res://.godot/imported/regular.otf-1d0943e52fcf5ef9659207272da6a0dc.fontdata" + +[deps] + +source_file="res://misc/regular.otf" +dest_files=["res://.godot/imported/regular.otf-1d0943e52fcf5ef9659207272da6a0dc.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/project.godot b/project.godot index 5d7db0c..1814385 100644 --- a/project.godot +++ b/project.godot @@ -11,9 +11,14 @@ config_version=5 [application] config/name="Knockoff" +run/main_scene="uid://civmfx6p744nl" config/features=PackedStringArray("4.4", "GL Compatibility") config/icon="res://icon.svg" +[autoload] + +Globals="*res://misc/globals.gd" + [display] window/size/viewport_width=213 @@ -22,6 +27,56 @@ window/stretch/mode="canvas_items" window/stretch/aspect="expand" window/per_pixel_transparency/allowed=true +[global_group] + +inventory="" + +[input] + +select={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(334, 7),"global_position":Vector2(343, 55),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +rotate_cc={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null) +] +} +rotate_c={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null) +] +} +zoom_in={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":8,"position":Vector2(371, 16),"global_position":Vector2(380, 64),"factor":1.0,"button_index":4,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +zoom_out={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":16,"position":Vector2(393, 25),"global_position":Vector2(402, 73),"factor":1.0,"button_index":5,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +drag_camera={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":4,"position":Vector2(339, 16),"global_position":Vector2(348, 64),"factor":1.0,"button_index":3,"canceled":false,"pressed":true,"double_click":false,"script":null) +, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(292, 15),"global_position":Vector2(301, 63),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +tooltip_view={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +shoot={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(395, 18),"global_position":Vector2(404, 66),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} + [rendering] textures/canvas_textures/default_texture_filter=0 diff --git a/inventory/inventory-tile.png b/ui/inventory/inventory-tile.png similarity index 100% rename from inventory/inventory-tile.png rename to ui/inventory/inventory-tile.png diff --git a/inventory/inventory-tile.png.import b/ui/inventory/inventory-tile.png.import similarity index 70% rename from inventory/inventory-tile.png.import rename to ui/inventory/inventory-tile.png.import index f2af6f5..fa38a4f 100644 --- a/inventory/inventory-tile.png.import +++ b/ui/inventory/inventory-tile.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://de6072727efes" -path="res://.godot/imported/inventory-tile.png-d0903f412222a61cfaf624828d419428.ctex" +path="res://.godot/imported/inventory-tile.png-31401f647b7d1b924e7a9f9c376f8e76.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://inventory/inventory-tile.png" -dest_files=["res://.godot/imported/inventory-tile.png-d0903f412222a61cfaf624828d419428.ctex"] +source_file="res://ui/inventory/inventory-tile.png" +dest_files=["res://.godot/imported/inventory-tile.png-31401f647b7d1b924e7a9f9c376f8e76.ctex"] [params] diff --git a/ui/inventory/inventory.gd b/ui/inventory/inventory.gd new file mode 100644 index 0000000..c454c22 --- /dev/null +++ b/ui/inventory/inventory.gd @@ -0,0 +1,59 @@ +extends Node2D + +class_name Inventory + +var inventory : Array[Array] + +func _ready(): + for i in range(5): + inventory.append([]) + for j in range(5): + inventory[i].append(true) + update_tiles() + +func _process(delta) -> void: + if Input.is_action_just_released("select"): + if Globals.selected_item is Item: + remove_item(Globals.selected_item) + var item_head_position = global_to_inventory(Globals.selected_item.get_head_position()) + insert_item(Globals.selected_item, item_head_position) + +func remove_item(item : Item): + for y in range(len(inventory)): + for x in range(len(inventory[0])): + if inventory[y][x] is not Item: continue + if inventory[y][x] == item: + inventory[y][x] = true + +func insert_item(item : Item, at : Vector2i): + var fits = true + + if len(item.shape) + at.y > len(inventory) or len(item.shape[0]) + at.x > len(inventory[0]) or at.x < 0 or at.y < 0: fits = false + + if fits: + for y in range(len(item.shape)): + for x in range(len(item.shape[0])): + if (inventory[y+at.y][x+at.x] is not bool or inventory[y+at.y][x+at.x] == false) and item.shape[y][x]: fits = false + + if not fits: + item.move_away() + return + + item.position = Vector2(at.x + float(len(item.shape[0]))/2, at.y + float(len(item.shape))/2) * Globals.tilesize + + for y in range(len(item.shape)): + for x in range(len(item.shape[0])): + if item.shape[y][x]: + inventory[y+at.y][x+at.x] = item + +func global_to_inventory(location : Vector2) -> Vector2: + location -= global_position + var new_location : Vector2i = Vector2i(location/Globals.tilesize) + return new_location + +func update_tiles(): + %InventoryTiles.clear() + for y in range(len(inventory)): + for x in range(len(inventory[0])): + if inventory[y][x]: + %InventoryTiles.set_cell(Vector2i(x,y),0,Vector2i(0,0)) diff --git a/inventory/inventory.gd.uid b/ui/inventory/inventory.gd.uid similarity index 100% rename from inventory/inventory.gd.uid rename to ui/inventory/inventory.gd.uid diff --git a/inventory/inventory.tscn b/ui/inventory/inventory.tscn similarity index 65% rename from inventory/inventory.tscn rename to ui/inventory/inventory.tscn index c157981..29fe26a 100644 --- a/inventory/inventory.tscn +++ b/ui/inventory/inventory.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=5 format=3 uid="uid://cquc6kpasvo7r"] -[ext_resource type="Script" uid="uid://cvwx472s1l0wh" path="res://inventory/inventory.gd" id="1_s83yu"] -[ext_resource type="Texture2D" uid="uid://de6072727efes" path="res://inventory/inventory-tile.png" id="2_qse2j"] +[ext_resource type="Script" uid="uid://cvwx472s1l0wh" path="res://ui/inventory/inventory.gd" id="1_s83yu"] +[ext_resource type="Texture2D" uid="uid://de6072727efes" path="res://ui/inventory/inventory-tile.png" id="2_qse2j"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_f8i2h"] texture = ExtResource("2_qse2j") @@ -10,18 +10,10 @@ texture = ExtResource("2_qse2j") [sub_resource type="TileSet" id="TileSet_70ao8"] sources/0 = SubResource("TileSetAtlasSource_f8i2h") -[node name="Inventory" type="Control"] -layout_mode = 3 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -grow_horizontal = 2 -grow_vertical = 2 +[node name="Inventory" type="Node2D" groups=["inventory"]] +z_index = -1 script = ExtResource("1_s83yu") [node name="InventoryTiles" type="TileMapLayer" parent="."] unique_name_in_owner = true -scale = Vector2(0.5, 0.5) tile_set = SubResource("TileSet_70ao8") diff --git a/ui/menu/camera.gd b/ui/menu/camera.gd new file mode 100644 index 0000000..7da50c9 --- /dev/null +++ b/ui/menu/camera.gd @@ -0,0 +1,29 @@ +extends Camera2D + +var dragging = false +@export var max_zoom = 2 +@export var min_zoom = 0.1 + +func _input(event: InputEvent) -> void: + if event.is_action("drag_camera"): + if event.is_released(): + dragging = false + else: + dragging = true + elif event.is_action("zoom_out"): + zoom *= 0.9 + + if zoom.x < min_zoom: + zoom = Vector2(min_zoom,min_zoom) + elif event.is_action("zoom_in"): + zoom *= 1.1 + + if zoom.x > max_zoom: + zoom = Vector2(max_zoom,max_zoom) + elif event is InputEventMouse: + + if event is InputEventMouseMotion: + + if dragging: + position -= event.relative / zoom.x + diff --git a/ui/menu/camera.gd.uid b/ui/menu/camera.gd.uid new file mode 100644 index 0000000..3c22a2b --- /dev/null +++ b/ui/menu/camera.gd.uid @@ -0,0 +1 @@ +uid://bww7u4imhpuxf diff --git a/ui/menu/menu.tscn b/ui/menu/menu.tscn new file mode 100644 index 0000000..ed6b100 --- /dev/null +++ b/ui/menu/menu.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=5 format=3 uid="uid://cpnlcq1dosgu5"] + +[ext_resource type="PackedScene" uid="uid://cquc6kpasvo7r" path="res://ui/inventory/inventory.tscn" id="1_v6ljw"] +[ext_resource type="Script" uid="uid://bww7u4imhpuxf" path="res://ui/menu/camera.gd" id="1_w0ybq"] +[ext_resource type="PackedScene" uid="uid://bhwd344v0r8lf" path="res://items/power_capsule/power_capsule.tscn" id="2_77h3e"] +[ext_resource type="PackedScene" uid="uid://c3rg18hsyy1ds" path="res://items/plasma_gun/plasma_gun.tscn" id="4_trkij"] + +[node name="Menu" type="Node2D"] + +[node name="Camera2D" type="Camera2D" parent="."] +script = ExtResource("1_w0ybq") + +[node name="PowerCapsule" parent="." instance=ExtResource("2_77h3e")] +position = Vector2(91, 41) + +[node name="PowerCapsule2" parent="." instance=ExtResource("2_77h3e")] +position = Vector2(77, -7) + +[node name="Inventory" parent="." instance=ExtResource("1_v6ljw")] + +[node name="PlasmaGun" parent="." instance=ExtResource("4_trkij")] +position = Vector2(-31, 5) diff --git a/ui/menu/tooltip.gd b/ui/menu/tooltip.gd new file mode 100644 index 0000000..d457983 --- /dev/null +++ b/ui/menu/tooltip.gd @@ -0,0 +1,26 @@ +extends Area2D + +var mouse_inside = false + +@export var title : String +@export var text : String + +func _ready() -> void: + %Title.text = "[u]" + title + "[/u]" + %Body.text = text + +func _process(delta: float) -> void: + global_rotation = 0 + if mouse_inside and Input.is_action_pressed("tooltip_view"): + %PanelContainer.show() + else: + %PanelContainer.hide() + + + +func _on_mouse_entered() -> void: + mouse_inside = true + + +func _on_mouse_exited() -> void: + mouse_inside = false diff --git a/ui/menu/tooltip.gd.uid b/ui/menu/tooltip.gd.uid new file mode 100644 index 0000000..3d33d41 --- /dev/null +++ b/ui/menu/tooltip.gd.uid @@ -0,0 +1 @@ +uid://dqo52q1ptmuv2 diff --git a/ui/menu/tooltip.tscn b/ui/menu/tooltip.tscn new file mode 100644 index 0000000..b9aad44 --- /dev/null +++ b/ui/menu/tooltip.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=6 format=3 uid="uid://bpura8ysoupso"] + +[ext_resource type="Script" uid="uid://dqo52q1ptmuv2" path="res://ui/menu/tooltip.gd" id="1_5nn81"] +[ext_resource type="FontFile" uid="uid://6pxk8w000i2m" path="res://misc/Zeroes One.otf" id="1_bm30g"] +[ext_resource type="FontFile" uid="uid://dck6uat43f8rp" path="res://misc/regular.otf" id="2_h5m05"] + +[sub_resource type="Theme" id="Theme_h5m05"] +default_font = ExtResource("1_bm30g") +default_font_size = 8 + +[sub_resource type="Theme" id="Theme_bm30g"] +default_font = ExtResource("2_h5m05") +default_font_size = 4 + +[node name="Tooltip" type="Area2D"] +script = ExtResource("1_5nn81") + +[node name="PanelContainer" type="PanelContainer" parent="."] +unique_name_in_owner = true +offset_right = 69.0 +offset_bottom = 28.0 +mouse_filter = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +layout_mode = 2 +mouse_filter = 2 + +[node name="Title" type="RichTextLabel" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +mouse_filter = 2 +theme = SubResource("Theme_h5m05") +bbcode_enabled = true +text = "[u]Lorem Ipsum[/u]" +fit_content = true +autowrap_mode = 0 + +[node name="Body" type="Label" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(50, 0) +layout_mode = 2 +theme = SubResource("Theme_bm30g") +text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna " +autowrap_mode = 2 + +[connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"] +[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"] diff --git a/world/world.tscn b/world/world.tscn new file mode 100644 index 0000000..58e19d6 --- /dev/null +++ b/world/world.tscn @@ -0,0 +1,3 @@ +[gd_scene format=3 uid="uid://civmfx6p744nl"] + +[node name="World" type="Node2D"]