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?");
+ }
+ }
+}