From 8a6eba633d277c923b45f65b91ba453fa6db6600 Mon Sep 17 00:00:00 2001 From: Leandro Klyte Date: Sun, 6 Nov 2022 22:45:58 -0300 Subject: [PATCH] v3.0.0r2 Updated to latest KU --- ElectricRoadsKw.sln | 8 +- ElectricRoadsKw/CommonProperties.cs | 27 --- ElectricRoadsKw/Data/ClassesData.cs | 2 +- ElectricRoadsKw/Data/DataContainer.cs | 11 +- ElectricRoadsKw/Data/DataExtensionBase.cs | 6 +- ElectricRoadsKw/ElectricRoadsKw.csproj | 26 ++- ElectricRoadsKw/Localization/Str.Designer.cs | 4 +- ElectricRoadsKw/ModInstance.cs | 60 +++---- .../Overrides/ElectricRoadsOverrides.cs | 2 +- ElectricRoadsKw/UI/Images/ModIcon.png | Bin 11740 -> 5214 bytes ElectricRoadsKw/UI/Images/ModIcon.psd | Bin 89844 -> 0 bytes ElectricRoadsKw/UI/LiteUI/MainWindow.cs | 156 +++++++++--------- 12 files changed, 130 insertions(+), 172 deletions(-) delete mode 100644 ElectricRoadsKw/CommonProperties.cs delete mode 100644 ElectricRoadsKw/UI/Images/ModIcon.psd diff --git a/ElectricRoadsKw.sln b/ElectricRoadsKw.sln index 390494d..042344e 100644 --- a/ElectricRoadsKw.sln +++ b/ElectricRoadsKw.sln @@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.3.32819.101 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EF00}") = "ElectricRoadsKw", "ElectricRoadsKw\ElectricRoadsKw.csproj", "{291D9EA9-6945-4EA3-8756-37464040F450}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElectricRoadsKw", "ElectricRoadsKw\ElectricRoadsKw.csproj", "{291D9EA9-6945-4EA3-8756-37464040F450}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KwyttoUtilityER", "KwyttoUtilityER\KwyttoUtilityER.csproj", "{27C9AAF8-F40F-4D56-0601-9C9025ED0A0C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,6 +17,10 @@ Global {291D9EA9-6945-4EA3-8756-37464040F450}.Debug|Any CPU.Build.0 = Debug|Any CPU {291D9EA9-6945-4EA3-8756-37464040F450}.Release|Any CPU.ActiveCfg = Release|Any CPU {291D9EA9-6945-4EA3-8756-37464040F450}.Release|Any CPU.Build.0 = Release|Any CPU + {27C9AAF8-F40F-4D56-0601-9C9025ED0A0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {27C9AAF8-F40F-4D56-0601-9C9025ED0A0C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {27C9AAF8-F40F-4D56-0601-9C9025ED0A0C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {27C9AAF8-F40F-4D56-0601-9C9025ED0A0C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ElectricRoadsKw/CommonProperties.cs b/ElectricRoadsKw/CommonProperties.cs deleted file mode 100644 index 217a9d3..0000000 --- a/ElectricRoadsKw/CommonProperties.cs +++ /dev/null @@ -1,27 +0,0 @@ -using ElectricRoads; -using Kwytto.Utils; -using UnityEngine; - -namespace Kwytto -{ - public static class CommonProperties - { - public static bool DebugMode => ModInstance.DebugMode; - public static string Version => ModInstance.Version; - public static string FullVersion => ModInstance.FullVersion; - public static string ModName => ModInstance.Instance.SimpleName; - public static string Acronym { get; } = "ER"; - public static string ModRootFolder => MainController.FOLDER_PATH; - public static string ModIcon => ModInstance.Instance.IconName; - public static string ModDllRootFolder => ModInstance.RootFolder; - - public static string GitHubRepoPath => "klyte45/ElectricRoadsKw"; - - - internal static readonly string[] AssetExtraDirectoryNames = new string[0]; - internal static readonly string[] AssetExtraFileNames = new string[] { }; - - public static Color ModColor { get; } = ColorExtensions.FromRGB("643e00"); - public static float UIScale { get; } = 1f; - } -} \ No newline at end of file diff --git a/ElectricRoadsKw/Data/ClassesData.cs b/ElectricRoadsKw/Data/ClassesData.cs index 0e007f8..0a67ffe 100644 --- a/ElectricRoadsKw/Data/ClassesData.cs +++ b/ElectricRoadsKw/Data/ClassesData.cs @@ -1,6 +1,6 @@ using ColossalFramework; using ICities; -using Klyte.Localization; +using ElectricRoads.Localization; using Kwytto.LiteUI; using Kwytto.Utils; using System; diff --git a/ElectricRoadsKw/Data/DataContainer.cs b/ElectricRoadsKw/Data/DataContainer.cs index 70785ef..595cab2 100644 --- a/ElectricRoadsKw/Data/DataContainer.cs +++ b/ElectricRoadsKw/Data/DataContainer.cs @@ -1,8 +1,7 @@ using ColossalFramework; using ColossalFramework.Threading; using ICities; -using Klyte.Localization; -using Kwytto; +using ElectricRoads.Localization; using Kwytto.LiteUI; using Kwytto.Utils; using System; @@ -29,7 +28,7 @@ public void OnLoadData() { LogUtils.DoLog($"LOADING DATA {GetType()}"); instance.Instances = new Dictionary(); - List instancesExt = ReflectionUtils.GetInterfaceImplementations(typeof(IDataExtension), GetType()); + List instancesExt = ReflectionUtils.GetInterfaceImplementations(typeof(IDataExtension), new[] { GetType().Assembly }); LogUtils.DoLog($"SUBTYPE COUNT: {instancesExt.Count}"); foreach (Type type in instancesExt) { @@ -89,7 +88,7 @@ private void ProcessExtension(Type type) try { instance.Instances[type] = basicInstance.Deserialize(type, storage) ?? basicInstance; - if (CommonProperties.DebugMode) + if (ModInstance.DebugMode) { string content = System.Text.Encoding.UTF8.GetString(storage); LogUtils.DoLog($"{type} DATA {storage.Length}b => {content}"); @@ -113,7 +112,7 @@ private void ProcessExtension(Type type) KwyttoDialog.ShowModal(new KwyttoDialog.BindProperties() { title = $"Error loading '{type}' data", - message = $"An error occurred while loading the data from {CommonProperties.ModName}.{(CommonProperties.GitHubRepoPath.IsNullOrWhiteSpace() ? "" : "\nPlease open a issue in GitHub along with the game log attached and a printscreen of this window to get this checked by the mod developer. See the Report-a-bug Helper button in the mod options menu to see details about how to get the game log.")}\nRaw data:", + message = $"An error occurred while loading the data from {ModInstance.Instance.SimpleName}.{(ModInstance.Instance.GitHubRepoPath.IsNullOrWhiteSpace() ? "" : "\nPlease open a issue in GitHub along with the game log attached and a printscreen of this window to get this checked by the mod developer. See the Report-a-bug Helper button in the mod options menu to see details about how to get the game log.")}\nRaw data:", scrollText = content, buttons = new[] { @@ -182,7 +181,7 @@ public void OnSaveData() byte[] data = instance.Instances[type]?.Serialize(); - if (CommonProperties.DebugMode) + if (ModInstance.DebugMode) { string content = System.Text.Encoding.UTF8.GetString(data); LogUtils.DoLog($"{type} DATA (L = {data?.Length}) => {content}"); diff --git a/ElectricRoadsKw/Data/DataExtensionBase.cs b/ElectricRoadsKw/Data/DataExtensionBase.cs index 8a5a526..49011f7 100644 --- a/ElectricRoadsKw/Data/DataExtensionBase.cs +++ b/ElectricRoadsKw/Data/DataExtensionBase.cs @@ -30,7 +30,7 @@ public static U Instance public IDataExtension Deserialize(Type type, byte[] data) { string content = data[0] == '<' ? Encoding.UTF8.GetString(data) : ZipUtils.Unzip(data); - if (CommonProperties.DebugMode) + if (ModInstance.DebugMode) { LogUtils.DoLog($"Deserializing {typeof(U)}:\n{content}"); } @@ -47,8 +47,8 @@ public byte[] Serialize() return null; } BeforeSerialize(); - var xml = XmlUtils.DefaultXmlSerialize((U)this, CommonProperties.DebugMode); - if (CommonProperties.DebugMode) + var xml = XmlUtils.DefaultXmlSerialize((U)this, ModInstance.DebugMode); + if (ModInstance.DebugMode) { LogUtils.DoLog($"Serializing {typeof(U)}:\n{xml}"); } diff --git a/ElectricRoadsKw/ElectricRoadsKw.csproj b/ElectricRoadsKw/ElectricRoadsKw.csproj index 519d18a..81c2f8b 100644 --- a/ElectricRoadsKw/ElectricRoadsKw.csproj +++ b/ElectricRoadsKw/ElectricRoadsKw.csproj @@ -7,7 +7,7 @@ {291D9EA9-6945-4EA3-8756-37464040F450} Library Properties - Klyte + ElectricRoads ElectricRoadsKw v3.5 512 @@ -66,7 +66,6 @@ - Str.Designer.cs @@ -79,22 +78,15 @@ True Str.resx + + + + + - - - - KStr.resx - True - True - - - - KStr.Designer.cs - ResXFileCodeGenerator - @@ -115,6 +107,12 @@ + + + {27c9aaf8-f40f-4d56-0601-9c9025ed0a0c} + KwyttoUtilityER + + set "ModDir=%25LOCALAPPDATA%25\Colossal Order\Cities_Skylines\Addons\Mods\$(SolutionName)\" diff --git a/ElectricRoadsKw/Localization/Str.Designer.cs b/ElectricRoadsKw/Localization/Str.Designer.cs index 188f73a..9b3ca3f 100644 --- a/ElectricRoadsKw/Localization/Str.Designer.cs +++ b/ElectricRoadsKw/Localization/Str.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace Klyte.Localization { +namespace ElectricRoads.Localization { using System; @@ -39,7 +39,7 @@ internal Str() { internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Klyte.Localization.Str", typeof(Str).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ElectricRoads.Localization.Str", typeof(Str).Assembly); resourceMan = temp; } return resourceMan; diff --git a/ElectricRoadsKw/ModInstance.cs b/ElectricRoadsKw/ModInstance.cs index dbf0aad..3a10742 100644 --- a/ElectricRoadsKw/ModInstance.cs +++ b/ElectricRoadsKw/ModInstance.cs @@ -1,15 +1,13 @@ using ElectricRoads.UI; -using ICities; -using Klyte.Localization; +using ElectricRoads.Localization; using Kwytto.Interfaces; using Kwytto.Utils; using System.Collections.Generic; using System.Globalization; using System.Reflection; -using UnifiedUI.Helpers; using UnityEngine; -[assembly: AssemblyVersion("3.0.0.1")] +[assembly: AssemblyVersion("3.0.0.2")] namespace ElectricRoads { public class ModInstance : BasicIUserMod @@ -25,49 +23,33 @@ public class ModInstance : BasicIUserMod [2862121823] = "81 Tiles 2" }; + public override string SafeName => "ElectricRoads"; + + public override string Acronym => "ER"; + + public override Color ModColor { get; } = ColorExtensions.FromRGB("a38b00"); + public enum PatchFlags { RegularGame = 0x1, - Mod81TilesGame = 0x2 + BP81TilesGame = 0x2 } internal static PatchFlags m_currentPatched; - protected override void OnLevelLoadedInherit(LoadMode mode) - { - base.OnLevelLoadedInherit(mode); - Instance.RegisterMod(); - } - - private UUICustomButton m_modButton; - public void RegisterMod() + private IUUIButtonContainerPlaceholder[] cachedUUI; + public override IUUIButtonContainerPlaceholder[] UUIButtons => cachedUUI ?? (cachedUUI = new[] { - m_modButton = UUIHelpers.RegisterCustomButton( - name: SimpleName, - groupName: "Klyte45", - tooltip: Name, - onToggle: (value) => { if (value) { Open(); } else { Close(); } }, - onToolChanged: null, - icon: KResourceLoader.LoadTexture($"UI.Images.{IconName}.png"), - hotkeys: new UUIHotKeys { } - - ); - Close(); - } - internal void Close() - { - m_modButton.IsPressed = false; - MainWindow.Instance.Visible = false; - m_modButton.Button?.Unfocus(); - ApplyButtonColor(); - } - - internal void ApplyButtonColor() => m_modButton.Button.color = Color.Lerp(Color.gray, m_modButton.IsPressed ? Color.white : Color.black, 0.5f); - internal void Open() + new UUIWindowButtonContainerPlaceholder( + buttonName: Instance.SimpleName, + tooltip: Instance.GeneralName, + iconPath: "ModIcon", + windowGetter: ()=>MainWindow.Instance + ) + }); + protected override void DoOnLevelUnloading() { - m_modButton.IsPressed = true; - MainWindow.Instance.Visible = true; - MainWindow.Instance.transform.position = new Vector3(25, 50); - ApplyButtonColor(); + base.DoOnLevelUnloading(); + cachedUUI = null; } } } diff --git a/ElectricRoadsKw/Overrides/ElectricRoadsOverrides.cs b/ElectricRoadsKw/Overrides/ElectricRoadsOverrides.cs index b0eb8b1..5ae4c8c 100644 --- a/ElectricRoadsKw/Overrides/ElectricRoadsOverrides.cs +++ b/ElectricRoadsKw/Overrides/ElectricRoadsOverrides.cs @@ -67,7 +67,7 @@ public void Awake() AddRedirect(typeof(PropInstance).GetMethod("RenderInstance", RedirectorUtils.allFlags, null, new Type[] { typeof(RenderManager.CameraInfo), typeof(PropInfo), typeof(InstanceID), typeof(Vector3), typeof(float), typeof(float), typeof(Color), typeof(Vector4), typeof(bool) }, null), null, null, GetType().GetMethod("LightsOnCheckDetour", RedirectorUtils.allFlags)); AddRedirect(typeof(LightEffect).GetMethod("PopulateGroupData", RedirectorUtils.allFlags), GetType().GetMethod("CheckElectrityNetForLight", RedirectorUtils.allFlags)); - ModInstance.m_currentPatched &= ~ModInstance.PatchFlags.Mod81TilesGame; + ModInstance.m_currentPatched &= ~ModInstance.PatchFlags.BP81TilesGame; ModInstance.m_currentPatched &= ~ModInstance.PatchFlags.RegularGame; diff --git a/ElectricRoadsKw/UI/Images/ModIcon.png b/ElectricRoadsKw/UI/Images/ModIcon.png index bb14c8a6545796a7800cba24adf0778d369b0a69..dc2543b735fba6c89df19c9c4b05dbe2bd81f1f5 100644 GIT binary patch delta 2672 zcmb7FeLU3J8h_?R#%n`JVVgx=*(Nh%%nKXSi_J?dJBt=;G1HJDii=wOX4tf{UM}6@ zW;flu6sd&7-I(2y&;4xVqP&G-D_c!SA(4BIyZguOQ@8HW==RD_}-`w^e zu*w#Ywa!-Bn^JVyY$l86#o^eq1@aAzWMjb_qB49>v;%BjXEf?YO~A36IBPZs%|X%-~?Q9n+30MShu(E#p;j zs54{>DL+Iekk|^Df)JsU$+zVqO^Ox}gb4UTo>0nShvbga3|=pWt|6{cs_T-R-=`vT zMs$pGY>a)}4%zN?<{TD>!+dSKbdA4RzDFgJ+*S>1OAenelu39jrjRWaFlAiS1fh(@ zLR;M~m2%Mzd3;%}sb;#V*qjlyBQhp3dPiiG{g&W;vb|oi_?UI(&SG<$+=H4cR*a_9 zzJ-D#zjNeyZ{wiI0>^ALweD@4)Vkb8O&Q_X!@L7P^Ksp@-YdRW)$ft+Ei+Y)pK#e} zrdF|EtAR2os{V_cX4r6V&1V;*3|rjVtDV=nZL-}=k2%4hw9wpgZ0~w5@hfTn`9Q=@ zX_P}_u%*f9ZKnaJiGl}Hz6pHch$=tY@j=0ZkEaUq)u-0p2!H&jCqH8AD8I$7KWv65 zJ#BH?Ztmu@=#Ko7{z{LyzOH|$W+VA?Ay8aaZ}@Vu1h~X>LdViYZe{frmFMCpccN1) zibp!;No}(Sr?d|pF01)P(fuNDXMLoo$g4ji?Wg?bJxLVvdyo3z&KX6vIMy1bFLy0Y z{QB3L)~s!gPj34;TAyCY4D1;cCQkpANP;s|$l5>W`FM8mlYk?g7mh4-dZ@0vlAlzn zQSM~Q%@b>-C)N(W(g6*CY=Hj)h6d!o|0lv8kuL4ubKI}9|7M+nS3ndu^>hv!%+Hte z8@_y$6=(xNRfO{8%|7q&wv=$e(#*!-A9)5+4iW3|U}jdKXx0O==$;jomhyuyNd%{= zqnl$54w8T>XIiZ_bi1?#xVK1XkL~VXb;tIg_g%80fzXfW&wakm7n= z2Sfx|&4vfv>-`XDkbkUmC7xweVTQ5*3AyNhC@&7#7@_rCZl9{9kr+^&@V(M1{Qxk) z>%4>xWch&&hS zL5zP1fC`PH;#|G?C;L$LFU)A*t*ac4Q)N_5mqnbZ%+jd2nA{b~p+gy29(LKq!jl%h zvrZcoH>TZ`IO$#*Tl0zoKvsSmO5O8IMMWH?okSnZJCw1l-{jdx#V~!&xGG2QTU$fW z-uKNCNOdmEm;hApH7_C|Rjk(??#)0&u#GnN@mf@}Fwc)Np^i@LHp>u`JFZCzVhDI}&O$y>WWAS?kaxwNfYvxBek!qNX z?&l}Upu4jJ5|Z(+#UEmGO=fjO;&;YCl^@a@iCcyzYzeThDZivz=ePtdE?;d>+P88* z2dTg+cKgwxZC3^jvDrqoH21#y=WgJ(0jt8T@BXmQN~Fq(B5B92b@&OgmmV)>qPs>1 z{p$-G%oDR84IEK@0Ax{enh230jnp0P$^xof!>hN7!ZX3wJFQtAaEln|_rDYze#1ch zf6KUdHa^Z@JGH)RH1R2bsGQUm--^G#?;QBV>6rCC3h_RqcW_>-XzV&%6`fkw->^?o zsFQ%s@9&ON?L*<8LA5Mlm9D&KFGY@Chzn{y0^)ak6SzV)72YBINy?L7Ih{|CHU4zi zulwoH!8wRGhTFeA-&nf1vDepcx^SXnsw&5?J!5q8&ke$7d!4|CEEk?@JtB_fKz9Ve zC_1dtgs;NuBUwdWO~vyU@t?FhdDNJ`+S@@o7)S{+Q(Rf(?DntFtf`lOBE>g^-MZuA zJ>}XF?Liu&QXP&Zu|37!O^$Q-ug%S^hFf~wx1RZQjFy~>`R_&im=0JqH5`O{5jDI0>4{|zMsPRsxR delta 9319 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 diff --git a/ElectricRoadsKw/UI/LiteUI/MainWindow.cs b/ElectricRoadsKw/UI/LiteUI/MainWindow.cs index 2e14e91..60b5615 100644 --- a/ElectricRoadsKw/UI/LiteUI/MainWindow.cs +++ b/ElectricRoadsKw/UI/LiteUI/MainWindow.cs @@ -1,7 +1,6 @@ using ColossalFramework.UI; using ElectricRoads.Data; -using Klyte.Localization; -using Kwytto; +using ElectricRoads.Localization; using Kwytto.LiteUI; using Kwytto.Utils; using System.Collections.Generic; @@ -10,8 +9,13 @@ namespace ElectricRoads.UI { - internal class MainWindow : GUIRootWindowBase + internal class MainWindow : GUIOpacityChanging { + protected override bool showOverModals => false; + + protected override bool requireModal => false; + + protected override float FontSizeMultiplier => .9f; public static MainWindow Instance { get @@ -32,7 +36,6 @@ public static MainWindow Instance private void Init() { - requireModal = false; Init($"{ModInstance.Instance.Name} - Patch: {ModInstance.m_currentPatched}", new Rect(200, 200, 400, 550), true, true, new Vector2(400, 550)); m_allClasses = ((FastList.PrefabData>)typeof(PrefabCollection).GetField("m_scenePrefabs", RedirectorUtils.allFlags).GetValue(null)) @@ -42,6 +45,7 @@ private void Init() .GroupBy(x => x.m_class.name) .OrderBy(x => x.Key) .ToDictionary(x => x.First().m_class, x => x.ToList()); + Visible = false; } public void Start() => Visible = false; @@ -52,18 +56,17 @@ private void Init() public static Color bgSubgroup; public static Color bgNote; - public static Texture2D BgTextureBasic => BgTexture; static MainWindow() { - bgSubgroup = CommonProperties.ModColor.SetBrightness(.20f); + bgSubgroup = ModInstance.Instance.ModColor.SetBrightness(.20f); BgTextureSubgroup = new Texture2D(1, 1); BgTextureSubgroup.SetPixel(0, 0, new Color(bgSubgroup.r, bgSubgroup.g, bgSubgroup.b, 1)); BgTextureSubgroup.Apply(); - bgNote = CommonProperties.ModColor.SetBrightness(.60f); + bgNote = ModInstance.Instance.ModColor.SetBrightness(.60f); BgTextureNote = new Texture2D(1, 1); BgTextureNote.SetPixel(0, 0, new Color(bgNote.r, bgNote.g, bgNote.b, 1)); BgTextureNote.Apply(); @@ -73,7 +76,6 @@ static MainWindow() protected override void OnWindowClosed() { base.OnWindowClosed(); - ModInstance.Instance.Close(); } @@ -89,12 +91,12 @@ internal GUIStyle GreenButton { normal = new GUIStyleState() { - background = GUIKlyteCommons.darkGreenTexture, + background = GUIKwyttoCommons.darkGreenTexture, textColor = Color.white }, hover = new GUIStyleState() { - background = GUIKlyteCommons.greenTexture, + background = GUIKwyttoCommons.greenTexture, textColor = Color.black }, }; @@ -115,12 +117,12 @@ internal GUIStyle RedButton { normal = new GUIStyleState() { - background = GUIKlyteCommons.darkRedTexture, + background = GUIKwyttoCommons.darkRedTexture, textColor = Color.white }, hover = new GUIStyleState() { - background = GUIKlyteCommons.redTexture, + background = GUIKwyttoCommons.redTexture, textColor = Color.white }, }; @@ -154,77 +156,75 @@ public VehicleInfo CurrentInfo } } + private List m_currentInfoList; private VehicleInfo m_currentInfo; - private Texture2D texLoad = KResourceLoader.LoadTexture("UI.Images.Load.png"); - private Texture2D texAll = KResourceLoader.LoadTexture("UI.Images.All.png"); - private Texture2D texNone = KResourceLoader.LoadTexture("UI.Images.None.png"); - private Texture2D texReload = KResourceLoader.LoadTexture("UI.Images.Reload.png"); - private Texture2D texSave = KResourceLoader.LoadTexture("UI.Images.Save.png"); + private Texture2D texLoad = KResourceLoader.LoadTextureMod("Load"); + private Texture2D texAll = KResourceLoader.LoadTextureMod("All"); + private Texture2D texNone = KResourceLoader.LoadTextureMod("None"); + private Texture2D texReload = KResourceLoader.LoadTextureMod("Reload"); + private Texture2D texSave = KResourceLoader.LoadTextureMod("Save"); - protected override void DrawWindow() + protected override void DrawWindow(Vector2 area) { - var area = new Rect(5, 25, WindowRect.width - 10, WindowRect.height - 25); - using (new GUILayout.AreaScope(area)) + var topArea = new Rect(0, 0, area.x, 42); + var bottomArea = new Rect(0, 42, area.x, 20); + var listArea = new Rect(0, 58, area.x, area.y - 62); + using (new GUILayout.AreaScope(topArea)) { - var topArea = new Rect(0, 0, area.width, 42); - var bottomArea = new Rect(0, 42, area.width, 16); - var listArea = new Rect(0, 58, area.width, area.height - 58); - using (new GUILayout.AreaScope(topArea)) + using (new GUILayout.HorizontalScope()) { - using (new GUILayout.HorizontalScope()) + if (GUILayout.Button(new GUIContent(texSave, Str.ER_EXPORT_DEFAULT_BTN))) { - if (GUILayout.Button(new GUIContent(texSave, Str.ER_EXPORT_DEFAULT_BTN))) - { - ClassesData.Instance.SaveAsDefault(); - } - GUILayout.FlexibleSpace(); - if (GUILayout.Button(new GUIContent(texLoad, Str.ER_IMPORT_DEFAULT_BTN))) - { - ClassesData.Instance.LoadDefaults(null); - } - GUILayout.FlexibleSpace(); - if (GUILayout.Button(new GUIContent(texAll, Str.ER_SELECT_ALL_BTN))) - { - ClassesData.Instance.SelectAll(); - } - GUILayout.FlexibleSpace(); - if (GUILayout.Button(new GUIContent(texNone, Str.ER_SELECT_NONE_BTN))) - { - ClassesData.Instance.UnselectAll(); - } - GUILayout.FlexibleSpace(); - if (GUILayout.Button(new GUIContent(texReload, Str.ER_RESET_BTN))) - { - ClassesData.Instance.SafeCleanAll(m_allClasses.Keys); - } + ClassesData.Instance.SaveAsDefault(); + } + GUILayout.FlexibleSpace(); + if (GUILayout.Button(new GUIContent(texLoad, Str.ER_IMPORT_DEFAULT_BTN))) + { + ClassesData.Instance.LoadDefaults(null); + } + GUILayout.FlexibleSpace(); + if (GUILayout.Button(new GUIContent(texAll, Str.ER_SELECT_ALL_BTN))) + { + ClassesData.Instance.SelectAll(); + } + GUILayout.FlexibleSpace(); + if (GUILayout.Button(new GUIContent(texNone, Str.ER_SELECT_NONE_BTN))) + { + ClassesData.Instance.UnselectAll(); + } + GUILayout.FlexibleSpace(); + if (GUILayout.Button(new GUIContent(texReload, Str.ER_RESET_BTN))) + { + ClassesData.Instance.SafeCleanAll(m_allClasses.Keys); } } - using (new GUILayout.AreaScope(listArea)) + } + using (new GUILayout.AreaScope(listArea)) + { + using (var scroll = new GUILayout.ScrollViewScope(scrollPosition)) { - using (var scroll = new GUILayout.ScrollViewScope(scrollPosition)) + using (new GUILayout.VerticalScope()) { - using (new GUILayout.VerticalScope()) + foreach (var item in m_allClasses) { - foreach (var item in m_allClasses) + using (new GUILayout.HorizontalScope()) { - using (new GUILayout.HorizontalScope()) + var oldVal = ClassesData.Instance.GetConductibility(item.Key); + var newVal = GUILayout.Toggle(oldVal, item.Key.name); + if (oldVal != newVal) { - var oldVal = ClassesData.Instance.GetConductibility(item.Key); - var newVal = GUILayout.Toggle(oldVal, item.Key.name); - if (oldVal != newVal) - { - ClassesData.Instance.SetConductibility(item.Key, newVal); - } - GUILayout.FlexibleSpace(); - if (GUILayout.Button("?")) + ClassesData.Instance.SetConductibility(item.Key, newVal); + } + GUILayout.FlexibleSpace(); + if (GUILayout.Button("?")) + { + var clazz = item.Key; + KwyttoDialog.ShowModal(new KwyttoDialog.BindProperties() { - var clazz = item.Key; - KwyttoDialog.ShowModal(new KwyttoDialog.BindProperties() - { - showClose = true, - buttons = new[]{ + showClose = true, + buttons = new[]{ KwyttoDialog.SpaceBtn, new KwyttoDialog.ButtonDefinition{ title=Str.ER_ACTIVATE_CLASS_BTN, @@ -247,25 +247,25 @@ protected override void DrawWindow() onClick=()=>true }, }, - title = string.Format(Str.ER_TITLE_NET_LIST_WINDOW, clazz.name), - message = string.Format(Str.ER_PATTERN_NET_LIST_TITLE, Mathf.Min(30, item.Value.Count), item.Value.Count), - scrollText = string.Join("\n", item.Value.Take(30).Select(x => $"\t- {x.GetUncheckedLocalizedTitle()}").ToArray()), - }); - } + title = string.Format(Str.ER_TITLE_NET_LIST_WINDOW, clazz.name), + message = string.Format(Str.ER_PATTERN_NET_LIST_TITLE, Mathf.Min(30, item.Value.Count), item.Value.Count), + scrollText = string.Join("\n", item.Value.Take(30).Select(x => $"\t- {x.GetUncheckedLocalizedTitle()}").ToArray()), + }); } } } - scrollPosition = scroll.scrollPosition; } - } - using (new GUILayout.AreaScope(bottomArea)) - { - GUILayout.Label(GUI.tooltip); + scrollPosition = scroll.scrollPosition; } } - + using (new GUILayout.AreaScope(bottomArea)) + { + GUILayout.Label(GUI.tooltip); + } } + + private Vector2 scrollPosition; private static MainWindow instance; }