diff --git a/README.md b/README.md index 52fd150..4badede 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ - [ ] crafting system (3x3 inventory with shaped recipies) - [x] loot system (provides random assortment of items from the ewaste bin) - [ ] selling things +- [ ] shift click items to move to other inventory? Submission day: Jan 19th 8AM diff --git a/crafting/craft_recipe.gd b/crafting/craft_recipe.gd new file mode 100644 index 0000000..0a2787c --- /dev/null +++ b/crafting/craft_recipe.gd @@ -0,0 +1,5 @@ +extends Resource +class_name CraftRecipe + +@export var ingredients : Array[ItemData] = [null,null,null,null,null,null,null,null,null] +@export var output : ItemData diff --git a/crafting/craft_recipe.gd.uid b/crafting/craft_recipe.gd.uid new file mode 100644 index 0000000..779b434 --- /dev/null +++ b/crafting/craft_recipe.gd.uid @@ -0,0 +1 @@ +uid://b4iu5xrdf0evs diff --git a/crafting/crafts/computer_craft.tres b/crafting/crafts/computer_craft.tres new file mode 100644 index 0000000..adf7a63 --- /dev/null +++ b/crafting/crafts/computer_craft.tres @@ -0,0 +1,12 @@ +[gd_resource type="Resource" script_class="CraftRecipe" load_steps=6 format=3 uid="uid://dp4hnei3ur6oe"] + +[ext_resource type="Script" uid="uid://dccraom7a7e8d" path="res://inv_system/item_data.gd" id="1_ayiw2"] +[ext_resource type="Script" uid="uid://b4iu5xrdf0evs" path="res://crafting/craft_recipe.gd" id="2_2p7jb"] +[ext_resource type="Resource" uid="uid://88v5bcyrgpob" path="res://items/large_psu_item.tres" id="2_egxug"] +[ext_resource type="Resource" uid="uid://bepkdyf7dn1y0" path="res://items/hdd_item.tres" id="3_ccdvw"] +[ext_resource type="Resource" uid="uid://c2wbqelme8vy1" path="res://items/ram_item.tres" id="4_tkhhn"] + +[resource] +script = ExtResource("2_2p7jb") +ingredients = Array[ExtResource("1_ayiw2")]([ExtResource("2_egxug"), ExtResource("4_tkhhn"), ExtResource("3_ccdvw"), null, null, null, null, null, null]) +metadata/_custom_type_script = "uid://b4iu5xrdf0evs" diff --git a/crafting/scavenge_recipe.gd b/crafting/scavenge_recipe.gd new file mode 100644 index 0000000..3b8538a --- /dev/null +++ b/crafting/scavenge_recipe.gd @@ -0,0 +1,6 @@ +extends Resource +class_name ScavengeRecipe + +@export var input : ItemData +@export var rolls : int = 3 +@export var loot_pool : Dictionary[int, ItemData] diff --git a/crafting/scavenge_recipe.gd.uid b/crafting/scavenge_recipe.gd.uid new file mode 100644 index 0000000..ad032a2 --- /dev/null +++ b/crafting/scavenge_recipe.gd.uid @@ -0,0 +1 @@ +uid://boqr1fowaqmt0 diff --git a/inv_system/crafting_panel.gd b/inv_system/crafting_panel.gd index f4046d5..8bde5fa 100644 --- a/inv_system/crafting_panel.gd +++ b/inv_system/crafting_panel.gd @@ -1,6 +1,7 @@ extends Inventory @export var action_button : Button +@export var craft_recipes : Array[CraftRecipe] #@export var no_style : StyleBox @export var assemble_style : StyleBox @export var assemble_style_hover : StyleBox @@ -26,9 +27,14 @@ func _process(delta: float) -> void: func _notification(what: int) -> void: super(what) if what == Node.NOTIFICATION_DRAG_END: - # check against recipies! + check_recipes() pass +func check_recipes(): + print("checking now") + # write checking logic + pass + func style_assemble(): action_button.add_theme_stylebox_override("normal",assemble_style) action_button.add_theme_stylebox_override("hover",assemble_style_hover) diff --git a/inv_system/crafting_panel.tscn b/inv_system/crafting_panel.tscn index f9d4a93..7dff2ca 100644 --- a/inv_system/crafting_panel.tscn +++ b/inv_system/crafting_panel.tscn @@ -1,7 +1,9 @@ -[gd_scene load_steps=7 format=3 uid="uid://f06ym5ujhdsc"] +[gd_scene load_steps=9 format=3 uid="uid://f06ym5ujhdsc"] [ext_resource type="Script" uid="uid://br4fgimf7nygr" path="res://inv_system/crafting_panel.gd" id="1_441s3"] [ext_resource type="PackedScene" uid="uid://dgqs20xf7l8c" path="res://inv_system/item_slot.tscn" id="2_h0v0h"] +[ext_resource type="Script" uid="uid://b4iu5xrdf0evs" path="res://crafting/craft_recipe.gd" id="2_ytbts"] +[ext_resource type="Resource" uid="uid://dp4hnei3ur6oe" path="res://crafting/crafts/computer_craft.tres" id="3_4h4i0"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_h0v0h"] content_margin_left = 0.0 @@ -82,6 +84,7 @@ offset_right = 962.0 offset_bottom = 382.0 script = ExtResource("1_441s3") action_button = NodePath("MarginContainer/VBoxContainer/ActionButton") +craft_recipes = Array[ExtResource("2_ytbts")]([ExtResource("3_4h4i0")]) assemble_style = SubResource("StyleBoxFlat_h0v0h") assemble_style_hover = SubResource("StyleBoxFlat_441s3") assemble_style_pressed = SubResource("StyleBoxFlat_h0v0h") @@ -89,6 +92,7 @@ scavenge_style = SubResource("StyleBoxFlat_ytbts") scavenge_style_hover = SubResource("StyleBoxFlat_4h4i0") scavenge_style_pressed = SubResource("StyleBoxFlat_ytbts") inventory_name = "Workbench" +type = "Crafting" grid = NodePath("MarginContainer/VBoxContainer/ScrollContainer/GridContainer") inv_label = NodePath("MarginContainer/VBoxContainer/Label") diff --git a/inv_system/inventory.gd b/inv_system/inventory.gd index a6749f0..e90fcb1 100644 --- a/inv_system/inventory.gd +++ b/inv_system/inventory.gd @@ -3,14 +3,22 @@ class_name Inventory @export var inventory_name : String = "Inventory" @export var slots : Array[ItemSlot] +@export var type: String @export_group("Node References") @export var grid : GridContainer @export var inv_label : Label + # Called when the node enters the scene tree for the first time. func _ready() -> void: slots.assign(grid.get_children()) inv_label.text = inventory_name + for slot in slots: + slot.type = type + if type == "Inventory": + MouseTweaks.player_inventory = self + else: + MouseTweaks.other_inventory = self pass # Replace with function body. @@ -38,5 +46,3 @@ func add_item(item : ItemData) -> bool: return true # item placed successfully return false # theres no space to add the item - - diff --git a/inv_system/item_slot.gd b/inv_system/item_slot.gd index 60d17df..b6981de 100644 --- a/inv_system/item_slot.gd +++ b/inv_system/item_slot.gd @@ -4,6 +4,7 @@ class_name ItemSlot @export var icon : TextureRect @export var item: ItemData @export var label : Label +var type : String func _ready() -> void: update_ui() @@ -19,6 +20,7 @@ func update_ui(): label.text = item.value + func _get_drag_data(at_position: Vector2) -> Variant: if not item: return @@ -51,9 +53,11 @@ func _on_mouse_entered() -> void: #print("im real?") if item: Tooltip.show_tip(item.item_name) + MouseTweaks.hovered_slot = self pass # Replace with function body. func _on_mouse_exited() -> void: Tooltip.hide_tip() + MouseTweaks.hovered_slot = null pass # Replace with function body. diff --git a/inv_system/player_inventory.tscn b/inv_system/player_inventory.tscn index 4c0577d..f708b2b 100644 --- a/inv_system/player_inventory.tscn +++ b/inv_system/player_inventory.tscn @@ -35,6 +35,7 @@ offset_right = 419.0 offset_bottom = 561.0 script = ExtResource("2_hk4hx") inventory_name = "Your Inventory" +type = "Inventory" grid = NodePath("MarginContainer/VBoxContainer/ScrollContainer/GridContainer") inv_label = NodePath("MarginContainer/VBoxContainer/Label") diff --git a/mouseTweaks.gd b/mouseTweaks.gd new file mode 100644 index 0000000..30f2fa0 --- /dev/null +++ b/mouseTweaks.gd @@ -0,0 +1,31 @@ +extends Node + +var hovered_slot : ItemSlot +var player_inventory : Inventory +var other_inventory : Inventory + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + if Input.is_action_just_pressed("quick_move") and hovered_slot: + # figure out what the "other" inventory is and move it + var current_inv : String = hovered_slot.type + var target_inv : Inventory + if current_inv != "Inventory": + target_inv = player_inventory + else: + target_inv = other_inventory + + var temp_item : ItemData = hovered_slot.item + + + if target_inv.add_item(temp_item): + # only runs if it was able to put the item in the target inv + hovered_slot.item = null + hovered_slot.update_ui() + + pass diff --git a/mouseTweaks.gd.uid b/mouseTweaks.gd.uid new file mode 100644 index 0000000..8d2f8d4 --- /dev/null +++ b/mouseTweaks.gd.uid @@ -0,0 +1 @@ +uid://dvam042pcmjig diff --git a/project.godot b/project.godot index c09cadd..cd87016 100644 --- a/project.godot +++ b/project.godot @@ -20,6 +20,7 @@ config/icon="res://icon.svg" Tooltip="*res://tooltip.tscn" PlayerInventory="*res://inv_system/player_inventory.tscn" Clock="*res://time_system/clock.tscn" +MouseTweaks="*res://mouseTweaks.gd" [display] @@ -33,6 +34,14 @@ movie_writer/ogv/keyframe_interval=128 movie_writer/movie_file="C:/Users/tabby/Documents/Godot/Projects/RepurposedJam/video.avi" movie_writer/fps=30 +[input] + +quick_move={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(218, 14),"global_position":Vector2(226, 57),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} + [rendering] renderer/rendering_method="gl_compatibility" diff --git a/scenes/ewaste.tscn b/scenes/ewaste.tscn index 0dd8794..6b26845 100644 --- a/scenes/ewaste.tscn +++ b/scenes/ewaste.tscn @@ -14,7 +14,7 @@ [sub_resource type="LabelSettings" id="LabelSettings_00tp4"] font_color = Color(1, 0, 0, 0.5764706) -[node name="Control" type="Control" node_paths=PackedStringArray("bin_inventory", "loot_button")] +[node name="ewaste" type="Control" node_paths=PackedStringArray("bin_inventory", "loot_button")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -48,6 +48,7 @@ offset_right = 1066.0 offset_bottom = 587.0 script = ExtResource("1_6uqi0") inventory_name = "E-waste Recycling Bin" +type = "Loot" grid = NodePath("MarginContainer/VBoxContainer/ScrollContainer/GridContainer") inv_label = NodePath("MarginContainer/VBoxContainer/Label")