diff --git a/Auga/API.Common.cs b/Auga/API.Common.cs index 43984e7..96ccaab 100644 --- a/Auga/API.Common.cs +++ b/Auga/API.Common.cs @@ -1,4 +1,5 @@ -using UnityEngine; +using TMPro; +using UnityEngine; using UnityEngine.UI; namespace Auga @@ -13,7 +14,7 @@ public enum RequirementWireState public class PlayerPanelTabData { public int Index; - public Text TabTitle; + public TMP_Text TabTitle; public GameObject TabButtonGO; public GameObject ContentGO; } @@ -21,7 +22,7 @@ public class PlayerPanelTabData public class WorkbenchTabData { public int Index; - public Text TabTitle; + public TMP_Text TabTitle; public GameObject TabButtonGO; public GameObject RequirementsPanelGO; public GameObject ItemInfoGO; diff --git a/Auga/API.External.cs b/Auga/API.External.cs index 9d5b039..7c0ad4c 100644 --- a/Auga/API.External.cs +++ b/Auga/API.External.cs @@ -5,6 +5,7 @@ using System.Reflection.Emit; using HarmonyLib; using JetBrains.Annotations; +using TMPro; using UnityEngine; using UnityEngine.UI; @@ -141,7 +142,7 @@ public static void ComplexTooltip_SetSkill(GameObject complexTooltipGO, Skills.S public static GameObject[] RequirementsPanel_RequirementList(GameObject requirementsPanelGO) => null; public static void RequirementsPanel_SetWires(GameObject requirementsPanelGO, RequirementWireState[] wireStates, bool canCraft) { } - public static Text CustomVariantPanel_Enable(string buttonLabel, Action onShow) => null; + public static TMP_Text CustomVariantPanel_Enable(string buttonLabel, Action onShow) => null; public static void CustomVariantPanel_SetButtonLabel(string buttonLabel) { } public static void CustomVariantPanel_Disable() { } } diff --git a/Auga/API.cs b/Auga/API.cs index d1baf05..c8335a9 100644 --- a/Auga/API.cs +++ b/Auga/API.cs @@ -2,6 +2,7 @@ using System.Linq; using AugaUnity; using JetBrains.Annotations; +using TMPro; using UnityEngine; using UnityEngine.UI; using Object = UnityEngine.Object; @@ -65,7 +66,7 @@ public static Button SmallButton_Create(Transform parent, string name, string la { var button = Object.Instantiate(Auga.Assets.ButtonSmall, parent); button.name = name; - var text = button.GetComponentInChildren(); + var text = button.GetComponentInChildren(); if (text != null) { text.text = Localization.instance.Localize(labelText); @@ -79,7 +80,7 @@ public static Button MediumButton_Create(Transform parent, string name, string l { var button = Object.Instantiate(Auga.Assets.ButtonMedium, parent); button.name = name; - var text = button.GetComponentInChildren(); + var text = button.GetComponentInChildren(); if (text != null) { text.text = Localization.instance.Localize(labelText); @@ -93,7 +94,7 @@ public static Button FancyButton_Create(Transform parent, string name, string la { var button = Object.Instantiate(Auga.Assets.ButtonFancy, parent); button.name = name; - var text = button.GetComponentInChildren(); + var text = button.GetComponentInChildren(); if (text != null) { text.text = Localization.instance.Localize(labelText); @@ -107,7 +108,7 @@ public static Button SettingsButton_Create(Transform parent, string name, string { var button = Object.Instantiate(Auga.Assets.ButtonSettings, parent); button.name = name; - var text = button.GetComponentInChildren(); + var text = button.GetComponentInChildren(); if (text != null) { text.text = Localization.instance.Localize(labelText); @@ -187,7 +188,7 @@ public static void Button_SetTextColors(Button button, Color normal, Color highl colorValues.TextColors.disabledColor = disabled; } - var text = button.GetComponentInChildren(); + var text = button.GetComponentInChildren(); if (text != null) { text.color = baseTextColor; @@ -203,7 +204,7 @@ public static void Button_OverrideTextColor(Button button, Color color) Object.Destroy(colorValues); } - var text = button.GetComponentInChildren(); + var text = button.GetComponentInChildren(); if (text != null) { text.color = color; @@ -799,7 +800,7 @@ public static void RequirementsPanel_SetWires(GameObject requirementsPanelGO, Re // Custom Variant Panel //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// [UsedImplicitly] - public static Text CustomVariantPanel_Enable(string buttonLabel, Action onShow) + public static TMP_Text CustomVariantPanel_Enable(string buttonLabel, Action onShow) { if (WorkbenchPanelController.instance == null) { diff --git a/Auga/Auga.cs b/Auga/Auga.cs index 6544050..adf903e 100644 --- a/Auga/Auga.cs +++ b/Auga/Auga.cs @@ -30,6 +30,7 @@ public class AugaAssets public GameObject SettingsPrefab; public GameObject MessageHud; public GameObject TextInput; + public GameObject AugaBarber; public GameObject AugaChat; public GameObject DamageText; public GameObject EnemyHud; @@ -77,11 +78,13 @@ public class AugaColors [BepInPlugin(PluginID, "Project Auga", Version)] [BepInDependency("Menthus.bepinex.plugins.BetterTrader", BepInDependency.DependencyFlags.SoftDependency)] [BepInDependency("maximods.valheim.multicraft", BepInDependency.DependencyFlags.SoftDependency)] + [BepInDependency("redseiko.valheim.chatter", BepInDependency.DependencyFlags.SoftDependency)] + [BepInDependency("redseiko.valheim.searscatalog", BepInDependency.DependencyFlags.SoftDependency)] [BepInDependency("com.github.abearcodes.valheim.simplerecycling", BepInDependency.DependencyFlags.SoftDependency)] public class Auga : BaseUnityPlugin { public const string PluginID = "randyknapp.mods.auga"; - public const string Version = "1.2.15"; + public const string Version = "1.3.4"; public enum StatBarTextDisplayMode { JustValue, ValueAndMax, ValueMaxPercent, JustPercent } public enum StatBarTextPosition { Off = -1, Above, Below, Center, Start, End }; @@ -157,8 +160,7 @@ public void Awake() } } } - - + LoadDependencies(); LoadTranslations(); LoadConfig(); @@ -374,6 +376,7 @@ private static void LoadAssets() Assets.SettingsPrefab = assetBundle.LoadAsset("AugaSettings"); Assets.MessageHud = assetBundle.LoadAsset("AugaMessageHud"); Assets.TextInput = assetBundle.LoadAsset("AugaTextInput"); + Assets.AugaBarber = assetBundle.LoadAsset("AugaBarber"); Assets.AugaChat = assetBundle.LoadAsset("AugaChat"); Assets.DamageText = assetBundle.LoadAsset("AugaDamageText"); Assets.EnemyHud = assetBundle.LoadAsset("AugaEnemyHud"); diff --git a/Auga/Auga.csproj b/Auga/Auga.csproj index 6c36483..651eb9a 100644 --- a/Auga/Auga.csproj +++ b/Auga/Auga.csproj @@ -130,6 +130,7 @@ + @@ -186,6 +187,8 @@ + + @@ -200,7 +203,7 @@ ) if $(ConfigurationName) == API ( - xcopy "$(TargetDir)$(TargetFileName)" "C:\Users\rknapp\Documents\GitHub\ValheimMods\Libs\" /q /y /i + xcopy "$(TargetDir)$(TargetFileName)" "M:\Code\VapokModBase\References\AugaAPI\" /q /y /i ) else ( xcopy "$(TargetDir)$(TargetFileName)" "C:\Program Files (x86)\Steam\steamapps\common\Valheim\BepInEx\plugins\$(ProjectName)\" /q /y /i xcopy "$(TargetDir)$(TargetFileName).mdb" "C:\Program Files (x86)\Steam\steamapps\common\Valheim\BepInEx\plugins\$(ProjectName)\" /q /y /i diff --git a/Auga/Barber_Setup.cs b/Auga/Barber_Setup.cs new file mode 100644 index 0000000..83d8600 --- /dev/null +++ b/Auga/Barber_Setup.cs @@ -0,0 +1,17 @@ +using HarmonyLib; +using UnityEngine; + +namespace Auga; + +[HarmonyPatch] +public static class Barber_Setup +{ + [HarmonyPatch(typeof(PlayerCustomizaton), nameof(PlayerCustomizaton.OnEnable))] + public static class PlayerCustomization_Awake_Patch + { + public static bool Prefix(PlayerCustomizaton __instance) + { + return !SetupHelper.DirectObjectReplace(__instance.transform, Auga.Assets.AugaBarber, "BarberGui"); + } + } +} \ No newline at end of file diff --git a/Auga/Chat_Setup.cs b/Auga/Chat_Setup.cs index 646adf0..e46b762 100644 --- a/Auga/Chat_Setup.cs +++ b/Auga/Chat_Setup.cs @@ -12,7 +12,10 @@ public static class Chat_Awake_Patch { public static bool Prefix(Chat __instance) { - if (!Auga.AugaChatShow.Value || Auga.HasChatter) + if (Auga.HasChatter) + return true; + + if (!Auga.AugaChatShow.Value ) return true; return !SetupHelper.IndirectTwoObjectReplace(__instance.transform, Auga.Assets.AugaChat, "Chat", "Chat_box", "AugaChat"); @@ -20,7 +23,10 @@ public static bool Prefix(Chat __instance) public static void Postfix(Chat __instance) { - if (!Auga.AugaChatShow.Value || Auga.HasChatter) + if (Auga.HasChatter) + return; + + if (!Auga.AugaChatShow.Value ) return; if (__instance.m_input != null) @@ -33,7 +39,10 @@ public static class Chat_SetNpcText_Patch { public static void Postfix(Chat __instance) { - if (!Auga.AugaChatShow.Value || Auga.HasChatter) + if (Auga.HasChatter) + return; + + if (!Auga.AugaChatShow.Value) return; var latestChatMessage = __instance.m_npcTexts.LastOrDefault(); diff --git a/Auga/Hud_Setup.cs b/Auga/Hud_Setup.cs index 98e1b26..a56600d 100644 --- a/Auga/Hud_Setup.cs +++ b/Auga/Hud_Setup.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Reflection.Emit; using AugaUnity; +using BepInEx; using HarmonyLib; using JetBrains.Annotations; using TMPro; @@ -17,24 +18,29 @@ namespace Auga public static class Hud_Setup { [HarmonyPatch(nameof(Hud.Awake))] + [HarmonyPriority(Priority.First)] [HarmonyPostfix] public static void Hud_Awake_Postfix(Hud __instance) { - var hotkeyBar = __instance.Replace("hudroot/HotKeyBar", Auga.Assets.Hud, "hudroot/HotKeyBar"); hotkeyBar.gameObject.AddComponent().Init(TextAnchor.UpperLeft, 55, -44); - - __instance.m_statusEffectListRoot = null; - __instance.m_statusEffectTemplate = new GameObject("DummyStatusEffectTemplate", typeof(RectTransform)).RectTransform(); + var newStatusEffects = __instance.Replace("hudroot/StatusEffects", Auga.Assets.Hud); - newStatusEffects.gameObject.AddComponent().Init(TextAnchor.UpperRight, -40, -330); + var newTemplate = newStatusEffects.Find("StatusEffectsExt/SE_Template"); + var newExternalRoot = newStatusEffects.Find("StatusEffectsExt"); + var newInternalRoot = newStatusEffects.Find("StatusEffectsInt"); + + newInternalRoot.gameObject.AddComponent().Init("Status Effect List",TextAnchor.UpperRight, -40, 0); + newExternalRoot.gameObject.AddComponent().Init("Abilities and Other Statuses",TextAnchor.UpperRight, -160, 0); + __instance.m_statusEffectTemplate = newTemplate.RectTransform(); + __instance.m_statusEffectListRoot = newExternalRoot.RectTransform(); + __instance.m_saveIcon = __instance.Replace("hudroot/SaveIcon", Auga.Assets.Hud).gameObject; __instance.m_saveIconImage = __instance.m_saveIcon.GetComponent(); __instance.m_badConnectionIcon = __instance.Replace("hudroot/BadConnectionIcon", Auga.Assets.Hud).gameObject; - var originalDreamTexts = __instance.m_sleepingProgress.GetComponent().m_dreamTexts; var loadingScreen = __instance.Replace("LoadingBlack", Auga.Assets.Hud); __instance.m_loadingScreen = loadingScreen.GetComponent(); @@ -42,12 +48,12 @@ public static void Hud_Awake_Postfix(Hud __instance) __instance.m_sleepingProgress = loadingScreen.Find("Sleeping").gameObject; __instance.m_teleportingProgress = loadingScreen.Find("Teleporting").gameObject; __instance.m_loadingImage = loadingScreen.Find("Loading/Image").GetComponent(); - __instance.m_loadingTip = loadingScreen.Find("Loading/Tip").GetComponent(); + __instance.m_loadingTip = loadingScreen.Find("Loading/Tip").GetComponent(); __instance.m_sleepingProgress.GetComponent().m_dreamTexts = originalDreamTexts; __instance.m_eventBar = __instance.Replace("hudroot/EventBar", Auga.Assets.Hud).gameObject; - __instance.m_eventName = __instance.m_eventBar.GetComponentInChildren(); + __instance.m_eventName = __instance.m_eventBar.GetComponentInChildren(); __instance.m_eventBar.gameObject.AddComponent().Init(TextAnchor.UpperCenter, 0, -90); __instance.m_damageScreen = __instance.Replace("hudroot/Damaged", Auga.Assets.Hud).GetComponent(); @@ -68,14 +74,15 @@ public static void Hud_Awake_Postfix(Hud __instance) var originalGuardianPowerMaterial = __instance.m_gpIcon.material; + __instance.m_gpRoot = (RectTransform)__instance.Replace("hudroot/GuardianPower", Auga.Assets.Hud); - __instance.m_gpName = __instance.m_gpRoot.Find("Name").GetComponent(); + __instance.m_gpName = __instance.m_gpRoot.Find("Name").GetComponent(); __instance.m_gpIcon = __instance.m_gpRoot.Find("Icon").GetComponent(); __instance.m_gpIcon.material = originalGuardianPowerMaterial; - __instance.m_gpCooldown = __instance.m_gpRoot.Find("TimeText").GetComponent(); + __instance.m_gpCooldown = __instance.m_gpRoot.Find("GPTimeText").GetComponent(); __instance.m_gpRoot.gameObject.AddComponent().Init(TextAnchor.LowerLeft, 60, 70); - + foreach (Transform child in __instance.m_healthPanel) { Object.Destroy(child.gameObject); @@ -120,7 +127,7 @@ public static void Hud_Awake_Postfix(Hud __instance) __instance.m_eitrText = null; __instance.m_actionBarRoot = __instance.Replace("hudroot/action_progress", Auga.Assets.Hud).gameObject; - __instance.m_actionName = __instance.m_actionBarRoot.GetComponentInChildren(); + __instance.m_actionName = __instance.m_actionBarRoot.GetComponentInChildren(); __instance.m_actionProgress = __instance.m_actionBarRoot.GetComponent(); __instance.m_actionBarRoot.gameObject.AddComponent().Init("ActionProgress", TextAnchor.LowerCenter, 0, 226); @@ -165,8 +172,8 @@ public static void Hud_Awake_Postfix(Hud __instance) __instance.m_pieceSelectionWindow.AddComponent().Init(TextAnchor.MiddleCenter, 0, 0); var selectedPiece = __instance.m_buildHud.transform.Find("SelectedPiece"); - __instance.m_buildSelection = selectedPiece.Find("Name").GetComponent(); - __instance.m_pieceDescription = selectedPiece.Find("Info").GetComponent(); + __instance.m_buildSelection = selectedPiece.Find("Name").GetComponent(); + __instance.m_pieceDescription = selectedPiece.Find("Info").GetComponent(); __instance.m_buildIcon = selectedPiece.Find("Darken/IconBG/PieceIcon").GetComponent(); selectedPiece.gameObject.AddComponent().Init(TextAnchor.LowerCenter, 0, 15); @@ -373,8 +380,8 @@ public static void SetupPieceInfo(Hud instance, Piece piece) GameObject requirementItem = instance.m_requirementItems[piece.m_resources.Length]; requirementItem.SetActive(true); Image component1 = requirementItem.transform.Find("res_icon").GetComponent(); - Text component2 = requirementItem.transform.Find("res_name").GetComponent(); - Text component3 = requirementItem.transform.Find("res_amount").GetComponent(); + TMP_Text component2 = requirementItem.transform.Find("res_name").GetComponent(); + TMP_Text component3 = requirementItem.transform.Find("res_amount").GetComponent(); UITooltip component4 = requirementItem.GetComponent(); component1.sprite = piece.m_craftingStation.m_icon; component2.text = Localization.instance.Localize(piece.m_craftingStation.m_name); @@ -617,7 +624,10 @@ public static class Hud_UpdatePieceList_Patch { public static bool Prefix(Hud __instance, Player player, Vector2Int selectedNr, Piece.PieceCategory category, bool updateAllBuildStatuses) { - if (!Auga.BuildMenuShow.Value || Auga.HasSearsCatalog) + if (Auga.HasSearsCatalog) + return true; + + if (!Auga.BuildMenuShow.Value ) return true; var buildPieces = player.GetBuildPieces(); @@ -691,7 +701,10 @@ public static class PieceTable_PrevCategory_Patch { public static bool Prefix(ref PieceTable __instance) { - if (!Auga.BuildMenuShow.Value || Auga.HasSearsCatalog) + if (Auga.HasSearsCatalog) + return true; + + if (!Auga.BuildMenuShow.Value ) return true; return Input.GetAxis("Mouse ScrollWheel") == 0; @@ -720,7 +733,10 @@ public static class PieceTable_NextCategory_Patch { public static bool Prefix(ref PieceTable __instance) { - if (!Auga.BuildMenuShow.Value || Auga.HasSearsCatalog) + if (Auga.HasSearsCatalog) + return true; + + if (!Auga.BuildMenuShow.Value ) return true; return Input.GetAxis("Mouse ScrollWheel") == 0; diff --git a/Auga/InventoryGrid_Patches.cs b/Auga/InventoryGrid_Patches.cs new file mode 100644 index 0000000..d36380c --- /dev/null +++ b/Auga/InventoryGrid_Patches.cs @@ -0,0 +1,140 @@ +using System; +using System.Collections.Generic; +using HarmonyLib; +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +namespace Auga; + +public static class InventoryGrid_Patches +{ + [HarmonyPatch(typeof(InventoryGrid), nameof(InventoryGrid.UpdateGui))] + public static class UpdateGuiPatch + { + public static bool Prefix(InventoryGrid __instance, Player player, ItemDrop.ItemData dragItem) + { + var transform = __instance.transform as RectTransform; + var width = __instance.m_inventory.GetWidth(); + var height = __instance.m_inventory.GetHeight(); + if (__instance.m_selected.x >= width - 1) + __instance.m_selected.x = width - 1; + if (__instance.m_selected.y >= height - 1) + __instance.m_selected.y = height - 1; + if (__instance.m_width != width || __instance.m_height != height) + { + __instance.m_width = width; + __instance.m_height = height; + foreach (var element in __instance.m_elements) + UnityEngine.Object.Destroy((UnityEngine.Object) element.m_go); + __instance.m_elements.Clear(); + var widgetSize = __instance.GetWidgetSize(); + var vector2_1 = new Vector2(transform.rect.width / 2f, 0.0f) - new Vector2(widgetSize.x, 0.0f) * 0.5f; + for (var _y = 0; _y < height; ++_y) + { + for (var _x = 0; _x < width; ++_x) + { + var vector2_2 = (Vector2) new Vector3((float) _x * __instance.m_elementSpace, (float) _y * -__instance.m_elementSpace); + var gameObject = UnityEngine.Object.Instantiate(__instance.m_elementPrefab, (Transform) __instance.m_gridRoot); + (gameObject.transform as RectTransform).anchoredPosition = vector2_1 + vector2_2; + var componentInChildren = gameObject.GetComponentInChildren(); + componentInChildren.m_onRightDown += new Action(__instance.OnRightClick); + componentInChildren.m_onLeftDown += new Action(__instance.OnLeftClick); + var component = gameObject.transform.Find("binding").GetComponent(); + if ((bool) (UnityEngine.Object) player && _y == 0) + component.text = (_x + 1).ToString(); + else + component.enabled = false; + __instance.m_elements.Add(new InventoryGrid.Element() + { + m_pos = new Vector2i(_x, _y), + m_go = gameObject, + m_icon = gameObject.transform.Find("icon").GetComponent(), + m_amount = gameObject.transform.Find("amount").GetComponent(), + m_quality = gameObject.transform.Find("quality").GetComponent(), + m_equiped = gameObject.transform.Find("equiped").GetComponent(), + m_queued = gameObject.transform.Find("queued").GetComponent(), + m_noteleport = gameObject.transform.Find("noteleport").GetComponent(), + m_food = gameObject.transform.Find("foodicon").GetComponent(), + m_selected = gameObject.transform.Find("selected").gameObject, + m_tooltip = gameObject.GetComponent(), + m_durability = gameObject.transform.Find("durability").GetComponent() + }); + } + } + } + foreach (var element in __instance.m_elements) + element.m_used = false; + var flag1 = __instance.m_uiGroup.IsActive && ZInput.IsGamepadActive(); + var allItems = __instance.m_inventory.GetAllItems(); + var element1 = flag1 ? __instance.GetElement(__instance.m_selected.x, __instance.m_selected.y, width) : __instance.GetHoveredElement(); + foreach (var itemData in allItems) + { + var element2 = __instance.GetElement(itemData.m_gridPos.x, itemData.m_gridPos.y, width); + element2.m_used = true; + element2.m_icon.enabled = true; + element2.m_icon.sprite = itemData.GetIcon(); + element2.m_icon.color = itemData == dragItem ? Color.grey : Color.white; + var flag2 = itemData.m_shared.m_useDurability && (double) itemData.m_durability < (double) itemData.GetMaxDurability(); + element2.m_durability.gameObject.SetActive(flag2); + if (flag2) + { + if ((double) itemData.m_durability <= 0.0) + { + element2.m_durability.SetValue(1f); + element2.m_durability.SetColor((double) Mathf.Sin(Time.time * 10f) > 0.0 ? Color.red : new Color(0.0f, 0.0f, 0.0f, 0.0f)); + } + else + { + element2.m_durability.SetValue(itemData.GetDurabilityPercentage()); + element2.m_durability.ResetColor(); + } + } + element2.m_equiped.enabled = (bool) (UnityEngine.Object) player && itemData.m_equipped; + element2.m_queued.enabled = (bool) (UnityEngine.Object) player && player.IsEquipActionQueued(itemData); + element2.m_noteleport.enabled = !itemData.m_shared.m_teleportable && !ZoneSystem.instance.GetGlobalKey(GlobalKeys.TeleportAll); + if (itemData.m_shared.m_itemType == ItemDrop.ItemData.ItemType.Consumable && ((double) itemData.m_shared.m_food > 0.0 || (double) itemData.m_shared.m_foodStamina > 0.0 || (double) itemData.m_shared.m_foodEitr > 0.0)) + { + element2.m_food.enabled = true; + if ((double) itemData.m_shared.m_food < (double) itemData.m_shared.m_foodEitr / 2.0 && (double) itemData.m_shared.m_foodStamina < (double) itemData.m_shared.m_foodEitr / 2.0) + element2.m_food.color = __instance.m_foodEitrColor; + else if ((double) itemData.m_shared.m_foodStamina < (double) itemData.m_shared.m_food / 2.0) + element2.m_food.color = __instance.m_foodHealthColor; + else if ((double) itemData.m_shared.m_food < (double) itemData.m_shared.m_foodStamina / 2.0) + element2.m_food.color = __instance.m_foodStaminaColor; + else + element2.m_food.color = Color.white; + } + else + element2.m_food.enabled = false; + if (element1 == element2) + __instance.CreateItemTooltip(itemData, element2.m_tooltip); + element2.m_quality.enabled = itemData.m_shared.m_maxQuality > 1; + if (itemData.m_shared.m_maxQuality > 1) + element2.m_quality.text = itemData.m_quality.ToString(); + element2.m_amount.enabled = itemData.m_shared.m_maxStackSize > 1; + if (itemData.m_shared.m_maxStackSize > 1) + element2.m_amount.text = string.Format("{0}/{1}", (object) itemData.m_stack, (object) itemData.m_shared.m_maxStackSize); + } + foreach (var element3 in __instance.m_elements) + { + element3.m_selected.SetActive(flag1 && element3.m_pos == __instance.m_selected); + if (!element3.m_used) + { + element3.m_durability.gameObject.SetActive(false); + element3.m_icon.enabled = false; + element3.m_amount.enabled = false; + element3.m_quality.enabled = false; + element3.m_equiped.enabled = false; + element3.m_queued.enabled = false; + element3.m_noteleport.enabled = false; + element3.m_food.enabled = false; + element3.m_tooltip.m_text = ""; + element3.m_tooltip.m_topic = ""; + } + } + __instance.m_gridRoot.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, (float) height * __instance.m_elementSpace); + return false; + } + } +} \ No newline at end of file diff --git a/Auga/MainMenu_Setup.cs b/Auga/MainMenu_Setup.cs index ea39d2e..a56f18d 100644 --- a/Auga/MainMenu_Setup.cs +++ b/Auga/MainMenu_Setup.cs @@ -1,7 +1,25 @@ -using HarmonyLib; +using AugaUnity; +using HarmonyLib; +using UnityEngine; +using UnityEngine.UI; namespace Auga { + + [HarmonyPatch(typeof(TextsDialog), nameof(TextsDialog.SnapTo))] + public static class SnapTo_Patch + { + public static void Postfix(TextsDialog __instance, RectTransform listRoot, ScrollRect scrollRect) + { + var augaTextComponent = __instance.GetComponent(); + if (augaTextComponent == null) + return; + + var newVector = new Vector2(0, listRoot.anchoredPosition.y); + listRoot.anchoredPosition = newVector; + } + } + [HarmonyPatch(typeof(FejdStartup), nameof(FejdStartup.Awake))] public static class FejdStartup_Awake_Patch { diff --git a/Auga/PlayerInventory_Setup.cs b/Auga/PlayerInventory_Setup.cs index 81849be..cd8f9e4 100644 --- a/Auga/PlayerInventory_Setup.cs +++ b/Auga/PlayerInventory_Setup.cs @@ -1,6 +1,7 @@ using System.Globalization; using AugaUnity; using HarmonyLib; +using TMPro; using UnityEngine; using UnityEngine.UI; using Object = UnityEngine.Object; @@ -31,18 +32,20 @@ public static void Postfix(InventoryGui __instance) __instance.m_playerGrid = playerInventory.Find("PlayerGrid").GetComponent(); __instance.m_playerGrid.m_onSelected += __instance.OnSelectedItem; __instance.m_playerGrid.m_onRightClick += __instance.OnRightClickItem; - __instance.m_weight = playerInventory.Find("Weight/Text").GetComponent(); - __instance.m_armor = playerInventory.Find("Armor/Text").GetComponent(); + __instance.m_weight = playerInventory.Find("Weight/Text").GetComponent(); + __instance.m_armor = playerInventory.Find("Armor/Text").GetComponent(); var containerInventory = __instance.Replace("root/Container", Auga.Assets.InventoryScreen, "root/Container"); __instance.m_container = containerInventory.RectTransform(); - __instance.m_containerName = containerInventory.Find("ContainerHeader/Name").GetComponent(); + __instance.m_containerName = containerInventory.Find("ContainerHeader/Name").GetComponent(); __instance.m_containerGrid = containerInventory.Find("ContainerGrid").GetComponent(); __instance.m_containerGrid.m_onSelected += __instance.OnSelectedItem; __instance.m_containerGrid.m_onRightClick += __instance.OnRightClickItem; - __instance.m_containerWeight = containerInventory.Find("Weight/Text").GetComponent(); + __instance.m_containerWeight = containerInventory.Find("Weight/Text").GetComponent(); __instance.m_takeAllButton = containerInventory.Find("TakeAll").GetComponent(); __instance.m_takeAllButton.onClick.AddListener(__instance.OnTakeAll); + __instance.m_stackAllButton = containerInventory.Find("StackAll").GetComponent(); + __instance.m_stackAllButton.onClick.AddListener(__instance.OnStackAll); var oldCraftingPanel = __instance.transform.Find("root/Crafting"); var craftingPanelSiblingIndex = oldCraftingPanel.GetSiblingIndex(); @@ -52,7 +55,7 @@ public static void Postfix(InventoryGui __instance) var variantDialog = __instance.Replace("root/VariantDialog", Auga.Assets.InventoryScreen, "root/DummyObjects/DummyVariantDialog"); __instance.m_variantDialog = variantDialog.GetComponent(); - var skillsDialog = __instance.Replace("root/Skills", Auga.Assets.InventoryScreen, "root/DummyObjects/DummySkillsDialog"); + var skillsDialog = __instance.Replace("root/Skills", Auga.Assets.InventoryScreen, "root/RightPanel/TabContent/TabContent_Skills"); __instance.m_skillsDialog = skillsDialog.GetComponent(); var dummyContainer = new GameObject("DummyDialogs", typeof(RectTransform)); dummyContainer.transform.SetParent(skillsDialog.parent); @@ -65,7 +68,7 @@ public static void Postfix(InventoryGui __instance) rightPanel.SetSiblingIndex(craftingPanelSiblingIndex); CraftingPanel = rightPanel.GetComponentInChildren(true); CraftingPanel.SetMultiCraftEnabled(Auga.HasMultiCraft); - __instance.m_playerName = rightPanel.Find("DefaultContent/TitleContainer/PlayerPanelTitle").GetComponent(); + __instance.m_playerName = rightPanel.Find("DefaultContent/TitleContainer/PlayerPanelTitle").GetComponent(); __instance.m_pvp = rightPanel.Find("TabContent/TabContent_PVP/Dummy/PVPToggle").GetComponent(); __instance.m_recipeElementPrefab = CraftingPanel.RecipeItemPrefab; __instance.m_recipeListRoot = CraftingPanel.RecipeList; @@ -112,11 +115,11 @@ public static void Postfix(InventoryGui __instance) var splitDialog = __instance.Replace("root/SplitDialog", Auga.Assets.InventoryScreen, "root/SplitDialog"); __instance.m_splitPanel = splitDialog; __instance.m_splitSlider = splitDialog.Find("Dialog/Slider").GetComponent(); - __instance.m_splitAmount = splitDialog.Find("Dialog/InventoryElement/amount").GetComponent(); + __instance.m_splitAmount = splitDialog.Find("Dialog/InventoryElement/amount").GetComponent(); __instance.m_splitCancelButton = splitDialog.Find("Dialog/ButtonCancel").GetComponent