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

UXAssist 1.2.13

This commit is contained in:
2025-01-12 14:24:04 +08:00
parent 27f04376ae
commit f224b72838
5 changed files with 64 additions and 7 deletions

View File

@@ -849,21 +849,33 @@ public class FactoryPatch: PatchImpl<FactoryPatch>
public static void ProcessBeltSignals()
{
if (!_initialized) return;
var factories = GameMain.data?.factories;
var data = GameMain.data;
var factories = data?.factories;
if (factories == null) return;
PerformanceMonitor.BeginSample(ECpuWorkEntry.Belt);
foreach (var factory in factories)
for (var index = data.factoryCount - 1; index >= 0; index--)
{
var factory = factories[index];
if (factory == null) continue;
var belts = GetSignalBelts(factory.index);
var belts = GetSignalBelts(index);
if (belts == null || belts.Count == 0) continue;
var factoryProductionStat = GameMain.statistics.production.factoryStatPool[factory.index];
var factoryProductionStat = GameMain.statistics.production.factoryStatPool[index];
var productRegister = factoryProductionStat.productRegister;
var consumeRegister = factoryProductionStat.consumeRegister;
var countRecipe = BeltSignalCountRecipeEnabled.Value;
var cargoTraffic = factory.cargoTraffic;
var beltCount = cargoTraffic.beltCursor;
List<int> beltsToRemove = null;
foreach (var pair in belts)
{
if (pair.Key >= beltCount)
{
if (beltsToRemove == null)
beltsToRemove = [pair.Key];
else
beltsToRemove.Add(pair.Key);
continue;
}
var beltSignal = pair.Value;
var signalId = beltSignal.SignalId;
switch (signalId)
@@ -961,6 +973,11 @@ public class FactoryPatch: PatchImpl<FactoryPatch>
}
}
}
if (beltsToRemove == null) continue;
foreach (var beltId in beltsToRemove)
{
belts.Remove(beltId);
}
}
PerformanceMonitor.EndSample(ECpuWorkEntry.Belt);

View File

@@ -1,5 +1,9 @@
## Changlog
* 1.2.13
+ `Belt signals for buy out dark fog items automatically`: Fix possible crashes.
+ `Logistics Control Panel Improvement`: Auto apply filter with in-hand item now.
+ Fix an alignment issue on UI panel.
* 1.2.12
+ `Construct only structure points but frames`: Fix a bug that frames are still not constructed when this function is disabled.
+ `Drag building power poles in maximum connection range`: Fix a bug that single power pole cannot be placed at some positions.
@@ -229,6 +233,10 @@
## 更新日志
* 1.2.13
+ `用于自动购买黑雾物品的传送带信号`:修复了可能导致崩溃的问题
+ `物流控制面板改进`:现在也自动将拿着的物品设为筛选条件
+ 修复了UI面板上的对齐问题
* 1.2.12
+ `只建造节点不建造框架`:修复了关闭此功能时框架不进行建造的问题
+ `拖动建造电线杆时自动使用最大连接距离间隔`:修复了某些位置无法放置单个电线杆的问题

View File

@@ -1750,17 +1750,36 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
{
var factories = GameMain.data?.factories;
if (factories == null) return;
var factoriesCount = factories.Length;
var propertySystem = DSPGame.propertySystem;
List<int> factoriesToRemove = null;
foreach (var factoryIndex in SignalBeltFactoryIndices)
{
if (factoryIndex >= factories.Length) continue;
if (factoryIndex >= factoriesCount)
{
if (factoriesToRemove == null)
factoriesToRemove = [factoryIndex];
else
factoriesToRemove.Add(factoryIndex);
continue;
}
var signalBelts = GetSignalBelts(factoryIndex);
if (signalBelts == null) continue;
var factory = factories[factoryIndex];
if (factory == null) continue;
var cargoTraffic = factory.cargoTraffic;
var beltCount = cargoTraffic.beltCursor;
List<int> beltsToRemove = null;
foreach (var kvp in signalBelts)
{
if (kvp.Key >= beltCount)
{
if (beltsToRemove == null)
beltsToRemove = [kvp.Key];
else
beltsToRemove.Add(kvp.Key);
continue;
}
ref var belt = ref cargoTraffic.beltPool[kvp.Key];
var cargoPath = cargoTraffic.GetCargoPath(belt.segPathId);
var itemIdx = kvp.Value;
@@ -1787,6 +1806,19 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
if (consume > 0 && cargoPath.TryInsertItem(belt.segIndex + belt.segPivotOffset, itemId, consume, 0))
DarkFogItemsInVoid[itemIdx] -= consume;
}
if (beltsToRemove == null) continue;
foreach (var beltId in beltsToRemove)
signalBelts.Remove(beltId);
if (signalBelts.Count > 0) continue;
if (factoriesToRemove == null)
factoriesToRemove = [factoryIndex];
else
factoriesToRemove.Add(factoryIndex);
}
if (factoriesToRemove == null) return;
foreach (var factoryIndex in factoriesToRemove)
{
RemovePlanetSignalBelts(factoryIndex);
}
})
);

View File

@@ -4,7 +4,7 @@
<TargetFramework>net472</TargetFramework>
<BepInExPluginGuid>org.soardev.uxassist</BepInExPluginGuid>
<Description>DSP MOD - UXAssist</Description>
<Version>1.2.12</Version>
<Version>1.2.13</Version>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<LangVersion>latest</LangVersion>
<PackageId>UXAssist</PackageId>

View File

@@ -1,6 +1,6 @@
{
"name": "UXAssist",
"version_number": "1.2.12",
"version_number": "1.2.13",
"website_url": "https://github.com/soarqin/DSP_Mods/tree/master/UXAssist",
"description": "Some functions and patches for better user experience / 一些提升用户体验的功能和补丁",
"dependencies": [