pest control plugin: cleanup & lombokize
This commit is contained in:
@@ -27,6 +27,7 @@ package net.runelite.client.plugins.pestcontrol;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import static net.runelite.client.plugins.pestcontrol.Portal.BLUE;
|
import static net.runelite.client.plugins.pestcontrol.Portal.BLUE;
|
||||||
import static net.runelite.client.plugins.pestcontrol.Portal.PURPLE;
|
import static net.runelite.client.plugins.pestcontrol.Portal.PURPLE;
|
||||||
@@ -34,39 +35,42 @@ import static net.runelite.client.plugins.pestcontrol.Portal.RED;
|
|||||||
import static net.runelite.client.plugins.pestcontrol.Portal.YELLOW;
|
import static net.runelite.client.plugins.pestcontrol.Portal.YELLOW;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class Game
|
class Game
|
||||||
{
|
{
|
||||||
// Game starts with all possible rotations
|
// Game starts with all possible rotations
|
||||||
private Rotation[] possibleRotations = Rotation.values();
|
private Rotation[] possibleRotations = Rotation.values();
|
||||||
// Number of shields dropped
|
// Number of shields dropped
|
||||||
private int shieldsDropped;
|
private int shieldsDropped;
|
||||||
|
|
||||||
|
@Getter
|
||||||
private final PortalContext purple = new PortalContext(PURPLE);
|
private final PortalContext purple = new PortalContext(PURPLE);
|
||||||
|
@Getter
|
||||||
private final PortalContext blue = new PortalContext(BLUE);
|
private final PortalContext blue = new PortalContext(BLUE);
|
||||||
|
@Getter
|
||||||
private final PortalContext yellow = new PortalContext(YELLOW);
|
private final PortalContext yellow = new PortalContext(YELLOW);
|
||||||
|
@Getter
|
||||||
private final PortalContext red = new PortalContext(RED);
|
private final PortalContext red = new PortalContext(RED);
|
||||||
|
|
||||||
public void fall(String color)
|
void fall(String color)
|
||||||
{
|
{
|
||||||
if (color.equalsIgnoreCase("purple"))
|
switch (color.toLowerCase())
|
||||||
{
|
{
|
||||||
fall(purple);
|
case "purple":
|
||||||
}
|
fall(purple);
|
||||||
else if (color.equalsIgnoreCase("red"))
|
break;
|
||||||
{
|
case "red":
|
||||||
fall(red);
|
fall(red);
|
||||||
}
|
break;
|
||||||
else if (color.equalsIgnoreCase("yellow"))
|
case "yellow":
|
||||||
{
|
fall(yellow);
|
||||||
fall(yellow);
|
break;
|
||||||
}
|
case "blue":
|
||||||
else if (color.equalsIgnoreCase("blue"))
|
fall(blue);
|
||||||
{
|
break;
|
||||||
fall(blue);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fall(PortalContext portal)
|
private void fall(PortalContext portal)
|
||||||
{
|
{
|
||||||
if (!portal.isShielded())
|
if (!portal.isShielded())
|
||||||
{
|
{
|
||||||
@@ -75,7 +79,7 @@ public class Game
|
|||||||
|
|
||||||
log.debug("Shield dropped for {}", portal.getPortal());
|
log.debug("Shield dropped for {}", portal.getPortal());
|
||||||
|
|
||||||
portal.setIsShielded(false);
|
portal.setShielded(false);
|
||||||
int shieldDrop = shieldsDropped++;
|
int shieldDrop = shieldsDropped++;
|
||||||
|
|
||||||
// Remove impossible rotations
|
// Remove impossible rotations
|
||||||
@@ -92,19 +96,19 @@ public class Game
|
|||||||
possibleRotations = rotations.toArray(new Rotation[rotations.size()]);
|
possibleRotations = rotations.toArray(new Rotation[rotations.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void die(PortalContext portal)
|
void die(PortalContext portal)
|
||||||
{
|
{
|
||||||
if (portal.isIsDead())
|
if (portal.isDead())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
log.debug("Portal {} died", portal.getPortal());
|
log.debug("Portal {} died", portal.getPortal());
|
||||||
|
|
||||||
portal.setIsDead(true);
|
portal.setDead(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Collection<Portal> getNextPortals()
|
Collection<Portal> getNextPortals()
|
||||||
{
|
{
|
||||||
List<Portal> portals = new ArrayList<>();
|
List<Portal> portals = new ArrayList<>();
|
||||||
|
|
||||||
@@ -120,24 +124,4 @@ public class Game
|
|||||||
|
|
||||||
return portals;
|
return portals;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PortalContext getPurple()
|
|
||||||
{
|
|
||||||
return purple;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PortalContext getBlue()
|
|
||||||
{
|
|
||||||
return blue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PortalContext getYellow()
|
|
||||||
{
|
|
||||||
return yellow;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PortalContext getRed()
|
|
||||||
{
|
|
||||||
return red;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,21 +109,11 @@ public class PestControlOverlay extends Overlay
|
|||||||
PortalContext yellow = game.getYellow();
|
PortalContext yellow = game.getYellow();
|
||||||
PortalContext red = game.getRed();
|
PortalContext red = game.getRed();
|
||||||
|
|
||||||
Widget purpleShield = client.getWidget(PURPLE.getShield());
|
|
||||||
Widget blueShield = client.getWidget(BLUE.getShield());
|
|
||||||
Widget yellowShield = client.getWidget(YELLOW.getShield());
|
|
||||||
Widget redShield = client.getWidget(RED.getShield());
|
|
||||||
|
|
||||||
Widget purpleHealth = client.getWidget(PURPLE.getHitpoints());
|
Widget purpleHealth = client.getWidget(PURPLE.getHitpoints());
|
||||||
Widget blueHealth = client.getWidget(BLUE.getHitpoints());
|
Widget blueHealth = client.getWidget(BLUE.getHitpoints());
|
||||||
Widget yellowHealth = client.getWidget(YELLOW.getHitpoints());
|
Widget yellowHealth = client.getWidget(YELLOW.getHitpoints());
|
||||||
Widget redHealth = client.getWidget(RED.getHitpoints());
|
Widget redHealth = client.getWidget(RED.getHitpoints());
|
||||||
|
|
||||||
assert purpleShield != null;
|
|
||||||
assert blueShield != null;
|
|
||||||
assert yellowShield != null;
|
|
||||||
assert redShield != null;
|
|
||||||
|
|
||||||
// Check for dead portals
|
// Check for dead portals
|
||||||
if (isZero(purpleHealth))
|
if (isZero(purpleHealth))
|
||||||
{
|
{
|
||||||
@@ -227,7 +217,7 @@ public class PestControlOverlay extends Overlay
|
|||||||
|
|
||||||
private void renderAttack(Graphics2D graphics, PortalContext portal)
|
private void renderAttack(Graphics2D graphics, PortalContext portal)
|
||||||
{
|
{
|
||||||
if (portal.isShielded() || portal.isIsDead())
|
if (portal.isShielded() || portal.isDead())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,8 +30,7 @@ import java.util.regex.Pattern;
|
|||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import net.runelite.api.ChatMessageType;
|
import net.runelite.api.ChatMessageType;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.GameState;
|
import net.runelite.api.events.ChatMessage;
|
||||||
import net.runelite.api.events.SetMessage;
|
|
||||||
import net.runelite.client.plugins.Plugin;
|
import net.runelite.client.plugins.Plugin;
|
||||||
import net.runelite.client.plugins.PluginDescriptor;
|
import net.runelite.client.plugins.PluginDescriptor;
|
||||||
import net.runelite.client.ui.overlay.OverlayManager;
|
import net.runelite.client.ui.overlay.OverlayManager;
|
||||||
@@ -43,6 +42,8 @@ import net.runelite.client.ui.overlay.OverlayManager;
|
|||||||
)
|
)
|
||||||
public class PestControlPlugin extends Plugin
|
public class PestControlPlugin extends Plugin
|
||||||
{
|
{
|
||||||
|
private final Pattern SHIELD_DROP = Pattern.compile("The ([a-z]+), [^ ]+ portal shield has dropped!", Pattern.CASE_INSENSITIVE);
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private OverlayManager overlayManager;
|
private OverlayManager overlayManager;
|
||||||
|
|
||||||
@@ -52,8 +53,6 @@ public class PestControlPlugin extends Plugin
|
|||||||
@Inject
|
@Inject
|
||||||
private PestControlOverlay overlay;
|
private PestControlOverlay overlay;
|
||||||
|
|
||||||
private Pattern pattern = Pattern.compile("The ([a-z]+), [^ ]+ portal shield has dropped!", Pattern.CASE_INSENSITIVE);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void startUp() throws Exception
|
protected void startUp() throws Exception
|
||||||
{
|
{
|
||||||
@@ -66,18 +65,12 @@ public class PestControlPlugin extends Plugin
|
|||||||
overlayManager.remove(overlay);
|
overlayManager.remove(overlay);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
private void onSetMessage(SetMessage setMessage)
|
public void onChatMessage(ChatMessage chatMessage)
|
||||||
{
|
{
|
||||||
if (client.getGameState() != GameState.LOADING && client.getGameState() != GameState.LOGGED_IN)
|
if (overlay.getGame() != null && chatMessage.getType() == ChatMessageType.SERVER)
|
||||||
{
|
{
|
||||||
return;
|
Matcher matcher = SHIELD_DROP.matcher(chatMessage.getMessage());
|
||||||
}
|
|
||||||
|
|
||||||
if (overlay.getGame() != null && setMessage.getType() == ChatMessageType.SERVER)
|
|
||||||
{
|
|
||||||
Matcher matcher = pattern.matcher(setMessage.getValue());
|
|
||||||
if (matcher.lookingAt())
|
if (matcher.lookingAt())
|
||||||
{
|
{
|
||||||
overlay.getGame().fall(matcher.group(1));
|
overlay.getGame().fall(matcher.group(1));
|
||||||
|
|||||||
@@ -23,9 +23,15 @@
|
|||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.pestcontrol;
|
package net.runelite.client.plugins.pestcontrol;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.ToString;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
|
|
||||||
public enum Portal
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
@ToString
|
||||||
|
enum Portal
|
||||||
{
|
{
|
||||||
PURPLE(WidgetInfo.PEST_CONTROL_PURPLE_SHIELD, WidgetInfo.PEST_CONTROL_PURPLE_HEALTH, WidgetInfo.PEST_CONTROL_PURPLE_ICON),
|
PURPLE(WidgetInfo.PEST_CONTROL_PURPLE_SHIELD, WidgetInfo.PEST_CONTROL_PURPLE_HEALTH, WidgetInfo.PEST_CONTROL_PURPLE_ICON),
|
||||||
BLUE(WidgetInfo.PEST_CONTROL_BLUE_SHIELD, WidgetInfo.PEST_CONTROL_BLUE_HEALTH, WidgetInfo.PEST_CONTROL_BLUE_ICON),
|
BLUE(WidgetInfo.PEST_CONTROL_BLUE_SHIELD, WidgetInfo.PEST_CONTROL_BLUE_HEALTH, WidgetInfo.PEST_CONTROL_BLUE_ICON),
|
||||||
@@ -35,32 +41,4 @@ public enum Portal
|
|||||||
private final WidgetInfo shield;
|
private final WidgetInfo shield;
|
||||||
private final WidgetInfo hitpoints;
|
private final WidgetInfo hitpoints;
|
||||||
private final WidgetInfo icon;
|
private final WidgetInfo icon;
|
||||||
|
|
||||||
private Portal(WidgetInfo shield, WidgetInfo hitpoints, WidgetInfo icon)
|
|
||||||
{
|
|
||||||
this.shield = shield;
|
|
||||||
this.hitpoints = hitpoints;
|
|
||||||
this.icon = icon;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString()
|
|
||||||
{
|
|
||||||
return "Portal(" + name() + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
public WidgetInfo getShield()
|
|
||||||
{
|
|
||||||
return shield;
|
|
||||||
}
|
|
||||||
|
|
||||||
public WidgetInfo getHitpoints()
|
|
||||||
{
|
|
||||||
return hitpoints;
|
|
||||||
}
|
|
||||||
|
|
||||||
public WidgetInfo getIcon()
|
|
||||||
{
|
|
||||||
return icon;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,39 +24,16 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.pestcontrol;
|
package net.runelite.client.plugins.pestcontrol;
|
||||||
|
|
||||||
public class PortalContext
|
import lombok.Getter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
class PortalContext
|
||||||
{
|
{
|
||||||
private final Portal portal;
|
private final Portal portal;
|
||||||
private boolean isShielded = true;
|
private boolean isShielded = true;
|
||||||
private boolean isDead;
|
private boolean isDead;
|
||||||
|
|
||||||
public PortalContext(Portal portal)
|
|
||||||
{
|
|
||||||
this.portal = portal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Portal getPortal()
|
|
||||||
{
|
|
||||||
return portal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isShielded()
|
|
||||||
{
|
|
||||||
return isShielded;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIsShielded(boolean isShielded)
|
|
||||||
{
|
|
||||||
this.isShielded = isShielded;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isIsDead()
|
|
||||||
{
|
|
||||||
return isDead;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIsDead(boolean isDead)
|
|
||||||
{
|
|
||||||
this.isDead = isDead;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import static net.runelite.client.plugins.pestcontrol.Portal.PURPLE;
|
|||||||
import static net.runelite.client.plugins.pestcontrol.Portal.RED;
|
import static net.runelite.client.plugins.pestcontrol.Portal.RED;
|
||||||
import static net.runelite.client.plugins.pestcontrol.Portal.YELLOW;
|
import static net.runelite.client.plugins.pestcontrol.Portal.YELLOW;
|
||||||
|
|
||||||
public enum Rotation
|
enum Rotation
|
||||||
{
|
{
|
||||||
PBYR(PURPLE, BLUE, YELLOW, RED),
|
PBYR(PURPLE, BLUE, YELLOW, RED),
|
||||||
PYBR(PURPLE, YELLOW, BLUE, RED),
|
PYBR(PURPLE, YELLOW, BLUE, RED),
|
||||||
@@ -40,7 +40,7 @@ public enum Rotation
|
|||||||
|
|
||||||
private final Portal[] portals;
|
private final Portal[] portals;
|
||||||
|
|
||||||
private Rotation(Portal first, Portal second, Portal third, Portal fourth)
|
Rotation(Portal first, Portal second, Portal third, Portal fourth)
|
||||||
{
|
{
|
||||||
portals = new Portal[]
|
portals = new Portal[]
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user