From 1ef96e7ff4cba2d12a491b33d8d8f5863f7daf59 Mon Sep 17 00:00:00 2001 From: lightyears Date: Tue, 21 Feb 2023 14:32:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=AF=E7=94=A8=E5=8D=95=E5=85=83=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E5=92=8C=E7=A9=BA=E7=B1=BB=E5=9E=8B=E9=9D=99=E6=80=81?= =?UTF-8?q?=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Autoloads/GameSettings.cs | 4 ++-- CMSGame.csproj | 7 +++++++ Components/BattleActionMenu.cs | 8 ++++---- Components/BattleHUD.cs | 12 ++++++------ Components/SettingsMenu.cs | 8 ++++---- Entities/GameSave.cs | 2 +- Extensions/NodeExtension.cs | 7 ++----- Models/Action.cs | 6 +++--- Models/Battle.cs | 8 +++++--- Models/BattleCharacter.cs | 2 +- Models/BattleParty.cs | 2 +- Models/Character.cs | 4 ++-- Models/Effect.cs | 4 ++-- Models/Goal.cs | 2 +- Models/Skill.cs | 4 ++-- Nodes/BattleCharacterNode.cs | 12 ++++++------ Scenes/BattleScene.cs | 16 ++++++++-------- Tests/BattleSceneTest.cs | 4 ++-- Tests/Test.cs | 13 +++++++++++++ 19 files changed, 72 insertions(+), 53 deletions(-) create mode 100644 Tests/Test.cs diff --git a/Autoloads/GameSettings.cs b/Autoloads/GameSettings.cs index e8b4bb3..2a6429f 100644 --- a/Autoloads/GameSettings.cs +++ b/Autoloads/GameSettings.cs @@ -4,9 +4,9 @@ namespace CMSGame { public partial class GameSettings : Node { - public BattleSettings OriginalBattleSettings; + public BattleSettings? OriginalBattleSettings; - public BattleSettings BattleSettings; + public BattleSettings? BattleSettings; protected string BattleSettingsSavePath = new GodotPath("user://Settings/BattleSettings.json"); diff --git a/CMSGame.csproj b/CMSGame.csproj index 6a5b85c..bd39671 100644 --- a/CMSGame.csproj +++ b/CMSGame.csproj @@ -2,11 +2,18 @@ net6.0 true + enable $(DefaultItemExcludes);ScriptTemplates\**\*.cs + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + diff --git a/Components/BattleActionMenu.cs b/Components/BattleActionMenu.cs index 69d42cc..700584c 100644 --- a/Components/BattleActionMenu.cs +++ b/Components/BattleActionMenu.cs @@ -2,13 +2,13 @@ namespace CMSGame { public partial class BattleActionMenu : VBoxContainer { - public VBoxContainer DynamicActions; + public VBoxContainer? DynamicActions; - public Button ItemActionButton; + public Button? ItemActionButton; - public Button SkillActionButton; + public Button? SkillActionButton; - public Button CommandActionButton; + public Button? CommandActionButton; public override void _Ready() { diff --git a/Components/BattleHUD.cs b/Components/BattleHUD.cs index 85542ab..1e42862 100644 --- a/Components/BattleHUD.cs +++ b/Components/BattleHUD.cs @@ -4,13 +4,13 @@ namespace CMSGame { public Vector2 LastMousePressedPosition; - public Label BattleTimeLabel; + public Label? BattleTimeLabel; - public Popup PauseMenuPopup; + public Popup? PauseMenuPopup; - public Popup SettingsMenuPopup; + public Popup? SettingsMenuPopup; - public BattleActionMenu BattleActionMenu; + public BattleActionMenu? BattleActionMenu; public override void _Ready() { @@ -27,7 +27,7 @@ namespace CMSGame if (mouseButtonEvent.Pressed) { LastMousePressedPosition = mouseButtonEvent.Position; - var battleActionMenuRect = new Rect2(BattleActionMenu.Position, BattleActionMenu.Size); + var battleActionMenuRect = new Rect2(BattleActionMenu!.Position, BattleActionMenu.Size); if (!battleActionMenuRect.HasPoint(LastMousePressedPosition)) { BattleActionMenu.Visible = false; @@ -39,7 +39,7 @@ namespace CMSGame public void ShowActionMenu(Vector2 position) { - if (!BattleActionMenu.Visible) + if (!BattleActionMenu!.Visible) { BattleActionMenu.Position = position; BattleActionMenu.Visible = true; diff --git a/Components/SettingsMenu.cs b/Components/SettingsMenu.cs index 71ef765..01fe463 100644 --- a/Components/SettingsMenu.cs +++ b/Components/SettingsMenu.cs @@ -2,21 +2,21 @@ namespace CMSGame { public partial class SettingsMenu : VBoxContainer { - public GameSettings Settings; + public GameSettings? Settings; - public CheckBox PauseBattleWhenCharacterIsSelectedCheckBox; + public CheckBox? PauseBattleWhenCharacterIsSelectedCheckBox; public override void _Ready() { this.GetAutoloadNode(ref Settings, nameof(GameSettings)); this.GetUniqueNode(ref PauseBattleWhenCharacterIsSelectedCheckBox, nameof(PauseBattleWhenCharacterIsSelectedCheckBox)); - PauseBattleWhenCharacterIsSelectedCheckBox.ButtonPressed = Settings.BattleSettings.PauseBattleWhenCharacterIsSelected; + PauseBattleWhenCharacterIsSelectedCheckBox!.ButtonPressed = Settings!.BattleSettings!.PauseBattleWhenCharacterIsSelected; } public void On_PauseBattleWhenCharacterIsSelectedCheckBox_Toggled(bool pressed) { - Settings.BattleSettings.PauseBattleWhenCharacterIsSelected = pressed; + Settings!.BattleSettings!.PauseBattleWhenCharacterIsSelected = pressed; } } } diff --git a/Entities/GameSave.cs b/Entities/GameSave.cs index b5bb60c..532cf38 100644 --- a/Entities/GameSave.cs +++ b/Entities/GameSave.cs @@ -4,6 +4,6 @@ namespace CMSGame { public class GameSave { - public List Characters; + public List Characters = new(); } } diff --git a/Extensions/NodeExtension.cs b/Extensions/NodeExtension.cs index 69d6b0b..65ad366 100644 --- a/Extensions/NodeExtension.cs +++ b/Extensions/NodeExtension.cs @@ -1,6 +1,3 @@ -using System; -using System.Threading.Tasks; - namespace CMSGame { public static class NodeExtension @@ -10,7 +7,7 @@ namespace CMSGame return parent.GetNode($"/root/{autoloadName}"); } - public static void GetAutoloadNode(this Node parent, ref T node, string autoloadName) where T : Node + public static void GetAutoloadNode(this Node parent, ref T? node, string autoloadName) where T : Node { node = parent.GetAutoloadNode(autoloadName); } @@ -20,7 +17,7 @@ namespace CMSGame return parent.GetNode($"%{uniqueName}"); } - public static void GetUniqueNode(this Node parent, ref T node, string uniqueName) where T : Node + public static void GetUniqueNode(this Node parent, ref T? node, string uniqueName) where T : Node { node = parent.GetUniqueNode(uniqueName); } diff --git a/Models/Action.cs b/Models/Action.cs index 2bd95ca..ea1bae6 100644 --- a/Models/Action.cs +++ b/Models/Action.cs @@ -4,13 +4,13 @@ namespace CMSGame { public abstract class Action { - public string Name; + public string Name = string.Empty; public ActionTargetTypes TargetType; - public List Targets; + public List Targets = new(); - public IActionTarget Target => Targets.Count > 0 ? Targets[0] : null; + public IActionTarget? Target => Targets.Count > 0 ? Targets[0] : null; } public enum ActionTargetTypes diff --git a/Models/Battle.cs b/Models/Battle.cs index 12bcaca..12454d2 100644 --- a/Models/Battle.cs +++ b/Models/Battle.cs @@ -4,7 +4,7 @@ namespace CMSGame { public class Battle { - public List Parties; + public List Parties = new(); public BattleParty Attacker; @@ -12,9 +12,11 @@ namespace CMSGame public BattleParty PlayerParty; - public Battle() + public Battle(BattleParty attacker, BattleParty defender, BattleParty playerParty) { - // load characters of the attacker and defender; + Attacker = attacker; + Defender = defender; + PlayerParty = playerParty; } public void Begin() diff --git a/Models/BattleCharacter.cs b/Models/BattleCharacter.cs index 814137c..dd6aacf 100644 --- a/Models/BattleCharacter.cs +++ b/Models/BattleCharacter.cs @@ -4,7 +4,7 @@ namespace CMSGame { public class BattleCharacter { - public List Goals; + public List Goals = new(); public Character Character; diff --git a/Models/BattleParty.cs b/Models/BattleParty.cs index 99df48d..44b0b6e 100644 --- a/Models/BattleParty.cs +++ b/Models/BattleParty.cs @@ -10,6 +10,6 @@ namespace CMSGame public bool IsPlayerParty; - public List Characters; + public List Characters = new(); } } diff --git a/Models/Character.cs b/Models/Character.cs index bb7df99..e0fff61 100644 --- a/Models/Character.cs +++ b/Models/Character.cs @@ -2,9 +2,9 @@ namespace CMSGame { public class Character { - public string FamilyName; + public string FamilyName = string.Empty; - public string GivenName; + public string GivenName = string.Empty; public string Name => FamilyName + GivenName; diff --git a/Models/Effect.cs b/Models/Effect.cs index c2ff08d..c8f1765 100644 --- a/Models/Effect.cs +++ b/Models/Effect.cs @@ -2,9 +2,9 @@ namespace CMSGame { public abstract class Effect { - public string Name; + public string Name = string.Empty; - public string Description; + public string Description = string.Empty; public abstract void Perform(Character character); } diff --git a/Models/Goal.cs b/Models/Goal.cs index a67675b..5c863a5 100644 --- a/Models/Goal.cs +++ b/Models/Goal.cs @@ -2,7 +2,7 @@ namespace CMSGame { public class Goal { - public string Name; + public string Name = string.Empty; public bool IsValid; diff --git a/Models/Skill.cs b/Models/Skill.cs index 46fb430..88398ec 100644 --- a/Models/Skill.cs +++ b/Models/Skill.cs @@ -4,8 +4,8 @@ namespace CMSGame { public abstract class Skill { - public string Name; + public string Name = string.Empty; - public List Effects; + public List Effects = new(); } } diff --git a/Nodes/BattleCharacterNode.cs b/Nodes/BattleCharacterNode.cs index a7ec542..6e0b054 100644 --- a/Nodes/BattleCharacterNode.cs +++ b/Nodes/BattleCharacterNode.cs @@ -6,15 +6,15 @@ namespace CMSGame public delegate void MousePressedEventHandler(Vector3 position); [Export] - public Texture SpriteTexture; + public Texture SpriteTexture = new(); - public BattleFieldPosition BattleFieldPosition; + public BattleFieldPosition? BattleFieldPosition; - public Character Character; + public Character? Character; - public Sprite3D Sprite3D; + public Sprite3D? Sprite3D; - public Label3D StatusLabel; + public Label3D? StatusLabel; public int ActionPoint; @@ -41,7 +41,7 @@ namespace CMSGame public void UpdateUI() { - StatusLabel.Text = $"HP {120}\nAP {ActionPoint}"; + StatusLabel!.Text = $"HP {120}\nAP {ActionPoint}"; } public override void _InputEvent(Camera3D camera, InputEvent @event, Vector3 position, Vector3 normal, int shapeIdx) diff --git a/Scenes/BattleScene.cs b/Scenes/BattleScene.cs index 2d4928d..aa5f336 100644 --- a/Scenes/BattleScene.cs +++ b/Scenes/BattleScene.cs @@ -2,11 +2,11 @@ namespace CMSGame { public partial class BattleScene : Node3D { - public BattleHUD HUD; + public BattleHUD? HUD; - public Popup PauseMenuPopup; + public Popup? PauseMenuPopup; - public Popup SettingsMenuPopup; + public Popup? SettingsMenuPopup; public double Time; @@ -17,7 +17,7 @@ namespace CMSGame public override void _Ready() { this.GetUniqueNode(ref HUD, nameof(HUD)); - PauseMenuPopup = HUD.PauseMenuPopup; + PauseMenuPopup = HUD!.PauseMenuPopup; SettingsMenuPopup = HUD.SettingsMenuPopup; } @@ -44,7 +44,7 @@ namespace CMSGame public void UpdateUI() { - HUD.BattleTimeLabel.Text = TimeHelper.FormatTime(Time); + HUD!.BattleTimeLabel!.Text = TimeHelper.FormatTime(Time); } private void TogglePauseBattle() @@ -56,7 +56,7 @@ namespace CMSGame { IsPauseBeforePauseMenuPopup = IsPause; IsPause = true; - PauseMenuPopup.PopupCentered(); + PauseMenuPopup!.PopupCentered(); } private void On_PauseBattleButton_Pressed() @@ -71,12 +71,12 @@ namespace CMSGame private void On_ResumeBattleButton_Pressed() { - PauseMenuPopup.Hide(); + PauseMenuPopup!.Hide(); } private void On_SettingsMenuButton_Pressed() { - SettingsMenuPopup.PopupCentered(); + SettingsMenuPopup!.PopupCentered(); } } } diff --git a/Tests/BattleSceneTest.cs b/Tests/BattleSceneTest.cs index 9f1e22d..9a037c2 100644 --- a/Tests/BattleSceneTest.cs +++ b/Tests/BattleSceneTest.cs @@ -2,7 +2,7 @@ namespace CMSGame { public partial class BattleSceneTest : Node3D { - public BattleScene BattleScene; + public BattleScene? BattleScene; public override void _Ready() { @@ -11,7 +11,7 @@ namespace CMSGame public void On_BattleCharacter_MousePressed(Vector3 _) { - BattleScene.HUD.ShowActionMenu(BattleScene.HUD.LastMousePressedPosition); + BattleScene!.HUD.ShowActionMenu(BattleScene.HUD.LastMousePressedPosition); } } } diff --git a/Tests/Test.cs b/Tests/Test.cs new file mode 100644 index 0000000..db3e570 --- /dev/null +++ b/Tests/Test.cs @@ -0,0 +1,13 @@ +using Xunit; + +namespace CMSGame.Tests +{ + public class UnitTest + { + [Fact] + public void Test() + { + Console.WriteLine("Are you going to test me out?"); + } + } +}