Пример #1
0
        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);
        }
Пример #3
0
 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);
     }
 }
Пример #4
0
        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);
         }
     }
 }
Пример #6
0
        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);
         }
     }
 }
Пример #8
0
        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();
        }
Пример #9
0
        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));
 }