@@ -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