コード例 #1
0
        static void ChooseDoll(UnitEntityData unitEntityData)
        {
            try
            {
                if (!unitEntityData.IsMainCharacter && !unitEntityData.IsCustomCompanion() && GUILayout.Button("Destroy Doll", GUILayout.Width(DefaultLabelWidth)))
                {
                    unitEntityData.Descriptor.Doll = null;
                    unitEntityData.Descriptor.ForcceUseClassEquipment = false;
                    CharacterManager.RebuildCharacter(unitEntityData);
                }
                var doll   = DollResourcesManager.GetDoll(unitEntityData);
                var race   = doll.Race;
                var gender = unitEntityData.Gender;
                CustomizationOptions customizationOptions = gender != Gender.Male ? race.FemaleOptions : race.MaleOptions;
                ChooseRace(unitEntityData, doll);
                ChooseEEL(unitEntityData, doll, "Face", customizationOptions.Heads, doll.Head.m_Link, (EquipmentEntityLink ee) => doll.SetHead(ee));
                ChooseEEL(unitEntityData, doll, "Hair", customizationOptions.Hair, doll.Hair.m_Link, (EquipmentEntityLink ee) => doll.SetHair(ee));
                if (customizationOptions.Beards.Length > 0)
                {
                    ChooseEEL(unitEntityData, doll, "Beards", customizationOptions.Beards, doll.Beard.m_Link, (EquipmentEntityLink ee) => doll.SetBeard(ee));
                }
                if (customizationOptions.Horns.Length > 0)
                {
                    ChooseEEL(unitEntityData, doll, "Horns", customizationOptions.Horns, doll.Horn.m_Link, (EquipmentEntityLink ee) => doll.SetHorn(ee));
                }
                ChooseRamp(unitEntityData, doll, "Hair Color", doll.GetHairRamps(), doll.HairRampIndex, (int index) => doll.SetHairColor(index));
                ChooseRamp(unitEntityData, doll, "Skin Color", doll.GetSkinRamps(), doll.SkinRampIndex, (int index) => doll.SetSkinColor(index));
                ChooseRamp(unitEntityData, doll, "Horn Color", doll.GetHornsRamps(), doll.HornsRampIndex, (int index) => doll.SetHornsColor(index));
                ChooseRamp(unitEntityData, doll, "Primary Outfit Color", doll.GetOutfitRampsPrimary(), doll.EquipmentRampIndex, (int index) => doll.SetEquipColors(index, doll.EquipmentRampIndexSecondary));
                ChooseRamp(unitEntityData, doll, "Secondary Outfit Color", doll.GetOutfitRampsSecondary(), doll.EquipmentRampIndexSecondary, (int index) => doll.SetEquipColors(doll.EquipmentRampIndex, index));
                ReferenceArrayProxy <BlueprintRaceVisualPreset, BlueprintRaceVisualPresetReference> presets = doll.Race.Presets;
                BlueprintRaceVisualPreset racePreset = doll.RacePreset;

                /*if (unitEntityData.Descriptor.LeftHandedOverride == true && GUILayout.Button("Set Right Handed", GUILayout.Width(DefaultLabelWidth)))
                 * {
                 *  unitEntityData.Descriptor.LeftHandedOverride = false;
                 *  unitEntityData.Descriptor.Doll = doll.CreateData();
                 *  ViewManager.ReplaceView(unitEntityData, null);
                 *  unitEntityData.View.HandsEquipment.HandleEquipmentSetChanged();
                 * }
                 * else if (unitEntityData.Descriptor.LeftHandedOverride == false && GUILayout.Button("Set Left Handed", GUILayout.Width(DefaultLabelWidth)))
                 * {
                 *  unitEntityData.Descriptor.LeftHandedOverride = true;
                 *  unitEntityData.Descriptor.Doll = doll.CreateData();
                 *  ViewManager.ReplaceView(unitEntityData, null);
                 *  unitEntityData.View.HandsEquipment.HandleEquipmentSetChanged();
                 * }*/
                ChoosePortrait(unitEntityData);
                if (unitEntityData.IsMainCharacter || unitEntityData.IsCustomCompanion())
                {
                    ChooseAsks(unitEntityData);
                }
            }
            catch (Exception e) { Main.logger.Log(e.ToString()); }
        }
コード例 #2
0
        /* static void ChooseRace(UnitEntityData unitEntityData, DollState doll)
         * {
         *   var currentRace = doll.Race;
         *   var racess = new List<BlueprintRace> { };
         *   foreach(BlueprintRace race in BlueprintRoot.Instance.Progression.CharacterRaces)
         *   {
         *       racess.AddItem(race);
         *   }
         *   var races = racess.ToArray();
         *   foreach(BlueprintRace race in races)
         *   {
         *       Main.logger.Log(race.NameForAcronym);
         *   }
         *   /// var index = Array.FindIndex(races, (race) => race == currentRace);
         *   var index = 1;
         *   GUILayout.BeginHorizontal();
         *   ChooseFromList("Race", races, ref index, () => {
         *       doll.SetRace(races[index]);
         *       unitEntityData.Descriptor.Doll = doll.CreateData();
         *       CharacterManager.RebuildCharacter(unitEntityData);
         *   });
         *   GUILayout.Label(" " + races[index].Name);
         *   GUILayout.EndHorizontal();
         * }*/



        static void ChooseVisualPreset(UnitEntityData unitEntityData, DollState doll, string label, BlueprintRaceVisualPreset[] presets,
                                       BlueprintRaceVisualPreset currentPreset)
        {
            var index = Array.FindIndex(presets, (vp) => vp == currentPreset);

            ChooseFromList(label, presets, ref index, () => {
                doll.SetRacePreset(presets[index]);
                unitEntityData.Descriptor.Doll = doll.CreateData();
                CharacterManager.RebuildCharacter(unitEntityData);
            });
        }
コード例 #3
0
        static BlueprintRaceVisualPreset[] CopyPresets(BlueprintRace original, string prevGUID)
        {
            var newPresets = new BlueprintRaceVisualPreset[original.Presets.Length];

            for (int i = 0; i < original.Presets.Length; i++)
            {
                newPresets[i] = ScriptableObject.CreateInstance <BlueprintRaceVisualPreset>();
                var presetAssetGUID = GetDeterministicAssetID(prevGUID);
                BlueprintUtil.AddBlueprint(newPresets[i], presetAssetGUID);
                //RaceManager.assets[presetAssetGUID] = newPresets[i];
                newPresets[i].RaceId         = original.Presets[i].RaceId;
                newPresets[i].MaleSkeleton   = original.Presets[i].MaleSkeleton;
                newPresets[i].FemaleSkeleton = original.Presets[i].FemaleSkeleton;
                newPresets[i].Skin           = ScriptableObject.CreateInstance <KingmakerEquipmentEntity>();
                var maleSkin   = CopyLinks(original.Presets[i].Skin.GetLinks(Gender.Male, original.RaceId), presetAssetGUID + "MaleSalt");
                var femaleSkin = CopyLinks(original.Presets[i].Skin.GetLinks(Gender.Female, original.RaceId), presetAssetGUID + "FemaleSalt");
                Traverse.Create(newPresets[i].Skin).Field("m_RaceDependent").SetValue(false);
                Traverse.Create(newPresets[i].Skin).Field("m_MaleArray").SetValue(maleSkin);
                Traverse.Create(newPresets[i].Skin).Field("m_FemaleArray").SetValue(femaleSkin);
                prevGUID = presetAssetGUID;
            }
            return(newPresets);
        }