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 SKILLS_GROUP_ID = 320;
|
||||||
public static final int QUESTTAB_GROUP_ID = 629;
|
public static final int QUESTTAB_GROUP_ID = 629;
|
||||||
public static final int MUSIC_GROUP_ID = 239;
|
public static final int MUSIC_GROUP_ID = 239;
|
||||||
|
public static final int BARROWS_PUZZLE_GROUP_ID = 25;
|
||||||
|
|
||||||
static class WorldMap
|
static class WorldMap
|
||||||
{
|
{
|
||||||
@@ -577,7 +578,7 @@ public class WidgetID
|
|||||||
{
|
{
|
||||||
static final int POINTS_INFOBOX = 6;
|
static final int POINTS_INFOBOX = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
static class ExperienceDrop
|
static class ExperienceDrop
|
||||||
{
|
{
|
||||||
static final int DROP_1 = 15;
|
static final int DROP_1 = 15;
|
||||||
@@ -771,4 +772,26 @@ public class WidgetID
|
|||||||
static final int CONTAINER = 0;
|
static final int CONTAINER = 0;
|
||||||
static final int LIST = 3;
|
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_BROTHERS(WidgetID.BARROWS_GROUP_ID, WidgetID.Barrows.BARROWS_BROTHERS),
|
||||||
BARROWS_POTENTIAL(WidgetID.BARROWS_GROUP_ID, WidgetID.Barrows.BARROWS_POTENTIAL),
|
BARROWS_POTENTIAL(WidgetID.BARROWS_GROUP_ID, WidgetID.Barrows.BARROWS_POTENTIAL),
|
||||||
BARROWS_REWARD_INVENTORY(WidgetID.BARROWS_REWARD_GROUP_ID, WidgetID.Barrows.BARROWS_REWARD_INVENTORY),
|
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),
|
BLAST_MINE(WidgetID.BLAST_MINE_GROUP_ID, 2),
|
||||||
|
|
||||||
|
|||||||
@@ -86,4 +86,15 @@ public interface BarrowsConfig extends Config
|
|||||||
{
|
{
|
||||||
return Color.RED;
|
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.Color;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
|
import java.awt.Rectangle;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
@@ -38,6 +39,7 @@ import net.runelite.api.Perspective;
|
|||||||
import net.runelite.api.Player;
|
import net.runelite.api.Player;
|
||||||
import net.runelite.api.WallObject;
|
import net.runelite.api.WallObject;
|
||||||
import net.runelite.api.coords.LocalPoint;
|
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.Overlay;
|
||||||
import net.runelite.client.ui.overlay.OverlayLayer;
|
import net.runelite.client.ui.overlay.OverlayLayer;
|
||||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||||
@@ -66,6 +68,7 @@ class BarrowsOverlay extends Overlay
|
|||||||
Player local = client.getLocalPlayer();
|
Player local = client.getLocalPlayer();
|
||||||
final Color npcColor = getMinimapDotColor(1);
|
final Color npcColor = getMinimapDotColor(1);
|
||||||
final Color playerColor = getMinimapDotColor(2);
|
final Color playerColor = getMinimapDotColor(2);
|
||||||
|
Widget puzzleAnswer = plugin.getPuzzleAnswer();
|
||||||
|
|
||||||
// tunnels are only on z=0
|
// tunnels are only on z=0
|
||||||
if (!plugin.getWalls().isEmpty() && client.getPlane() == 0 && config.showMinimap())
|
if (!plugin.getWalls().isEmpty() && client.getPlane() == 0 && config.showMinimap())
|
||||||
@@ -119,6 +122,13 @@ class BarrowsOverlay extends Overlay
|
|||||||
renderBarrowsBrothers(graphics);
|
renderBarrowsBrothers(graphics);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (puzzleAnswer != null && config.showPuzzleAnswer() && !puzzleAnswer.isHidden())
|
||||||
|
{
|
||||||
|
Rectangle answerRect = puzzleAnswer.getBounds();
|
||||||
|
graphics.setColor(Color.GREEN);
|
||||||
|
graphics.draw(answerRect);
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.barrows;
|
package net.runelite.client.plugins.barrows;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
import java.util.HashSet;
|
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 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)
|
@Getter(AccessLevel.PACKAGE)
|
||||||
private final Set<WallObject> walls = new HashSet<>();
|
private final Set<WallObject> walls = new HashSet<>();
|
||||||
@@ -89,6 +95,9 @@ public class BarrowsPlugin extends Plugin
|
|||||||
@Getter(AccessLevel.PACKAGE)
|
@Getter(AccessLevel.PACKAGE)
|
||||||
private final Set<GameObject> ladders = new HashSet<>();
|
private final Set<GameObject> ladders = new HashSet<>();
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private Widget puzzleAnswer;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private OverlayManager overlayManager;
|
private OverlayManager overlayManager;
|
||||||
|
|
||||||
@@ -130,6 +139,7 @@ public class BarrowsPlugin extends Plugin
|
|||||||
overlayManager.remove(brotherOverlay);
|
overlayManager.remove(brotherOverlay);
|
||||||
walls.clear();
|
walls.clear();
|
||||||
ladders.clear();
|
ladders.clear();
|
||||||
|
puzzleAnswer = null;
|
||||||
|
|
||||||
// Restore widgets
|
// Restore widgets
|
||||||
final Widget potential = client.getWidget(WidgetInfo.BARROWS_POTENTIAL);
|
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
|
// on region changes the tiles get set to null
|
||||||
walls.clear();
|
walls.clear();
|
||||||
ladders.clear();
|
ladders.clear();
|
||||||
|
puzzleAnswer = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,5 +254,21 @@ public class BarrowsPlugin extends Plugin
|
|||||||
.runeLiteFormattedMessage(message.build())
|
.runeLiteFormattedMessage(message.build())
|
||||||
.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