diff --git a/MHFZ_Overlay/App.config b/MHFZ_Overlay/App.config index 4f5de082..d2f7b00b 100644 --- a/MHFZ_Overlay/App.config +++ b/MHFZ_Overlay/App.config @@ -1029,6 +1029,15 @@ 0.5 + + True + + + 105 + + + 102 + diff --git a/MHFZ_Overlay/Assets/Icons/png/whetstone_red.png b/MHFZ_Overlay/Assets/Icons/png/whetstone_red.png new file mode 100644 index 00000000..d6182fe4 Binary files /dev/null and b/MHFZ_Overlay/Assets/Icons/png/whetstone_red.png differ diff --git a/MHFZ_Overlay/MHFZ_Overlay.csproj b/MHFZ_Overlay/MHFZ_Overlay.csproj index 8f69ada2..4e2ab87b 100644 --- a/MHFZ_Overlay/MHFZ_Overlay.csproj +++ b/MHFZ_Overlay/MHFZ_Overlay.csproj @@ -799,6 +799,7 @@ + @@ -1855,6 +1856,7 @@ + diff --git a/MHFZ_Overlay/Models/Addresses/AddressModelHGE.cs b/MHFZ_Overlay/Models/Addresses/AddressModelHGE.cs index a6d88177..306b0e96 100644 --- a/MHFZ_Overlay/Models/Addresses/AddressModelHGE.cs +++ b/MHFZ_Overlay/Models/Addresses/AddressModelHGE.cs @@ -1908,4 +1908,7 @@ public AddressModelHGE(Mem m) /// public override int QuestVariant4() => this.M.ReadByte("mhfo-hd.dll+2AFA89A"); + /// + public override int DualSwordsSharpens() => this.M.ReadByte("mhfo-hd.dll+DC6C278"); + } diff --git a/MHFZ_Overlay/Models/Addresses/AddressModelNotHGE.cs b/MHFZ_Overlay/Models/Addresses/AddressModelNotHGE.cs index faa7137a..e5af8e2e 100644 --- a/MHFZ_Overlay/Models/Addresses/AddressModelNotHGE.cs +++ b/MHFZ_Overlay/Models/Addresses/AddressModelNotHGE.cs @@ -1827,4 +1827,8 @@ public AddressModelNotHGE(Mem m) /// public override int QuestVariant4() => this.M.ReadByte("mhfo.dll+28C2CEA"); + /// + public override int DualSwordsSharpens() => this.M.ReadByte("mhfo.dll+50346B8"); + + } diff --git a/MHFZ_Overlay/Services/OverlaySettingsService.cs b/MHFZ_Overlay/Services/OverlaySettingsService.cs index e3fd4e95..12cb07da 100644 --- a/MHFZ_Overlay/Services/OverlaySettingsService.cs +++ b/MHFZ_Overlay/Services/OverlaySettingsService.cs @@ -73,6 +73,7 @@ public static void SetConfigurationPreset(Settings s, ConfigurationPreset preset s.PersonalBestTimePercentShown = false; s.EnablePersonalBestPaceColor = false; s.PlayerPositionShown = false; + s.DualSwordsSharpensShown = false; s.TimerInfoShown = true; s.EnableInputLogging = true; @@ -109,7 +110,7 @@ public static void SetConfigurationPreset(Settings s, ConfigurationPreset preset s.EnableInputLogging = false; s.EnableMap = false; s.PlayerPositionShown = false; - + s.DualSwordsSharpensShown = false; s.OverlayModeWatermarkShown = false; s.Monster1IconShown = true; @@ -140,6 +141,7 @@ public static void SetConfigurationPreset(Settings s, ConfigurationPreset preset s.ActionsPerMinuteShown = false; s.PersonalBestShown = false; s.PlayerPositionShown = false; + s.DualSwordsSharpensShown = false; s.OverlayModeWatermarkShown = false; @@ -179,6 +181,7 @@ public static void SetConfigurationPreset(Settings s, ConfigurationPreset preset s.TimerInfoShown = true; s.EnableInputLogging = true; s.EnableMap = true; + s.DualSwordsSharpensShown = true; s.OverlayModeWatermarkShown = true; diff --git a/MHFZ_Overlay/Settings.Designer.cs b/MHFZ_Overlay/Settings.Designer.cs index 47a60405..d5181c01 100644 --- a/MHFZ_Overlay/Settings.Designer.cs +++ b/MHFZ_Overlay/Settings.Designer.cs @@ -4102,5 +4102,41 @@ public double PlayerInputPressedOpacity { this["PlayerInputPressedOpacity"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool DualSwordsSharpensShown { + get { + return ((bool)(this["DualSwordsSharpensShown"])); + } + set { + this["DualSwordsSharpensShown"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("105")] + public double DualSwordsSharpensX { + get { + return ((double)(this["DualSwordsSharpensX"])); + } + set { + this["DualSwordsSharpensX"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("102")] + public double DualSwordsSharpensY { + get { + return ((double)(this["DualSwordsSharpensY"])); + } + set { + this["DualSwordsSharpensY"] = value; + } + } } } diff --git a/MHFZ_Overlay/Settings.settings b/MHFZ_Overlay/Settings.settings index 5a8eafc6..8f41eae1 100644 --- a/MHFZ_Overlay/Settings.settings +++ b/MHFZ_Overlay/Settings.settings @@ -1022,5 +1022,14 @@ 0.5 + + True + + + 105 + + + 102 + \ No newline at end of file diff --git a/MHFZ_Overlay/ViewModels/Windows/AddressModel.cs b/MHFZ_Overlay/ViewModels/Windows/AddressModel.cs index bae5df7f..d5d4b919 100644 --- a/MHFZ_Overlay/ViewModels/Windows/AddressModel.cs +++ b/MHFZ_Overlay/ViewModels/Windows/AddressModel.cs @@ -118,6 +118,8 @@ public AddressModel(Mem m) public bool ShowPersonalBestAttemptsInfo { get; set; } + public bool ShowDualSwordsSharpens { get; set; } + public bool ShowMonster1HPBar { get; set; } public bool ShowMonster2HPBar { get; set; } @@ -1393,6 +1395,8 @@ 21747 or /// public abstract int QuestVariant4(); + public abstract int DualSwordsSharpens(); + /// /// Updates every 11 seconds /// @@ -1816,7 +1820,8 @@ public OverlayMode GetOverlayMode() || s.EnableMap || s.PersonalBestTimePercentShown || s.EnablePersonalBestPaceColor - || s.PlayerPositionShown) // TODO monster 1 overview? and update README + || s.PlayerPositionShown + || s.DualSwordsSharpensShown) // TODO monster 1 overview? and update README { return OverlayMode.Standard; } @@ -3278,6 +3283,8 @@ public string IsLowestMonsterDefrate public string DivaSongIcon { get; set; } = "../../Assets/Icons/png/diva_fountain.png"; + public string DualSwordsSharpensIcon { get; set; } = "../../Assets/Icons/png/whetstone.png"; + public string GuildFoodIcon { get; set; } = "../../Assets/Icons/png/guild_hall.png"; /// @@ -3338,6 +3345,32 @@ public string ATK } } + public string DualSwordsSharpensColor + { + get + { + var count = this.DualSwordsSharpens(); + if (count >= 4) + { + this.DualSwordsSharpensIcon = "../../Assets/Icons/png/whetstone_red.png"; + } + else + { + this.DualSwordsSharpensIcon = "../../Assets/Icons/png/whetstone.png"; + } + + return count switch + { + 4 => "#cba6f7", // Mauve + 3 => "#f38ba8", // Red + 2 => "#fab387", // Peach + 1 => "#f9e2af", // Yellow + 0 => "#f5e0dc", // Rosewater + _ => "#cdd6f4", + }; + } + } + /// /// Gets the color of the sharpness. /// @@ -3385,6 +3418,15 @@ public string SharpnessNumber } } + public string DualSwordsSharpensCount + { + get + { + var count = this.DualSwordsSharpens(); + return count.ToString(CultureInfo.InvariantCulture); + } + } + /// /// Gets the current weapon multiplier. /// @@ -3401,7 +3443,7 @@ public float CurrentWeaponMultiplier } /// - /// Gets the name of the current weapon. + /// Gets the name of the current weapon. This refers to the weapon type name. /// /// /// The name of the current weapon. diff --git a/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml b/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml index 3d752452..20f2a503 100644 --- a/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml +++ b/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml @@ -2439,6 +2439,8 @@ + + @@ -2836,7 +2838,19 @@ - + + + + + + + + + + + + + diff --git a/MHFZ_Overlay/Views/Windows/MainWindow.xaml b/MHFZ_Overlay/Views/Windows/MainWindow.xaml index 0615a704..1375d664 100644 --- a/MHFZ_Overlay/Views/Windows/MainWindow.xaml +++ b/MHFZ_Overlay/Views/Windows/MainWindow.xaml @@ -130,7 +130,20 @@ - + + + + + + + + + + + + + diff --git a/MHFZ_Overlay/Views/Windows/MainWindow.xaml.cs b/MHFZ_Overlay/Views/Windows/MainWindow.xaml.cs index 9de22eec..dc64e1f8 100644 --- a/MHFZ_Overlay/Views/Windows/MainWindow.xaml.cs +++ b/MHFZ_Overlay/Views/Windows/MainWindow.xaml.cs @@ -1327,6 +1327,9 @@ private void SetPlayerStatsVisibility(bool v, Settings s) this.DataLoader.Model.ShowQuestAttemptsInfo = v && s.QuestAttemptsShown; this.DataLoader.Model.ShowPersonalBestTimePercentInfo = v && s.PersonalBestTimePercentShown; this.DataLoader.Model.ShowPersonalBestAttemptsInfo = v && s.PersonalBestAttemptsShown; + + this.DataLoader.Model.ShowDualSwordsSharpens = v && s.DualSwordsSharpensShown && DataLoader.Model.CurrentWeaponName == "Dual Swords"; + } private double? yOffset { get; set; } @@ -1458,6 +1461,10 @@ private void MainGrid_DragOver(object sender, DragEventArgs e) s.MapX = (double)(pos.X - this.xOffset); s.MapY = (double)(pos.Y - this.yOffset); break; + case "DualSwordsSharpensInfo": + s.DualSwordsSharpensX = (double)(pos.X - this.xOffset); + s.DualSwordsSharpensY = (double)(pos.Y - this.yOffset); + break; // case "OverlayModeWatermark": // s.OverlayModeWatermarkX = (double)(pos.X - this.XOffset); @@ -1712,6 +1719,7 @@ private void ToggleOverlayBorders() this.PlayerDPSGraphGridBorder.BorderThickness = thickness; this.PlayerHitsPerSecondGraphGridBorder.BorderThickness = thickness; this.TitleBarBorder.BorderThickness = thickness; + this.DualSwordsSharpensBorder.BorderThickness = thickness; } private void ToggleClickThrough()