Skip to content

Commit

Permalink
changed code style
Browse files Browse the repository at this point in the history
  • Loading branch information
caleb committed May 9, 2022
1 parent 8129ee0 commit ed2f37c
Show file tree
Hide file tree
Showing 63 changed files with 9,711 additions and 9,960 deletions.
707 changes: 148 additions & 559 deletions .editorconfig

Large diffs are not rendered by default.

30 changes: 15 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,21 @@ Displays an indicator showing how much progress you've made on your current acti
# Changes

- `1.01`
- Respects the user-defined infobox background colour.
- The "Ignore single action" property was mislabeled, it was inverted.
- Respects the user-defined infobox background colour.
- The "Ignore single action" property was mislabeled, it was inverted.
- `1.02`
- Track Tempoross activities (Cooking and filling crates).
- Interrupt action when wearing or removing equipment.
- Track Tempoross activities (Cooking and filling crates).
- Interrupt action when wearing or removing equipment.
- `1.03`
- Rewritten a lot of core components.
- Many actions added.
- Many ingredient checks added, giving more accurate estimations of how many actions can be performed.
- Many customizations added, all actions can be enabled or disabled.
- Option to show skill icons instead of product icons (For example, Herblore icon instead of the potion being made).
- Rewritten a lot of core components.
- Many actions added.
- Many ingredient checks added, giving more accurate estimations of how many actions can be performed.
- Many customizations added, all actions can be enabled or disabled.
- Option to show skill icons instead of product icons (For example, Herblore icon instead of the potion being made).
- `1.03.1`
- Fixed various issues with 1.03.
- IDQuery API moved to testing and replaced with constant ID arrays.
- This API had unforeseen issues due to database classes not existing in release environments.
- Tests have been put in place to ensure that these constants are kept up-to-date.
- Fixed TemporossDetector.
- Fixed ItemClickDetector.
- Fixed various issues with 1.03.
- IDQuery API moved to testing and replaced with constant ID arrays.
- This API had unforeseen issues due to database classes not existing in release environments.
- Tests have been put in place to ensure that these constants are kept up-to-date.
- Fixed TemporossDetector.
- Fixed ItemClickDetector.
37 changes: 19 additions & 18 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,31 +1,32 @@
plugins {
id 'java'
id 'java'
id 'java-test-fixtures'
}

repositories {
mavenLocal()
maven {
url = 'https://repo.runelite.net'
}
mavenCentral()
mavenLocal()
maven {
url = 'https://repo.runelite.net'
}
mavenCentral()
}

def runeLiteVersion = '1.8.18.2'
def runeLiteVersion = '1.8.18.5'

dependencies {
compileOnly 'org.jetbrains:annotations:23.0.0'
testCompileOnly 'org.jetbrains:annotations:23.0.0'
compileOnly 'org.jetbrains:annotations:23.0.0'
testCompileOnly 'org.jetbrains:annotations:23.0.0'

compileOnly 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'
compileOnly 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'

testImplementation 'org.slf4j:slf4j-simple:1.7.36'
testImplementation 'junit:junit:4.12'
testImplementation 'org.slf4j:slf4j-simple:1.7.36'
testImplementation 'junit:junit:4.12'

compileOnly group: 'net.runelite', name: 'client', version: runeLiteVersion
testImplementation group: 'net.runelite', name: 'client', version: runeLiteVersion, {
exclude group: 'ch.qos.logback', module: 'logback-classic'
}
compileOnly group: 'net.runelite', name: 'client', version: runeLiteVersion
testImplementation group: 'net.runelite', name: 'client', version: runeLiteVersion, {
exclude group: 'ch.qos.logback', module: 'logback-classic'
}

}

Expand All @@ -34,5 +35,5 @@ version = '1.04-SNAPSHOT'
sourceCompatibility = '1.8'

tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
options.encoding = 'UTF-8'
}
2 changes: 0 additions & 2 deletions settings.gradle

This file was deleted.

264 changes: 144 additions & 120 deletions src/main/java/com/github/calebwhiting/runelite/api/InterruptManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
import com.google.inject.Singleton;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.*;
import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.MenuAction;
import net.runelite.api.events.*;
import net.runelite.api.widgets.WidgetID;
import net.runelite.client.eventbus.EventBus;
Expand All @@ -17,124 +20,145 @@

@Slf4j
@Singleton
public class InterruptManager {
private static final int[] WIDGET_CLICK_INTERRUPTS = {
/*
* Tab buttons
*/
7602203, 7602204, 7602206, /* settings buttons */
25362433, 25362435, 25362437, 25362439, /* equipment buttons */
38862852, 38862856, 38862860, 38862864, 38862878,/* combat buttons */
/*
* Equipment slots
*/
25362447, 25362448, 25362449, 25362457, 25362450, 25362451, 25362452, 25362453, 25362455, 25362454,
25362456,
/*
* Prayers
*/
35454981, 35454982, 35454983, 35454984, 35454985, 35454986, 35454987, 35454988, 35454989, 35454990,
35454991, 35454992, 35454993, 35454994, 35454995, 35454996, 35454997, 35454998, 35454999, 35455000,
35455001, 35455002, 35455003, 35455004, 35455005, 35455006, 35455007, 35455008
};
private static final int KOUREND_FAVOUR_OVERVIEW_GROUP_ID = 626;
private static final int CHATBOX_MAKE_GROUP_ID = 270;
private static final int SKILL_GUIDE_GROUP_ID = 214;
private static final int COMBAT_ACHIEVEMENTS_GROUP_ID = 717;
private static final int[] WIDGET_GROUPS_INTERRUPT = {
WidgetID.COLLECTION_LOG_ID, WidgetID.LEVEL_UP_GROUP_ID, WidgetID.BANK_GROUP_ID, WidgetID.BANK_PIN_GROUP_ID,
WidgetID.DEPOSIT_BOX_GROUP_ID, WidgetID.ACHIEVEMENT_DIARY_GROUP_ID, WidgetID.ADVENTURE_LOG_ID,
WidgetID.BANK_INVENTORY_GROUP_ID, WidgetID.DIALOG_NPC_GROUP_ID, WidgetID.DIALOG_PLAYER_GROUP_ID,
WidgetID.DIALOG_OPTION_GROUP_ID, WidgetID.DIALOG_SPRITE_GROUP_ID, WidgetID.DESTROY_ITEM_GROUP_ID,
WidgetID.DUEL_INVENTORY_GROUP_ID, WidgetID.DUEL_INVENTORY_OTHER_GROUP_ID,
WidgetID.EXPLORERS_RING_ALCH_GROUP_ID, WidgetID.FAIRY_RING_GROUP_ID,
WidgetID.FISHING_TRAWLER_REWARD_GROUP_ID, WidgetID.BARROWS_REWARD_GROUP_ID,
WidgetID.GRAND_EXCHANGE_GROUP_ID, WidgetID.KILL_LOGS_GROUP_ID, WidgetID.GUIDE_PRICE_GROUP_ID,
WidgetID.KEPT_ON_DEATH_GROUP_ID, WidgetID.RUNE_POUCH_GROUP_ID, WidgetID.SHOP_GROUP_ID,
WidgetID.SEED_VAULT_GROUP_ID, WidgetID.SLAYER_REWARDS_GROUP_ID, WidgetID.SMITHING_GROUP_ID,
WidgetID.DIARY_QUEST_GROUP_ID, KOUREND_FAVOUR_OVERVIEW_GROUP_ID, CHATBOX_MAKE_GROUP_ID,
SKILL_GUIDE_GROUP_ID, COMBAT_ACHIEVEMENTS_GROUP_ID
};
private static final MenuAction[] MENU_ACTIONS_INTERRUPT = {
MenuAction.WALK, MenuAction.ITEM_FIFTH_OPTION, MenuAction.ITEM_SECOND_OPTION,
MenuAction.ITEM_USE_ON_GAME_OBJECT, MenuAction.ITEM_USE_ON_GROUND_ITEM, MenuAction.ITEM_USE_ON_PLAYER,
MenuAction.ITEM_USE_ON_NPC, MenuAction.WIDGET_TARGET_ON_GROUND_ITEM, MenuAction.WIDGET_TARGET_ON_PLAYER,
MenuAction.WIDGET_TARGET_ON_NPC, MenuAction.WIDGET_TARGET_ON_GAME_OBJECT, MenuAction.WIDGET_TARGET_ON_WIDGET
};
@Getter private boolean waiting;
@Inject private Client client;
@Inject private EventBus eventBus;

static {
Arrays.sort(WIDGET_CLICK_INTERRUPTS);
Arrays.sort(WIDGET_GROUPS_INTERRUPT);
Arrays.sort(MENU_ACTIONS_INTERRUPT);
}

public void interrupt(Object source) {
if (this.waiting) {
Interrupt interrupt = new Interrupt(source);
this.eventBus.post(interrupt);
if (!interrupt.isConsumed()) {
this.waiting = false;
log.debug("Interrupted by {}", source);
}
}
}

public void setWaiting(boolean waiting) {
this.waiting = waiting;
}

@Subscribe
public void onDestinationChanged(DestinationChanged evt) {
if (evt.getTo() != null) {
this.interrupt(evt);
}
}

@Subscribe
public void onLocalInteractingChanged(LocalInteractingChanged evt) {
this.interrupt(evt);
}

@Subscribe
public void onGameStateChanged(GameStateChanged evt) {
if (evt.getGameState() == GameState.LOGIN_SCREEN) {
this.interrupt(evt);
}
}

@Subscribe
public void onResizeableChanged(ResizeableChanged evt) {
this.interrupt(evt);
}

@Subscribe
public void onMenuOptionClicked(MenuOptionClicked evt) {
if (Arrays.binarySearch(MENU_ACTIONS_INTERRUPT, evt.getMenuAction()) >= 0) {
this.interrupt(evt);
} else if (evt.getMenuAction() == MenuAction.CC_OP &&
Arrays.binarySearch(WIDGET_CLICK_INTERRUPTS, evt.getParam1()) >= 0) {
this.interrupt(evt);
}
}

@Subscribe
public void onWidgetLoaded(WidgetLoaded evt) {
int groupId = evt.getGroupId();
if (Arrays.binarySearch(WIDGET_GROUPS_INTERRUPT, groupId) >= 0) {
this.interrupt(evt);
}
}

@Subscribe
public void onChatMessage(ChatMessage evt) {
if (evt.getType() == ChatMessageType.GAMEMESSAGE) {
if (evt.getMessage().matches("You need level (\\d*) ([A-Za-z]*) to (.*)$")) {
this.interrupt(evt);
}
}
}
public class InterruptManager
{

private static final int[] WIDGET_CLICK_INTERRUPTS = {
/*
* Tab buttons
*/
7602203, 7602204, 7602206, /* settings buttons */
25362433, 25362435, 25362437, 25362439, /* equipment buttons */
38862852, 38862856, 38862860, 38862864, 38862878,/* combat buttons */
/*
* Equipment slots
*/
25362447, 25362448, 25362449, 25362457, 25362450, 25362451, 25362452, 25362453, 25362455, 25362454,
25362456,
/*
* Prayers
*/
35454981, 35454982, 35454983, 35454984, 35454985, 35454986, 35454987, 35454988, 35454989, 35454990,
35454991, 35454992, 35454993, 35454994, 35454995, 35454996, 35454997, 35454998, 35454999, 35455000,
35455001, 35455002, 35455003, 35455004, 35455005, 35455006, 35455007, 35455008
};

private static final int KOUREND_FAVOUR_OVERVIEW_GROUP_ID = 626;

private static final int CHATBOX_MAKE_GROUP_ID = 270;

private static final int SKILL_GUIDE_GROUP_ID = 214;

private static final int COMBAT_ACHIEVEMENTS_GROUP_ID = 717;

private static final int[] WIDGET_GROUPS_INTERRUPT = {
WidgetID.COLLECTION_LOG_ID, WidgetID.LEVEL_UP_GROUP_ID, WidgetID.BANK_GROUP_ID, WidgetID.BANK_PIN_GROUP_ID,
WidgetID.DEPOSIT_BOX_GROUP_ID, WidgetID.ACHIEVEMENT_DIARY_GROUP_ID, WidgetID.ADVENTURE_LOG_ID,
WidgetID.BANK_INVENTORY_GROUP_ID, WidgetID.DIALOG_NPC_GROUP_ID, WidgetID.DIALOG_PLAYER_GROUP_ID,
WidgetID.DIALOG_OPTION_GROUP_ID, WidgetID.DIALOG_SPRITE_GROUP_ID, WidgetID.DESTROY_ITEM_GROUP_ID,
WidgetID.DUEL_INVENTORY_GROUP_ID, WidgetID.DUEL_INVENTORY_OTHER_GROUP_ID,
WidgetID.EXPLORERS_RING_ALCH_GROUP_ID, WidgetID.FAIRY_RING_GROUP_ID,
WidgetID.FISHING_TRAWLER_REWARD_GROUP_ID, WidgetID.BARROWS_REWARD_GROUP_ID,
WidgetID.GRAND_EXCHANGE_GROUP_ID, WidgetID.KILL_LOGS_GROUP_ID, WidgetID.GUIDE_PRICE_GROUP_ID,
WidgetID.KEPT_ON_DEATH_GROUP_ID, WidgetID.RUNE_POUCH_GROUP_ID, WidgetID.SHOP_GROUP_ID,
WidgetID.SEED_VAULT_GROUP_ID, WidgetID.SLAYER_REWARDS_GROUP_ID, WidgetID.SMITHING_GROUP_ID,
WidgetID.DIARY_QUEST_GROUP_ID, KOUREND_FAVOUR_OVERVIEW_GROUP_ID, CHATBOX_MAKE_GROUP_ID,
SKILL_GUIDE_GROUP_ID, COMBAT_ACHIEVEMENTS_GROUP_ID
};

private static final MenuAction[] MENU_ACTIONS_INTERRUPT = {
MenuAction.WALK, MenuAction.ITEM_FIFTH_OPTION, MenuAction.ITEM_SECOND_OPTION,
MenuAction.ITEM_USE_ON_GAME_OBJECT, MenuAction.ITEM_USE_ON_GROUND_ITEM, MenuAction.ITEM_USE_ON_PLAYER,
MenuAction.ITEM_USE_ON_NPC, MenuAction.WIDGET_TARGET_ON_GROUND_ITEM, MenuAction.WIDGET_TARGET_ON_PLAYER,
MenuAction.WIDGET_TARGET_ON_NPC, MenuAction.WIDGET_TARGET_ON_GAME_OBJECT,
MenuAction.WIDGET_TARGET_ON_WIDGET
};

static {
Arrays.sort(WIDGET_CLICK_INTERRUPTS);
Arrays.sort(WIDGET_GROUPS_INTERRUPT);
Arrays.sort(MENU_ACTIONS_INTERRUPT);
}

@Getter private boolean waiting;

@Inject private Client client;

@Inject private EventBus eventBus;

public void interrupt(Object source)
{
if (this.waiting) {
Interrupt interrupt = new Interrupt(source);
this.eventBus.post(interrupt);
if (!interrupt.isConsumed()) {
this.waiting = false;
log.debug("Interrupted by {}", source);
}
}
}

public void setWaiting(boolean waiting)
{
this.waiting = waiting;
}

@Subscribe
public void onDestinationChanged(DestinationChanged evt)
{
if (evt.getTo() != null) {
this.interrupt(evt);
}
}

@Subscribe
public void onLocalInteractingChanged(LocalInteractingChanged evt)
{
this.interrupt(evt);
}

@Subscribe
public void onGameStateChanged(GameStateChanged evt)
{
if (evt.getGameState() == GameState.LOGIN_SCREEN) {
this.interrupt(evt);
}
}

@Subscribe
public void onResizeableChanged(ResizeableChanged evt)
{
this.interrupt(evt);
}

@Subscribe
public void onMenuOptionClicked(MenuOptionClicked evt)
{
if (Arrays.binarySearch(MENU_ACTIONS_INTERRUPT, evt.getMenuAction()) >= 0) {
this.interrupt(evt);
} else if (evt.getMenuAction() == MenuAction.CC_OP &&
Arrays.binarySearch(WIDGET_CLICK_INTERRUPTS, evt.getParam1()) >= 0) {
this.interrupt(evt);
}
}

@Subscribe
public void onWidgetLoaded(WidgetLoaded evt)
{
int groupId = evt.getGroupId();
if (Arrays.binarySearch(WIDGET_GROUPS_INTERRUPT, groupId) >= 0) {
this.interrupt(evt);
}
}

@Subscribe
public void onChatMessage(ChatMessage evt)
{
if (evt.getType() == ChatMessageType.GAMEMESSAGE) {
if (evt.getMessage().matches("You need level (\\d*) ([A-Za-z]*) to (.*)$")) {
this.interrupt(evt);
}
}
}

}
Loading

0 comments on commit ed2f37c

Please sign in to comment.