static void ChooseClassOutfit(CharacterSettings characterSettings, UnitEntityData unitEntityData) { var focusedStyle = new GUIStyle(GUI.skin.button); focusedStyle.normal.textColor = Color.yellow; focusedStyle.focused.textColor = Color.yellow; GUILayout.BeginHorizontal(); foreach (var _class in classes) { if (_class.Name == "Magus") { GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); } var style = characterSettings.classOutfit == _class ? focusedStyle : GUI.skin.button; if (GUILayout.Button(_class.Name, style, GUILayout.Width(100f))) { characterSettings.classOutfit = _class; CharacterManager.RebuildCharacter(unitEntityData); unitEntityData.View.UpdateClassEquipment(); } } GUILayout.EndHorizontal(); }
public static void ShowInfo(UnitEntityData unitEntityData) { ; GUILayout.BeginHorizontal(); if (GUILayout.Button("Rebuild Character", GUILayout.Width(175f))) { CharacterManager.RebuildCharacter(unitEntityData); } if (GUILayout.Button("Rebuild Outfit", GUILayout.Width(175f))) { var bakedCharacter = unitEntityData.View.CharacterAvatar.BakedCharacter; unitEntityData.View.CharacterAvatar.BakedCharacter = null; unitEntityData.View.CharacterAvatar.RebuildOutfit(); unitEntityData.View.CharacterAvatar.BakedCharacter = bakedCharacter; } if (GUILayout.Button("Update Class Equipment", GUILayout.Width(175f))) { var bakedCharacter = unitEntityData.View.CharacterAvatar.BakedCharacter; unitEntityData.View.CharacterAvatar.BakedCharacter = null; bool useClassEquipment = unitEntityData.Descriptor.ForcceUseClassEquipment; unitEntityData.Descriptor.ForcceUseClassEquipment = true; unitEntityData.View.UpdateClassEquipment(); unitEntityData.Descriptor.ForcceUseClassEquipment = useClassEquipment; unitEntityData.View.CharacterAvatar.BakedCharacter = bakedCharacter; } if (GUILayout.Button("Update Body Equipment", GUILayout.Width(175f))) { var bakedCharacter = unitEntityData.View.CharacterAvatar.BakedCharacter; unitEntityData.View.CharacterAvatar.BakedCharacter = null; unitEntityData.View.UpdateBodyEquipmentModel(); unitEntityData.View.CharacterAvatar.BakedCharacter = bakedCharacter; } if (GUILayout.Button("Update Model", GUILayout.Width(175f))) { CharacterManager.UpdateModel(unitEntityData.View); } if (GUILayout.Button("Update HandsEquipment", GUILayout.Width(175f))) { unitEntityData.View.HandsEquipment.UpdateAll(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Toggle Stance", GUILayout.Width(175f))) { unitEntityData.View.HandsEquipment.ForceSwitch(!unitEntityData.View.HandsEquipment.InCombat); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label($"Original size {unitEntityData.Descriptor.OriginalSize}", GUILayout.Width(200f)); GUILayout.Label($"Current size {unitEntityData.Descriptor.State.Size}", GUILayout.Width(200f)); var m_OriginalScale = Traverse.Create(unitEntityData.View).Field("m_OriginalScale").GetValue <Vector3>(); var m_Scale = Traverse.Create(unitEntityData.View).Field("m_Scale").GetValue <float>(); var realScale = unitEntityData.View.transform.localScale; GUILayout.Label($"View Original {m_OriginalScale.x:0.#}", GUILayout.Width(200f)); GUILayout.Label($"View Current {m_Scale:0.#}", GUILayout.Width(200f)); GUILayout.Label($"View Real {realScale.x:0.#}", GUILayout.Width(200f)); GUILayout.Label($"Disabled Scaling {unitEntityData.View.DisableSizeScaling}", GUILayout.Width(200f)); GUILayout.EndHorizontal(); var message = unitEntityData.View == null ? "No View" : unitEntityData.View.CharacterAvatar == null ? "No Character Avatar" : null; if (message != null) { GUILayout.Label(message, GUILayout.Width(200f)); } GUILayout.BeginHorizontal(); showCharacter = GUILayout.Toggle(showCharacter, "Show Character", GUILayout.Width(175f)); showWeapons = GUILayout.Toggle(showWeapons, "Show Weapons", GUILayout.Width(175f)); showDoll = GUILayout.Toggle(showDoll, "Show Doll", GUILayout.Width(175f)); showBuffs = GUILayout.Toggle(showBuffs, "Show Buffs", GUILayout.Width(175f)); showFx = GUILayout.Toggle(showFx, "Show FX", GUILayout.Width(175f)); showPortrait = GUILayout.Toggle(showPortrait, "Show Portrait", GUILayout.Width(175f)); showAsks = GUILayout.Toggle(showAsks, "Show Asks", GUILayout.Width(175f)); GUILayout.EndHorizontal(); if (showCharacter) { ShowCharacterInfo(unitEntityData); } if (showWeapons) { ShowWeaponInfo(unitEntityData); } if (showDoll) { ShowDollInfo(unitEntityData); } if (showBuffs) { ShowBuffInfo(unitEntityData); } if (showFx) { ShowFxInfo(unitEntityData); } if (showPortrait) { ShowPortraitInfo(unitEntityData); } if (showAsks) { ShowAsksInfo(unitEntityData); } }
static void ChooseEquipmentOverride(UnitEntityData unitEntityData, CharacterSettings characterSettings) { void onEquipment() { CharacterManager.RebuildCharacter(unitEntityData); CharacterManager.UpdateModel(unitEntityData.View); } GUILayout.Label("Equipment", "box", GUILayout.Width(DefaultLabelWidth)); void onView() => ViewManager.ReplaceView(unitEntityData, characterSettings.overrideView); Util.ChooseSlider("Override Helm", EquipmentResourcesManager.Helm, ref characterSettings.overrideHelm, onEquipment); Util.ChooseSlider("Override Shirt", EquipmentResourcesManager.Shirt, ref characterSettings.overrideShirt, onEquipment); Util.ChooseSlider("Override Glasses", EquipmentResourcesManager.Glasses, ref characterSettings.overrideGlasses, onEquipment); Util.ChooseSlider("Override Armor", EquipmentResourcesManager.Armor, ref characterSettings.overrideArmor, onEquipment); Util.ChooseSlider("Override Bracers", EquipmentResourcesManager.Bracers, ref characterSettings.overrideBracers, onEquipment); Util.ChooseSlider("Override Gloves", EquipmentResourcesManager.Gloves, ref characterSettings.overrideGloves, onEquipment); Util.ChooseSlider("Override Boots", EquipmentResourcesManager.Boots, ref characterSettings.overrideBoots, onEquipment); Util.ChooseSlider("Override Tattoos", EquipmentResourcesManager.Tattoos, ref characterSettings.overrideTattoo, onEquipment); GUILayout.Label("Weapons", "box", GUILayout.Width(DefaultLabelWidth)); foreach (var kv in EquipmentResourcesManager.Weapons) { var animationStyle = kv.Key; var weaponLookup = kv.Value; characterSettings.overrideWeapons.TryGetValue(animationStyle, out BlueprintRef currentValue); void onWeapon() { characterSettings.overrideWeapons[animationStyle] = currentValue; unitEntityData.View.HandsEquipment.UpdateAll(); } Util.ChooseSlider($"Override {animationStyle} ", weaponLookup, ref currentValue, onWeapon); } GUILayout.BeginHorizontal(); GUILayout.Label("Main Weapon Enchantments", "box", GUILayout.Width(DefaultLabelWidth)); if (GUILayout.Button("Add Enchantment", GUILayout.ExpandWidth(false))) { characterSettings.overrideMainWeaponEnchantments.Add(null); } GUILayout.EndHorizontal(); void onWeaponEnchantment() { unitEntityData.View.HandsEquipment.UpdateAll(); } for (int i = 0; i < characterSettings.overrideMainWeaponEnchantments.Count; i++) { Util.ChooseSliderList($"Override Main Hand", EquipmentResourcesManager.WeaponEnchantments, characterSettings.overrideMainWeaponEnchantments, i, onWeaponEnchantment); } GUILayout.BeginHorizontal(); GUILayout.Label("Offhand Weapon Enchantments", "box", GUILayout.Width(DefaultLabelWidth)); if (GUILayout.Button("Add Enchantment", GUILayout.ExpandWidth(false))) { characterSettings.overrideOffhandWeaponEnchantments.Add(""); } GUILayout.EndHorizontal(); for (int i = 0; i < characterSettings.overrideOffhandWeaponEnchantments.Count; i++) { Util.ChooseSliderList($"Override Off Hand", EquipmentResourcesManager.WeaponEnchantments, characterSettings.overrideOffhandWeaponEnchantments, i, onWeaponEnchantment); } GUILayout.Label("View", "box", GUILayout.Width(DefaultLabelWidth)); Util.ChooseSlider("Override View", EquipmentResourcesManager.Units, ref characterSettings.overrideView, onView); void onChooseScale() { HarmonyLib.Traverse.Create(unitEntityData.View).Field("m_Scale").SetValue(unitEntityData.View.GetSizeScale() + 0.01f); } GUILayout.Label("Scale", "box", GUILayout.Width(DefaultLabelWidth)); GUILayout.BeginHorizontal(); ChooseToggle("Enable Override Scale", ref characterSettings.overrideScale, onChooseScale); ChooseToggle("Restrict to polymorph", ref characterSettings.overrideScaleShapeshiftOnly, onChooseScale); ChooseToggle("Use Additive Factor", ref characterSettings.overrideScaleAdditive, onChooseScale); ChooseToggle("Use Cheat Mode", ref characterSettings.overrideScaleCheatMode, onChooseScale); ChooseToggle("Use Continuous Factor", ref characterSettings.overrideScaleFloatMode, onChooseScale); GUILayout.Space(10f); GUILayout.EndHorizontal(); if (characterSettings.overrideScale && characterSettings.overrideScaleAdditive) { ChooseSizeAdditive(unitEntityData, characterSettings); } if (characterSettings.overrideScale && !characterSettings.overrideScaleAdditive) { ChooseSizeOverride(unitEntityData, characterSettings); } }