64 lines
1.5 KiB
Java
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;
|
||
|
|
}
|
||
|
|
}
|