Files
Runelite-EssentialsPlus/src/main/java/com/example/essentialsplus/helpers/CombatStyle.java
T
2026-09-18 17:18:57 +02:00

64 lines
1.5 KiB
Java

package com.example.essentialsplus.helpers;
import java.awt.Color;
import net.runelite.api.gameval.SpriteID;
/** Attack style of an NPC attack, with the protection prayer that blocks it. */
public enum CombatStyle
{
MELEE("Melee", new Color(0xE05050), SpriteID.Prayeron.PROTECT_FROM_MELEE),
RANGED("Range", new Color(0x6BD66B), SpriteID.Prayeron.PROTECT_FROM_MISSILES),
MAGIC("Mage", new Color(0x5AA9FF), SpriteID.Prayeron.PROTECT_FROM_MAGIC);
public final String label;
public final Color color;
public final int prayerSprite;
CombatStyle(String label, Color color, int prayerSprite)
{
this.label = label;
this.color = color;
this.prayerSprite = prayerSprite;
}
/**
* Style from a cache name such as {@code HUNLLEF_ATTACK_RANGED} or {@code ZEBAK_MAGE_PROJANIM_INITIAL};
* null when the name mentions no style or more than one.
*/
static CombatStyle fromName(String name)
{
CombatStyle found = null;
for (String token : name.toUpperCase(java.util.Locale.ROOT).split("_"))
{
CombatStyle s = fromToken(token);
if (s == null)
{
continue;
}
if (found != null && found != s)
{
return null;
}
found = s;
}
return found;
}
private static CombatStyle fromToken(String token)
{
if (token.startsWith("MELEE"))
{
return MELEE;
}
if (token.startsWith("RANGE") || token.startsWith("ARROW") || token.startsWith("DART") || token.startsWith("JAVELIN"))
{
return RANGED;
}
if (token.startsWith("MAGIC") || token.startsWith("MAGE") && !token.startsWith("MAGENTA"))
{
return MAGIC;
}
return null;
}
}