diff --git a/pom.xml b/pom.xml
index e73ca6c..dac38e6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
4.0.0
bh.bot
99bot
- 3.5.0
+ 3.5.1
diff --git a/src/main/java/bh/bot/Main.java b/src/main/java/bh/bot/Main.java
index c88878e..db7f1aa 100644
--- a/src/main/java/bh/bot/Main.java
+++ b/src/main/java/bh/bot/Main.java
@@ -14,6 +14,7 @@
import java.util.function.Supplier;
import java.util.stream.Collectors;
+import bh.bot.app.*;
import bh.bot.app.dev.*;
import bh.bot.app.farming.*;
import bh.bot.common.extensions.Rad;
@@ -22,12 +23,6 @@
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.fusesource.jansi.AnsiConsole;
-import bh.bot.app.AbstractApplication;
-import bh.bot.app.AfkApp;
-import bh.bot.app.FishingApp;
-import bh.bot.app.GenMiniClient;
-import bh.bot.app.ReRunApp;
-import bh.bot.app.SettingApp;
import bh.bot.common.Configuration;
import bh.bot.common.OS;
import bh.bot.common.Telegram;
@@ -79,7 +74,8 @@ public static void main(String[] args) {
TrialsApp.class, //
GvgApp.class, //
GauntletApp.class, //
- GenMiniClient.class,
+ GenMiniClient.class, //
+ ChangeCharacterApp.class,
// Dev functions
ExtractMatrixApp.class, //
ImportTpImageApp.class, //
diff --git a/src/main/java/bh/bot/app/ChangeCharacterApp.java b/src/main/java/bh/bot/app/ChangeCharacterApp.java
index 37a3430..06e5fe7 100644
--- a/src/main/java/bh/bot/app/ChangeCharacterApp.java
+++ b/src/main/java/bh/bot/app/ChangeCharacterApp.java
@@ -1,7 +1,6 @@
package bh.bot.app;
-import static bh.bot.common.Log.info;
-import static bh.bot.common.Log.debug;
+import static bh.bot.common.Log.*;
import static bh.bot.common.utils.InteractionUtil.Mouse.moveCursor;
import static bh.bot.common.utils.ThreadUtil.sleep;
@@ -20,10 +19,16 @@
import bh.bot.common.utils.InteractionUtil;
import bh.bot.common.utils.ThreadUtil;
-@AppMeta(code = "character", name = "Change Character", displayOrder = 1, argType = "number", argAsk = "What character slot do you want to pick?", argDefault = "1", argRequired = true)
+@AppMeta(code = "change-character", name = "Change Character", displayOrder = 1, argType = "number", argAsk = "What character slot do you want to pick?", argDefault = "1", argRequired = true)
@RequireSingleInstance
public class ChangeCharacterApp extends AbstractApplication {
+ private static final Offset[] characterSelectionButtonOffsets = new Offset[]{
+ new Offset(250, 200), // # 1
+ new Offset(375, 200), // # 2
+ new Offset(500, 200), // # 3
+ };
+
@Override
protected void internalRun(String[] args) {
int arg;
@@ -35,7 +40,13 @@ protected void internalRun(String[] args) {
}
final int characterSlot = arg;
- info("Character in slot %3d ", characterSlot);
+
+ if (characterSlot < 1 || characterSlot > characterSelectionButtonOffsets.length) {
+ err("Invalid character slot, must be in range 1 to %d", characterSelectionButtonOffsets.length);
+ System.exit(1);
+ }
+
+ info("Character in slot %d", characterSlot);
AtomicBoolean masterSwitch = new AtomicBoolean(false);
ThreadUtil.waitDone(
() -> doLoopClickImage(characterSlot, masterSwitch),
@@ -45,7 +56,6 @@ protected void internalRun(String[] args) {
.builder() //
.clickTalk() //
.clickDisconnect() //
- .reactiveAuto() //
.autoExit() //
.detectChatboxDirectMessage() //
.build() //
@@ -89,15 +99,8 @@ private void doLoopClickImage(int characterSlot, AtomicBoolean masterSwitch) {
}
} else {
debug("Selecting Character in Slot #" + characterSlot);
- if (characterSlot == 1) {
- InteractionUtil.Mouse.mouseMoveAndClickAndHide(new Offset(250, 200).toScreenCoordinate());
- } else if (characterSlot == 2) {
- InteractionUtil.Mouse.mouseMoveAndClickAndHide(new Offset(375, 200).toScreenCoordinate());
- } else if (characterSlot == 3) {
- InteractionUtil.Mouse.mouseMoveAndClickAndHide(new Offset(500, 200).toScreenCoordinate());
- } else {
- throw new NotSupportedException("Cannot select character in this slot.");
- }
+
+ InteractionUtil.Mouse.mouseMoveAndClickAndHide(characterSelectionButtonOffsets[characterSlot-1].toScreenCoordinate());
sleep(mainLoopInterval);
if (clickImage(BwMatrixMeta.Metas.Character.Buttons.confirm)) {
info(ColorizeUtil.formatInfo, "\n\nCharacter Changed to Slot #" + characterSlot);
@@ -139,4 +142,4 @@ protected String getLimitationExplain() {
protected int getDefaultMainLoopInterval() {
return 2_000;
}
-}
\ No newline at end of file
+}