PKHeX/PKHeX.Drawing.PokeSprite/Util/StatusColor.cs
Kurt 35bf97eaf1 Add status indication & switcher popup
Shows on all tabs to make it clear.
Obviously, status condition is only saved in formats that save status condition in their slot's resting format. Gen3 box mons won't store Burn, etc.
2024-04-17 00:35:42 -05:00

61 lines
2.2 KiB
C#

using System.Drawing;
using PKHeX.Core;
namespace PKHeX.Drawing.PokeSprite;
/// <summary>
/// Utility class for getting the color of a <see cref="StatusCondition"/>.
/// </summary>
public static class StatusColor
{
public static Color Sleep => Color.FromArgb(200, 200, 200);
public static Color Freeze => Color.FromArgb(0, 255, 255);
public static Color Paralysis => Color.FromArgb(255, 255, 0);
public static Color Burn => Color.FromArgb(255, 0, 0);
public static Color Poison => Color.FromArgb(128, 0, 255);
public static Color PoisonBad => Color.FromArgb(200, 0, 255);
public static Color None => Color.FromArgb(255, 255, 255, 255); // Transparent
/// <summary>
/// Gets the color of a <see cref="StatusCondition"/>.
/// </summary>
/// <param name="value">Status to get the color of.</param>
/// <returns>Color of the status.</returns>
public static Color GetStatusColor(int value) => ((StatusCondition)value).GetStatusColor();
/// <inheritdoc cref="GetStatusColor(int)"/>
public static Color GetStatusColor(this StatusType value) => value switch
{
StatusType.None => None,
StatusType.Sleep => Sleep,
StatusType.Freeze => Freeze,
StatusType.Paralysis => Paralysis,
StatusType.Burn => Burn,
StatusType.Poison => Poison,
_ => None,
};
/// <inheritdoc cref="GetStatusColor(int)"/>
public static Color GetStatusColor(this PKM pk) => ((StatusCondition)pk.Status_Condition).GetStatusColor();
/// <inheritdoc cref="GetStatusColor(int)"/>
public static Color GetStatusColor(this StatusCondition value)
{
if (value == StatusCondition.None)
return None;
if (value < StatusCondition.Poison)
return Sleep;
if (value.HasFlag(StatusCondition.Poison))
return Poison;
if (value.HasFlag(StatusCondition.Freeze))
return Freeze;
if (value.HasFlag(StatusCondition.Paralysis))
return Paralysis;
if (value.HasFlag(StatusCondition.Burn))
return Burn;
if (value.HasFlag(StatusCondition.PoisonBad))
return PoisonBad;
return default;
}
}