diff --git a/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java b/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java index 6eb53d388..17006c49d 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java +++ b/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java @@ -22,8 +22,10 @@ import com.github.manolo8.darkbot.core.objects.facades.InventoryProxy; import com.github.manolo8.darkbot.core.objects.facades.LogMediator; import com.github.manolo8.darkbot.core.objects.facades.NpcEventProxy; -import com.github.manolo8.darkbot.core.objects.facades.SeassonPassMediator; import com.github.manolo8.darkbot.core.objects.facades.QuestProxy; +import com.github.manolo8.darkbot.core.objects.facades.ReturneeCalendarProxy; +import com.github.manolo8.darkbot.core.objects.facades.ReturneeLoginProxy; +import com.github.manolo8.darkbot.core.objects.facades.SeassonPassMediator; import com.github.manolo8.darkbot.core.objects.facades.SettingsProxy; import com.github.manolo8.darkbot.core.objects.facades.SlotBarsProxy; import com.github.manolo8.darkbot.core.objects.facades.SpaceMapWindowProxy; @@ -98,6 +100,8 @@ public FacadeManager(PluginAPI pluginApi) { registerProxy("QuestProxy", QuestProxy.class); registerMediator("diminish_quests", DiminishQuestMediator.class); registerMediator("seasonPass", SeassonPassMediator.class); + registerProxy("returnee_login_overview", ReturneeLoginProxy.class); + registerProxy("returnee_login_calendar", ReturneeCalendarProxy.class); npcEvents.put(EventType.GENERIC, this.npcEventProxy = registerProxy("npc_event", NpcEventProxy.class)); npcEvents.put(EventType.AGATUS, registerProxy("agatus_event", NpcEventProxy.class)); diff --git a/src/main/java/com/github/manolo8/darkbot/core/manager/GuiManager.java b/src/main/java/com/github/manolo8/darkbot/core/manager/GuiManager.java index fb9b16808..043fc74ab 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/manager/GuiManager.java +++ b/src/main/java/com/github/manolo8/darkbot/core/manager/GuiManager.java @@ -155,6 +155,7 @@ public GuiManager(Main main, PluginAPI pluginAPI, RepairManager repairManager) { register("popup_generic_icon_ok", DispatchIconOkGui.class); this.assembly = register("assembly"); + register("returnee_login", ReturneeManager.class); register("ggBuilder", GateSpinnerGui.class); register("diminish_quests", DiminishQuestGui.class); register("refinement_count"); diff --git a/src/main/java/com/github/manolo8/darkbot/core/manager/ReturneeManager.java b/src/main/java/com/github/manolo8/darkbot/core/manager/ReturneeManager.java new file mode 100644 index 000000000..e45d9e1d8 --- /dev/null +++ b/src/main/java/com/github/manolo8/darkbot/core/manager/ReturneeManager.java @@ -0,0 +1,79 @@ +package com.github.manolo8.darkbot.core.manager; + +import com.github.manolo8.darkbot.core.objects.Gui; +import com.github.manolo8.darkbot.core.objects.facades.ReturneeCalendarProxy; +import com.github.manolo8.darkbot.core.objects.facades.ReturneeLoginProxy; +import eu.darkbot.api.managers.BotAPI; +import eu.darkbot.api.managers.ReturneeAPI; +import eu.darkbot.util.Timer; +import lombok.RequiredArgsConstructor; + +import java.util.List; + +@RequiredArgsConstructor +public class ReturneeManager extends Gui implements ReturneeAPI { + private final ReturneeLoginProxy returneeLoginProxy; + private final ReturneeCalendarProxy returneeCalendarProxy; + private final BotAPI bot; + + private final Timer guiUsed = Timer.getRandom(19_000, 1000); + + @Override + public void update() { + super.update(); + // Last gui usage >20s ago, close gui + if (bot.isRunning() && guiUsed.isInactive()) { + this.show(false); + } + } + + @Override + public boolean show(boolean value) { + if (value) guiUsed.activate(); + return super.show(value); + } + + public boolean clickOverview() { + if (show(true)) { + this.click(320, 37); + return true; + } + return false; + } + + public boolean clickDailyLogin() { + if (show(true)) { + this.click(420, 37); + return true; + } + return false; + } + + public boolean clickClaim() { + if (show(true)) { + this.click(300, 410); + return true; + } + return false; + } + + @Override + public boolean isLoginClaimable() { + return returneeLoginProxy.isClaimable(); + } + + @Override + public List getLoginRewardList() { + return returneeLoginProxy.getRewardList(); + } + + @Override + public boolean isCalendarClaimable() { + return returneeCalendarProxy.isClaimable(); + } + + @Override + public List getCalendarRewardList() { + return returneeCalendarProxy.getCalendarList(); + } +} diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/ReturneeCalendarProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/ReturneeCalendarProxy.java new file mode 100644 index 000000000..8d5efcfc9 --- /dev/null +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/ReturneeCalendarProxy.java @@ -0,0 +1,42 @@ +package com.github.manolo8.darkbot.core.objects.facades; + +import com.github.manolo8.darkbot.core.itf.Updatable; +import com.github.manolo8.darkbot.core.objects.swf.FlashList; +import eu.darkbot.api.API; +import eu.darkbot.api.managers.ReturneeAPI; +import lombok.Getter; +import lombok.ToString; + +@Getter +public class ReturneeCalendarProxy extends Updatable implements API.Singleton { + private int daysClaimed = -1; + private boolean claimable = false; + private final FlashList calendarRewardList = FlashList.ofVector(CalendarReward::new); + + @Override + public void update() { + this.daysClaimed = readInt(0x30, 0x40); + this.claimable = readBoolean(0x30, 0x50, 0x20); + this.calendarList.update(readAtom(0x30, 0x58)); + } + + @Getter + @ToString + private static class CalendarReward extends Auto implements ReturneeAPI.CalendarReward { + private String lootId; + private int amount; + private boolean claimed; + + @Override + public void update() { + this.amount = readInt(0x20); + this.lootId = readString(0x30); + this.claimed = readBoolean(0x2C); + } + + @Override + public boolean getClaimed() { + return claimed; + } + } +} diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/ReturneeLoginProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/ReturneeLoginProxy.java new file mode 100644 index 000000000..34b384695 --- /dev/null +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/ReturneeLoginProxy.java @@ -0,0 +1,34 @@ +package com.github.manolo8.darkbot.core.objects.facades; + +import com.github.manolo8.darkbot.core.itf.Updatable; +import com.github.manolo8.darkbot.core.objects.swf.FlashList; +import eu.darkbot.api.API; +import eu.darkbot.api.managers.ReturneeAPI; +import lombok.Getter; +import lombok.ToString; + +@Getter +public class ReturneeLoginProxy extends Updatable implements API.Singleton{ + + private boolean claimable = false; + private final FlashList loginRewardList = FlashList.ofVector(LoginReward::new); + + @Override + public void update() { + this.claimable = readBoolean(0x30, 0x40, 0x20); + this.rewardList.update(readAtom(0x30, 0x48)); + } + + @Getter + @ToString + private static class LoginReward extends Auto implements ReturneeAPI.LoginReward { + private String lootId; + private double amount; + + @Override + public void update() { + this.amount = readDouble(0x70); + this.lootId = readString(0x48); + } + } +}