コード例 #1
0
        public override bool IsOptionSelected(CustomPawn pawn, PawnLayerOption option)
        {
            PawnLayerOptionAlienAddon addonOption = option as PawnLayerOptionAlienAddon;

            if (addonOption == null)
            {
                return(false);
            }
            if (pawn.AlienRace != null)
            {
                ThingComp alienComp = pawn.Pawn.AllComps.FirstOrDefault((ThingComp comp) => {
                    return(comp.GetType().Name == "AlienComp");
                });
                if (alienComp == null)
                {
                    return(false);
                }
                FieldInfo variantsField = ReflectionUtil.GetPublicField(alienComp, "addonVariants");
                if (variantsField == null)
                {
                    return(false);
                }
                List <int> variants = null;
                try {
                    variants = (List <int>)variantsField.GetValue(alienComp);
                }
                catch (Exception) {
                    return(false);
                }
                int selectedIndex = variants[AlienAddon.VariantIndex];
                return(selectedIndex == addonOption.Index);
            }
            return(false);
        }
コード例 #2
0
        public override void SelectOption(CustomPawn pawn, PawnLayerOption option)
        {
            PawnLayerOptionAlienAddon addonOption = option as PawnLayerOptionAlienAddon;

            if (addonOption == null)
            {
                return;
            }
            if (pawn.AlienRace != null)
            {
                ThingComp alienComp = pawn.Pawn.AllComps.FirstOrDefault((ThingComp comp) => {
                    return(comp.GetType().Name == "AlienComp");
                });
                if (alienComp == null)
                {
                    return;
                }
                FieldInfo variantsField = ReflectionUtil.GetPublicField(alienComp, "addonVariants");
                if (variantsField == null)
                {
                    return;
                }
                List <int> variants = null;
                try {
                    variants = (List <int>)variantsField.GetValue(alienComp);
                }
                catch (Exception) {
                    return;
                }
                variants[AlienAddon.VariantIndex] = addonOption.Index;
                pawn.MarkPortraitAsDirty();
            }
        }
コード例 #3
0
        private List <PawnLayerOption> InitializeAlienAddonOptions(AlienRace race, AlienRaceBodyAddon addon)
        {
            if (addon.OptionCount == 0)
            {
                return(null);
            }
            List <PawnLayerOption> result = new List <PawnLayerOption>();

            for (int i = 0; i < addon.OptionCount; i++)
            {
                PawnLayerOptionAlienAddon option = new PawnLayerOptionAlienAddon();
                option.Label = "EdB.PC.Pawn.PawnLayer.AlienAddonOption".Translate(new object[] { i + 1 });
                option.Index = i;
                result.Add(option);
            }
            return(result);
        }