Files
ArachnaeSwarm/Source/ArachnaeSwarm/ARA_BuildingTerrainSpawn/CompDelayedTerrainSpawn.cs
2025-09-03 13:35:30 +08:00

57 lines
1.4 KiB
C#

using RimWorld;
using Verse;
namespace ArachnaeSwarm
{
public class CompDelayedTerrainSpawn : ThingComp
{
private CompProperties_DelayedTerrainSpawn Props => (CompProperties_DelayedTerrainSpawn)props;
private int ticksToSpawn;
private bool started;
public override void PostSpawnSetup(bool respawningAfterLoad)
{
base.PostSpawnSetup(respawningAfterLoad);
StartDelayedSpawn();
}
public override void CompTick()
{
base.CompTick();
if (started)
{
ticksToSpawn--;
if (ticksToSpawn <= 0)
{
DoTerrainSpawn();
}
}
}
private void StartDelayedSpawn()
{
started = true;
ticksToSpawn = Props.delayTicks;
}
private void DoTerrainSpawn()
{
if (parent.Destroyed)
{
return;
}
if (Props.terrainToSpawn != null)
{
foreach (IntVec3 current in GenRadial.RadialCellsAround(parent.Position, Props.spawnRadius, true))
{
if (current.InBounds(parent.Map) && current.Walkable(parent.Map))
{
parent.Map.terrainGrid.SetTerrain(current, Props.terrainToSpawn);
}
}
}
}
}
}