From b5d9e9268c66e5137b3aae9fbe6b2c06804a94c2 Mon Sep 17 00:00:00 2001 From: Dustin Date: Sat, 12 Apr 2025 14:01:12 -0700 Subject: [PATCH] Two Players! --- Main.tscn | 4 +++ src/classes/camera_guide.gd | 10 ++++--- src/ui/HUD.tscn | 26 +++++++++++++++++ src/ui/PlayerHUD.gd | 6 ++-- src/ui/SelectedInventoryItems.gd | 50 ++++++++++++++++++-------------- src/ui/StaminaBar.gd | 14 ++++++++- 6 files changed, 81 insertions(+), 29 deletions(-) diff --git a/Main.tscn b/Main.tscn index cc48cc4..c510508 100644 --- a/Main.tscn +++ b/Main.tscn @@ -52,6 +52,10 @@ __meta__ = { [node name="PlayerE" parent="ViewportContainer/Viewport" instance=ExtResource( 1 )] position = Vector2( 112, 56 ) +[node name="PlayerE2" parent="ViewportContainer/Viewport" instance=ExtResource( 1 )] +position = Vector2( 112, 56 ) +player_number = 2 + [node name="UI_Layer" parent="ViewportContainer/Viewport" instance=ExtResource( 3 )] [node name="CameraGuide" type="KinematicBody2D" parent="ViewportContainer/Viewport"] diff --git a/src/classes/camera_guide.gd b/src/classes/camera_guide.gd index 7c8c3ab..4b2fa49 100644 --- a/src/classes/camera_guide.gd +++ b/src/classes/camera_guide.gd @@ -29,16 +29,18 @@ func _physics_process(delta): #pos = lerp(pos, PlayerInfo.player_position, delta ) var dir_to = Vector2(0,0) + var player_position = PlayerInfo.get_player_data(0).player_position + # Calculate how far the player is from object - var diff_to = (PlayerInfo.player_position - pos) - var dist_to = (PlayerInfo.player_position - pos).length() + var diff_to = (player_position - pos) + var dist_to = (player_position - pos).length() # Determine the chase direction of player is past the threshold # Try to prevent bounce if (is_on_wall() or is_on_floor() or is_on_ceiling()) and abs(diff_to.x) > 10: - dir_to = pos.direction_to(PlayerInfo.player_position) + dir_to = pos.direction_to(player_position) elif !(is_on_wall() or is_on_floor() or is_on_ceiling()) and abs(diff_to.y) > 10: - dir_to = pos.direction_to(PlayerInfo.player_position) + dir_to = pos.direction_to(player_position) # UiManager.debug_text = ( UiManager.debug_text + diff --git a/src/ui/HUD.tscn b/src/ui/HUD.tscn index 0a3d752..b08a82e 100644 --- a/src/ui/HUD.tscn +++ b/src/ui/HUD.tscn @@ -59,3 +59,29 @@ text = "Foo" align = 2 [node name="PlayerHUD" parent="." instance=ExtResource( 4 )] + +[node name="PlayerHUD2" parent="." instance=ExtResource( 4 )] +player_number = 2 + +[node name="HealthBar" parent="PlayerHUD2" index="0"] +anchor_left = 1.0 +anchor_right = 1.0 +margin_left = -102.0 +margin_right = 0.0 +margin_bottom = 12.0 + +[node name="StaminaBar" parent="PlayerHUD2" index="1"] +anchor_left = 1.0 +anchor_right = 1.0 +margin_left = -102.0 +margin_right = 0.0 +margin_bottom = 12.0 + +[node name="SelectedInventoryItems" parent="PlayerHUD2" index="2"] +anchor_left = 1.0 +anchor_right = 1.0 +margin_left = -46.0 +margin_right = 0.0 + +[editable path="PlayerHUD"] +[editable path="PlayerHUD2"] diff --git a/src/ui/PlayerHUD.gd b/src/ui/PlayerHUD.gd index 0031871..2523373 100644 --- a/src/ui/PlayerHUD.gd +++ b/src/ui/PlayerHUD.gd @@ -13,9 +13,9 @@ onready var selected_inventory_items = $"%SelectedInventoryItems" # Called when the node enters the scene tree for the first time. func _ready(): - health_bar.set_player_number(1) - pass - + health_bar.set_player_number(player_number) + stamina_bar.set_player_number(player_number) + selected_inventory_items.set_player_number(player_number) # Called every frame. 'delta' is the elapsed time since the previous frame. #func _process(delta): diff --git a/src/ui/SelectedInventoryItems.gd b/src/ui/SelectedInventoryItems.gd index 6d261af..04ed6c5 100644 --- a/src/ui/SelectedInventoryItems.gd +++ b/src/ui/SelectedInventoryItems.gd @@ -10,6 +10,8 @@ onready var secondary_item = $SecondaryItem onready var _primary_item_count = $PrimaryItem/Label onready var _secondary_item_count = $SecondaryItem/Label +var _player_number :int + # Called when the node enters the scene tree for the first time. func _ready(): if primary_item == null: @@ -19,25 +21,31 @@ func _ready(): pass #secondary_item.texture = PlayerInfo.player_inventory.secondary_selection.inventory_icon +func set_player_number(_player_num: int) -> void: + _player_number = _player_num + func _process(delta): - if (PlayerInfo.player_inventory.primary_selection): - primary_item.texture = PlayerInfo.player_inventory.primary_selection.inventory_icon - var count = PlayerInfo.player_inventory.get_item_inventory_count(PlayerInfo.player_inventory.primary_selection) - if count > 1: - _primary_item_count.text = str(count) - else: - _primary_item_count.text = '' - else: - primary_item.texture = null - _primary_item_count.text = '' - - if (PlayerInfo.player_inventory.secondary_selection): - secondary_item.texture = PlayerInfo.player_inventory.secondary_selection.inventory_icon - var count = PlayerInfo.player_inventory.get_item_inventory_count(PlayerInfo.player_inventory.secondary_selection) - if count > 1: - _secondary_item_count.text = str(count) - else: - _secondary_item_count.text = '' - else: - secondary_item.texture = null - _secondary_item_count.text = '' + if _player_number: + var pd :PlayerData = PlayerInfo.get_player_data(_player_number - 1) + if pd: + if (pd.player_inventory.primary_selection): + primary_item.texture = pd.player_inventory.primary_selection.inventory_icon + var count = pd.player_inventory.get_item_inventory_count(pd.player_inventory.primary_selection) + if count > 1: + _primary_item_count.text = str(count) + else: + _primary_item_count.text = '' + else: + primary_item.texture = null + _primary_item_count.text = '' + + if (pd.player_inventory.secondary_selection): + secondary_item.texture = pd.player_inventory.secondary_selection.inventory_icon + var count = pd.player_inventory.get_item_inventory_count(pd.player_inventory.secondary_selection) + if count > 1: + _secondary_item_count.text = str(count) + else: + _secondary_item_count.text = '' + else: + secondary_item.texture = null + _secondary_item_count.text = '' diff --git a/src/ui/StaminaBar.gd b/src/ui/StaminaBar.gd index 117aad2..834c871 100644 --- a/src/ui/StaminaBar.gd +++ b/src/ui/StaminaBar.gd @@ -5,12 +5,24 @@ extends TextureProgress # var a = 2 # var b = "text" +var _player_number # Called when the node enters the scene tree for the first time. func _ready(): pass # Replace with function body. +func set_player_number(_player_num: int) -> void: + _player_number = _player_num + # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): - value = PlayerInfo.player_stamina + #value = PlayerInfo.player_stamina + if _player_number: + #value = PlayerInfo.player_health + var pd :PlayerData = PlayerInfo.get_player_data(_player_number - 1) + if pd: + value = pd.player_stamina + + +