Sync minimap floor data
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using Chickensoft.AutoInject;
|
||||
using Chickensoft.Collections;
|
||||
using Chickensoft.GodotNodeInterfaces;
|
||||
using Chickensoft.SaveFileBuilder;
|
||||
using Godot;
|
||||
@@ -24,5 +25,5 @@ public interface IMap : INode3D, IProvide<ISaveChunk<MapData>>
|
||||
|
||||
void InitializeMapData();
|
||||
|
||||
public int CurrentFloorNumber { get; }
|
||||
public AutoProp<int> CurrentFloorNumber { get; }
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
using Chickensoft.AutoInject;
|
||||
using Chickensoft.Collections;
|
||||
using Chickensoft.Introspection;
|
||||
using Chickensoft.LogicBlocks;
|
||||
using Chickensoft.SaveFileBuilder;
|
||||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
@@ -35,7 +37,7 @@ public partial class Map : Node3D, IMap
|
||||
|
||||
public IDungeonFloor CurrentFloor { get; private set; }
|
||||
|
||||
public int CurrentFloorNumber { get; private set; } = 0;
|
||||
public AutoProp<int> CurrentFloorNumber { get; private set; } = new AutoProp<int>(0);
|
||||
|
||||
public void OnResolved()
|
||||
{
|
||||
@@ -63,7 +65,7 @@ public partial class Map : Node3D, IMap
|
||||
FloorScenes = [];
|
||||
foreach (var floor in _floors)
|
||||
FloorScenes.Add(floor.ResourcePath);
|
||||
CurrentFloorNumber = 0;
|
||||
CurrentFloorNumber.OnNext(0);
|
||||
}
|
||||
|
||||
public void LoadMap()
|
||||
@@ -88,7 +90,7 @@ public partial class Map : Node3D, IMap
|
||||
var transform = GetPlayerSpawnPosition();
|
||||
Player.TeleportPlayer(transform);
|
||||
CurrentFloor.FloorIsLoaded = true;
|
||||
CurrentFloorNumber += 1;
|
||||
CurrentFloorNumber.OnNext(CurrentFloorNumber.Value + 1);
|
||||
}
|
||||
|
||||
public IDungeonRoom GetPlayersCurrentRoom()
|
||||
|
||||
24
Zennysoft.Game.Ma/src/minimap/Minimap.cs
Normal file
24
Zennysoft.Game.Ma/src/minimap/Minimap.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using Chickensoft.AutoInject;
|
||||
using Chickensoft.Introspection;
|
||||
using Godot;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
[Meta(typeof(IAutoNode))]
|
||||
public partial class Minimap : Control
|
||||
{
|
||||
public override void _Notification(int what) => this.Notify(what);
|
||||
|
||||
[Dependency] public IMap _map => this.DependOn<IMap>();
|
||||
|
||||
[Node] public Label LayerNumberText { get; set; } = default!;
|
||||
|
||||
public void OnResolved()
|
||||
{
|
||||
_map.CurrentFloorNumber.Sync += CurrentFloorNumber_Sync;
|
||||
}
|
||||
|
||||
private void CurrentFloorNumber_Sync(int obj)
|
||||
{
|
||||
LayerNumberText.Text = $"{obj:D2}";
|
||||
}
|
||||
}
|
||||
1
Zennysoft.Game.Ma/src/minimap/Minimap.cs.uid
Normal file
1
Zennysoft.Game.Ma/src/minimap/Minimap.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cxi8msbee56t2
|
||||
@@ -1,8 +1,20 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://bwbofurcvf3yh"]
|
||||
[gd_scene load_steps=7 format=3 uid="uid://bwbofurcvf3yh"]
|
||||
|
||||
[ext_resource type="FontFile" uid="uid://cm8j5vcdop5x0" path="res://src/ui/fonts/Mrs-Eaves-OT-Roman_31443.ttf" id="1_tt5q2"]
|
||||
[ext_resource type="Script" uid="uid://cxi8msbee56t2" path="res://src/minimap/Minimap.cs" id="1_yn75n"]
|
||||
[ext_resource type="FontFile" uid="uid://dp1k143v7cppw" path="res://src/ui/fonts/Lust_Sans_Regular.otf" id="2_yn75n"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_3fkgx"]
|
||||
background_color = Color(1, 1, 1, 1)
|
||||
|
||||
[sub_resource type="Theme" id="Theme_75ec6"]
|
||||
default_font = ExtResource("1_tt5q2")
|
||||
default_font_size = 50
|
||||
|
||||
[sub_resource type="Theme" id="Theme_qgswn"]
|
||||
default_font = ExtResource("1_tt5q2")
|
||||
default_font_size = 50
|
||||
|
||||
[node name="Minimap" type="Control"]
|
||||
process_mode = 3
|
||||
light_mask = 2
|
||||
@@ -15,6 +27,7 @@ anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_yn75n")
|
||||
|
||||
[node name="CenterContainer" type="CenterContainer" parent="."]
|
||||
layout_mode = 1
|
||||
@@ -25,13 +38,13 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="SubViewportContainer" type="SubViewportContainer" parent="CenterContainer"]
|
||||
custom_minimum_size = Vector2(300, 300)
|
||||
custom_minimum_size = Vector2(350, 300)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="SubViewport" type="SubViewport" parent="CenterContainer/SubViewportContainer"]
|
||||
transparent_bg = true
|
||||
handle_input_locally = false
|
||||
size = Vector2i(500, 500)
|
||||
size = Vector2i(350, 300)
|
||||
render_target_update_mode = 4
|
||||
|
||||
[node name="Minimap Camera" type="Camera3D" parent="CenterContainer/SubViewportContainer/SubViewport"]
|
||||
@@ -41,3 +54,53 @@ environment = SubResource("Environment_3fkgx")
|
||||
fov = 45.0
|
||||
size = 100.0
|
||||
near = 0.001
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/SubViewportContainer/SubViewport"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 200
|
||||
theme_override_constants/margin_top = 200
|
||||
|
||||
[node name="Control" type="Control" parent="CenterContainer/SubViewportContainer/SubViewport/MarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="LayerText" type="Label" parent="CenterContainer/SubViewportContainer/SubViewport/MarginContainer/Control"]
|
||||
custom_minimum_size = Vector2(80, 15)
|
||||
layout_mode = 2
|
||||
offset_left = -10.0
|
||||
offset_top = 29.0
|
||||
offset_right = 140.0
|
||||
offset_bottom = 70.0
|
||||
size_flags_vertical = 6
|
||||
theme = SubResource("Theme_75ec6")
|
||||
theme_override_colors/font_color = Color(0.792157, 0.698039, 0.643137, 1)
|
||||
theme_override_colors/font_shadow_color = Color(0.792157, 0.698039, 0.643137, 0.0392157)
|
||||
theme_override_constants/shadow_offset_x = 1
|
||||
theme_override_constants/shadow_offset_y = -2
|
||||
theme_override_constants/shadow_outline_size = 15
|
||||
theme_override_font_sizes/font_size = 40
|
||||
text = "Layer"
|
||||
vertical_alignment = 2
|
||||
|
||||
[node name="LayerNumberText" type="Label" parent="CenterContainer/SubViewportContainer/SubViewport/MarginContainer/Control"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(80, 15)
|
||||
layout_mode = 2
|
||||
offset_left = 69.0
|
||||
offset_top = 13.0
|
||||
offset_right = 149.0
|
||||
offset_bottom = 65.0
|
||||
theme = SubResource("Theme_qgswn")
|
||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||
theme_override_colors/font_shadow_color = Color(1, 1, 1, 0.027451)
|
||||
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
|
||||
theme_override_constants/shadow_offset_x = 2
|
||||
theme_override_constants/shadow_offset_y = -2
|
||||
theme_override_constants/outline_size = 2
|
||||
theme_override_fonts/font = ExtResource("2_yn75n")
|
||||
theme_override_font_sizes/font_size = 40
|
||||
text = "01"
|
||||
horizontal_alignment = 1
|
||||
|
||||
@@ -16,8 +16,6 @@ public partial class InGameUI : Control, IInGameUI
|
||||
{
|
||||
public override void _Notification(int what) => this.Notify(what);
|
||||
|
||||
[Node] public Control MiniMap { get; set; } = default!;
|
||||
|
||||
[Node] public IInventoryMenu InventoryMenu { get; set; } = default!;
|
||||
|
||||
[Node] public IPlayerInfoUI PlayerInfoUI { get; set; } = default!;
|
||||
|
||||
@@ -104,8 +104,18 @@ unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="MiniMap" parent="HBoxContainer/Panel/MarginContainer/VBoxContainer" instance=ExtResource("2_6sfje")]
|
||||
[node name="MinimapZone" type="CenterContainer" parent="HBoxContainer/Panel/MarginContainer/VBoxContainer"]
|
||||
custom_minimum_size = Vector2(350, 300)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="HBoxContainer/Panel/MarginContainer/VBoxContainer/MinimapZone"]
|
||||
custom_minimum_size = Vector2(350, 300)
|
||||
layout_mode = 2
|
||||
color = Color(0.027451, 0.0901961, 0.0745098, 1)
|
||||
|
||||
[node name="MiniMap" parent="HBoxContainer/Panel/MarginContainer/VBoxContainer/MinimapZone" instance=ExtResource("2_6sfje")]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(350, 300)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Sigil Marker" type="ReferenceRect" parent="HBoxContainer/Panel/MarginContainer/VBoxContainer"]
|
||||
|
||||
Reference in New Issue
Block a user