refactor(1.6): 更新口袋空间穿梭机相关翻译

- 修改了 Building_WULA_ArmedShuttleWithPocket.xml 中的标签翻译
- 更新了 WULA_PocketShuttle.xml 中的口袋空间相关文本
- 移除了不必要的注释和冗余代码
This commit is contained in:
2025-08-25 18:39:13 +08:00
parent 8a1188cc35
commit 0f19e295e4
5 changed files with 2120 additions and 56 deletions

View File

@@ -298,7 +298,7 @@
<!-- 口袋空间退出点定义 -->
<ThingDef ParentName="PocketMapExit">
<defName>WULA_PocketMapExit</defName>
<label>pocket space exit</label>
<label>运输机升降平台</label>
<description>An exit portal that allows return from the pocket space to the main map.</description>
<thingClass>WulaFallenEmpire.Building_PocketMapExit</thingClass>
<size>(3,3)</size>

View File

@@ -11,7 +11,7 @@
<WULA.PocketSpace.InitializeDesc>初始化穿梭机的内部口袋空间。这将在穿梭机内部创建维度储存空间。</WULA.PocketSpace.InitializeDesc>
<WULA.PocketSpace.Enter>进入内部空间</WULA.PocketSpace.Enter>
<WULA.PocketSpace.EnterDesc>进入穿梭机的内部口袋空间。无需骇入即可直接访问。选中的殖民者将被传送到内部空间。</WULA.PocketSpace.EnterDesc>
<WULA.PocketSpace.EnterDesc>进入穿梭机的内部口袋空间。选中的殖民者将被传送到内部空间。</WULA.PocketSpace.EnterDesc>
<WULA.PocketSpace.ViewMap>查看内部空间</WULA.PocketSpace.ViewMap>
@@ -33,7 +33,6 @@
<WULA.PocketSpace.TransferSuccess>{0} 名人员已成功传送到内部空间。</WULA.PocketSpace.TransferSuccess>
<!-- 存储管理对话框 -->
<WULA.PocketSpace.PawnCount>内部空间人员: {0}</WULA.PocketSpace.PawnCount>
<WULA.PocketSpace.NoPawnsSelected>请选择至少一名殖民者进入内部空间。</WULA.PocketSpace.NoPawnsSelected>
@@ -42,25 +41,4 @@
<WULA.PocketSpace.ExitToMainMapDesc>通过口袋空间出口返回主地图。</WULA.PocketSpace.ExitToMainMapDesc>
<WULA.PocketSpace.ExitSuccess>{0} 已成功返回主地图。</WULA.PocketSpace.ExitSuccess>
<!-- 建筑标签和描述 -->
<WULA_ArmedShuttleWithPocket.label>内置空间武装穿梭机</WULA_ArmedShuttleWithPocket.label>
<WULA_ArmedShuttleWithPocket.description>一架配备了集成口袋空间技术的先进化燃料动力穿梭机。装备有防御炮塔和无需骇入即可访问的内部储存维度。非常适合长距离探索和移动作战行动。</WULA_ArmedShuttleWithPocket.description>
<!-- 武器相关 -->
<Gun_ChargeBlasterAdvancedTurret.label>先进充能爆破器</Gun_ChargeBlasterAdvancedTurret.label>
<Gun_ChargeBlasterAdvancedTurret.description>一种升级版脉冲充能速射爆破器,配备增强型瞄准系统和提升的火力输出。</Gun_ChargeBlasterAdvancedTurret.description>
<WULA_Bullet_ArmedShuttleAdvanced.label>先进穿梭机炮弹</WULA_Bullet_ArmedShuttleAdvanced.label>
<!-- 天降物相关 -->
<ArmedShuttleWithPocketIncoming_WULA.label>内置空间武装穿梭机(降落中)</ArmedShuttleWithPocketIncoming_WULA.label>
<ArmedShuttleWithPocketLeaving_WULA.label>内置空间武装穿梭机(起飞中)</ArmedShuttleWithPocketLeaving_WULA.label>
<!-- 运输船相关 -->
<Ship_ArmedShuttleWithPocket.label>内置空间武装穿梭机</Ship_ArmedShuttleWithPocket.label>
<!-- 退出点建筑 -->
<WULA_PocketMapExit.label>口袋空间出口</WULA_PocketMapExit.label>
<WULA_PocketMapExit.description>一个传送门出口,允许从口袋空间返回到主地图。</WULA_PocketMapExit.description>
</LanguageData>

File diff suppressed because one or more lines are too long

View File

@@ -29,10 +29,21 @@ namespace WulaFallenEmpire
// 生成内部地板
GenerateFloor(map);
// 生成一些基础设施(照明等)
GenerateBasicInfrastructure(map);
Log.Message("[WULA] WULA pocket space generation completed");
// 添加预制件生成
// 注意这里需要根据实际的PrefabDef名称进行加载
// 暂时使用一个示例PrefabDef名称实际使用时应替换
PrefabDef customPrefabDef = DefDatabase<PrefabDef>.GetNamed("YourCustomPrefabDefName", false);
if (customPrefabDef != null)
{
GeneratePrefab(map, customPrefabDef);
Log.Message($"[WULA] Generated custom prefab: {customPrefabDef.defName}");
}
else
{
Log.Warning("[WULA] Custom prefab 'YourCustomPrefabDefName' not found. Skipping prefab generation.");
}
}
catch (Exception ex)
{
@@ -208,46 +219,53 @@ namespace WulaFallenEmpire
}
/// <summary>
/// 生成基础设施
/// 生成预制件
/// </summary>
private void GenerateBasicInfrastructure(Map map)
private void GeneratePrefab(Map map, PrefabDef prefabDef)
{
IntVec3 mapSize = map.Size;
IntVec3 center = map.Center;
// 获取灯具定义
ThingDef lampDef = DefDatabase<ThingDef>.GetNamed("StandingLamp", false) ??
DefDatabase<ThingDef>.GetNamed("TorchLamp", false) ??
DefDatabase<ThingDef>.GetNamed("Campfire", false);
if (lampDef == null)
if (prefabDef == null)
{
Log.Warning("[WULA] No lamp definition found, skipping lighting generation");
Log.Error("[WULA] PrefabDef is null, cannot generate prefab.");
return;
}
// 在四个角落放置照明设备
var lightPositions = new List<IntVec3>
{
new IntVec3(2, 0, 2), // 左下角
new IntVec3(mapSize.x - 3, 0, 2), // 右下角
new IntVec3(2, 0, mapSize.z - 3), // 左上角
new IntVec3(mapSize.x - 3, 0, mapSize.z - 3) // 右上角
};
foreach (IntVec3 pos in lightPositions)
// 获取预制件的中心点,将其放置在口袋空间的中心
IntVec3 mapCenter = map.Center;
IntVec3 prefabOrigin = mapCenter - new IntVec3(prefabDef.size.x / 2, 0, prefabDef.size.z / 2);
// 生成物品
foreach (var thingData in prefabDef.GetThings())
{
if (pos.InBounds(map) && pos.Standable(map))
IntVec3 thingPos = prefabOrigin + thingData.cell;
if (thingPos.InBounds(map))
{
// 放置立式灯
Thing lamp = ThingMaker.MakeThing(lampDef);
lamp.SetFaction(null);
GenPlace.TryPlaceThing(lamp, pos, map, ThingPlaceMode.Direct);
Thing thing = ThingMaker.MakeThing(thingData.data.def, thingData.data.stuff);
if (thing != null)
{
// PrefabThingData 不包含 factionDef派系通常在生成时由上下文决定
// thing.SetFaction(thingData.data.factionDef != null ? Faction.OfPlayerSilentFail : null);
GenPlace.TryPlaceThing(thing, thingPos, map, ThingPlaceMode.Direct);
}
}
}
// 在中心区域留出空间,这里将放置退出点
// 不在这里放置退出点因为这会由Building_ArmedShuttleWithPocket来处理
// 生成地形
foreach (var terrainData in prefabDef.GetTerrain())
{
IntVec3 terrainPos = prefabOrigin + terrainData.cell;
if (terrainPos.InBounds(map))
{
map.terrainGrid.SetTerrain(terrainPos, terrainData.data.def);
}
}
// 递归生成子预制件(如果存在)
foreach (var subPrefabData in prefabDef.GetPrefabs())
{
// 这里需要递归调用GeneratePrefab但为了简化暂时只处理顶层
// 实际项目中,可能需要更复杂的逻辑来处理子预制件的位置和旋转
Log.Warning($"[WULA] Sub-prefabs are not fully supported in this simple generator: {subPrefabData.data.def.defName}");
}
}
}
}