RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
PuzzleDisplay.java
1package com.osroyale.content.puzzle;
2
3import com.osroyale.game.world.entity.mob.player.Player;
4import com.osroyale.net.packet.out.SendInterfaceWidget;
5import com.osroyale.util.Utility;
6
43
44public class PuzzleDisplay {
46 private final Player player;
47
49 private PuzzleData puzzle;
50
52 private int[] options;
53
55 private PuzzleType type;
56
58 int successCount;
59
61 public PuzzleDisplay(Player player) {
62 this.player = player;
63 }
64
66 private void randomize() {
67 this.puzzle = PuzzleData.PUZZLES[(int) (Math.random() * PuzzleData.PUZZLES.length)];
68 this.options = Utility.shuffleArray(puzzle.getOptions());
69 }
70
72 public void open(PuzzleType puzzleType) {
73 randomize();
74
75 for (int index = 0; index < 3; index++) {
76 int sequenceModel = puzzle.getSequenceModel(index);
77 int optionModel = options[index];
78 player.send(new SendInterfaceWidget(4545 + index, sequenceModel));
79 player.send(new SendInterfaceWidget(4550 + index, optionModel));
80 }
81
82 type = puzzleType;
83 player.interfaceManager.open(4543);
84 }
85
87 private boolean checkAnswer(int button) {
88 int index = button - 4550;
89 int model = options[index];
90 return model == puzzle.getAnswer();
91 }
92
94 public boolean click(int button) {
95 switch (button) {
96 case 4550:
97 case 4551:
98 case 4552:
99 if (checkAnswer(button)) {
100 successCount++;
101 type.onSuccess(player);
102 return true;
103 }
104 successCount = 0;
105 type.onFailure(player);
106 return true;
107 }
108 return false;
109 }
110}