diff --git a/Dialog/English.txt b/Dialog/English.txt index ff1d323..abbae39 100644 --- a/Dialog/English.txt +++ b/Dialog/English.txt @@ -1,16 +1,22 @@ AVALI_SKIN_TITLE= Avali Skin -modoptions_avaliskin_colormodeopt=Dash color mode +modoptions_avaliskin_dashcolormodeopt=Dash color mode +modoptions_avaliskin_bodycolormodeopt=Body color mode + modoptions_avaliskin_colormodeopt_ExternalDash=Use hair color -modoptions_avaliskin_colormodeopt_ManualPreset=Select color preset -modoptions_avaliskin_colormodeopt_ManualPreset_note=Selects hair color from color presets -Make sure to disable other hair color mods. -modoptions_avaliskin_colormodeopt_ManualRGB=Select RGB color -modoptions_avaliskin_colormodeopt_ManualRGB_note=Selects hair color from RGB values. -Make sure to disable other hair color mods. -modoptions_avaliskin_colormodeopt_ExternalDash_note=Uses hair color from vanilla +modoptions_avaliskin_dashcolormodeopt_ExternalDash_note=Uses hair color from vanilla or from other mods (e.g., Hyperline, Prideline) +modoptions_avaliskin_colormodeopt_ManualPreset=Select color preset +modoptions_avaliskin_dashcolormodeopt_ManualPreset_note=Selects hair color from color presets +Make sure to disable other hair color mods. +modoptions_avaliskin_bodycolormodeopt_ManualPreset_note=Selects body color from color presets + +modoptions_avaliskin_colormodeopt_ManualRGB=Select RGB color +modoptions_avaliskin_dashcolormodeopt_ManualRGB_note=Selects hair color from RGB values. +Make sure to disable other hair color mods. +modoptions_avaliskin_bodycolormodeopt_ManualRGB_note=Selects body color from RGB values. + AVALI_SKIN_COLORS=Dash colors AVALI_SKIN_DASH0=Zero Dashes AVALI_SKIN_DASH1=One Dash diff --git a/SourceCode/AvaliSkinModule.cs b/SourceCode/AvaliSkinModule.cs index 65414b2..7aeb745 100644 --- a/SourceCode/AvaliSkinModule.cs +++ b/SourceCode/AvaliSkinModule.cs @@ -14,6 +14,7 @@ using Celeste.Mod.CelesteNet.Client.Entities; using Celeste.Mod.CelesteNet.DataTypes; using ColorChoice = Celeste.Mod.AvaliSkin.AvaliSkinSettings.ColorChoice; +using DashColorMode = Celeste.Mod.AvaliSkin.AvaliSkinSettings.DashColorMode; using ColorMode = Celeste.Mod.AvaliSkin.AvaliSkinSettings.ColorMode; @@ -28,19 +29,19 @@ namespace Celeste.Mod.AvaliSkin { public static AvaliConfig PlayerConfig { get => new AvaliConfig { Enabled = Settings.Enabled, - ColorMode = Settings.ColorModeOpt, + DashColorMode = Settings.DashColorModeOpt, DashColors = - Settings.ColorModeOpt == ColorMode.ManualPreset + Settings.DashColorModeOpt == DashColorMode.ManualPreset ? Settings.DashPreset.Select(preset => ColorUtil.SettingToColor(preset)).ToList() : Settings.DashRGBColor, - LightBody = Settings.ColorModeOpt == ColorMode.ManualPreset ? ColorUtil.SettingToColor(Settings.LightBodyPreset) : Settings.LightBodyRGBColor, - DarkBody = Settings.ColorModeOpt == ColorMode.ManualPreset ? ColorUtil.SettingToColor(Settings.DarkBodyPreset) : Settings.DarkBodyRGBColor, + LightBody = Settings.BodyColorModeOpt == ColorMode.ManualPreset ? ColorUtil.SettingToColor(Settings.LightBodyPreset) : Settings.LightBodyRGBColor, + DarkBody = Settings.BodyColorModeOpt == ColorMode.ManualPreset ? ColorUtil.SettingToColor(Settings.DarkBodyPreset) : Settings.DarkBodyRGBColor, }; } public static AvaliConfig EveryoneHasSkinConfig { get => new AvaliConfig { Enabled = true, - ColorMode = ColorMode.ExternalDash, + DashColorMode = DashColorMode.ExternalDash, LightBody = PlayerConfig.LightBody, DarkBody = PlayerConfig.DarkBody, }; @@ -445,7 +446,7 @@ namespace Celeste.Mod.AvaliSkin { // The hair mod should do be doing that instead of us. // Furthermore: naively doing this will look strange because the white // hair flash right after dashing will be copied to the trail. - if (PlayerConfig.ColorMode != ColorMode.ExternalDash) { + if (PlayerConfig.DashColorMode != DashColorMode.ExternalDash) { // replace trail colors with marking colors return PlayerConfig.GetColor(self); } @@ -460,7 +461,7 @@ namespace Celeste.Mod.AvaliSkin { orig(self, applyGravity); // Don't change the hair color if another mod is in control of it! - if (PlayerConfig.IsEnabled(self) && PlayerConfig.ColorMode != ColorMode.ExternalDash) { + if (PlayerConfig.IsEnabled(self) && PlayerConfig.DashColorMode != DashColorMode.ExternalDash) { // change player hair color to match dash colors. // (hair is invisible, but that influences other things like the orbs when the Avali dies and respawns) self.Hair.Color = PlayerConfig.GetColor(self); @@ -474,7 +475,7 @@ namespace Celeste.Mod.AvaliSkin { // We can't exfiltrate a dash color in this mode because we can't extract that // without integrating with the dash color mod, and besides, whatever mod that // changed the dash color should have also changed these particles regardless. - && PlayerConfig.ColorMode != ColorMode.ExternalDash + && PlayerConfig.DashColorMode != DashColorMode.ExternalDash )) { // disabled, just run vanilla code return orig(self); diff --git a/SourceCode/AvaliSkinSettings.cs b/SourceCode/AvaliSkinSettings.cs index d254935..fd45b78 100644 --- a/SourceCode/AvaliSkinSettings.cs +++ b/SourceCode/AvaliSkinSettings.cs @@ -17,40 +17,52 @@ namespace Celeste.Mod.AvaliSkin { if (loadedCelestenet) { updateSkinCelestenet(); } // menu is not loaded; don't bother - if (ColorModeOptItem == null) { return; } + if (DashColorModeOptItem == null) { return; } // disable all the normal options if the main toggle is disabled - ColorModeOptItem.Disabled = !Enabled; - ColorSubmenuItem.Disabled = !Enabled; + DashColorModeOptItem.Disabled = !Enabled; + DashColorSubmenuItem.Disabled = !Enabled; + BodyColorModeOptItem.Disabled = !Enabled; + BodyColorSubmenuItem.Disabled = !Enabled; // change up the colormode note based on the selection string colorModeNote = ""; - switch (ColorModeOpt) { - case ColorMode.ExternalDash: colorModeNote = "modoptions_avaliskin_colormodeopt_ExternalDash_note"; break; - case ColorMode.ManualPreset: colorModeNote = "modoptions_avaliskin_colormodeopt_ManualPreset_note"; break; - case ColorMode.ManualRGB: colorModeNote = "modoptions_avaliskin_colormodeopt_ManualRGB_note"; break; + switch (DashColorModeOpt) { + case DashColorMode.ExternalDash: colorModeNote = "modoptions_avaliskin_dashcolormodeopt_ExternalDash_note"; break; + case DashColorMode.ManualPreset: colorModeNote = "modoptions_avaliskin_dashcolormodeopt_ManualPreset_note"; break; + case DashColorMode.ManualRGB: colorModeNote = "modoptions_avaliskin_dashcolormodeopt_ManualRGB_note"; break; } - ColorModeOptNote.Title = colorModeNote.DialogOrKey(); + DashColorModeOptNote.Title = colorModeNote.DialogOrKey(); + + switch (BodyColorModeOpt) { + case ColorMode.ManualPreset: colorModeNote = "modoptions_avaliskin_bodycolormodeopt_ManualPreset_note"; break; + case ColorMode.ManualRGB: colorModeNote = "modoptions_avaliskin_bodycolormodeopt_ManualRGB_note"; break; + } + BodyColorModeOptNote.Title = colorModeNote.DialogOrKey(); // no point in showing the submenu at all for externaldash; there's // nothing to configure! - ColorSubmenuItem.Visible = ColorModeOpt != ColorMode.ExternalDash; + DashColorSubmenuItem.Visible = DashColorModeOpt != DashColorMode.ExternalDash; // disable and change item visibility based on main toggle or colormode - foreach (var item in RGBItems) { + foreach (var item in RGBDashColorItems) { item.Disabled = !Enabled; - item.Visible = ColorModeOpt == ColorMode.ManualRGB - || ColorModeOpt == ColorMode.ExternalDash; + item.Visible = DashColorModeOpt == DashColorMode.ManualRGB; } - foreach (var item in PresetItems) { + foreach (var item in PresetDashColorItems) { item.Disabled = !Enabled; - item.Visible = ColorModeOpt == ColorMode.ManualPreset - || ColorModeOpt == ColorMode.ExternalDash; + item.Visible = DashColorModeOpt == DashColorMode.ManualPreset; } - foreach (var item in DashColorItems) { - item.Visible = ColorModeOpt != ColorMode.ExternalDash; + foreach (var item in RGBBodyColorItems) { + item.Disabled = !Enabled; + item.Visible = BodyColorModeOpt == ColorMode.ManualRGB; + } + + foreach (var item in PresetBodyColorItems) { + item.Disabled = !Enabled; + item.Visible = BodyColorModeOpt == ColorMode.ManualPreset; } @@ -99,18 +111,110 @@ namespace Celeste.Mod.AvaliSkin { } - public enum ColorMode { + public enum DashColorMode { ExternalDash, ManualPreset, ManualRGB } - public ColorMode ColorModeOpt { get; set; } = ColorMode.ExternalDash; - private TextMenu.Item ColorModeOptItem; - private TextMenu.SubHeader ColorModeOptNote; - public void CreateColorModeOptEntry(TextMenu menu, bool inGame) { - ColorModeOptItem = new TextMenuExt.EnumerableSlider( - "modoptions_avaliskin_colormodeopt".DialogOrKey(), + public DashColorMode DashColorModeOpt { get; set; } = DashColorMode.ExternalDash; + private TextMenu.Item DashColorModeOptItem; + private TextMenu.SubHeader DashColorModeOptNote; + public void CreateDashColorModeOptEntry(TextMenu menu, bool inGame) { + DashColorModeOptItem = new TextMenuExt.EnumerableSlider( + "modoptions_avaliskin_dashcolormodeopt".DialogOrKey(), + // Enum.GetValues returns an Array, which is not enumerable. + // However, normal object vectors are. So... + ((DashColorMode[]) Enum.GetValues(typeof(DashColorMode))).Select( + variant => new KeyValuePair( + variant, + $"modoptions_avaliskin_colormodeopt_{variant.ToString()}".DialogOrKey() + ) + ), + DashColorModeOpt + ).Change(opt => { + DashColorModeOpt = opt; + updateOptions(); + }); + menu.Add(DashColorModeOptItem); + DashColorModeOptItem.AddDescription(menu, "modoptions_avaliskin_dashcolormodeopt_note".DialogOrKey()); + + List items = menu.GetItems(); + DashColorModeOptNote = (TextMenu.SubHeader) items[items.IndexOf(DashColorModeOptItem) + 1]; + } + + + // DashColorSubmenu is a dummy setting that is only used to position the + // Submenu. This setting is never used, hence why it is Void! + [YamlIgnore] + public Void DashColorSubmenu { get; set; } + private TextMenuExt.OptionSubMenu DashColorSubmenuItem; + public void CreateDashColorSubmenuEntry(TextMenu menu, bool inGame) { + RGBDashColorItems.Clear(); + PresetDashColorItems.Clear(); + + DashColorSubmenuItem = new TextMenuExt.OptionSubMenu( + "AVALI_SKIN_COLORS".DialogOrKey() + ); + + // This generates n submenus, one for each dash + for (int i = 0; i < DashRGBColor.Count; i++) { + TextMenuExt.IntSlider RItem, GItem, BItem; + TextMenu.Option ColorItem; + + int j = i; // C# lambda are wierd: capturing i directly mutates the captured variable + + DashColorSubmenuItem.Add( + $"AVALI_SKIN_DASH{i}".DialogOrKey(), + new List { + (RItem = new TextMenuExt.IntSlider( + "AVALI_SKIN_RED".DialogOrKey(), + 0, 255, DashRGBColor[j].R + ).Change( + // C# is stupidly pendatic and doesn't support property assignment in List elements + // so we have to do this ugly shit to avoid breaking up this expression into two + c => DashRGBColor[j] = new Color((byte) c, DashRGBColor[j].G, DashRGBColor[j].B) + )), + (GItem = new TextMenuExt.IntSlider( + "AVALI_SKIN_GREEN".DialogOrKey(), + 0, 255, DashRGBColor[j].G + ).Change( + c => DashRGBColor[j] = new Color(DashRGBColor[j].R, (byte) c, DashRGBColor[j].B) + )), + (BItem = new TextMenuExt.IntSlider( + "AVALI_SKIN_BLUE".DialogOrKey(), + 0, 255, DashRGBColor[j].B + ).Change( + c => DashRGBColor[j] = new Color(DashRGBColor[j].R, DashRGBColor[j].G, (byte) c) + )), + (ColorItem = new TextMenuExt.EnumSlider( + "AVALI_SKIN_COLOR".DialogOrKey(), + DashPreset[j] + ).Change(c => DashPreset[j] = c)), + } + ); + + RGBDashColorItems.Add(RItem); + RGBDashColorItems.Add(GItem); + RGBDashColorItems.Add(BItem); + PresetDashColorItems.Add(ColorItem); + } + + menu.Add(DashColorSubmenuItem); + } + + + public enum ColorMode { + ManualPreset, + ManualRGB + } + + public ColorMode BodyColorModeOpt { get; set; } = ColorMode.ManualPreset; + private TextMenu.Item BodyColorModeOptItem; + private TextMenu.SubHeader BodyColorModeOptNote; + public void CreateBodyColorModeOptEntry(TextMenu menu, bool inGame) { + BodyColorModeOptItem = new TextMenuExt.EnumerableSlider( + "modoptions_avaliskin_bodycolormodeopt".DialogOrKey(), // Enum.GetValues returns an Array, which is not enumerable. // However, normal object vectors are. So... ((ColorMode[]) Enum.GetValues(typeof(ColorMode))).Select( @@ -119,149 +223,96 @@ namespace Celeste.Mod.AvaliSkin { $"modoptions_avaliskin_colormodeopt_{variant.ToString()}".DialogOrKey() ) ), - ColorModeOpt + BodyColorModeOpt ).Change(opt => { - ColorModeOpt = opt; + BodyColorModeOpt = opt; updateOptions(); }); - menu.Add(ColorModeOptItem); - ColorModeOptItem.AddDescription(menu, "modoptions_avaliskin_colormodeopt_note".DialogOrKey()); + menu.Add(BodyColorModeOptItem); + BodyColorModeOptItem.AddDescription(menu, "modoptions_avaliskin_bodycolormodeopt_note".DialogOrKey()); List items = menu.GetItems(); - ColorModeOptNote = (TextMenu.SubHeader) items[items.IndexOf(ColorModeOptItem) + 1]; + BodyColorModeOptNote = (TextMenu.SubHeader) items[items.IndexOf(BodyColorModeOptItem) + 1]; } - // ColorSubmenu is a dummy setting that is only used to position the - // Submenu. This setting is never used, hence why it is Void! [YamlIgnore] - public Void ColorSubmenu { get; set; } - private TextMenuExt.OptionSubMenu ColorSubmenuItem, BodyColorSubmenuItem; - public void CreateColorSubmenuEntry(TextMenu menu, bool inGame) { - RGBItems.Clear(); - PresetItems.Clear(); - DashColorItems.Clear(); - - ColorSubmenuItem = new TextMenuExt.OptionSubMenu( - "AVALI_SKIN_COLORS".DialogOrKey() - ); - - // This generates n submenus, one for each dash - TextMenuExt.IntSlider DashRItem, DashGItem, DashBItem; - TextMenu.Option DashColorItem; - for (int i = 0; i < DashRGBColor.Count; i++) { - - int j = i; // C# lambda are wierd: capturing i directly mutates the captured variable - - ColorSubmenuItem.Add( - $"AVALI_SKIN_DASH{i}".DialogOrKey(), - new List { - (DashRItem = new TextMenuExt.IntSlider( - "AVALI_SKIN_RED".DialogOrKey(), - 0, 255, DashRGBColor[j].R - ).Change( - // C# is stupidly pendatic and doesn't support property assignment in List elements - // so we have to do this ugly shit to avoid breaking up this expression into two - c => DashRGBColor[j] = new Color((byte) c, DashRGBColor[j].G, DashRGBColor[j].B) - )), - (DashGItem = new TextMenuExt.IntSlider( - "AVALI_SKIN_GREEN".DialogOrKey(), - 0, 255, DashRGBColor[j].G - ).Change( - c => DashRGBColor[j] = new Color(DashRGBColor[j].R, (byte) c, DashRGBColor[j].B) - )), - (DashBItem = new TextMenuExt.IntSlider( - "AVALI_SKIN_BLUE".DialogOrKey(), - 0, 255, DashRGBColor[j].B - ).Change( - c => DashRGBColor[j] = new Color(DashRGBColor[j].R, DashRGBColor[j].G, (byte) c) - )), - (DashColorItem = new TextMenuExt.EnumSlider( - "AVALI_SKIN_COLOR".DialogOrKey(), - DashPreset[j] - ).Change(c => DashPreset[j] = c)), - } - ); - - RGBItems.Add(DashRItem); - RGBItems.Add(DashGItem); - RGBItems.Add(DashBItem); - PresetItems.Add(DashColorItem); - } - - DashColorItems.AddRange(RGBItems); - DashColorItems.AddRange(PresetItems); - - menu.Add(ColorSubmenuItem); + public Void BodyColorSubmenu { get; set; } + private TextMenuExt.OptionSubMenu BodyColorSubmenuItem; + public void CreateBodyColorSubmenuEntry(TextMenu menu, bool inGame) { + RGBBodyColorItems.Clear(); + PresetBodyColorItems.Clear(); BodyColorSubmenuItem = new TextMenuExt.OptionSubMenu( "AVALI_SKIN_BODY".DialogOrKey() ); + TextMenuExt.IntSlider RItem, GItem, BItem; + TextMenu.Option ColorItem; BodyColorSubmenuItem.Add( "AVALI_SKIN_LIGHTBODY".DialogOrKey(), new List { - (DashRItem = new TextMenuExt.IntSlider( + (RItem = new TextMenuExt.IntSlider( "AVALI_SKIN_RED".DialogOrKey(), 0, 255, LightBodyRGBColor.R ).Change( c => LightBodyRGBColor = new Color((byte) c, LightBodyRGBColor.G, LightBodyRGBColor.B) )), - (DashGItem = new TextMenuExt.IntSlider( + (GItem = new TextMenuExt.IntSlider( "AVALI_SKIN_GREEN".DialogOrKey(), 0, 255, LightBodyRGBColor.G ).Change( c => LightBodyRGBColor = new Color(LightBodyRGBColor.R, (byte) c, LightBodyRGBColor.B) )), - (DashBItem = new TextMenuExt.IntSlider( + (BItem = new TextMenuExt.IntSlider( "AVALI_SKIN_BLUE".DialogOrKey(), 0, 255, LightBodyRGBColor.B ).Change( c => LightBodyRGBColor = new Color(LightBodyRGBColor.R, LightBodyRGBColor.G, (byte) c) )), - (DashColorItem = new TextMenuExt.EnumSlider( + (ColorItem = new TextMenuExt.EnumSlider( "AVALI_SKIN_COLOR".DialogOrKey(), LightBodyPreset ).Change(c => LightBodyPreset = c)), } ); - RGBItems.Add(DashRItem); - RGBItems.Add(DashGItem); - RGBItems.Add(DashBItem); - PresetItems.Add(DashColorItem); + RGBBodyColorItems.Add(RItem); + RGBBodyColorItems.Add(GItem); + RGBBodyColorItems.Add(BItem); + PresetBodyColorItems.Add(ColorItem); BodyColorSubmenuItem.Add( "AVALI_SKIN_DARKBODY".DialogOrKey(), new List { - (DashRItem = new TextMenuExt.IntSlider( + (RItem = new TextMenuExt.IntSlider( "AVALI_SKIN_RED".DialogOrKey(), 0, 255, DarkBodyRGBColor.R ).Change( c => DarkBodyRGBColor = new Color((byte) c, DarkBodyRGBColor.G, DarkBodyRGBColor.B) )), - (DashGItem = new TextMenuExt.IntSlider( + (GItem = new TextMenuExt.IntSlider( "AVALI_SKIN_GREEN".DialogOrKey(), 0, 255, DarkBodyRGBColor.G ).Change( c => DarkBodyRGBColor = new Color(DarkBodyRGBColor.R, (byte) c, DarkBodyRGBColor.B) )), - (DashBItem = new TextMenuExt.IntSlider( + (BItem = new TextMenuExt.IntSlider( "AVALI_SKIN_BLUE".DialogOrKey(), 0, 255, DarkBodyRGBColor.B ).Change( c => DarkBodyRGBColor = new Color(DarkBodyRGBColor.R, DarkBodyRGBColor.G, (byte) c) )), - (DashColorItem = new TextMenuExt.EnumSlider( + (ColorItem = new TextMenuExt.EnumSlider( "AVALI_SKIN_COLOR".DialogOrKey(), DarkBodyPreset ).Change(c => DarkBodyPreset = c)), } ); - RGBItems.Add(DashRItem); - RGBItems.Add(DashGItem); - RGBItems.Add(DashBItem); - PresetItems.Add(DashColorItem); + RGBBodyColorItems.Add(RItem); + RGBBodyColorItems.Add(GItem); + RGBBodyColorItems.Add(BItem); + PresetBodyColorItems.Add(ColorItem); menu.Add(BodyColorSubmenuItem); } @@ -326,12 +377,15 @@ namespace Celeste.Mod.AvaliSkin { [SettingIgnore] public ColorChoice DarkBodyPreset { get; set; } = ColorChoice.GreyDark; - // Stores submenu items that are enabled/disabled when colormode is RGB - private List RGBItems = new List(); - // Stores submenu items that are enabled/disabled when colormode is preset - private List> PresetItems = new List>(); - // Stores submenu items that are hidden when colormode is external - private List DashColorItems = new List(); + // Stores submenu dash items that are enabled/disabled when dashcolormode is RGB + private List RGBDashColorItems = new List(); + // Stores submenu dash items that are enabled/disabled when dashcolormode is preset + private List> PresetDashColorItems = new List>(); + + // Stores submenu body items that are enabled/disabled when bodycolormode is RGB + private List RGBBodyColorItems = new List(); + // Stores submenu body items that are enabled/disabled when bodycolormode is preset + private List> PresetBodyColorItems = new List>(); diff --git a/SourceCode/CelesteNetAvaliComponent.cs b/SourceCode/CelesteNetAvaliComponent.cs index 70f868b..9d93f31 100644 --- a/SourceCode/CelesteNetAvaliComponent.cs +++ b/SourceCode/CelesteNetAvaliComponent.cs @@ -5,8 +5,7 @@ using Celeste.Mod.CelesteNet.Client; using Celeste.Mod.CelesteNet.Client.Entities; using Celeste.Mod.CelesteNet.DataTypes; -using ColorChoice = Celeste.Mod.AvaliSkin.AvaliSkinSettings.ColorChoice; -using ColorMode = Celeste.Mod.AvaliSkin.AvaliSkinSettings.ColorMode; +using DashColorMode = Celeste.Mod.AvaliSkin.AvaliSkinSettings.DashColorMode; using SendReceive = Celeste.Mod.AvaliSkin.AvaliSkinSettings.SendReceive; @@ -65,7 +64,7 @@ namespace Celeste.Mod.AvaliSkin { protected override void Read(CelesteNetBinaryReader reader) { Config = new AvaliConfig { Enabled = reader.ReadBoolean(), - ColorMode = ColorMode.ExternalDash, + DashColorMode = DashColorMode.ExternalDash, LightBody = reader.ReadColorNoA(), DarkBody = reader.ReadColorNoA(), }; diff --git a/SourceCode/Data.cs b/SourceCode/Data.cs index d886331..cfcb053 100644 --- a/SourceCode/Data.cs +++ b/SourceCode/Data.cs @@ -7,7 +7,7 @@ using Celeste.Mod.CelesteNet.Client.Entities; using Celeste.Mod.CelesteNet.DataTypes; using ColorChoice = Celeste.Mod.AvaliSkin.AvaliSkinSettings.ColorChoice; -using ColorMode = Celeste.Mod.AvaliSkin.AvaliSkinSettings.ColorMode; +using DashColorMode = Celeste.Mod.AvaliSkin.AvaliSkinSettings.DashColorMode; using SendReceive = Celeste.Mod.AvaliSkin.AvaliSkinSettings.SendReceive; @@ -16,7 +16,7 @@ namespace Celeste.Mod.AvaliSkin { private static AvaliSkinSettings Settings => AvaliSkinModule.Settings; public bool Enabled; - public ColorMode ColorMode; + public DashColorMode DashColorMode; public List DashColors = new List(); public Color LightBody; public Color DarkBody; @@ -41,8 +41,8 @@ namespace Celeste.Mod.AvaliSkin { // before calling this public Color GetColor(Player player) { int dashes = player.Dashes; - switch (this.ColorMode) { - case ColorMode.ExternalDash: + switch (this.DashColorMode) { + case DashColorMode.ExternalDash: // Infrequently, it's possible for the player to momentarily have no hair. if (player.Hair != null && player.Sprite.HairCount > 0) { return player.Hair.GetHairColor(0); @@ -54,7 +54,7 @@ namespace Celeste.Mod.AvaliSkin { return this.DashColors[Math.Min(dashes, this.DashColors.Count - 1)]; } - case ColorMode.ManualRGB: default: + case DashColorMode.ManualRGB: default: return this.DashColors[Math.Min(dashes, this.DashColors.Count - 1)]; } }