Skip to content

Commit fdb6767

Browse files
committed
feat: add option to show hint to minigame start
1 parent c44054c commit fdb6767

4 files changed

Lines changed: 57 additions & 8 deletions

File tree

src/main/java/io/github/mmagicala/gnomeRestaurant/GnomeRestaurantConfig.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,13 @@ default boolean showWorldMapPoint() {
8686
default boolean useShortestPath() {
8787
return true;
8888
}
89+
90+
@ConfigItem(
91+
keyName = GnomeRestaurantPlugin.SHOW_MINIGAME_START,
92+
name = "Show Start Hint",
93+
description = "Configures whether to also show the path back to Gianne jnr."
94+
)
95+
default boolean showMinigameStart() {
96+
return false;
97+
}
8998
}

src/main/java/io/github/mmagicala/gnomeRestaurant/GnomeRestaurantPlugin.java

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ private void setupRefusedOrderTimer() {
181181
* Returns whether a step has been updated or not
182182
**/
183183
private boolean updateOrderStep() {
184+
if (order == null) {
185+
return true;
186+
}
184187
// Go from the beginning of the recipe to the final item produced
185188

186189
int newStepIdx = 0;
@@ -210,7 +213,16 @@ private int getItemCount(int itemId) {
210213
}
211214

212215
private void setupUI() {
213-
tooltipText = "Deliver " + order.getName() + " to " + customer.getName();
216+
if (order == null) {
217+
if (!config.showMinigameStart()) {
218+
customer = null;
219+
return;
220+
}
221+
tooltipText = "Go back to Gianne for another order";
222+
customer = Customer.GIANNE;
223+
} else {
224+
tooltipText = "Deliver " + order.getName() + " to " + customer.getName();
225+
}
214226

215227
if (config.showOverlay()) {
216228
setupOverlay();
@@ -246,6 +258,9 @@ private void setupOverlay() {
246258
}
247259

248260
private void setupOrderTimer() {
261+
if (order == null) {
262+
return;
263+
}
249264
LOGGER.debug("Setting up order timer");
250265
int numSecondsLeft;
251266

@@ -383,10 +398,6 @@ private void onAluftMinigameStarted(int value) {
383398
}
384399

385400
private void onAluftCustomerChanged(int customerId) {
386-
if (customerId == 0) {
387-
customer = null;
388-
return;
389-
}
390401
customer = Customer.forId(customerId);
391402
LOGGER.debug("Customer is now {}", customer);
392403
queueUpdateOrder();
@@ -431,13 +442,21 @@ public void onItemContainerChanged(ItemContainerChanged event) {
431442
}
432443

433444
private void updateOverlayHeader() {
434-
var instruction = order.getSteps().get(stepIdx).getInstruction().getOverlayDirections();
435-
overlayHeader = new OverlayHeader(instruction, stepIdx + 1, order.getSteps().size(), customer, order);
445+
if (order == null) {
446+
overlayHeader = new OverlayHeader(null, 0, 0, customer, order);
447+
} else {
448+
var instruction = order.getSteps().get(stepIdx).getInstruction().getOverlayDirections();
449+
overlayHeader = new OverlayHeader(instruction, stepIdx + 1, order.getSteps().size(), customer, order);
450+
}
436451
}
437452

438453
private void rebuildOverlayTables() {
439454
clearOverlayTables();
440455

456+
if (order == null) {
457+
return;
458+
}
459+
441460
List<Ingredient> stepIngredients = order.getSteps().get(stepIdx).getIngredients();
442461
rebuildOverlayTable(stepIngredients, stepIngredientsOverlayTable);
443462

@@ -485,6 +504,7 @@ GnomeRestaurantConfig provideConfig(ConfigManager configManager) {
485504
public static final String SHOW_HINT_ARROW = "showHintArrow";
486505
public static final String SHOW_WORLD_MAP_POINT = "showWorldMapPoint";
487506
public static final String USE_SHORTEST_PATH = "useShortestPath";
507+
public static final String SHOW_MINIGAME_START = "showMinigameStart";
488508

489509
/**
490510
* Monitor changes to plugin config and update the plugin accordingly
@@ -532,6 +552,15 @@ public void onConfigChanged(ConfigChanged event) {
532552
if (event.getNewValue().equals("false")) {
533553
removeTimer();
534554
}
555+
} else if (event.getKey().equals(SHOW_MINIGAME_START)) {
556+
if (event.getNewValue().equals("false")) {
557+
removeOverlay();
558+
removeWorldMapPoint();
559+
client.clearHintArrow();
560+
removeShortestPath();
561+
} else {
562+
queueUpdateOrder();
563+
}
535564
}
536565
}
537566
}

src/main/java/io/github/mmagicala/gnomeRestaurant/order/Customer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.List;
1010

1111
public enum Customer {
12+
GIANNE(0, "Gianne jnr.", CustomerLocation.fixed(NpcID.ALUFT_GNOME_DELIVERY_CONTROLLER, 2439, 3501, 1)),
1213

1314
TRAINER_NACKLEPEN(1, "Trainer Nacklepen", CustomerLocation.fixed(NpcID.GNOME_TORTOISE_TRAINER, 2421, 3525)),
1415
HIS_ROYAL_HIGHNESS_KING_NARNODE(2, "King Narnode Shareen", CustomerLocation.fixed(NpcID.GRANDTREE_NARNODE, 2466, 3497)),

src/main/java/io/github/mmagicala/gnomeRestaurant/overlay/GnomeRestaurantOverlay.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,20 @@ public GnomeRestaurantOverlay(
7070
@Override
7171
public Dimension render(Graphics2D graphics) {
7272
var header = plugin.overlayHeader();
73-
renderOrderOverlay(header);
73+
if (header.order != null) {
74+
renderOrderOverlay(header);
75+
} else {
76+
renderStartOverlay(header);
77+
}
7478
return super.render(graphics);
7579
}
7680

81+
private void renderStartOverlay(OverlayHeader header) {
82+
String headerText = "Go back to Gianne for another order";
83+
LineComponent headerComponent = LineComponent.builder().left(headerText).build();
84+
panelComponent.getChildren().add(headerComponent);
85+
}
86+
7787
private void renderOrderOverlay(OverlayHeader header) {
7888
String headerCustomerText = header.order.getName() + " to " + header.customer.getName();
7989
LineComponent headerCustomerComponent = LineComponent.builder().left(headerCustomerText).build();

0 commit comments

Comments
 (0)