added keep shield ui onscreen option
This commit is contained in:
@@ -12,6 +12,7 @@ const SAVE_PATH: String = "user://preferences.tres"
|
|||||||
@export var display_self_damage_indicators: bool = true
|
@export var display_self_damage_indicators: bool = true
|
||||||
@export var display_party_damage_indicators: bool = true
|
@export var display_party_damage_indicators: bool = true
|
||||||
@export var display_status_effect_damage_indicators: bool = true
|
@export var display_status_effect_damage_indicators: bool = true
|
||||||
|
@export var always_show_shield_ui: bool = false
|
||||||
|
|
||||||
|
|
||||||
func save_profile_to_disk() -> void:
|
func save_profile_to_disk() -> void:
|
||||||
|
|||||||
@@ -1,10 +1,36 @@
|
|||||||
class_name EnemyGoal
|
class_name EnemyGoal
|
||||||
extends Node3D
|
extends Node3D
|
||||||
|
|
||||||
|
signal goal_cleared()
|
||||||
|
signal goal_occupied()
|
||||||
|
|
||||||
@export var audio_player: AudioStreamPlayer3D
|
@export var audio_player: AudioStreamPlayer3D
|
||||||
|
|
||||||
|
var enemies_inside: int
|
||||||
|
|
||||||
|
|
||||||
func _on_area_3d_body_entered(body: Node3D) -> void:
|
func _on_area_3d_body_entered(body: Node3D) -> void:
|
||||||
if body is EnemyController:
|
if body is EnemyController:
|
||||||
body.goal_entered()
|
body.goal_entered()
|
||||||
audio_player.play()
|
audio_player.play()
|
||||||
|
|
||||||
|
|
||||||
|
func enemy_entered_shield_range(body: Node3D) -> void:
|
||||||
|
if body is EnemyController:
|
||||||
|
if enemies_inside == 0:
|
||||||
|
goal_occupied.emit()
|
||||||
|
enemies_inside += 1
|
||||||
|
body.died.connect(enemy_died)
|
||||||
|
body.reached_goal.connect(enemy_reached_goal)
|
||||||
|
|
||||||
|
|
||||||
|
func enemy_died(enemy: Enemy) -> void:
|
||||||
|
enemies_inside -= 1
|
||||||
|
if enemies_inside == 0:
|
||||||
|
goal_cleared.emit()
|
||||||
|
|
||||||
|
|
||||||
|
func enemy_reached_goal(enemy: Enemy, penalty: int) -> void:
|
||||||
|
enemies_inside -= 1
|
||||||
|
if enemies_inside == 0:
|
||||||
|
goal_cleared.emit()
|
||||||
|
|||||||
@@ -140,6 +140,8 @@ func spawn_players() -> void:
|
|||||||
var player: Hero = player_scene.instantiate() as Hero
|
var player: Hero = player_scene.instantiate() as Hero
|
||||||
player.placed_tower.connect(connect_tower_to_music)
|
player.placed_tower.connect(connect_tower_to_music)
|
||||||
player.name = str(peer_id)
|
player.name = str(peer_id)
|
||||||
|
level.enemy_goals[0].goal_cleared.connect(player.hud.shield_ui.fade_ui)
|
||||||
|
level.enemy_goals[0].goal_occupied.connect(player.hud.shield_ui.show_ui)
|
||||||
player.game_manager = self
|
player.game_manager = self
|
||||||
player.edit_tool.level = level
|
player.edit_tool.level = level
|
||||||
player.hud.map_anchor = level
|
player.hud.map_anchor = level
|
||||||
@@ -159,8 +161,6 @@ func spawn_players() -> void:
|
|||||||
base_took_damage.connect(player.hud.set_lives_count)
|
base_took_damage.connect(player.hud.set_lives_count)
|
||||||
root_scene.add_child(player)
|
root_scene.add_child(player)
|
||||||
p_i += 1
|
p_i += 1
|
||||||
print("objective health: " + str(objective_health))
|
|
||||||
print("player ui health: " + str(player.hud.shield_ui.health))
|
|
||||||
|
|
||||||
|
|
||||||
func ready_player(player_ready_true: bool) -> void:
|
func ready_player(player_ready_true: bool) -> void:
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ extends VBoxContainer
|
|||||||
@export var self_damage: Button
|
@export var self_damage: Button
|
||||||
@export var party_damage: Button
|
@export var party_damage: Button
|
||||||
@export var status_damage: Button
|
@export var status_damage: Button
|
||||||
|
@export var show_shield: Button
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
@@ -29,6 +30,7 @@ func _ready() -> void:
|
|||||||
self_damage.button_pressed = Data.preferences.display_self_damage_indicators
|
self_damage.button_pressed = Data.preferences.display_self_damage_indicators
|
||||||
party_damage.button_pressed = Data.preferences.display_party_damage_indicators
|
party_damage.button_pressed = Data.preferences.display_party_damage_indicators
|
||||||
status_damage.button_pressed = Data.preferences.display_status_effect_damage_indicators
|
status_damage.button_pressed = Data.preferences.display_status_effect_damage_indicators
|
||||||
|
show_shield.button_pressed = Data.preferences.always_show_shield_ui
|
||||||
|
|
||||||
|
|
||||||
func save() -> void:
|
func save() -> void:
|
||||||
@@ -41,6 +43,7 @@ func save() -> void:
|
|||||||
Data.preferences.display_self_damage_indicators = self_damage.button_pressed
|
Data.preferences.display_self_damage_indicators = self_damage.button_pressed
|
||||||
Data.preferences.display_party_damage_indicators = party_damage.button_pressed
|
Data.preferences.display_party_damage_indicators = party_damage.button_pressed
|
||||||
Data.preferences.display_status_effect_damage_indicators = status_damage.button_pressed
|
Data.preferences.display_status_effect_damage_indicators = status_damage.button_pressed
|
||||||
|
Data.preferences.always_show_shield_ui = show_shield.button_pressed
|
||||||
|
|
||||||
|
|
||||||
func _on_mouse_sens_spin_box_value_changed(value: float) -> void:
|
func _on_mouse_sens_spin_box_value_changed(value: float) -> void:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
[sub_resource type="ImageTexture" id="ImageTexture_03x6q"]
|
[sub_resource type="ImageTexture" id="ImageTexture_03x6q"]
|
||||||
|
|
||||||
[node name="Gameplay" type="VBoxContainer" unique_id=9533751 node_paths=PackedStringArray("resolution_drop_down", "look_sens_slider", "look_sens_input", "toggle_sprint_checkbox", "invert_lookY", "invert_lookX", "fixed_minimap", "tower_damage", "self_damage", "party_damage", "status_damage")]
|
[node name="Gameplay" type="VBoxContainer" unique_id=9533751 node_paths=PackedStringArray("resolution_drop_down", "look_sens_slider", "look_sens_input", "toggle_sprint_checkbox", "invert_lookY", "invert_lookX", "fixed_minimap", "tower_damage", "self_damage", "party_damage", "status_damage", "show_shield")]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
@@ -22,6 +22,7 @@ tower_damage = NodePath("FloatingDamageIndicators/CenterContainer/HBoxContainer/
|
|||||||
self_damage = NodePath("FloatingDamageIndicators/CenterContainer/HBoxContainer/SelfDamage")
|
self_damage = NodePath("FloatingDamageIndicators/CenterContainer/HBoxContainer/SelfDamage")
|
||||||
party_damage = NodePath("FloatingDamageIndicators/CenterContainer/HBoxContainer/PartyDamage")
|
party_damage = NodePath("FloatingDamageIndicators/CenterContainer/HBoxContainer/PartyDamage")
|
||||||
status_damage = NodePath("FloatingDamageIndicators/CenterContainer/HBoxContainer/StatusDamage")
|
status_damage = NodePath("FloatingDamageIndicators/CenterContainer/HBoxContainer/StatusDamage")
|
||||||
|
show_shield = NodePath("AlwaysShowShield/CenterContainer/CheckButton")
|
||||||
|
|
||||||
[node name="Resolution" type="HBoxContainer" parent="." unique_id=1996706644]
|
[node name="Resolution" type="HBoxContainer" parent="." unique_id=1996706644]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
@@ -186,6 +187,23 @@ toggle_mode = true
|
|||||||
button_pressed = true
|
button_pressed = true
|
||||||
text = "OPTION_STATUS_DAMAGE"
|
text = "OPTION_STATUS_DAMAGE"
|
||||||
|
|
||||||
|
[node name="AlwaysShowShield" type="HBoxContainer" parent="." unique_id=745573840]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="AlwaysShowShield" unique_id=856331565]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
text = "OPTION_ALWAYS_SHOW_SHIELD"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="CenterContainer" type="CenterContainer" parent="AlwaysShowShield" unique_id=726349358]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
|
[node name="CheckButton" type="CheckButton" parent="AlwaysShowShield/CenterContainer" unique_id=263220323]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
[connection signal="item_selected" from="Resolution/HBoxContainer/OptionButton" to="." method="_on_option_button_item_selected"]
|
[connection signal="item_selected" from="Resolution/HBoxContainer/OptionButton" to="." method="_on_option_button_item_selected"]
|
||||||
[connection signal="value_changed" from="MouseSens/HBoxContainer/SpinBox" to="." method="_on_mouse_sens_spin_box_value_changed"]
|
[connection signal="value_changed" from="MouseSens/HBoxContainer/SpinBox" to="." method="_on_mouse_sens_spin_box_value_changed"]
|
||||||
[connection signal="value_changed" from="MouseSens/HBoxContainer/HSlider" to="." method="_on_mouse_sens_h_slider_value_changed"]
|
[connection signal="value_changed" from="MouseSens/HBoxContainer/HSlider" to="." method="_on_mouse_sens_h_slider_value_changed"]
|
||||||
|
|||||||
@@ -17,14 +17,23 @@ var cell_tweens: Array[Tween] = []
|
|||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
for x: int in cells.size():
|
for x: int in cells.size():
|
||||||
cell_tweens.append(null)
|
cell_tweens.append(null)
|
||||||
fade_timer.start()
|
fade_ui()
|
||||||
|
|
||||||
|
|
||||||
func take_damage(damage: int) -> void:
|
func show_ui() -> void:
|
||||||
if fade_tween:
|
if fade_tween:
|
||||||
fade_tween.kill()
|
fade_tween.kill()
|
||||||
fade_tween = null
|
fade_tween = null
|
||||||
modulate = Color.WHITE
|
modulate = Color.WHITE
|
||||||
|
|
||||||
|
|
||||||
|
func fade_ui() -> void:
|
||||||
|
if !Data.preferences.always_show_shield_ui:
|
||||||
|
fade_timer.start()
|
||||||
|
|
||||||
|
|
||||||
|
func take_damage(damage: int) -> void:
|
||||||
|
show_ui()
|
||||||
var damage_to_deal_with: int = min(damage, current_cell_health)
|
var damage_to_deal_with: int = min(damage, current_cell_health)
|
||||||
var remaining_damage: int = damage - damage_to_deal_with
|
var remaining_damage: int = damage - damage_to_deal_with
|
||||||
var current_cell: int = ceili(float(health) / CELL_HEALTH)
|
var current_cell: int = ceili(float(health) / CELL_HEALTH)
|
||||||
@@ -60,7 +69,6 @@ func take_damage(damage: int) -> void:
|
|||||||
cell_tweens[current_cell - 1].tween_callback(change_cell_color.bind(current_cell - 1, cell_level))
|
cell_tweens[current_cell - 1].tween_callback(change_cell_color.bind(current_cell - 1, cell_level))
|
||||||
cell_tweens[current_cell - 1].tween_interval(0.07)
|
cell_tweens[current_cell - 1].tween_interval(0.07)
|
||||||
cell_tweens[current_cell - 1].tween_callback(func() -> void: hit_glow.visible = false)
|
cell_tweens[current_cell - 1].tween_callback(func() -> void: hit_glow.visible = false)
|
||||||
fade_timer.start()
|
|
||||||
|
|
||||||
|
|
||||||
func change_cell_color(cell: int, color: int) -> void:
|
func change_cell_color(cell: int, color: int) -> void:
|
||||||
|
|||||||
@@ -23,6 +23,9 @@
|
|||||||
[sub_resource type="BoxShape3D" id="BoxShape3D_awjk1"]
|
[sub_resource type="BoxShape3D" id="BoxShape3D_awjk1"]
|
||||||
size = Vector3(3.6270146, 6.87512, 10)
|
size = Vector3(3.6270146, 6.87512, 10)
|
||||||
|
|
||||||
|
[sub_resource type="BoxShape3D" id="BoxShape3D_s81wy"]
|
||||||
|
size = Vector3(24.37746, 16.368866, 32.543457)
|
||||||
|
|
||||||
[sub_resource type="BoxShape3D" id="BoxShape3D_134um"]
|
[sub_resource type="BoxShape3D" id="BoxShape3D_134um"]
|
||||||
size = Vector3(260.6662, 2.4995117, 318.20755)
|
size = Vector3(260.6662, 2.4995117, 318.20755)
|
||||||
|
|
||||||
@@ -45,13 +48,21 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 40.123978, 0.5, 0)
|
|||||||
script = ExtResource("9_s3rd7")
|
script = ExtResource("9_s3rd7")
|
||||||
audio_player = NodePath("AudioStreamPlayer3D")
|
audio_player = NodePath("AudioStreamPlayer3D")
|
||||||
|
|
||||||
[node name="Area3D" type="Area3D" parent="EnemyGoal" unique_id=80277049]
|
[node name="DeathArea" type="Area3D" parent="EnemyGoal" unique_id=80277049]
|
||||||
collision_mask = 4
|
collision_mask = 4
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyGoal/Area3D" unique_id=1234164927]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyGoal/DeathArea" unique_id=1234164927]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.40402222, 3.43756, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.40402222, 3.43756, 0)
|
||||||
shape = SubResource("BoxShape3D_awjk1")
|
shape = SubResource("BoxShape3D_awjk1")
|
||||||
|
|
||||||
|
[node name="ShieldArea" type="Area3D" parent="EnemyGoal" unique_id=1344850092]
|
||||||
|
collision_layer = 0
|
||||||
|
collision_mask = 4
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyGoal/ShieldArea" unique_id=1341930873]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.271231, 7.8232956, -0.27661133)
|
||||||
|
shape = SubResource("BoxShape3D_s81wy")
|
||||||
|
|
||||||
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="EnemyGoal" unique_id=1838624313]
|
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="EnemyGoal" unique_id=1838624313]
|
||||||
stream = ExtResource("11_l537x")
|
stream = ExtResource("11_l537x")
|
||||||
|
|
||||||
@@ -433,7 +444,8 @@ transform = Transform3D(-0.7581457, 0, 0.6520852, 0, 1, 0, -0.6520852, 0, -0.758
|
|||||||
[node name="Node3D50" parent="." unique_id=293622677 instance=ExtResource("21_6tcu8")]
|
[node name="Node3D50" parent="." unique_id=293622677 instance=ExtResource("21_6tcu8")]
|
||||||
transform = Transform3D(-0.7581457, 0, 0.6520852, 0, 1, 0, -0.6520852, 0, -0.7581457, -35.033936, 0.422287, -72.41817)
|
transform = Transform3D(-0.7581457, 0, 0.6520852, 0, 1, 0, -0.6520852, 0, -0.7581457, -35.033936, 0.422287, -72.41817)
|
||||||
|
|
||||||
[connection signal="body_entered" from="EnemyGoal/Area3D" to="EnemyGoal" method="_on_area_3d_body_entered"]
|
[connection signal="body_entered" from="EnemyGoal/DeathArea" to="EnemyGoal" method="_on_area_3d_body_entered"]
|
||||||
|
[connection signal="body_entered" from="EnemyGoal/ShieldArea" to="EnemyGoal" method="enemy_entered_shield_range"]
|
||||||
[connection signal="body_entered" from="Killbox" to="Killbox" method="_on_body_entered"]
|
[connection signal="body_entered" from="Killbox" to="Killbox" method="_on_body_entered"]
|
||||||
|
|
||||||
[editable path="bridge"]
|
[editable path="bridge"]
|
||||||
|
|||||||
Reference in New Issue
Block a user