コード例 #1
0
        private int?GetSelectedVariant(CustomPawn pawn, int variantIndex)
        {
            if (pawn.AlienRace == null)
            {
                return(null);
            }
            ThingComp alienComp = pawn.Pawn.AllComps.FirstOrDefault((ThingComp comp) => {
                return(comp.GetType().Name == "AlienComp");
            });

            if (alienComp == null)
            {
                return(null);
            }
            FieldInfo variantsField = ReflectionUtil.GetPublicField(alienComp, "addonVariants");

            if (variantsField == null)
            {
                return(null);
            }
            List <int> variants = null;

            try {
                variants = (List <int>)variantsField.GetValue(alienComp);
            }
            catch (Exception) {
                return(null);
            }
            return(variants[variantIndex]);
        }
コード例 #2
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);
        }
コード例 #3
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();
            }
        }
コード例 #4
0
 public static void SetHairColorSecondOnComp(ThingComp alienComp, Color value)
 {
     ReflectionUtil.GetPublicField(alienComp, "hairColorSecond").SetValue(alienComp, value);
 }
コード例 #5
0
 public static Color GetHairColorSecondFromComp(ThingComp alienComp)
 {
     return((Color)ReflectionUtil.GetPublicField(alienComp, "hairColorSecond").GetValue(alienComp));
 }
コード例 #6
0
 public static void SetSkinColorOnComp(ThingComp alienComp, Color value)
 {
     ReflectionUtil.GetPublicField(alienComp, "skinColor").SetValue(alienComp, value);
 }
コード例 #7
0
 public static Color GetSkinColorFromComp(ThingComp alienComp)
 {
     return((Color)ReflectionUtil.GetPublicField(alienComp, "skinColor").GetValue(alienComp));
 }
コード例 #8
0
 public static void SetCrownTypeOnComp(ThingComp alienComp, string value)
 {
     ReflectionUtil.GetPublicField(alienComp, "crownType").SetValue(alienComp, value);
 }
コード例 #9
0
 public static string GetCrownTypeFromComp(ThingComp alienComp)
 {
     return(ReflectionUtil.GetPublicField(alienComp, "crownType").GetValue(alienComp) as string);
 }