Skip to content

Commit

Permalink
added inventoy ui tentative. item pick up
Browse files Browse the repository at this point in the history
  • Loading branch information
ProfAndreaPollini committed Jul 26, 2022
1 parent 91cd532 commit c37a0f2
Show file tree
Hide file tree
Showing 12 changed files with 184 additions and 3 deletions.
10 changes: 9 additions & 1 deletion GameScreen.tscn
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
[gd_scene load_steps=15 format=2]
[gd_scene load_steps=17 format=2]

[ext_resource path="res://GameScreen.gd" type="Script" id=1]
[ext_resource path="res://assets/0x72_16x16DungeonTileset.v4.png" type="Texture" id=2]
[ext_resource path="res://entites/King.tscn" type="PackedScene" id=3]
[ext_resource path="res://lib/player/Player.tscn" type="PackedScene" id=4]
[ext_resource path="res://lib/bow/Bow.tscn" type="PackedScene" id=5]
[ext_resource path="res://lib/ui/HUD.tscn" type="PackedScene" id=6]

[sub_resource type="ConvexPolygonShape2D" id=11]
points = PoolVector2Array( 16, 16, 0, 16, 0, 16, 16, 16 )
Expand Down Expand Up @@ -180,4 +182,10 @@ position = Vector2( 63, 7 )
current = true
zoom = Vector2( 0.75, 0.75 )

[node name="Bow" parent="Level/Level0" instance=ExtResource( 5 )]
position = Vector2( 217, 102 )

[node name="HUD" parent="Level/Level0" instance=ExtResource( 6 )]
player_path = NodePath("../Player")

[node name="Overlays" type="Node" parent="."]
5 changes: 5 additions & 0 deletions lib/bow/Bow.gd
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,8 @@ func shoot():
arrow.look_at(global_position + 200*direction)
arrow.direction = direction
get_node(entity).get_parent().add_child(arrow)


func _on_BodyArea_body_entered(body):
print("{0} is on bow".format({0:body}))
EventBus.emit_signal("player_on_weapon",self)
2 changes: 2 additions & 0 deletions lib/bow/Bow.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,5 @@ collision_layer = 4
[node name="CollisionShape2D" type="CollisionShape2D" parent="BodyArea"]
position = Vector2( 6, 0 )
shape = SubResource( 1 )

[connection signal="body_entered" from="BodyArea" to="." method="_on_BodyArea_body_entered"]
9 changes: 8 additions & 1 deletion lib/player/Player.gd
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ extends KinematicBody2D
var Bow = preload("res://lib/bow/Bow.tscn")

onready var movement = $KinematicMovementComponent

onready var inventory = $Inventory
onready var weapon_position = $WeaponPosition

onready var animation_tree = $AnimationTree
Expand All @@ -18,9 +18,16 @@ var weapon_position_distance :=0.0
func _ready():
movement.connect("moved",self,"on_moved")
movement.connect("stopped",self,"on_stopped")
EventBus.connect("player_on_weapon",self, "on_player_on_weapon")
animation_state.travel("idle")
weapon_position_distance = global_position.distance_to(weapon_position.position)

func on_player_on_weapon(_weapon):
print("on_player_on_weapon")
if inventory.has_free_slot():
_weapon.get_parent().remove_child(_weapon)
_weapon.visible = false
inventory.add_item(_weapon)

func _physics_process(delta):
movement.update(delta)
Expand Down
3 changes: 2 additions & 1 deletion lib/player/Player.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -536,7 +536,7 @@ group = "player"
[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
frames = SubResource( 37 )
animation = "idle_left"
frame = 2
frame = 3
playing = true

[node name="AnimationTree" type="AnimationTree" parent="."]
Expand All @@ -561,3 +561,4 @@ anims/walk_up = SubResource( 74 )
position = Vector2( -11.3785, 5.77687 )

[node name="Knife" parent="WeaponPosition" instance=ExtResource( 12 )]
position = Vector2( -0.621498, -2.77687 )
47 changes: 47 additions & 0 deletions lib/ui/HUD.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
extends CanvasLayer


onready var num_items = $"%MenuItems"
onready var inventory_ui = $InventoryContainer
export(NodePath) var player_path


var player

# Called when the node enters the scene tree for the first time.
func _ready():
EventBus.connect("inventory_modified",self, "on_inventory_modified")
inventory_ui.visible = false
player = get_node(player_path)

func on_inventory_modified(inventory):
print("inventory modified")
num_items.text = str(inventory.get_child_count())

for inventory_item in inventory.get_children():
inventory_ui.show_item(inventory_item)


func _on_TextureRect_mouse_entered():
inventory_ui.visible = true
enable_player_input(false)

func enable_player_input(enable):
player.set_process_input(enable)
player.set_physics_process(enable)
player.set_process(enable)
player.set_process_unhandled_input(enable)


func _on_InventoryContainer_mouse_exited():
inventory_ui.visible = false
enable_player_input(true)




func _on_ColorRect_mouse_exited():
inventory_ui.visible = false
enable_player_input(true)


78 changes: 78 additions & 0 deletions lib/ui/HUD.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
[gd_scene load_steps=6 format=2]

[ext_resource path="res://lib/ui/HUD.gd" type="Script" id=1]
[ext_resource path="res://assets/0x72_DungeonTilesetII_v1.4/0x72_DungeonTilesetII_v1.4/frames/chest_empty_open_anim_f2.png" type="Texture" id=2]
[ext_resource path="res://assets/Frame_mid_2.png" type="Texture" id=3]
[ext_resource path="res://lib/ui/InventoryContainer.gd" type="Script" id=4]
[ext_resource path="res://lib/ui/InventoryItemIcon.tscn" type="PackedScene" id=5]

[node name="HUD" type="CanvasLayer"]
script = ExtResource( 1 )

[node name="MarginContainer" type="MarginContainer" parent="."]
anchor_right = 1.0

[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"]
margin_right = 426.0

[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/HBoxContainer"]

[node name="NinePatchRect" type="NinePatchRect" parent="MarginContainer/HBoxContainer/MarginContainer"]

[node name="MenuItems" type="Label" parent="MarginContainer/HBoxContainer/MarginContainer/NinePatchRect"]
unique_name_in_owner = true
margin_right = 40.0
margin_bottom = 14.0
text = "0"

[node name="InventoryIconContainer" type="MarginContainer" parent="."]
anchor_top = 0.909
anchor_right = 1.0
anchor_bottom = 1.0

[node name="HBoxContainer" type="HBoxContainer" parent="InventoryIconContainer"]
margin_right = 426.0
margin_bottom = 21.0

[node name="MarginContainer" type="MarginContainer" parent="InventoryIconContainer/HBoxContainer"]
margin_right = 20.0
margin_bottom = 21.0

[node name="NinePatchRect" type="NinePatchRect" parent="InventoryIconContainer/HBoxContainer/MarginContainer"]
margin_right = 20.0
margin_bottom = 21.0
texture = ExtResource( 3 )
patch_margin_left = 10
patch_margin_top = 10
patch_margin_right = 10
patch_margin_bottom = 10

[node name="TextureRect" type="TextureRect" parent="InventoryIconContainer/HBoxContainer/MarginContainer"]
margin_right = 20.0
margin_bottom = 21.0
texture = ExtResource( 2 )

[node name="InventoryContainer" type="MarginContainer" parent="."]
unique_name_in_owner = true
anchor_top = 1.0
anchor_bottom = 1.0
margin_left = 10.0
margin_top = -197.0
margin_right = 165.0
margin_bottom = -25.0
script = ExtResource( 4 )

[node name="ColorRect" type="ColorRect" parent="InventoryContainer"]
margin_right = 155.0
margin_bottom = 172.0
color = Color( 0.505882, 0.505882, 0.505882, 0.403922 )

[node name="GridContainer" type="GridContainer" parent="InventoryContainer/ColorRect"]
margin_right = 40.0
margin_bottom = 40.0

[node name="InventoryItemIcon" parent="InventoryContainer/ColorRect/GridContainer" instance=ExtResource( 5 )]

[connection signal="mouse_entered" from="InventoryIconContainer/HBoxContainer/MarginContainer/TextureRect" to="." method="_on_TextureRect_mouse_entered"]
[connection signal="mouse_exited" from="InventoryContainer" to="." method="_on_InventoryContainer_mouse_exited"]
[connection signal="mouse_exited" from="InventoryContainer/ColorRect" to="." method="_on_ColorRect_mouse_exited"]
12 changes: 12 additions & 0 deletions lib/ui/InventoryContainer.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
extends MarginContainer

var InventoryItemIcon = preload("res://lib/ui/InventoryItemIcon.tscn")

onready var icons_container = $ColorRect/GridContainer

func show_item(item):
var item_ui = InventoryItemIcon.instance()
item_ui.item = item
item_ui.texture = item.icon_texture
icons_container.add_child(item_ui)

4 changes: 4 additions & 0 deletions lib/ui/InventoryItemIcon.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
extends TextureRect
class_name InventoryItemIcon

var item = null
10 changes: 10 additions & 0 deletions lib/ui/InventoryItemIcon.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[gd_scene load_steps=3 format=2]

[ext_resource path="res://assets/0x72_DungeonTilesetII_v1.4/0x72_DungeonTilesetII_v1.4/frames/chest_empty_open_anim_f2.png" type="Texture" id=1]
[ext_resource path="res://lib/ui/InventoryItemIcon.gd" type="Script" id=2]

[node name="InventoryItemIcon" type="TextureRect"]
margin_right = 16.0
margin_bottom = 16.0
texture = ExtResource( 1 )
script = ExtResource( 2 )
6 changes: 6 additions & 0 deletions project.godot
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ _global_script_classes=[ {
"language": "GDScript",
"path": "res://entites/weapons/CoolDown.gd"
}, {
"base": "TextureRect",
"class": "InventoryItemIcon",
"language": "GDScript",
"path": "res://lib/ui/InventoryItemIcon.gd"
}, {
"base": "Node2D",
"class": "Item",
"language": "GDScript",
Expand Down Expand Up @@ -47,6 +52,7 @@ _global_script_classes=[ {
_global_script_class_icons={
"Component": "",
"CoolDown": "",
"InventoryItemIcon": "",
"Item": "",
"State": "",
"StateManager": "",
Expand Down
1 change: 1 addition & 0 deletions utils/EventBus.gd
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ extends Node
# inventory signals

signal player_moved()
signal player_on_weapon(weapon)

signal pocket_modified()
signal inventory_modified()
Expand Down

0 comments on commit c37a0f2

Please sign in to comment.