本文整理汇总了C#中Thing.DeSpawn方法的典型用法代码示例。如果您正苦于以下问题:C# Thing.DeSpawn方法的具体用法?C# Thing.DeSpawn怎么用?C# Thing.DeSpawn使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Thing
的用法示例。
在下文中一共展示了Thing.DeSpawn方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReplacePowerCell
public void ReplacePowerCell(Thing newCell)
{
if (newCell == null)
{
Log.Error("Tried to add a new power cell to " + parent.ThingID + " but it was null");
return;
}
bool hasStat = false;
StatDef sDef = StatDef.Named("MD2PowerCellMaxStorage");
if (newCell.def.statBases != null)
{
for (int i = 0; i < parent.def.statBases.Count; i++)
{
if (newCell.def.statBases[i].stat == sDef)
{
hasStat = true;
break;
}
}
}
if (!hasStat)
{
Log.Error(newCell.ThingID + " has no power cell stat");
return;
}
if (PowerCell != null)
GenSpawn.Spawn(PowerCell, parent.Position);
PowerCell = newCell;
parent.TotalCharge = newCell.GetStatValue(sDef) * 0.1f;
if (newCell.SpawnedInWorld)
newCell.DeSpawn();
}
示例2: ReceiveThing
public bool ReceiveThing(Thing thingToReceive)
{
if (thingToReceive != null)
{
if (compWarehouse != null) compWarehouse.buffer.RemoveAll(x => x == thingToReceive);
foreach (IntVec3 cellReceiving in parent.OccupiedRect().Cells)
{
if (cellReceiving.AllowedToAccept(parent.Map, thingToReceive)
&& cellReceiving.Priority(parent.Map) >= thingToReceive.Position.Priority(parent.Map))
{
IntVec3 thingToReceiveCell = thingToReceive.Position;
List<Thing> thingsReceiving = cellReceiving.GetItemList(parent.Map, true);
if (thingsReceiving.Count == 0)
{
if (thingToReceive.IsChunk())
{
Thing chunk = ThingMaker.MakeThing(thingToReceive.def);
if (GenPlace.TryPlaceThing(chunk, cellReceiving, parent.Map, ThingPlaceMode.Direct))
{
cellReceiving.DropSound(parent.Map, chunk.def);
thingToReceive.Position.ThrowDustPuff(parent.Map);
thingToReceive.DeSpawn();
}
}
else if (thingToReceive.stackCount > 0)
{
thingToReceiveCell.ThrowDustPuff(parent.Map);
Thing thing = GenSpawn.Spawn(thingToReceive.SplitOff(thingToReceive.stackCount), cellReceiving, parent.Map);
cellReceiving.DropSound(parent.Map, thing.def);
SlotGroup slotGroup = cellReceiving.GetSlotGroup(parent.Map);
if (slotGroup != null && slotGroup.parent != null)
{
slotGroup.parent.Notify_ReceivedThing(thing);
}
}
return true;
}
else
{
if (!thingToReceive.IsChunk())
{
foreach (Thing thingReceiving in thingsReceiving)
{
if (thingReceiving.CanAbsorb(thingToReceive))
{
int thingReceivingStackCount = thingReceiving.stackCount;
if (thingReceiving.TryAbsorbStack(thingToReceive, true))
{
thingToReceiveCell.ThrowDustPuff(parent.Map);
}
if (thingReceivingStackCount != thingReceiving.stackCount)
{
ForbidUtility.SetForbidden(thingReceiving, false, false);
cellReceiving.DropSound(parent.Map, thingReceiving.def);
}
return true;
}
}
}
}
}
}
}
return false;
}
示例3: ReceiveThing
public bool ReceiveThing(Thing thingToReceive)
{
IntVec3 cellReceiving = parent.OccupiedRect().CenterCell;
if (thingToReceive != null
&& thingToReceive.Spawned
&& !thingToReceive.Destroyed
&& thingToReceive.IsChunk()
&& ChunkTotalFast() < maxChunks
&& cellReceiving.AllowedToAccept(parent.Map, thingToReceive)
&& cellReceiving.Priority(parent.Map) >= thingToReceive.Position.Priority(parent.Map))
{
if (compWarehouse != null) compWarehouse.buffer.RemoveAll(x => x == thingToReceive);
ChunkRecord chunkRecord = chunkRecords.Find(x => x.chunkDef == thingToReceive.def);
if (chunkRecord != null)
{
chunkRecord.amount++;
}
else
{
chunkRecord = new ChunkRecord();
chunkRecord.amount = 1;
chunkRecord.chunkDef = thingToReceive.def;
chunkRecords.Add(chunkRecord);
}
thingToReceive.Position.ThrowDustPuff(parent.Map);
thingToReceive.Position.DropSound(parent.Map, thingToReceive.def);
thingToReceive.DeSpawn();
return true;
}
return false;
}