예제 #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_SetLeadership.getBotanistScore(current);

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

            return(((score / 20f) * 0.3f) + 1f);
        }
        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 = (chosenPawn == null ? "NoneL" : 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_SetLeadership.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"));
                    //Hediff h6 = current.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("ruler1"));
                    if (h1 == null && h2 == null && h3 == null && h4 == null && h5 == null && !current.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)
                {
                    Pawn most = this.chosenPawn;
                    if (Utility.getGov().name == "Democracy".Translate() || Utility.getGov().name == "Dictatorship".Translate())
                    {
                        String targetLeader = "";
                        float  maxValue = new float[] { IncidentWorker_SetLeadership.getBotanistScore(most), IncidentWorker_SetLeadership.getWarriorScore(most), IncidentWorker_SetLeadership.getCarpenterScore(most), IncidentWorker_SetLeadership.getScientistScore(most) }.Max();
                        if (maxValue == IncidentWorker_SetLeadership.getBotanistScore(most))
                        {
                            targetLeader = "leader1";
                        }
                        if (maxValue == IncidentWorker_SetLeadership.getWarriorScore(most))
                        {
                            targetLeader = "leader2";
                        }
                        if (maxValue == IncidentWorker_SetLeadership.getCarpenterScore(most))
                        {
                            targetLeader = "leader3";
                        }
                        if (maxValue == IncidentWorker_SetLeadership.getScientistScore(most))
                        {
                            targetLeader = "leader4";
                        }
                        Hediff hediff = HediffMaker.MakeHediff(HediffDef.Named(targetLeader), most, null);
                        IncidentWorker_SetLeadership.doElect(most, hediff, true);
                    }

                    /**
                     * else if(Utility.getGov().name == "Monarchy")
                     * {
                     *  Hediff hediff = HediffMaker.MakeHediff(HediffDef.Named("ruler1"), most, null);
                     *  IncidentWorker_SetLeadership.setRuler(most, hediff, true);
                     * }
                     **/
                }
                Find.WindowStack.TryRemove(this, true);
            }
            listing_Standard.End();
        }