调整价格,绘制外骨骼初稿
This commit is contained in:
Binary file not shown.
@@ -1,13 +1,17 @@
|
||||
{
|
||||
"Version": 1,
|
||||
"WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
|
||||
"WorkspaceRootPath": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\ara_compinteractiveproducer\\compinteractiveproducer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\compnutritiontofuelconverter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\compnutritiontofuelconverter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\ara_compinteractiveproducer\\compinteractiveproducer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_compinteractiveproducer\\compinteractiveproducer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\ara_compinteractiveproducer\\compresearchproducer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\building_comps\\ara_compinteractiveproducer\\compresearchproducer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_compinteractiveproducer\\compresearchproducer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
}
|
||||
],
|
||||
@@ -18,21 +22,8 @@
|
||||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 2,
|
||||
"SelectedChildIndex": 1,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"Title": "CompResearchProducer.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs",
|
||||
"RelativeDocumentMoniker": "Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs",
|
||||
"RelativeToolTip": "Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs",
|
||||
"ViewState": "AgIAADoBAAAAAAAAAAAkwFIBAAAmAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-10-17T09:09:18.518Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Bookmark",
|
||||
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
|
||||
@@ -40,12 +31,37 @@
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "CompNutritionToFuelConverter.cs",
|
||||
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\CompNutritionToFuelConverter.cs",
|
||||
"RelativeDocumentMoniker": "Building_Comps\\CompNutritionToFuelConverter.cs",
|
||||
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\CompNutritionToFuelConverter.cs",
|
||||
"RelativeToolTip": "Building_Comps\\CompNutritionToFuelConverter.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAKEAAAAcAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-10-17T11:32:00.484Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "CompResearchProducer.cs",
|
||||
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs",
|
||||
"RelativeDocumentMoniker": "Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs",
|
||||
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs",
|
||||
"RelativeToolTip": "Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs",
|
||||
"ViewState": "AgIAADoBAAAAAAAAAAAkwFIBAAAmAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-10-17T09:09:18.518Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"Title": "CompInteractiveProducer.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs",
|
||||
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs",
|
||||
"RelativeDocumentMoniker": "Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs",
|
||||
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs",
|
||||
"RelativeToolTip": "Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs",
|
||||
"ViewState": "AgIAAJMBAAAAAAAAAAAUwNcBAAAyAAAAAAAAAA==",
|
||||
"ViewState": "AgIAAJYBAAAAAAAAAAAUwKoBAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-10-17T09:00:51.526Z",
|
||||
"EditorCaption": ""
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using RimWorld;
|
||||
using System.Collections.Generic;
|
||||
using Verse;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
@@ -19,7 +20,7 @@ namespace ArachnaeSwarm
|
||||
public class CompNutritionToFuelConverter : ThingComp
|
||||
{
|
||||
private CompRefuelableNutrition nutritionComp;
|
||||
private CompRefuelable fuelComp;
|
||||
private CompProductStorage productStorageComp; // 改为使用 CompProductStorage
|
||||
|
||||
public float nutritionProgress = 0f;
|
||||
public float workProgress = 0f;
|
||||
@@ -30,15 +31,15 @@ namespace ArachnaeSwarm
|
||||
{
|
||||
base.PostSpawnSetup(respawningAfterLoad);
|
||||
nutritionComp = parent.GetComp<CompRefuelableNutrition>();
|
||||
fuelComp = parent.GetComp<CompRefuelable>();
|
||||
productStorageComp = parent.GetComp<CompProductStorage>(); // 改为获取 CompProductStorage
|
||||
|
||||
if (nutritionComp == null)
|
||||
{
|
||||
Log.Error($"[ArachnaeSwarm] {parent.def.defName} has CompNutritionToFuelConverter but no CompRefuelableNutrition.");
|
||||
}
|
||||
if (fuelComp == null)
|
||||
if (productStorageComp == null)
|
||||
{
|
||||
Log.Error($"[ArachnaeSwarm] {parent.def.defName} has CompNutritionToFuelConverter but no CompRefuelable.");
|
||||
Log.Error($"[ArachnaeSwarm] {parent.def.defName} has CompNutritionToFuelConverter but no CompProductStorage.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +61,7 @@ namespace ArachnaeSwarm
|
||||
|
||||
private void TryProcess()
|
||||
{
|
||||
if (fuelComp == null || fuelComp.IsFull)
|
||||
if (productStorageComp == null || productStorageComp.IsFull)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -88,27 +89,37 @@ namespace ArachnaeSwarm
|
||||
{
|
||||
int unitsToCraft = (int)(workProgress / Props.workAmount);
|
||||
float fuelToProduce = unitsToCraft * Props.fuelAmount;
|
||||
float spaceInTank = fuelComp.Props.fuelCapacity - fuelComp.Fuel;
|
||||
float spaceInStorage = productStorageComp.StorageSpaceRemaining;
|
||||
|
||||
if (spaceInTank > 0)
|
||||
if (spaceInStorage > 0)
|
||||
{
|
||||
// Add as much fuel as possible, up to what was produced.
|
||||
float fuelToAdd = System.Math.Min(fuelToProduce, spaceInTank);
|
||||
fuelComp.Refuel(fuelToAdd);
|
||||
|
||||
// Consume the full cost, regardless of how much was actually added.
|
||||
nutritionProgress -= unitsToCraft * Props.nutritionCost;
|
||||
workProgress -= unitsToCraft * Props.workAmount;
|
||||
// 使用 CompProductStorage 的 API 添加产物
|
||||
float fuelToAdd = System.Math.Min(fuelToProduce, spaceInStorage);
|
||||
bool added = productStorageComp.TryAddProduct(fuelToAdd);
|
||||
|
||||
if (added)
|
||||
{
|
||||
// Consume the full cost, regardless of how much was actually added.
|
||||
nutritionProgress -= unitsToCraft * Props.nutritionCost;
|
||||
workProgress -= unitsToCraft * Props.workAmount;
|
||||
|
||||
// 记录日志用于调试
|
||||
Log.Message($"[NutritionToFuel] Added {fuelToAdd} fuel to storage. Remaining space: {productStorageComp.StorageSpaceRemaining}");
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.Warning($"[NutritionToFuel] Failed to add fuel to storage. Requested: {fuelToAdd}, Space: {spaceInStorage}");
|
||||
}
|
||||
}
|
||||
// If spaceInTank is 0, do nothing and let progress build up.
|
||||
// If spaceInStorage is 0, do nothing and let progress build up.
|
||||
}
|
||||
}
|
||||
|
||||
public override string CompInspectStringExtra()
|
||||
{
|
||||
if (fuelComp == null) return null;
|
||||
if (productStorageComp == null) return null;
|
||||
|
||||
if (fuelComp.IsFull)
|
||||
if (productStorageComp.IsFull)
|
||||
{
|
||||
return "ARA_NutritionConverter_State_TankFull".Translate();
|
||||
}
|
||||
@@ -120,5 +131,46 @@ namespace ArachnaeSwarm
|
||||
|
||||
return "ARA_NutritionConverter_Working".Translate(workProgress.ToString("F0"), Props.workAmount);
|
||||
}
|
||||
|
||||
// 新增:调试命令
|
||||
public override IEnumerable<Gizmo> CompGetGizmosExtra()
|
||||
{
|
||||
foreach (var gizmo in base.CompGetGizmosExtra())
|
||||
{
|
||||
yield return gizmo;
|
||||
}
|
||||
|
||||
if (DebugSettings.ShowDevGizmos)
|
||||
{
|
||||
// 调试命令:显示状态信息
|
||||
yield return new Command_Action
|
||||
{
|
||||
defaultLabel = "DEV: Show Converter Status",
|
||||
action = delegate
|
||||
{
|
||||
string status = $"Nutrition Converter Status:\n" +
|
||||
$"Nutrition Progress: {nutritionProgress:F1}/{Props.nutritionCost}\n" +
|
||||
$"Work Progress: {workProgress:F0}/{Props.workAmount}\n" +
|
||||
$"Product Storage: {productStorageComp?.StorageAmount:F1}/{productStorageComp?.StorageCapacity:F1}\n" +
|
||||
$"Nutrition Comp: {(nutritionComp != null ? "Found" : "Missing")}\n" +
|
||||
$"Product Storage Comp: {(productStorageComp != null ? "Found" : "Missing")}";
|
||||
Messages.Message(status, MessageTypeDefOf.SilentInput);
|
||||
Log.Message(status);
|
||||
}
|
||||
};
|
||||
|
||||
// 调试命令:重置进度
|
||||
yield return new Command_Action
|
||||
{
|
||||
defaultLabel = "DEV: Reset Progress",
|
||||
action = delegate
|
||||
{
|
||||
nutritionProgress = 0f;
|
||||
workProgress = 0f;
|
||||
Messages.Message("Converter progress reset", MessageTypeDefOf.SilentInput);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user