Skip to content

Commit

Permalink
Null reference warning fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
behindcurtain3 committed Apr 25, 2024
1 parent e5dc991 commit e06e687
Show file tree
Hide file tree
Showing 8 changed files with 46 additions and 45 deletions.
38 changes: 19 additions & 19 deletions Pulsar4X/GameEngine/Engine/Factories/SystemBodyFromJsonFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,22 +47,22 @@ public static Entity Create(Game game, StarSystem system, Entity sun, DateTime e
blobsToAdd.Add(massVolumeDB);

var orbit = rootJson["orbit"];

//double semiMajorAxis_AU = Distance.KmToAU((double?)orbit["semiMajorAxis_km"] ?? 0);

double semiMajorAxis_m = (double?)orbit["semiMajorAxis"] * 1000.0 ??
double semiMajorAxis_m = (double?)orbit["semiMajorAxis"] * 1000.0 ??
(double?)orbit["semiMajorAxis_m"] ??
(double?)orbit["semiMajorAxis_km"] * 1000.0 ??
(double?)orbit["semiMajorAxis_au"] * UniversalConstants.Units.MetersPerAu ??
(double?)orbit["semiMajorAxis_km"] * 1000.0 ??
(double?)orbit["semiMajorAxis_au"] * UniversalConstants.Units.MetersPerAu ??
0;

double eccentricity = (double?)orbit["eccentricity"] ?? 0;
double eclipticInclination = (double?)orbit["eclipticInclination_r"] ??
(double?)orbit["eclipticInclination_d"] * Math.PI/180 ??

double eclipticInclination = (double?)orbit["eclipticInclination_r"] ??
(double?)orbit["eclipticInclination_d"] * Math.PI/180 ??
(double?)orbit["eclipticInclination"] * Math.PI/180 ??
0;

//flatten the inclination, we're only using inclination to define prograde vs retrograde orbits.
//if we go to 3d orbits this section will need to be removed.
//this is currently also flattened in OrbitEllipseBaseClass for drawing.
Expand All @@ -71,21 +71,21 @@ public static Entity Create(Game game, StarSystem system, Entity sun, DateTime e
eclipticInclination = Math.PI;
else
eclipticInclination = 0;


double loAN = (double?)orbit["LoAN_r"] ??
(double?)orbit["LoAN_d"] * Math.PI/180 ??
(double?)orbit["LoAN"] * Math.PI/180 ??
(double?)orbit["LoAN"] * Math.PI/180 ??
0;

double AoP = (double?)orbit["AoP_r"] ??
(double?)orbit["AoP_d"] * Math.PI/180 ??
(double?)orbit["AoP"] * Math.PI/180 ??
(double?)orbit["AoP_d"] * Math.PI/180 ??
(double?)orbit["AoP"] * Math.PI/180 ??
0;

double meanAnomaly = (double?)orbit["meanAnomaly_r"] ??
(double?)orbit["meanAnomaly_d"] * Math.PI/180 ??
(double?)orbit["meanAnomaly"] * Math.PI/180 ??
(double?)orbit["meanAnomaly_d"] * Math.PI/180 ??
(double?)orbit["meanAnomaly"] * Math.PI/180 ??
0;

OrbitDB orbitDB;
Expand Down Expand Up @@ -170,7 +170,7 @@ public static Entity Create(Game game, StarSystem system, Entity sun, DateTime e
if(rootJson["minerals"] != null)
{
MineralsDB? mineralsDb = null;
JToken mineralToken = rootJson["minerals"];
JToken? mineralToken = rootJson["minerals"];
if(mineralToken.Type == JTokenType.String)
{
var value = (string?)rootJson["minerals"] ?? "";
Expand Down
10 changes: 5 additions & 5 deletions Pulsar4X/GameEngine/Engine/Orders/Actions/SetFireControlOrder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ public override string Details {

public FireModes IsFiring;
private Game _game;

public static void CreateCmd(Game game, Entity faction, Entity shipEntity, string fireControlGuid, FireModes isFiring)
{
var cmd = new SetOpenFireControlOrder()
Expand All @@ -254,7 +254,7 @@ public static void CreateCmd(Game game, Entity faction, Entity shipEntity, strin
_game = game
};
game.OrderHandler.HandleOrder(cmd);

}

internal override void Execute(DateTime atDateTime)
Expand All @@ -266,7 +266,7 @@ internal override void Execute(DateTime atDateTime)
{
fcState.IsEngaging = true;
DateTime dateTimeNow = _entityCommanding.Manager.ManagerSubpulses.StarSysDateTime;
if(!_entityCommanding.TryGetDatablob(out GenericFiringWeaponsDB blob))
if(!_entityCommanding.TryGetDatablob<GenericFiringWeaponsDB>(out var blob))
{
blob = new GenericFiringWeaponsDB(fcState.GetChildrenInstances());
_entityCommanding.SetDataBlob(blob);
Expand All @@ -275,7 +275,7 @@ internal override void Execute(DateTime atDateTime)
{
blob.AddWeapons(fcState.GetChildrenInstances());
}

//_game.ProcessorManager.RunInstanceProcessOnEntity(nameof(WeaponProcessor),_entityCommanding, dateTimeNow);
}
else if (IsFiring == FireModes.CeaseFire)
Expand Down Expand Up @@ -364,7 +364,7 @@ public static void CreateCommand(DateTime starSysDate, Entity faction, Entity or
internal override void Execute(DateTime atDateTime)
{
if (!IsRunning)
{
{
var wpnState = _weaponInstance.GetAbilityState<WeaponState>();
wpnState.FireWeaponInstructions.AssignOrdnance(_ordnanceAssigned);
IsRunning = true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public void Init(Game game)

public void ProcessEntity(Entity entity, int deltaSeconds)
{
if(entity.TryGetDatablob(out GenericFiringWeaponsDB db))
if(entity.TryGetDatablob<GenericFiringWeaponsDB>(out var db))
UpdateWeapons(db);
}

Expand All @@ -31,17 +31,17 @@ private void UpdateWeapons(GenericFiringWeaponsDB db)
//fire weapons that are able.
for (int i = 0; i < db.WpnIDs.Length; i++)
{
int shots = (int)(db.InternalMagQty[i] / db.AmountPerShot[i]);
if (shots >= db.MinShotsPerfire[i])
int shots = (int)(db.InternalMagQty[i] / db.AmountPerShot[i]);
if (shots >= db.MinShotsPerfire[i] && db.OwningEntity != null)
{
db.ShotsFiredThisTick[i] = shots;
var tgt = db.FireControlStates[i].Target;
db.FireInstructions[i].FireWeapon(db.OwningEntity, tgt, shots);
db.InternalMagQty[i] -= shots * db.AmountPerShot[i];
db.WeaponStates[i].InternalMagCurAmount = db.InternalMagQty[i];
}
}
}

//reload all internal magazines.
for (int i = 0; i < db.WpnIDs.Length ; i++)
{
Expand All @@ -50,7 +50,7 @@ private void UpdateWeapons(GenericFiringWeaponsDB db)
db.InternalMagQty[i] = magQty;
db.WeaponStates[i].InternalMagCurAmount = magQty;
}


}

Expand Down
2 changes: 1 addition & 1 deletion Pulsar4X/Pulsar4X.Client/EntityManagement/OrdersListUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class OrdersListUI : NonUniquePulsarGuiWindow

private OrdersListUI(EntityState entity, GlobalUIState state)
{
_state = state;
_uiState = state;
SetName("OrdersList|" + entity.Entity.Id.ToString());
_flags = ImGuiWindowFlags.None;
onEntityChange(entity);
Expand Down
13 changes: 8 additions & 5 deletions Pulsar4X/Pulsar4X.Client/EntityManagement/PowerGen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,21 @@ public class PowerGen : PulsarGuiWindow
private EntityState _entityState;
Vector2 _plotSize = new Vector2(512, 64);
private EnergyGenAbilityDB? _energyGenDB;


internal static PowerGen GetInstance()
{
PowerGen instance;
if (!_uiState.LoadedWindows.ContainsKey(typeof(PowerGen)))
if (!_uiState.LoadedWindows.ContainsKey(typeof(PowerGen)) && _uiState.LastClickedEntity != null)
{
instance = new PowerGen(_uiState.LastClickedEntity);
}
else
{
instance = (PowerGen)_uiState.LoadedWindows[typeof(PowerGen)];
if(instance._entityState != _uiState.LastClickedEntity)
}

if(_uiState.LastClickedEntity != null && instance._entityState != _uiState.LastClickedEntity)
instance.SetEntity(_uiState.LastClickedEntity);

return instance;
Expand Down Expand Up @@ -62,7 +65,7 @@ public override void OnSystemTickChange(DateTime newDateTime)

internal override void Display()
{
if(_entityState != _uiState.LastClickedEntity)//If the selected entity has changed
if(_uiState.LastClickedEntity != null && _entityState != _uiState.LastClickedEntity)//If the selected entity has changed
SetEntity(_uiState.LastClickedEntity);

if(!IsActive || !CanActive || _energyGenDB == null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@ public abstract class NonUniquePulsarGuiWindow : UpdateWindowState
internal bool CanActive = false;
internal bool IsActive = false;
internal string UniqueName = "test";
internal static GlobalUIState _state;

protected EntityState _lookedAtEntity;
protected EntityState? _lookedAtEntity;

public void SetActive(bool ActiveVal = true)
{
Expand Down Expand Up @@ -41,12 +40,11 @@ public virtual string GetName()

public void StartDisplay()
{
_state.LoadedNonUniqueWindows[this.UniqueName] = this;
_uiState.LoadedNonUniqueWindows[this.UniqueName] = this;
}

protected NonUniquePulsarGuiWindow()
{

}

internal abstract void Display();
Expand Down
8 changes: 4 additions & 4 deletions Pulsar4X/Pulsar4X.Client/GameManagment/GlobalUIState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ namespace Pulsar4X.SDL2UI

public class GlobalUIState
{
public event FactionChangedEventHandler OnFactionChanged;
public event StarSystemChangedEventHandler OnStarSystemChanged;
public event StarSystemAddedEventHandler OnStarSystemAdded;
public event FactionChangedEventHandler? OnFactionChanged;
public event StarSystemChangedEventHandler? OnStarSystemChanged;
public event StarSystemAddedEventHandler? OnStarSystemAdded;

public bool debugnewgame = true;
//internal PulsarGuiWindow distanceRulerWindow { get; set; }
Expand Down Expand Up @@ -72,7 +72,7 @@ public class GlobalUIState
internal DateTime SelectedSystemTime { get { return StarSystemStates[SelectedStarSysGuid].StarSystem.StarSysDateTime; } }
internal DateTime SelectedSysLastUpdateTime = new ();
internal string SelectedStarSysGuid { get; private set; }
internal SystemMapRendering SelectedSysMapRender { get { return GalacticMap.SelectedSysMapRender; } }
internal SystemMapRendering? SelectedSysMapRender { get { return GalacticMap.SelectedSysMapRender; } }
internal DateTime PrimarySystemDateTime;
internal EntityContextMenu ContextMenu { get; set; }
internal SafeDictionary<string, SystemState> StarSystemStates = new ();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ private enum PlanetarySubWindows{

public PlanetaryWindow(EntityState entity, GlobalUIState state)
{
_state = state;
_uiState = state;
SetName("PlanetaryWindow|" + entity.Entity.Id.ToString());
if (_mineralDefinitions == null) {
_mineralDefinitions = _uiState.Faction.GetDataBlob<FactionInfoDB>().Data.CargoGoods.GetMineralsList().ToList();
Expand Down

0 comments on commit e06e687

Please sign in to comment.