public static void DoTrainableCheckbox(Rect rect, Pawn pawn, TrainableDef td, AcceptanceReport canTrain, bool drawLabel, bool doTooltip) { bool flag = pawn.training.HasLearned(td); bool wanted = pawn.training.GetWanted(td); bool flag2 = wanted; Texture2D texChecked = (!flag) ? null : TrainingCardUtility.LearnedTrainingTex; Texture2D texUnchecked = (!flag) ? null : TrainingCardUtility.LearnedNotTrainingTex; if (drawLabel) { Widgets.CheckboxLabeled(rect, td.LabelCap, ref wanted, !canTrain.Accepted, texChecked, texUnchecked, false); } else { Widgets.Checkbox(rect.position, ref wanted, rect.width, !canTrain.Accepted, true, texChecked, texUnchecked); } if (wanted != flag2) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.AnimalTraining, KnowledgeAmount.Total); pawn.training.SetWantedRecursive(td, wanted); } if (doTooltip) { TrainingCardUtility.DoTrainableTooltip(rect, pawn, td, canTrain); } }
protected override void FillTab() { Rect rect = new Rect(0f, 0f, size.x, size.y).ContractedBy(17f); rect.yMin += 10f; TrainingCardUtility.DrawTrainingCard(rect, base.SelPawn); }
public static void DoTrainableCheckbox(Rect rect, Pawn pawn, TrainableDef td, AcceptanceReport canTrain, bool drawLabel, bool doTooltip) { if (pawn.training.IsCompleted(td)) { if (!drawLabel) { GUI.DrawTexture(rect, TrainingCardUtility.TrainedTrainableTex); } } else { bool wanted = pawn.training.GetWanted(td); bool flag = wanted; if (drawLabel) { Widgets.CheckboxLabeled(rect, td.LabelCap, ref wanted, !canTrain.Accepted); } else { Widgets.Checkbox(rect.position, ref wanted, rect.width, !canTrain.Accepted); } if (wanted != flag) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.AnimalTraining, KnowledgeAmount.Total); pawn.training.SetWantedRecursive(td, wanted); } } if (doTooltip) { TrainingCardUtility.DoTrainableTooltip(rect, pawn, td, canTrain); } }
public static void DrawTrainingCard(Rect rect, Pawn pawn) { GUI.BeginGroup(rect); string label = "TrainableIntelligence".Translate() + ": " + pawn.RaceProps.TrainableIntelligence.label; Widgets.Label(new Rect(0f, 0f, rect.width, 25f), label); if (pawn.training.IsCompleted(TrainableDefOf.Obedience)) { Rect rect2 = new Rect(0f, 20f, rect.width, 25f); Widgets.Label(rect2, "Master".Translate() + ": "); Vector2 center = rect2.center; rect2.xMin = center.x; string label2 = TrainableUtility.MasterString(pawn); if (Widgets.ButtonText(rect2, label2, true, false, true)) { TrainableUtility.OpenMasterSelectMenu(pawn); } } float num = 50f; List <TrainableDef> trainableDefsInListOrder = TrainableUtility.TrainableDefsInListOrder; for (int i = 0; i < trainableDefsInListOrder.Count; i++) { if (TrainingCardUtility.TryDrawTrainableRow(new Rect(0f, num, rect.width, 28f), pawn, trainableDefsInListOrder[i])) { num = (float)(num + 28.0); } } GUI.EndGroup(); }
public override void DoCell(Rect rect, Pawn pawn, PawnTable table) { if (pawn.training != null) { bool visible; AcceptanceReport canTrain = pawn.training.CanAssignToTrain(def.trainable, out visible); if (visible && canTrain.Accepted) { int num = (int)((rect.width - 24f) / 2f); int num2 = Mathf.Max(3, 0); TrainingCardUtility.DoTrainableCheckbox(new Rect(rect.x + (float)num, rect.y + (float)num2, 24f, 24f), pawn, def.trainable, canTrain, drawLabel: false, doTooltip: true); } } }
private static bool TryDrawTrainableRow(Rect rect, Pawn pawn, TrainableDef td) { bool flag = pawn.training.IsCompleted(td); bool flag2 = default(bool); AcceptanceReport canTrain = pawn.training.CanAssignToTrain(td, out flag2); if (!flag2) { return(false); } Widgets.DrawHighlightIfMouseover(rect); Rect rect2 = rect; rect2.width -= 50f; rect2.xMin += (float)((float)td.indent * 10.0); Rect rect3 = rect; rect3.xMin = (float)(rect3.xMax - 50.0 + 17.0); if (!flag) { TrainingCardUtility.DoTrainableCheckbox(rect2, pawn, td, canTrain, true, false); } else { Text.Anchor = TextAnchor.MiddleLeft; Widgets.Label(rect2, td.LabelCap); Text.Anchor = TextAnchor.UpperLeft; } if (flag) { GUI.color = Color.green; } Text.Anchor = TextAnchor.MiddleLeft; Widgets.Label(rect3, pawn.training.GetSteps(td) + " / " + td.steps); Text.Anchor = TextAnchor.UpperLeft; if (DebugSettings.godMode && !pawn.training.IsCompleted(td)) { Rect rect4 = rect3; rect4.yMin = (float)(rect4.yMax - 10.0); rect4.xMin = (float)(rect4.xMax - 10.0); if (Widgets.ButtonText(rect4, "+", true, false, true)) { pawn.training.Train(td, pawn.Map.mapPawns.FreeColonistsSpawned.RandomElement()); } } TrainingCardUtility.DoTrainableTooltip(rect, pawn, td, canTrain); GUI.color = Color.white; return(true); }
public override void DoCell(Rect rect, Pawn pawn, PawnTable table) { if (pawn.training != null) { bool flag = default(bool); AcceptanceReport canTrain = pawn.training.CanAssignToTrain(base.def.trainable, out flag); if (flag && canTrain.Accepted) { int num = (int)((rect.width - 24.0) / 2.0); int num2 = Mathf.Max(3, 0); Rect rect2 = new Rect(rect.x + (float)num, rect.y + (float)num2, 24f, 24f); TrainingCardUtility.DoTrainableCheckbox(rect2, pawn, base.def.trainable, canTrain, false, true); } } }
public static void DrawTrainingCard(Rect rect, Pawn pawn) { Text.Font = GameFont.Small; Rect rect2 = new Rect(TrainingCardUtility.TrainabilityLeft, TrainingCardUtility.TrainabilityTop, 30f, 30f); TooltipHandler.TipRegion(rect2, "RenameAnimal".Translate()); if (Widgets.ButtonImage(rect2, TexButton.Rename)) { Find.WindowStack.Add(new Dialog_NamePawn(pawn)); } Listing_Standard listing_Standard = new Listing_Standard(); listing_Standard.Begin(rect); listing_Standard.Label("CreatureTrainability".Translate(new object[] { pawn.def.label }).CapitalizeFirst() + ": " + pawn.RaceProps.trainability.LabelCap, -1f, null); Listing_Standard arg_FE_0 = listing_Standard; string label = "CreatureWildness".Translate(new object[] { pawn.def.label }).CapitalizeFirst() + ": " + pawn.RaceProps.wildness.ToStringPercent(); string wildnessExplanation = TrainableUtility.GetWildnessExplanation(pawn.def); arg_FE_0.Label(label, -1f, wildnessExplanation); if (pawn.training.HasLearned(TrainableDefOf.Obedience)) { Rect rect3 = listing_Standard.GetRect(25f); Widgets.Label(rect3, "Master".Translate() + ": "); rect3.xMin = rect3.center.x; TrainableUtility.MasterSelectButton(rect3, pawn, false); } listing_Standard.Gap(12f); float num = 50f; List <TrainableDef> trainableDefsInListOrder = TrainableUtility.TrainableDefsInListOrder; for (int i = 0; i < trainableDefsInListOrder.Count; i++) { if (TrainingCardUtility.TryDrawTrainableRow(listing_Standard.GetRect(28f), pawn, trainableDefsInListOrder[i])) { num += 28f; } } listing_Standard.End(); }
public override void DoCell(Rect rect, Pawn pawn, PawnTable table) { if (pawn.training == null) { return; } bool flag; AcceptanceReport canTrain = pawn.training.CanAssignToTrain(this.def.trainable, out flag); if (!flag || !canTrain.Accepted) { return; } int num = (int)((rect.width - 24f) / 2f); int num2 = Mathf.Max(3, 0); Rect rect2 = new Rect(rect.x + (float)num, rect.y + (float)num2, 24f, 24f); TrainingCardUtility.DoTrainableCheckbox(rect2, pawn, this.def.trainable, canTrain, false, true); }
protected override void UpdateSize() { base.UpdateSize(); size = new Vector2(300f, TrainingCardUtility.TotalHeightForPawn(base.SelPawn)); }