本文整理汇总了C#中Thing.IsForbidden方法的典型用法代码示例。如果您正苦于以下问题:C# Thing.IsForbidden方法的具体用法?C# Thing.IsForbidden怎么用?C# Thing.IsForbidden使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Thing
的用法示例。
在下文中一共展示了Thing.IsForbidden方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: 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;
}