add seperate color mode toggle for body colors

This commit is contained in:
micycle 2023-05-21 02:30:34 -04:00 committed by yosh
parent 8643ea14af
commit ef2dce6872
5 changed files with 195 additions and 135 deletions

View File

@ -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

View File

@ -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);

View File

@ -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<ColorMode>(
"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<DashColorMode>(
"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<DashColorMode, string>(
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<TextMenu.Item> 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<ColorChoice> ColorItem;
int j = i; // C# lambda are wierd: capturing i directly mutates the captured variable
DashColorSubmenuItem.Add(
$"AVALI_SKIN_DASH{i}".DialogOrKey(),
new List<TextMenu.Item> {
(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<ColorChoice>(
"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<ColorMode>(
"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<TextMenu.Item> 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<ColorChoice> 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<TextMenu.Item> {
(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<ColorChoice>(
"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<ColorChoice> ColorItem;
BodyColorSubmenuItem.Add(
"AVALI_SKIN_LIGHTBODY".DialogOrKey(),
new List<TextMenu.Item> {
(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<ColorChoice>(
(ColorItem = new TextMenuExt.EnumSlider<ColorChoice>(
"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<TextMenu.Item> {
(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<ColorChoice>(
(ColorItem = new TextMenuExt.EnumSlider<ColorChoice>(
"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<TextMenuExt.IntSlider> RGBItems = new List<TextMenuExt.IntSlider>();
// Stores submenu items that are enabled/disabled when colormode is preset
private List<TextMenu.Option<ColorChoice>> PresetItems = new List<TextMenu.Option<ColorChoice>>();
// Stores submenu items that are hidden when colormode is external
private List<TextMenu.Item> DashColorItems = new List<TextMenu.Item>();
// Stores submenu dash items that are enabled/disabled when dashcolormode is RGB
private List<TextMenuExt.IntSlider> RGBDashColorItems = new List<TextMenuExt.IntSlider>();
// Stores submenu dash items that are enabled/disabled when dashcolormode is preset
private List<TextMenu.Option<ColorChoice>> PresetDashColorItems = new List<TextMenu.Option<ColorChoice>>();
// Stores submenu body items that are enabled/disabled when bodycolormode is RGB
private List<TextMenuExt.IntSlider> RGBBodyColorItems = new List<TextMenuExt.IntSlider>();
// Stores submenu body items that are enabled/disabled when bodycolormode is preset
private List<TextMenu.Option<ColorChoice>> PresetBodyColorItems = new List<TextMenu.Option<ColorChoice>>();

View File

@ -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(),
};

View File

@ -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<Color> DashColors = new List<Color>();
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)];
}
}