本文整理汇总了C#中Thing.IsBurning方法的典型用法代码示例。如果您正苦于以下问题:C# Thing.IsBurning方法的具体用法?C# Thing.IsBurning怎么用?C# Thing.IsBurning使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Thing
的用法示例。
在下文中一共展示了Thing.IsBurning方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: HasJobOnThing
public override bool HasJobOnThing( Pawn pawn, Thing t )
{
#if DEBUG_WORKGIVER
Log.Message("Checking " + t.LabelCap + " for job.");
Log.Message("ManagerStation" + ((t as Building_ManagerStation) != null));
Log.Message("Comp" + (t.TryGetComp<Comp_ManagerStation>() != null));
Log.Message("Incap" + (!pawn.Dead && !pawn.Downed && !pawn.IsBurning() && !t.IsBurning()));
Log.Message("CanReserve and reach" + (pawn.CanReserveAndReach(t, PathEndMode, Danger.Some)));
CompPowerTrader powera = t.TryGetComp<CompPowerTrader>();
Log.Message("Power" + (powera == null || powera.PowerOn));
Log.Message("Job" + (Manager.Get.JobStack.NextJob != null));
#endif
if ( !( t is Building_ManagerStation ) )
{
return false;
}
if ( t.TryGetComp<Comp_ManagerStation>() == null )
{
return false;
}
if ( pawn.Dead ||
pawn.Downed ||
pawn.IsBurning() ||
t.IsBurning() )
{
return false;
}
if ( !pawn.CanReserveAndReach( t, PathEndMode, Danger.Some ) )
{
return false;
}
CompPowerTrader power = t.TryGetComp<CompPowerTrader>();
if ( power != null &&
!power.PowerOn )
{
return false;
}
if ( Manager.Get.JobStack.NextJob != null )
{
return true;
}
return false;
}
示例2: HasJobOnThing
public override bool HasJobOnThing( Pawn pawn, Thing thing )
{
if ( thing.Faction != pawn.Faction )
return false;
if ( pawn.Faction == Faction.OfColony && !Find.AreaHome[thing.Position] )
return false;
if ( thing.IsBurning() )
return false;
if ( Find.DesignationManager.DesignationOn( thing, DesignationDefOf.Deconstruct ) != null )
return false;
ThingWithComps twc = thing as ThingWithComps;
if ( twc == null )
return false;
var comp = twc.TryGetComp<CompBreakdownable>();
if ( comp == null )
return false;
if ( !MapComponent_Durability.RequiresMaintenance( comp ) )
return false;
if ( !pawn.CanReserveAndReach( thing, PathEndMode.Touch, pawn.NormalMaxDanger() ) )
return false;
return true;
}
示例3: Ignite
private Toil Ignite(Thing target)
{
Toil toil = new Toil();
toil.initAction = delegate
{
Pawn feenix = this.pawn;
if (target.FlammableNow && !target.IsBurning())
{
if (target.CanEverAttachFire())
{
target.TryAttachFire(1f);
}
else
{
FireUtility.TryStartFireIn(target.Position, 1f);
}
PawnUtility.ForceWait(feenix, 250, target);
}
else
{
return;
}
};
toil.defaultCompleteMode = ToilCompleteMode.Delay;
toil.defaultDuration = 250;
return toil;
}
示例4: JobOnThing
public override Job JobOnThing(Pawn pawn, Thing researchBench)
{
var billGiver = researchBench as IBillGiver;
Bill bill;
// check if can generate bills
if (billGiver == null)
{
return null;
}
// require no power or power available
if (!billGiver.CurrentlyUsable())
{
return null;
}
if (!pawn.CanReserve(researchBench) ||
!pawn.CanReach(researchBench.InteractionCell, PathEndMode.OnCell, Danger.Some) ||
researchBench.IsBurning() || researchBench.IsForbidden(pawn))
{
return null;
}
// researchBench has added bills
if (billGiver.BillStack.Count == 1)
{
// clear bill stack if research is finished or changed
if (billGiver.BillStack[0].recipe.defName != Find.ResearchManager.currentProj.defName ||
ResearchProjectDef.Named(billGiver.BillStack[0].recipe.defName).IsFinished)
{
billGiver.BillStack.Clear();
}
}
// Add research bill if it's not added already
if (billGiver.BillStack.Count == 0)
{
bill = new Bill_Production(DefDatabase<RecipeDef>.GetNamed(Find.ResearchManager.currentProj.defName))
{
suspended = true
};
// NOTE: why suspended???
billGiver.BillStack.AddBill(bill);
}
else
{
bill = billGiver.BillStack[0];
}
if (!TryFindBestBillIngredients(bill, pawn, researchBench, chosenIngridiens))
{
if (FloatMenuMakerMap.making)
{
JobFailReason.Is(MissingMaterialsTranslated);
}
return null;
}
bill.suspended = false;
// clear the work table
var haulAside = WorkGiverUtility.HaulStuffOffBillGiverJob(pawn, billGiver, null);
if (haulAside != null)
{
return haulAside;
}
// gather ingridients and do bill
var doBill = new Job(JobDefOf.Research, researchBench)
{
targetQueueB = new List<TargetInfo>(chosenIngridiens.Count),
numToBringList = new List<int>(chosenIngridiens.Count)
};
foreach (var ingridient in chosenIngridiens)
{
doBill.targetQueueB.Add(ingridient.thing);
doBill.numToBringList.Add(ingridient.count);
}
doBill.haulMode = HaulMode.ToCellNonStorage;
doBill.bill = bill;
return doBill;
}