Exemple #1
0
        public float getSkillFactor(Pawn current)
        {
            HediffLeader h1    = (HediffLeader)current.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("leader1"));
            HediffLeader h2    = (HediffLeader)current.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("leader2"));
            HediffLeader h3    = (HediffLeader)current.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("leader3"));
            HediffLeader h4    = (HediffLeader)current.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("leader4"));
            float        score = IncidentWorker_LeaderElection.getBotanistScore(current);

            if (h2 != null)
            {
                h1 = h2; score = IncidentWorker_LeaderElection.getWarriorScore(current);
            }
            if (h3 != null)
            {
                h1 = h3; score = IncidentWorker_LeaderElection.getCarpenterScore(current);
            }
            if (h4 != null)
            {
                h1 = h4; score = IncidentWorker_LeaderElection.getScientistScore(current);
            }

            return(((score / 20f) * 0.3f) + 1f);
        }
Exemple #2
0
        public override void DoWindowContents(Rect inRect)
        {
            Text.Font = GameFont.Small;
            bool flag = false;

            if (Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Return)
            {
                flag = true;
                Event.current.Use();
            }
            Listing_Standard listing_Standard = new Listing_Standard();

            listing_Standard.Begin(inRect);

            listing_Standard.Label("ChooseLeader".Translate());
            String label = (this.chosenPawn == null ? "NoneL".Translate() : this.chosenPawn.Name.ToStringShort);

            if (listing_Standard.ButtonText(label, null))
            {
                List <FloatMenuOption> list    = new List <FloatMenuOption>();
                List <Pawn>            tpawns2 = new List <Pawn>();

                list.Add(new FloatMenuOption("-" + "NoneL".Translate() + "-", delegate
                {
                    this.chosenPawn = null;
                }, MenuOptionPriority.Default, null, null, 0f, null, null));

                foreach (Pawn current in IncidentWorker_LeaderElection.getAllColonists())
                {
                    Hediff h1 = current.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("leader1"));
                    Hediff h2 = current.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("leader2"));
                    Hediff h3 = current.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("leader3"));
                    Hediff h4 = current.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("leader4"));
                    Hediff h5 = current.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("leaderExpired"));
                    if (h1 == null && h2 == null && h3 == null && h4 == null && h5 == null && !current.story.WorkTagIsDisabled(WorkTags.Social))
                    {
                        tpawns2.Add(current);
                    }
                }

                foreach (Pawn p in tpawns2)
                {
                    list.Add(new FloatMenuOption(p.Name.ToStringShort, delegate
                    {
                        this.chosenPawn = p;
                    }, MenuOptionPriority.Default, null, null, 0f, null, null));
                }
                if (list.Count() == 1)
                {
                    TooltipHandler.TipRegion(inRect, "ChooseLeader_NoAbleColonists".Translate());
                }

                Find.WindowStack.Add(new FloatMenu(list));
            }


            if (listing_Standard.ButtonText("OK".Translate(), null))
            {
                if (this.chosenPawn != null)
                {
                    String targetLeader = "";
                    Pawn   most = this.chosenPawn;
                    float  maxValue = new float[] { IncidentWorker_LeaderElection.getBotanistScore(most), IncidentWorker_LeaderElection.getWarriorScore(most), IncidentWorker_LeaderElection.getCarpenterScore(most), IncidentWorker_LeaderElection.getScientistScore(most) }.Max();
                    if (maxValue == IncidentWorker_LeaderElection.getBotanistScore(most))
                    {
                        targetLeader = "leader1";
                    }
                    if (maxValue == IncidentWorker_LeaderElection.getWarriorScore(most))
                    {
                        targetLeader = "leader2";
                    }
                    if (maxValue == IncidentWorker_LeaderElection.getCarpenterScore(most))
                    {
                        targetLeader = "leader3";
                    }
                    if (maxValue == IncidentWorker_LeaderElection.getScientistScore(most))
                    {
                        targetLeader = "leader4";
                    }
                    Hediff hediff = HediffMaker.MakeHediff(HediffDef.Named(targetLeader), most, null);
                    IncidentWorker_LeaderElection.doElect(most, hediff, true);
                }
                Find.WindowStack.TryRemove(this, true);
            }
            listing_Standard.End();
        }