Skip to content

Commit

Permalink
Change how mission track ui is updated
Browse files Browse the repository at this point in the history
  • Loading branch information
Kvel2D committed Nov 21, 2024
1 parent 88a02fc commit c8a7d10
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 26 deletions.
4 changes: 2 additions & 2 deletions src/game_scene/game_scene.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
[ext_resource type="PackedScene" uid="uid://hiex318b5cvk" path="res://src/ui/game_menu/game_menu.tscn" id="26_xukvx"]
[ext_resource type="PackedScene" uid="uid://u1yl8rbswhtp" path="res://src/ui/hud/tutorial_menu.tscn" id="27_vroom"]


[sub_resource type="Curve2D" id="1"]
_data = {
"points": PackedVector2Array(0, 0, 0, 0, 2555, -2374, 0, 0, 0, 0, -376, -882, 3.76354, -42.3398, -3.76354, 42.3398, -426, -827, 0, 0, 0, 0, -386, -759, 0, 0, 0, 0, 384, -373, -36.6945, -0.470442, 36.6945, 0.470442, 500, -341, 0, 0, 0, 0, 643, -372, 0, 0, 0, 0, 2050, -1077, -45.8031, 3.23768, 45.8031, -3.23768, 2174, -1124, 0, 0, 0, 0, 2309, -1077, 0, 0, 0, 0, 3071, -689, 1.40535, -33.4014, -1.40535, 33.4014, 3131, -625, 0, 0, 0, 0, 3075, -562, 0, 0, 0, 0, 642, 647, 40.458, 0.470442, -40.458, -0.470442, 515, 695, 0, 0, 0, 0, 388, 648, 0, 0, 0, 0, -897, 9, 45.1023, 0.136732, -45.1023, -0.136732, -1022, -33, 0, 0, 0, 0, -1152, 8, 0, 0, 0, 0, -1920, 394, -0.840896, -31.3902, 0.840896, 31.3902, -1961, 459, 0, 0, 0, 0, -1919, 521, 0, 0, 0, 0, -640, 1163, 0.379654, -32.8072, -0.379654, 32.8072, -603, 1228, 0, 0, 0, 0, -641, 1290, 0, 0, 0, 0, -3200, 2558)
Expand Down Expand Up @@ -242,7 +241,8 @@ script = ExtResource("17_5cvlj")
script = ExtResource("17_imw8o")
_camera = NodePath("../../World/Camera2D")

[node name="MissionManager" parent="Gameplay" instance=ExtResource("18_ujbrx")]
[node name="MissionManager" parent="Gameplay" node_paths=PackedStringArray("_hud") instance=ExtResource("18_ujbrx")]
_hud = NodePath("../../UI/HUD")

[node name="World" type="Node2D" parent="."]
process_mode = 1
Expand Down
6 changes: 4 additions & 2 deletions src/missions/mission_manager.gd
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ class_name MissionManager extends Node

var _mission_list: Array[Mission] = []

@export var _hud: HUD


#########################
### Built-in ###
Expand Down Expand Up @@ -42,7 +44,7 @@ func _ready() -> void:

func _remove_mission(mission: Mission):
var mission_id: int = mission.get_id()
EventBus.mission_was_failed.emit(mission_id)
_hud.set_mission_track_state(mission_id, MissionTrackIndicator.State.FAILED)

_mission_list.erase(mission)
remove_child(mission)
Expand Down Expand Up @@ -116,7 +118,7 @@ func _on_game_win():
var mission_id: int = mission.get_id()
var mission_description: String = MissionProperties.get_description(mission_id)

EventBus.mission_was_completed.emit(mission_id)
_hud.set_mission_track_state(mission_id, MissionTrackIndicator.State.COMPLETED)

MissionStatus.set_mission_is_complete(mission_id, true)
Messages.add_normal(null, "Mission was COMPLETED: %s!" % mission_description)
Expand Down
2 changes: 0 additions & 2 deletions src/singletons/event_bus.gd
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@ signal player_stopped_build_process()
signal mouse_entered_unit(unit: Unit)
signal mouse_exited_unit(unit: Unit)
signal item_started_flying_to_item_stash(item: Item, canvas_pos: Vector2)
signal mission_was_failed(mission_id: int)
signal mission_was_completed(mission_id: int)

# NOTE: signals for triggering tutorials
signal finished_tutorial_section(tutorial_id: int)
Expand Down
5 changes: 5 additions & 0 deletions src/ui/hud/hud.gd
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class_name HUD extends Control
@export var _players_are_lagging_indicator: MarginContainer
@export var _lagging_player_list_label: Label
@export var _multiplayer_pause_indicator: Control
@export var _mission_tracker_container: MissionTrackerContainer

# NOTE: this list is ordered by priority of closure. If
# multiple windows are open, then the first window in the
Expand Down Expand Up @@ -163,6 +164,10 @@ func close_one_window():
break


func set_mission_track_state(mission_id: int, state: MissionTrackIndicator.State):
_mission_tracker_container.set_mission_track_state(mission_id, state)


#########################
### Setters / Getters ###
#########################
Expand Down
3 changes: 2 additions & 1 deletion src/ui/hud/hud.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ unicode = 105
[sub_resource type="Shortcut" id="Shortcut_ree63"]
events = [SubResource("InputEventKey_cgjl0")]

[node name="HUD" type="Control" node_paths=PackedStringArray("_error_message_container", "_normal_message_container", "_game_over_label", "_elements_menu", "_tower_stash_menu", "_item_stash_menu", "_tower_stash_button", "_item_stash_button", "_top_left_menu", "_unit_menu", "_chat_line_edit", "_desync_indicator", "_button_tooltip_top", "_button_tooltip_bottom", "_tower_details", "_creep_details", "_ping_label", "_players_are_lagging_indicator", "_lagging_player_list_label", "_multiplayer_pause_indicator")]
[node name="HUD" type="Control" node_paths=PackedStringArray("_error_message_container", "_normal_message_container", "_game_over_label", "_elements_menu", "_tower_stash_menu", "_item_stash_menu", "_tower_stash_button", "_item_stash_button", "_top_left_menu", "_unit_menu", "_chat_line_edit", "_desync_indicator", "_button_tooltip_top", "_button_tooltip_bottom", "_tower_details", "_creep_details", "_ping_label", "_players_are_lagging_indicator", "_lagging_player_list_label", "_multiplayer_pause_indicator", "_mission_tracker_container")]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
Expand Down Expand Up @@ -67,6 +67,7 @@ _ping_label = NodePath("MarginContainer10/VBoxContainer/PingLabel")
_players_are_lagging_indicator = NodePath("PlayersAreLaggingIndicator")
_lagging_player_list_label = NodePath("PlayersAreLaggingIndicator/PanelContainer/VBoxContainer/VBoxContainer2/LaggingPlayerListLabel")
_multiplayer_pause_indicator = NodePath("MultiplayerPauseIndicator")
_mission_tracker_container = NodePath("MarginContainer3/VBoxContainer/MissionTrackerContainer")
metadata/_edit_vertical_guides_ = [960.0]

[node name="MarginContainer" type="MarginContainer" parent="."]
Expand Down
36 changes: 18 additions & 18 deletions src/ui/hud/mission_track_indicator.gd
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,13 @@ class_name MissionTrackIndicator extends HBoxContainer

# Shows status of tracked mission to the player during game match.


enum State {
IN_PROGRESS,
FAILED,
COMPLETED,
}

const STATUS_FAILED: String = "[color=RED]FAILED[/color]"
const STATUS_COMPLETED: String = "[color=GOLD]COMPLETED[/color]"

Expand All @@ -14,30 +21,23 @@ var _mission_id: int
@export var _completed_label: Label


func _ready():
EventBus.mission_was_failed.connect(_on_mission_was_failed)
EventBus.mission_was_completed.connect(_on_mission_was_completed)
#########################
### Built-in ###
#########################

func _ready():
var description: String = MissionProperties.get_description(_mission_id)
_description_label.text = description


func _on_mission_was_failed(mission_id: int):
var mission_id_match: bool = mission_id == _mission_id
if !mission_id_match:
return

_in_progress_label.hide()
_failed_label.show()


func _on_mission_was_completed(mission_id: int):
var mission_id_match: bool = mission_id == _mission_id
if !mission_id_match:
return
#########################
### Public ###
#########################

_in_progress_label.hide()
_completed_label.show()
func set_state(state: MissionTrackIndicator.State):
_in_progress_label.visible = state == MissionTrackIndicator.State.IN_PROGRESS
_failed_label.visible = state == MissionTrackIndicator.State.FAILED
_completed_label.visible = state == MissionTrackIndicator.State.COMPLETED


static func make(mission_id: int) -> MissionTrackIndicator:
Expand Down
20 changes: 19 additions & 1 deletion src/ui/hud/mission_tracker_container.gd
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
extends VBoxContainer
class_name MissionTrackerContainer extends VBoxContainer


# Contains mission trackers which is shown in HUD.


var _indicator_map: Dictionary = {}


#########################
### Built-in ###
#########################

func _ready() -> void:
var mission_id_list: Array = MissionProperties.get_id_list()

Expand All @@ -20,8 +25,21 @@ func _ready() -> void:

if mission_is_tracked:
var mission_track_indicator: MissionTrackIndicator = MissionTrackIndicator.make(mission_id)
_indicator_map[mission_id] = mission_track_indicator
add_child(mission_track_indicator)
added_mission_count += 1

if added_mission_count >= MissionTracking.MAX_TRACKED_COUNT:
break


#########################
### Public ###
#########################

func set_mission_track_state(mission_id: int, state: MissionTrackIndicator.State):
if !_indicator_map.has(mission_id):
return

var indicator: MissionTrackIndicator = _indicator_map.get(mission_id)
indicator.set_state(state)

0 comments on commit c8a7d10

Please sign in to comment.