barrows plugin: add puzzle solver

This commit is contained in:
SebastiaanVanspauwen
2019-04-19 00:20:09 +02:00
committed by Adam
parent 8bf22ef401
commit c06f8c891e
5 changed files with 80 additions and 1 deletions

View File

@@ -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;
}
}

View File

@@ -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),

View File

@@ -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;
}
}

View File

@@ -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;
}

View File

@@ -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;
}
}
}
}
}