barrows plugin: add puzzle solver
This commit is contained in:
committed by
Adam
parent
8bf22ef401
commit
c06f8c891e
@@ -129,6 +129,7 @@ public class WidgetID
|
||||
public static final int SKILLS_GROUP_ID = 320;
|
||||
public static final int QUESTTAB_GROUP_ID = 629;
|
||||
public static final int MUSIC_GROUP_ID = 239;
|
||||
public static final int BARROWS_PUZZLE_GROUP_ID = 25;
|
||||
|
||||
static class WorldMap
|
||||
{
|
||||
@@ -577,7 +578,7 @@ public class WidgetID
|
||||
{
|
||||
static final int POINTS_INFOBOX = 6;
|
||||
}
|
||||
|
||||
|
||||
static class ExperienceDrop
|
||||
{
|
||||
static final int DROP_1 = 15;
|
||||
@@ -771,4 +772,26 @@ public class WidgetID
|
||||
static final int CONTAINER = 0;
|
||||
static final int LIST = 3;
|
||||
}
|
||||
|
||||
static class Barrows_Puzzle
|
||||
{
|
||||
static final int PARENT = 0;
|
||||
static final int CONTAINER = 1;
|
||||
static final int TOP_ROW_PUZZLE = 2;
|
||||
static final int SEQUENCE_1 = 3;
|
||||
static final int SEQUENCE_1_TEXT = 4;
|
||||
static final int SEQUENCE_2 = 5;
|
||||
static final int SEQUENCE_2_TEXT = 6;
|
||||
static final int SEQUENCE_3 = 7;
|
||||
static final int SEQUENCE_3_TEXT = 8;
|
||||
static final int SEQUENCE_4 = 9;
|
||||
static final int SEQUENCE_4_TEXT = 10;
|
||||
static final int NEXT_SHAPE_TEXT = 11;
|
||||
static final int ANSWER1_CONTAINER = 12;
|
||||
static final int ANSWER1 = 13;
|
||||
static final int ANSWER2_CONTAINER = 14;
|
||||
static final int ANSWER2 = 15;
|
||||
static final int ANSWER3_CONTAINER = 16;
|
||||
static final int ANSWER3 = 17;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -410,6 +410,14 @@ public enum WidgetInfo
|
||||
BARROWS_BROTHERS(WidgetID.BARROWS_GROUP_ID, WidgetID.Barrows.BARROWS_BROTHERS),
|
||||
BARROWS_POTENTIAL(WidgetID.BARROWS_GROUP_ID, WidgetID.Barrows.BARROWS_POTENTIAL),
|
||||
BARROWS_REWARD_INVENTORY(WidgetID.BARROWS_REWARD_GROUP_ID, WidgetID.Barrows.BARROWS_REWARD_INVENTORY),
|
||||
BARROWS_PUZZLE_PARENT(WidgetID.BARROWS_PUZZLE_GROUP_ID, WidgetID.Barrows_Puzzle.PARENT),
|
||||
BARROWS_PUZZLE_ANSWER1(WidgetID.BARROWS_PUZZLE_GROUP_ID, WidgetID.Barrows_Puzzle.ANSWER1),
|
||||
BARROWS_PUZZLE_ANSWER1_CONTAINER(WidgetID.BARROWS_PUZZLE_GROUP_ID, WidgetID.Barrows_Puzzle.ANSWER1_CONTAINER),
|
||||
BARROWS_PUZZLE_ANSWER2(WidgetID.BARROWS_PUZZLE_GROUP_ID, WidgetID.Barrows_Puzzle.ANSWER2),
|
||||
BARROWS_PUZZLE_ANSWER2_CONTAINER(WidgetID.BARROWS_PUZZLE_GROUP_ID, WidgetID.Barrows_Puzzle.ANSWER2_CONTAINER),
|
||||
BARROWS_PUZZLE_ANSWER3(WidgetID.BARROWS_PUZZLE_GROUP_ID, WidgetID.Barrows_Puzzle.ANSWER3),
|
||||
BARROWS_PUZZLE_ANSWER3_CONTAINER(WidgetID.BARROWS_PUZZLE_GROUP_ID, WidgetID.Barrows_Puzzle.ANSWER3_CONTAINER),
|
||||
BARROWS_FIRST_PUZZLE(WidgetID.BARROWS_PUZZLE_GROUP_ID, WidgetID.Barrows_Puzzle.SEQUENCE_1),
|
||||
|
||||
BLAST_MINE(WidgetID.BLAST_MINE_GROUP_ID, 2),
|
||||
|
||||
|
||||
@@ -86,4 +86,15 @@ public interface BarrowsConfig extends Config
|
||||
{
|
||||
return Color.RED;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "showPuzzleAnswer",
|
||||
name = "Show Puzzle Answer",
|
||||
description = "Configures if the puzzle answer should be shown.",
|
||||
position = 5
|
||||
)
|
||||
default boolean showPuzzleAnswer()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ package net.runelite.client.plugins.barrows;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Rectangle;
|
||||
import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
import net.runelite.api.Client;
|
||||
@@ -38,6 +39,7 @@ import net.runelite.api.Perspective;
|
||||
import net.runelite.api.Player;
|
||||
import net.runelite.api.WallObject;
|
||||
import net.runelite.api.coords.LocalPoint;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.ui.overlay.OverlayLayer;
|
||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||
@@ -66,6 +68,7 @@ class BarrowsOverlay extends Overlay
|
||||
Player local = client.getLocalPlayer();
|
||||
final Color npcColor = getMinimapDotColor(1);
|
||||
final Color playerColor = getMinimapDotColor(2);
|
||||
Widget puzzleAnswer = plugin.getPuzzleAnswer();
|
||||
|
||||
// tunnels are only on z=0
|
||||
if (!plugin.getWalls().isEmpty() && client.getPlane() == 0 && config.showMinimap())
|
||||
@@ -119,6 +122,13 @@ class BarrowsOverlay extends Overlay
|
||||
renderBarrowsBrothers(graphics);
|
||||
}
|
||||
|
||||
if (puzzleAnswer != null && config.showPuzzleAnswer() && !puzzleAnswer.isHidden())
|
||||
{
|
||||
Rectangle answerRect = puzzleAnswer.getBounds();
|
||||
graphics.setColor(Color.GREEN);
|
||||
graphics.draw(answerRect);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.barrows;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.inject.Provides;
|
||||
import java.util.HashSet;
|
||||
@@ -82,6 +83,11 @@ public class BarrowsPlugin extends Plugin
|
||||
);
|
||||
|
||||
private static final Set<Integer> BARROWS_LADDERS = Sets.newHashSet(NullObjectID.NULL_20675, NullObjectID.NULL_20676, NullObjectID.NULL_20677);
|
||||
private static final ImmutableList<WidgetInfo> POSSIBLE_SOLUTIONS = ImmutableList.of(
|
||||
WidgetInfo.BARROWS_PUZZLE_ANSWER1,
|
||||
WidgetInfo.BARROWS_PUZZLE_ANSWER2,
|
||||
WidgetInfo.BARROWS_PUZZLE_ANSWER3
|
||||
);
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private final Set<WallObject> walls = new HashSet<>();
|
||||
@@ -89,6 +95,9 @@ public class BarrowsPlugin extends Plugin
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private final Set<GameObject> ladders = new HashSet<>();
|
||||
|
||||
@Getter
|
||||
private Widget puzzleAnswer;
|
||||
|
||||
@Inject
|
||||
private OverlayManager overlayManager;
|
||||
|
||||
@@ -130,6 +139,7 @@ public class BarrowsPlugin extends Plugin
|
||||
overlayManager.remove(brotherOverlay);
|
||||
walls.clear();
|
||||
ladders.clear();
|
||||
puzzleAnswer = null;
|
||||
|
||||
// Restore widgets
|
||||
final Widget potential = client.getWidget(WidgetInfo.BARROWS_POTENTIAL);
|
||||
@@ -213,6 +223,7 @@ public class BarrowsPlugin extends Plugin
|
||||
// on region changes the tiles get set to null
|
||||
walls.clear();
|
||||
ladders.clear();
|
||||
puzzleAnswer = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -243,5 +254,21 @@ public class BarrowsPlugin extends Plugin
|
||||
.runeLiteFormattedMessage(message.build())
|
||||
.build());
|
||||
}
|
||||
else if (event.getGroupId() == WidgetID.BARROWS_PUZZLE_GROUP_ID)
|
||||
{
|
||||
final int answer = client.getWidget(WidgetInfo.BARROWS_FIRST_PUZZLE).getModelId() - 3;
|
||||
puzzleAnswer = null;
|
||||
|
||||
for (WidgetInfo puzzleNode : POSSIBLE_SOLUTIONS)
|
||||
{
|
||||
final Widget widgetToCheck = client.getWidget(puzzleNode);
|
||||
|
||||
if (widgetToCheck != null && widgetToCheck.getModelId() == answer)
|
||||
{
|
||||
puzzleAnswer = client.getWidget(puzzleNode);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user