1
0
mirror of https://github.com/soarqin/DSP_Mods.git synced 2025-12-10 07:23:28 +08:00

minor fixes

This commit is contained in:
2025-12-06 22:41:18 +09:00
parent b2c04c1dff
commit f237789fa0
5 changed files with 44 additions and 13 deletions

View File

@@ -675,11 +675,12 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
private static void InitSignalBelts() private static void InitSignalBelts()
{ {
if (!GameMain.isRunning) return; if (DSPGame.IsMenuDemo) return;
InitItemSources();
_signalBelts = new Dictionary<int, BeltSignal>[64]; _signalBelts = new Dictionary<int, BeltSignal>[64];
_signalBeltsCapacity = 64; _signalBeltsCapacity = 64;
_portalFrom = new Dictionary<long, int>(); _portalFrom = [];
_portalTo = new Dictionary<int, HashSet<long>>(); _portalTo = [];
var factories = GameMain.data?.factories; var factories = GameMain.data?.factories;
if (factories == null) return; if (factories == null) return;
@@ -735,7 +736,7 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
if (obj != null) return obj; if (obj != null) return obj;
} }
obj = new Dictionary<int, BeltSignal>(); obj = [];
_signalBelts[index] = obj; _signalBelts[index] = obj;
return obj; return obj;
} }
@@ -869,7 +870,6 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
{ {
if (DSPGame.IsMenuDemo) return; if (DSPGame.IsMenuDemo) return;
if (BeltSignalGeneratorEnabled.Value) InitSignalBelts(); if (BeltSignalGeneratorEnabled.Value) InitSignalBelts();
InitItemSources();
} }
[HarmonyPostfix] [HarmonyPostfix]
@@ -1171,7 +1171,7 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
for (var i = 0; i < len; i++) for (var i = 0; i < len; i++)
{ {
if (ItemSources.ContainsKey(res[i])) continue; if (ItemSources.ContainsKey(res[i])) continue;
var rs = new ItemSource { Count = rescnt[i], From = new Dictionary<int, float>() }; var rs = new ItemSource { Count = rescnt[i], From = [] };
var it = recipe.Items; var it = recipe.Items;
var itcnt = recipe.ItemCounts; var itcnt = recipe.ItemCounts;
var len2 = it.Length; var len2 = it.Length;
@@ -1182,7 +1182,7 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
if (len > 1) if (len > 1)
{ {
rs.Extra = new Dictionary<int, float>(); rs.Extra = [];
for (var k = 0; k < len; k++) for (var k = 0; k < len; k++)
{ {
if (i != k) if (i != k)
@@ -1258,7 +1258,38 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
if (itemSource.From == null) return; if (itemSource.From == null) return;
foreach (var p in itemSource.From) foreach (var p in itemSource.From)
{ {
CalculateAllProductions(result, extra, p.Key, times * p.Value); var value = p.Value * times;
if (extra.TryGetValue(p.Key, out var rcount))
{
if (value <= rcount)
{
if (value == rcount)
{
extra.Remove(p.Key);
}
else
{
extra[p.Key] = rcount - value;
}
continue;
}
extra.Remove(p.Key);
value -= rcount;
}
if (result.TryGetValue(p.Key, out rcount))
{
rcount -= value;
if (rcount <= 0)
{
result.Remove(p.Key);
}
else
{
result[p.Key] = rcount;
}
continue;
}
CalculateAllProductions(result, extra, p.Key, value);
} }
} }
/* END: Item sources calculation */ /* END: Item sources calculation */

View File

@@ -48,7 +48,7 @@ public static class GamePatch
p.Value.OnUnregEvent(); p.Value.OnUnregEvent();
} }
abnormalLogic.determinators = new Dictionary<int, AbnormalityDeterminator>(); abnormalLogic.determinators = [];
} }
protected override void OnDisable() protected override void OnDisable()
@@ -81,7 +81,7 @@ public static class GamePatch
{ {
_savedDeterminators = __instance.determinators; _savedDeterminators = __instance.determinators;
if (!AbnormalDisablerEnabled.Value) return; if (!AbnormalDisablerEnabled.Value) return;
__instance.determinators = new Dictionary<int, AbnormalityDeterminator>(); __instance.determinators = [];
foreach (var p in _savedDeterminators) foreach (var p in _savedDeterminators)
{ {
p.Value.OnUnregEvent(); p.Value.OnUnregEvent();

View File

@@ -342,7 +342,7 @@ public class LogisticMiner : BaseUnityPlugin
public float FrameNext; public float FrameNext;
/* stores list of indices to veinData, with an extra INT which indicates cout of veinGroups at last */ /* stores list of indices to veinData, with an extra INT which indicates cout of veinGroups at last */
private Dictionary<int, List<int>> _veins = new(); private Dictionary<int, List<int>> _veins = [];
private int _mineIndex = -1; private int _mineIndex = -1;
public bool HasVein(int productId) public bool HasVein(int productId)

View File

@@ -1747,7 +1747,7 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
if (obj != null) return obj; if (obj != null) return obj;
} }
obj = new Dictionary<int, uint>(); obj = [];
_signalBelts[index] = obj; _signalBelts[index] = obj;
return obj; return obj;
} }

View File

@@ -1222,7 +1222,7 @@ public static class LogisticsPatch
private float _pixelPerItem; private float _pixelPerItem;
private StorageItemData[] _storageItems; private StorageItemData[] _storageItems;
private static readonly Dictionary<int, Sprite> ItemSprites = new(); private static readonly Dictionary<int, Sprite> ItemSprites = [];
private static readonly Color[] StateColor = [Color.gray, SupplyColor, DemandColor]; private static readonly Color[] StateColor = [Color.gray, SupplyColor, DemandColor];
private struct StorageItemData private struct StorageItemData