Skip to content

Commit 7aa0d52

Browse files
Update MineResourcesProcessor to use TryGetDataBlob
1 parent 9884be3 commit 7aa0d52

1 file changed

Lines changed: 18 additions & 12 deletions

File tree

Pulsar4X/GameEngine/Industry/MineResourcesProcessor.cs

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,11 @@ public void Init(Game game)
3636

3737
public void ProcessEntity(Entity entity, int deltaSeconds)
3838
{
39-
if(entity.HasDataBlob<ColonyInfoDB>() && entity.GetDataBlob<ColonyInfoDB>().PlanetEntity.HasDataBlob<MineralsDB>())
40-
MineResources(entity);
39+
if(entity.TryGetDataBlob<ColonyInfoDB>(out var colonyInfoDB)
40+
&& colonyInfoDB.PlanetEntity.TryGetDataBlob<MineralsDB>(out var mineralsDB)
41+
&& entity.TryGetDataBlob<MiningDB>(out var miningDB)
42+
&& entity.TryGetDataBlob<CargoStorageDB>(out var stockpile))
43+
MineResources(entity, colonyInfoDB, mineralsDB, miningDB, stockpile);
4144
}
4245

4346
public int ProcessManager(EntityManager manager, int deltaSeconds)
@@ -50,11 +53,10 @@ public int ProcessManager(EntityManager manager, int deltaSeconds)
5053
return entities.Count;
5154
}
5255

53-
private void MineResources(Entity colonyEntity)
56+
private void MineResources(Entity colonyEntity, ColonyInfoDB colonyInfoDB, MineralsDB mineralsDB, MiningDB miningDB, CargoStorageDB stockpile)
5457
{
55-
Dictionary<int, long> actualMiningRates = colonyEntity.GetDataBlob<MiningDB>().ActualMiningRate;
56-
Dictionary<int, MineralDeposit> planetMinerals = colonyEntity.GetDataBlob<ColonyInfoDB>().PlanetEntity.GetDataBlob<MineralsDB>().Minerals;
57-
CargoStorageDB stockpile = colonyEntity.GetDataBlob<CargoStorageDB>();
58+
Dictionary<int, long> actualMiningRates = miningDB.ActualMiningRate;
59+
Dictionary<int, MineralDeposit> planetMinerals = mineralsDB.Minerals;
5860

5961
foreach (var kvp in actualMiningRates)
6062
{
@@ -100,13 +102,17 @@ private void MineResources(Entity colonyEntity)
100102
/// <param name="colonyEntity"></param>
101103
internal static void CalcMaxRate(Entity colonyEntity)
102104
{
105+
if (!colonyEntity.TryGetDataBlob<ComponentInstancesDB>(out var instancesDB) ||
106+
!colonyEntity.GetFactionOwner.TryGetDataBlob<FactionInfoDB>(out var factionInfoDB) ||
107+
!colonyEntity.TryGetDataBlob<MiningDB>(out var miningDB))
108+
return;
109+
103110
var rates = new Dictionary<int, long>();
104-
var instancesDB = colonyEntity.GetDataBlob<ComponentInstancesDB>();
105-
var cargoLibrary = colonyEntity.GetFactionOwner.GetDataBlob<FactionInfoDB>().Data.CargoGoods;
111+
var cargoLibrary = factionInfoDB.Data.CargoGoods;
106112

107113
if (instancesDB.TryGetComponentsByAttribute<MineResourcesAtbDB>(out var instances))
108114
{
109-
colonyEntity.GetDataBlob<MiningDB>().NumberOfMines = instances.Count;
115+
miningDB.NumberOfMines = instances.Count;
110116

111117
foreach (var instance in instances)
112118
{
@@ -122,12 +128,12 @@ internal static void CalcMaxRate(Entity colonyEntity)
122128
}
123129
}
124130

125-
colonyEntity.GetDataBlob<MiningDB>().BaseMiningRate = rates;
131+
miningDB.BaseMiningRate = rates;
126132

127133
// Calculate the actual mining rates if the planet entity has minerals
128-
if(colonyEntity.GetDataBlob<ColonyInfoDB>().PlanetEntity.HasDataBlob<MineralsDB>())
134+
if (colonyEntity.TryGetDataBlob<ColonyInfoDB>(out var colonyInfoDB) && colonyInfoDB.PlanetEntity.HasDataBlob<MineralsDB>())
129135
{
130-
colonyEntity.GetDataBlob<MiningDB>().ActualMiningRate = MiningHelper.CalculateActualMiningRates(colonyEntity);
136+
miningDB.ActualMiningRate = MiningHelper.CalculateActualMiningRates(colonyEntity);
131137
}
132138
}
133139

0 commit comments

Comments
 (0)