def init_emulator_and_game(self): """Initializes emulator and game objects.""" if not self.emulator_name: self.setup_gui_first_time() if self.emulator_type == NoxPlayer.__name__: self.emulator = NoxPlayer(self.emulator_name) if self.emulator.get_version( ) and self.emulator.get_version() < LooseVersion('7.0.0.0'): menu = self.menuBar.addMenu("Emulator") action = menu.addAction( f"Make {self.emulator.name} restartable") action.triggered.connect(self.emulator.set_config_for_bot) if self.emulator_type == BlueStacks.__name__: self.emulator = BlueStacks(self.emulator_name) if not self.emulator.restartable: self.restart_game_button.setEnabled(False) self.restart_game_button.setText( f"{self.restart_game_button.text()}\n" "[Unavailable (check logs)]") self.restart_game_button = None self.game = Game(self.emulator) self.manager = SyncManager() self.manager.start() self.game._modes = self.manager.dict() if self.game_app_rect: self.game._game_app_ui.button_rect = Rect(*self.game_app_rect)
def screen_click_event(self, event): """Click event on screen image.""" if not self.ready_to_press: return x, y = event.pos().x(), event.pos().y() emulator_rect = Rect(0, 0, self.emulator.width, self.emulator.height) game_app_rect = Rect(x / self.screen_image.widget.size().width(), y / self.screen_image.widget.size().height(), x / self.screen_image.widget.size().width(), y / self.screen_image.widget.size().height()) game_app_global_rect = game_app_rect.to_global(emulator_rect) self.game_app_rect = Rect( game_app_global_rect[0] / self.emulator.width, game_app_global_rect[1] / self.emulator.height, game_app_global_rect[2] / self.emulator.width, game_app_global_rect[3] / self.emulator.height) game_app_ui = UIElement(name="TEMP_GAME_APP") game_app_ui.button_rect = self.game_app_rect self.emulator.click_button(game_app_ui)
def screen_click_event(self, event): """Click event on screen image.""" if not self.emulator.initialized: return x, y = self.translate_coordinate_from_label_to_screen( x=event.pos().x(), y=event.pos().y()) if x and y: click_rect = Rect(x / self.scaled_width, y / self.scaled_height, x / self.scaled_width, y / self.scaled_height) self.click_ui.button_rect = click_rect logger.debug( f"Sending clicking event by coordinates {(x, y)}; rect: {click_rect.value}" ) self.emulator.click_button(self.click_ui)
from lib.game.ui.general import UIElement, Rect, load_ui_image DISCONNECT_FROM_SERVER = UIElement(name='DISCONNECT_FROM_SERVER') DISCONNECT_FROM_SERVER.description = "Disconnect from the server when you got disconnect notification in Coop mission." DISCONNECT_FROM_SERVER.text_rect = Rect(0.3793571510266431, 0.4644641263244128, 0.6171311477566274, 0.5282693078368615) DISCONNECT_FROM_SERVER.button_rect = Rect(0.47656035723701395, 0.7143677539148369, 0.5214233754879544, 0.7728558369679147) DISCONNECT_FROM_SERVER.text = "Disconnected from the server." DISCONNECT_FROM_SERVER.text_threshold = 175 DISCONNECT_NEW_OPPONENT = UIElement(name='DISCONNECT_NEW_OPPONENT') DISCONNECT_NEW_OPPONENT.description = "Find new opponent button when you got disconnect notification in starting Coop mission." DISCONNECT_NEW_OPPONENT.text_rect = Rect(0.5080926069935638, 0.6931522496630876, 0.6657387808373844, 0.7484886654841999) DISCONNECT_NEW_OPPONENT.button_rect = Rect(0.5080926069935638, 0.6931522496630876, 0.6657387808373844, 0.7484886654841999) DISCONNECT_NEW_OPPONENT.text = "Find new opponent" DISCONNECT_NEW_OPPONENT.text_threshold = 150 KICKED_FROM_THE_SYSTEM = UIElement(name='KICKED_FROM_THE_SYSTEM') KICKED_FROM_THE_SYSTEM.description = "Notification when you're kicked from the system." KICKED_FROM_THE_SYSTEM.text_rect = Rect(0.3359375, 0.4425925925925926, 0.6614583333333334, 0.5138888888888888) KICKED_FROM_THE_SYSTEM.button_rect = Rect(0.4739583333333333,
from lib.game.ui.general import UIElement, Rect, load_ui_image ENERGY_COST = UIElement(name='ENERGY_COST') ENERGY_COST.description = "Energy cost of staging the mission." ENERGY_COST.text_rect = Rect(0.9138564920273349, 0.9109311740890689, 0.9396355353075171, 0.951417004048583) ENERGY_COST.text_threshold = 145 ENERGY_COST.available_characters = "-0123456789" BOOST_COST = UIElement(name='BOOST_COST') BOOST_COST.description = "Boost cost of staging the mission." BOOST_COST.text_rect = Rect(0.783876993166287, 0.8704453441295547, 0.8086560364464692, 0.9101311740890689) BOOST_COST.text_threshold = 225 BOOST_COST.available_characters = "0123456789-" START_BUTTON = UIElement(name='START_BUTTON') START_BUTTON.description = "The mission start button." START_BUTTON.text_rect = Rect(0.8339690693028394, 0.8991369253779693, 0.9304245585423615, 0.9602835576607327) START_BUTTON.button_rect = Rect(0.8339690693028394, 0.8991369253779693, 0.9304245585423615, 0.9602835576607327) START_BUTTON.text = "START" START_BUTTON.text_threshold = 150 REPEAT_BUTTON = UIElement(name='REPEAT_BUTTON') REPEAT_BUTTON.description = "The mission repeat button." REPEAT_BUTTON.button_rect = Rect(0.8942708333333333, 0.8944444444444445, 0.9354166666666667, 0.9601851851851851) HOME_BUTTON = UIElement(name='HOME_BUTTON')
from lib.game.ui.general import UIElement, Rect, load_ui_image STORY_LABEL = UIElement(name='STORY_LABEL') STORY_LABEL.description = "Story label in mission selection." STORY_LABEL.text_rect = Rect(0.05036168385307978, 0.021815679581800397, 0.11466534334609442, 0.07099884033097952) STORY_LABEL.text = "STORY" STORY_LABEL.text_threshold = 150 STORY_MISSION = UIElement(name='STORY_MISSION') STORY_MISSION.description = "Story missions label in mission selection." STORY_MISSION.text_rect = Rect(0.008489533485535331, 0.27969495486128026, 0.0690546081243049, 0.3222317425362461) STORY_MISSION.button_rect = Rect(0.051857117794777766, 0.37141490328542515, 0.20140051196457923, 0.6705016916250284) STORY_MISSION.text = "STORY" STORY_MISSION.text_threshold = 150 STORY_ULTIMATE_START_BUTTON = UIElement(name='STORY_ULTIMATE_START_BUTTON') STORY_ULTIMATE_START_BUTTON.description = "The mission start button." STORY_ULTIMATE_START_BUTTON.text_rect = Rect(0.8339690693028394, 0.8991369253779693, 0.9304245585423615, 0.9602835576607327) STORY_ULTIMATE_START_BUTTON.button_rect = Rect(0.8339690693028394, 0.8991369253779693, 0.9304245585423615, 0.9602835576607327) STORY_ULTIMATE_START_BUTTON.text = "START" STORY_ULTIMATE_START_BUTTON.text_threshold = 100
from lib.game.ui.general import UIElement, Rect, load_ui_image SL_KING_OF_THE_HILL_REWARD = UIElement(name='SL_KING_OF_THE_HILL_REWARD') SL_KING_OF_THE_HILL_REWARD.description = "King of the Hill rewards at the start of new Shadowland season." SL_KING_OF_THE_HILL_REWARD.text_rect = Rect(0.46534460267427896, 0.896478376148284, 0.5333868470215386, 0.9523079099716766) SL_KING_OF_THE_HILL_REWARD.button_rect = Rect(0.46534460267427896, 0.896478376148284, 0.5333868470215386, 0.9523079099716766) SL_KING_OF_THE_HILL_REWARD.text = "CLOSE" SL_KING_OF_THE_HILL_REWARD.text_threshold = 150 SL_KING_OF_THE_HILL_NOTICE = UIElement(name='SL_KING_OF_THE_HILL_NOTICE') SL_KING_OF_THE_HILL_NOTICE.description = "King of the Hill notice after beating 35 floor." SL_KING_OF_THE_HILL_NOTICE.text_rect = Rect(0.46534460267427896, 0.8472952153991049, 0.5348822809632365, 0.9017954746076546) SL_KING_OF_THE_HILL_NOTICE.button_rect = Rect(0.46534460267427896, 0.8472952153991049, 0.5348822809632365, 0.9017954746076546) SL_KING_OF_THE_HILL_NOTICE.text = "CLOSE" SL_KING_OF_THE_HILL_NOTICE.text_threshold = 150 SL_ENTER_SHADOWLAND = UIElement(name='SL_ENTER_SHADOWLAND') SL_ENTER_SHADOWLAND.description = "Enter Shadowland button." SL_ENTER_SHADOWLAND.text_rect = Rect(0.6664804678326618, 0.9124296715263961, 0.8646254651076489, 0.9735763038091595) SL_ENTER_SHADOWLAND.button_rect = Rect(0.6664804678326618, 0.9124296715263961, 0.8646254651076489, 0.9735763038091595) SL_ENTER_SHADOWLAND.text = "ENTER SHADOWLAND" SL_ENTER_SHADOWLAND.text_threshold = 120 SL_LEFT_ROOM_ENTER = UIElement(name='SL_LEFT_ROOM_ENTER') SL_LEFT_ROOM_ENTER.description = "Shadowland Floor: button to enter into left room." SL_LEFT_ROOM_ENTER.text_rect = Rect(0.18644617254759907, 0.6744895154695564, 0.2634610205450469, 0.738294696982005) SL_LEFT_ROOM_ENTER.button_rect = Rect(0.18644617254759907, 0.6744895154695564, 0.2634610205450469, 0.738294696982005) SL_LEFT_ROOM_ENTER.text = "ENTER" SL_LEFT_ROOM_ENTER.text_threshold = 120 SL_MIDDLE_ROOM_ENTER = UIElement(name='SL_MIDDLE_ROOM_ENTER')
from lib.game.ui.general import UIElement, Rect, load_ui_image DISPATCH_MISSION = UIElement(name='DISPATCH_MISSION') DISPATCH_MISSION.description = "Dispatch Mission label in mission selection." DISPATCH_MISSION.text_rect = Rect(0.5161893566920114, 0.26906075794253886, 0.6762007884536989, 0.3288781156104595) DISPATCH_MISSION.button_rect = Rect(0.5460980355259717, 0.36742707944089725, 0.7262978255005824, 0.6837944377734552) DISPATCH_MISSION.text = "DISPATCH MISSION" DISPATCH_MISSION.text_threshold = 150 DISPATCH_MISSION_LABEL = UIElement(name='DISPATCH_MISSION_LABEL') DISPATCH_MISSION_LABEL.description = "Dispatch Mission label inside mission." DISPATCH_MISSION_LABEL.text_rect = Rect(0.04886624991138173, 0.012510757277901676, 0.2141117004690124, 0.07764521340519293) DISPATCH_MISSION_LABEL.text = "DISPATCH MISSION" DISPATCH_MISSION_LABEL.text_threshold = 150 DISPATCH_SECTOR_BUTTON = UIElement(name='DISPATCH_SECTOR_BUTTON') DISPATCH_SECTOR_BUTTON.description = "Dispatch Mission: Dispatch button inside sector menu." DISPATCH_SECTOR_BUTTON.text_rect = Rect(0.8638777481367997, 0.22918251949725849, 0.9506129167552847, 0.2757071310167523) DISPATCH_SECTOR_BUTTON.button_rect = Rect(0.8638777481367997, 0.22918251949725849, 0.9506129167552847, 0.2757071310167523) DISPATCH_SECTOR_BUTTON.text = "DISPATCH" DISPATCH_SECTOR_BUTTON.text_threshold = 150
from lib.game.ui.general import UIElement, Rect, load_ui_image TEAM = UIElement(name='TEAM') TEAM.description = "Team button in main menu. Main identifier that main menu is opened." TEAM.text_rect = Rect(0.006246382572988315, 0.4405371832572446, 0.10943132455015132, 0.521622934762648) TEAM.text = "TEAM" TEAM.text_threshold = 155 STORE = UIElement(name='STORE') STORE.description = "Team button in main menu. Main identifier that main menu is opened." STORE.text_rect = Rect(0.008489533485535331, 0.32356101715108876, 0.11391762637524536, 0.39800039558227884) STORE.text = "STORE" STORE.text_threshold = 155 MAIN_MENU_AD = UIElement(name='MAIN_MENU_AD') MAIN_MENU_AD.description = "The X-button of closing ads in main menu." MAIN_MENU_AD.text_rect = Rect(0.8496583143507973, 0.11133603238866396, 0.8826879271070615, 0.16700404858299595) MAIN_MENU_AD.button_rect = Rect(0.8496583143507973, 0.11133603238866396, 0.8826879271070615, 0.16700404858299595) MAIN_MENU_AD.text = "X" MAIN_MENU_AD.text_threshold = 55 MAIN_MENU_AD.available_characters = "X" MAIN_MENU_AD_2 = UIElement(name='MAIN_MENU_AD_2') MAIN_MENU_AD_2.description = "The X-button of closing ads in main menu." MAIN_MENU_AD_2.text_rect = Rect(0.8484375, 0.11203703703703703, 0.8802083333333334, 0.1685185185185185) MAIN_MENU_AD_2.button_rect = Rect(0.8484375, 0.11203703703703703,
from lib.game.ui.general import UIElement, Rect, load_ui_image HQ_NOTIFICATION_OK = UIElement(name='HQ_NOTIFICATION_OK') HQ_NOTIFICATION_OK.description = "Heroic Quests: notification after completing mission." HQ_NOTIFICATION_OK.text_rect = Rect(0.7927083333333333, 0.7777777777777778, 0.9213541666666667, 0.825925925925926) HQ_NOTIFICATION_OK.button_rect = Rect(0.8276041666666667, 0.8722222222222222, 0.89375, 0.9231481481481482) HQ_NOTIFICATION_OK.text = "HEROIC QUEST" HQ_NOTIFICATION_OK.text_threshold = 150 HQ_NOTIFICATION_OPEN = UIElement(name='HQ_NOTIFICATION_OPEN') HQ_NOTIFICATION_OPEN.description = "Heroic Quests: notification after completing mission." HQ_NOTIFICATION_OPEN.text_rect = Rect(0.7927083333333333, 0.7777777777777778, 0.9213541666666667, 0.825925925925926) HQ_NOTIFICATION_OPEN.button_rect = Rect(0.7927083333333333, 0.7777777777777778, 0.9213541666666667, 0.825925925925926) HQ_NOTIFICATION_OPEN.text = "HEROIC QUEST" HQ_NOTIFICATION_OPEN.text_threshold = 150 HQ_ACQUIRE_REWARD = UIElement(name='HQ_ACQUIRE_REWARD') HQ_ACQUIRE_REWARD.description = "Heroic Quests: acquire reward button." HQ_ACQUIRE_REWARD.text_rect = Rect(0.5604166666666667, 0.8138888888888889, 0.6458333333333334, 0.8759259259259259) HQ_ACQUIRE_REWARD.button_rect = Rect(0.5604166666666667, 0.8138888888888889, 0.6458333333333334, 0.8759259259259259) HQ_ACQUIRE_REWARD.text = "ACQUIRE" HQ_ACQUIRE_REWARD.text_threshold = 175 HQ_CRYSTAL_CHEST_NOTIFICATION_CANCEL = UIElement( name='HQ_CRYSTAL_CHEST_NOTIFICATION_CANCEL')
from lib.game.ui.general import UIElement, Rect, load_ui_image GBR_LABEL = UIElement(name='GBR_LABEL') GBR_LABEL.description = "Giant Boss Raid menu mission label." GBR_LABEL.text_rect = Rect(0.5184325076045584, 0.2757071310167523, 0.6649850338909638, 0.3209024679214034) GBR_LABEL.button_rect = Rect(0.5460980355259717, 0.3660978048260546, 0.7337749952090725, 0.6877822616179832) GBR_LABEL.text = "GIANT BOSS RAID" GBR_LABEL.text_threshold = 120 GBR_MENU_LABEL = UIElement(name='GBR_MENU_LABEL') GBR_MENU_LABEL.description = "Giant Boss Raid mission label." GBR_MENU_LABEL.text_rect = Rect(0.05036168385307978, 0.017827855737272313, 0.20214822893542828, 0.07631593879035016) GBR_MENU_LABEL.text = "GIANT BOSS RAID" GBR_MENU_LABEL.text_threshold = 120 GBR_CREATE_LOBBY = UIElement(name='GBR_CREATE_LOBBY') GBR_CREATE_LOBBY.description = "Giant Boss Raid: Create Lobby button in the mission lobby." GBR_CREATE_LOBBY.text_rect = Rect(0.5879701858935161, 0.9004661999928121, 0.7405044479467137, 0.962942106890418) GBR_CREATE_LOBBY.button_rect = Rect(0.5879701858935161, 0.9004661999928121, 0.7405044479467137, 0.962942106890418) GBR_CREATE_LOBBY.text = "CREATE LOBBY" GBR_CREATE_LOBBY.text_threshold = 120 GBR_QUICK_START = UIElement(name='GBR_QUICK_START') GBR_QUICK_START.description = "Giant Boss Raid: Quick Start button in the mission lobby." GBR_QUICK_START.text_rect = Rect(0.8033126734980303, 0.9004661999928121, 0.9438834640176436, 0.966929930734946) GBR_QUICK_START.button_rect = Rect(0.8033126734980303, 0.9004661999928121, 0.9438834640176436, 0.966929930734946) GBR_QUICK_START.text = "QUICK START" GBR_QUICK_START.text_threshold = 175 GBR_NOT_ENOUGH_ENERGY = UIElement(name='GBR_NOT_ENOUGH_ENERGY') GBR_NOT_ENOUGH_ENERGY.description = "Giant Boss Raid: not enough energy notification. Leads to CANCEL button."
from lib.game.ui.general import UIElement, Rect, load_ui_image DANGER_ROOM_LABEL = UIElement(name='DANGER_ROOM_LABEL') DANGER_ROOM_LABEL.description = "Danger Room label in mission selection." DANGER_ROOM_LABEL.text_rect = Rect(0.052083333333333336, 0.012962962962962963, 0.19427083333333334, 0.0824074074074074) DANGER_ROOM_LABEL.text = "DANGER ROOM" DANGER_ROOM_LABEL.text_threshold = 150 DANGER_ROOM_ENTER = UIElement(name='DANGER_ROOM_ENTER') DANGER_ROOM_ENTER.description = "Danger Room: Enter button." DANGER_ROOM_ENTER.text_rect = Rect(0.6821825242204912, 0.9004661999928121, 0.8885524081748171, 0.966929930734946) DANGER_ROOM_ENTER.button_rect = Rect(0.6821825242204912, 0.9004661999928121, 0.8885524081748171, 0.966929930734946) DANGER_ROOM_ENTER.text = "Enter Danger Room" DANGER_ROOM_ENTER.text_threshold = 150 DANGER_ROOM_NO_ENERGY = UIElement(name='DANGER_ROOM_NO_ENERGY') DANGER_ROOM_NO_ENERGY.description = "Danger Room: not enough energy notification. Leads to CANCEL button." DANGER_ROOM_NO_ENERGY.text_rect = Rect(0.377114000114096, 0.7117092046851515, 0.46534460267427896, 0.7755143861976) DANGER_ROOM_NO_ENERGY.button_rect = Rect(0.377114000114096, 0.7117092046851515, 0.46534460267427896, 0.7755143861976) DANGER_ROOM_NO_ENERGY.text = "CANCEL" DANGER_ROOM_NO_ENERGY.text_threshold = 150 DANGER_ROOM_NORMAL_MODE = UIElement(name='DANGER_ROOM_NORMAL_MODE') DANGER_ROOM_NORMAL_MODE.description = "Danger Room: Normal mode." DANGER_ROOM_NORMAL_MODE.button_rect = Rect(0.8077989753231243, 0.23715816718631455, 0.9513606337261337, 0.5256107586071762) DANGER_ROOM_EXTREME_MODE = UIElement(name='DANGER_ROOM_EXTREME_MODE') DANGER_ROOM_EXTREME_MODE.description = "Danger Room: Extreme mode." DANGER_ROOM_EXTREME_MODE.button_rect = Rect(0.6111494119898353, 0.22652397026757307, 0.7599450891887879, 0.5242814839923334) DANGER_ROOM_NORMAL_MODE_LOBBY = UIElement(name='DANGER_ROOM_NORMAL_MODE_LOBBY')
from lib.game.ui.general import UIElement, Rect, load_ui_image WB_LABEL = UIElement(name='WB_LABEL') WB_LABEL.description = "World Boss label in lobby." WB_LABEL.text_rect = Rect(0.0515625, 0.01574074074074074, 0.18333333333333332, 0.07962962962962963) WB_LABEL.text = "WORLD BOSS" WB_LABEL.text_threshold = 150 WB_MISSION_BUTTON = UIElement(name='WB_MISSION_BUTTON') WB_MISSION_BUTTON.description = "World Boss MISSION button in lobby." WB_MISSION_BUTTON.text_rect = Rect(0.7958333333333333, 0.8925925925925926, 0.9390625, 0.9675925925925926) WB_MISSION_BUTTON.button_rect = Rect(0.7958333333333333, 0.8925925925925926, 0.9390625, 0.9675925925925926) WB_MISSION_BUTTON.text = "MISSION" WB_MISSION_BUTTON.text_threshold = 150 WB_READY_BUTTON = UIElement(name='WB_READY_BUTTON') WB_READY_BUTTON.description = "World Boss READY button in Boss team set up." WB_READY_BUTTON.text_rect = Rect(0.6828125, 0.8657407407407407, 0.7635416666666667, 0.9314814814814815) WB_READY_BUTTON.button_rect = Rect(0.6828125, 0.8657407407407407, 0.7635416666666667, 0.9314814814814815) WB_READY_BUTTON.text = "READY" WB_READY_BUTTON.text_threshold = 175 WB_START_BUTTON = UIElement(name='WB_START_BUTTON') WB_START_BUTTON.description = "World Boss START button in Boss allies set up." WB_START_BUTTON.text_rect = Rect(0.7262978255005824, 0.9111003969115535, 0.8077989753231243, 0.9656006561201034)
from lib.game.ui.general import UIElement, Rect, load_ui_image SB_LABEL = UIElement(name='SB_LABEL') SB_LABEL.description = "Squad Battle label in mission selection." SB_LABEL.text_rect = Rect(0.0515625, 0.020370370370370372, 0.20520833333333333, 0.07777777777777778) SB_LABEL.text = "SQUAD BATTLE" SB_LABEL.text_threshold = 150 SB_RANK_CHANGED_1 = UIElement(name='SB_RANK_CHANGED_1') SB_RANK_CHANGED_1.description = "Rank message when your rank is changed (usually after battles during week)." SB_RANK_CHANGED_1.text_rect = Rect(0.40625, 0.5925925925925926, 0.4588541666666667, 0.6370370370370371) SB_RANK_CHANGED_1.button_rect = Rect(0.34375, 0.2777777777777778, 0.7333333333333333, 0.7453703703703703) SB_RANK_CHANGED_1.text = "RANK" SB_RANK_CHANGED_1.text_threshold = 130 SB_RANK_CHANGED_2 = UIElement(name='SB_RANK_CHANGED_2') SB_RANK_CHANGED_2.description = "Rank message when your rank is changed (usually after end of the week during league change)." SB_RANK_CHANGED_2.text_rect = Rect(0.41302083333333334, 0.6101851851851852, 0.4671875, 0.6546296296296297) SB_RANK_CHANGED_2.button_rect = Rect(0.34375, 0.2777777777777778, 0.7333333333333333, 0.7453703703703703) SB_RANK_CHANGED_2.text = "RANK" SB_RANK_CHANGED_2.text_threshold = 170 SB_BATTLE_1 = UIElement(name='SB_BATTLE_1') SB_BATTLE_1.description = "Squad Battle #1." SB_BATTLE_1.button_rect = Rect(0.065625, 0.3101851851851852, 0.2515625, 0.3962962962962963)
from lib.game.ui.general import UIElement, Rect, load_ui_image EQ_LABEL = UIElement(name='EQ_LABEL') EQ_LABEL.description = "Epic Quest mission label." EQ_LABEL.text_rect = Rect(0.0515625, 0.010185185185185186, 0.19947916666666668, 0.08333333333333333) EQ_LABEL.text = "EPIC QUEST" EQ_LABEL.text_threshold = 120 EQ_PAGE_DRAG_FROM = UIElement(name='EQ_PAGE_DRAG_FROM') EQ_PAGE_DRAG_FROM.description = "Page of Epic Quests: drag position (right) to scroll the list." EQ_PAGE_DRAG_FROM.button_rect = Rect(0.8421939559821787, 0.17335298567386584, 0.9655672561722649, 0.83001464540615) EQ_PAGE_DRAG_TO = UIElement(name='EQ_PAGE_DRAG_TO') EQ_PAGE_DRAG_TO.description = "Page of Epic Quests: drag position (left) to scroll the list." EQ_PAGE_DRAG_TO.button_rect = Rect(0.036155061406948616, 0.16936516182933778, 0.14906032400514876, 0.8526123138584755) EQ_FATE_OF_MANKIND = UIElement(name='EQ_FATE_OF_MANKIND') EQ_FATE_OF_MANKIND.description = "Epic Quest: The Fate of Mankind: mission label and selector." EQ_FATE_OF_MANKIND.text_rect = Rect(0.024366459164933994, 0.7807074368928463, 0.19288216647410045, 0.8199210380307054) EQ_FATE_OF_MANKIND.button_rect = Rect(0.07802721177449304, 0.2531094625644267, 0.27168590722438596, 0.7223434016038928) EQ_FATE_OF_MANKIND.text = "THE FATE OF MANKIND" EQ_FATE_OF_MANKIND.text_threshold = 120 EQ_DARK_REIGN = UIElement(name='EQ_DARK_REIGN') EQ_DARK_REIGN.description = "Epic Quest: Dark Reign: mission label and selector." EQ_DARK_REIGN.text_rect = Rect(0.33374641580485354, 0.7808314846569708,
from lib.game.ui.general import UIElement, Rect, load_ui_image LB_LABEL = UIElement(name='LB_LABEL') LB_LABEL.description = "Legendary battle label in mission selection." LB_LABEL.text_rect = Rect(0.0455580865603645, 0.2935222672064777, 0.2164009111617312, 0.3390688259109312) LB_LABEL.text = "LEGENDARY BATTLE" LB_LABEL.text_threshold = 150 LB_MENU_LABEL = UIElement(name='LB_MENU_LABEL') LB_MENU_LABEL.description = "Legendary battle label at the top left corner of LB menu." LB_MENU_LABEL.text_rect = Rect(0.05125284738041, 0.0102429149797571, 0.2562642369020501, 0.0859109311740891) LB_MENU_LABEL.text = "LEGENDARY BATTLE" LB_MENU_LABEL.text_threshold = 120 LB_DIFFICULTY_NORMAL = UIElement(name='LB_DIFFICULTY_NORMAL') LB_DIFFICULTY_NORMAL.description = "Legendary battle normal difficulty button." LB_DIFFICULTY_NORMAL.text_rect = Rect(0.828125, 0.9027777777777778, 0.9364583333333333, 0.9685185185185186) LB_DIFFICULTY_NORMAL.button_rect = Rect(0.828125, 0.9027777777777778, 0.9364583333333333, 0.9685185185185186) LB_DIFFICULTY_NORMAL.text = "NORMAL" LB_DIFFICULTY_NORMAL.text_threshold = 140 LB_DIFFICULTY_EXTREME = UIElement(name='LB_DIFFICULTY_EXTREME') LB_DIFFICULTY_EXTREME.description = "Legendary battle extreme difficulty button." LB_DIFFICULTY_EXTREME.text_rect = Rect(0.8317708333333333, 0.8074074074074075, 0.9244791666666666, 0.862037037037037) LB_DIFFICULTY_EXTREME.button_rect = Rect(0.8317708333333333, 0.8074074074074075,
from lib.game.ui.general import UIElement, Rect, load_ui_image TL_LABEL = UIElement(name='TL_LABEL') TL_LABEL.description = "Timeline label in mission selection." TL_LABEL.text_rect = Rect(0.05259562841530055, 0.29526123936816523, 0.20765027322404372, 0.3402187120291616) TL_LABEL.text = "TIMELINE BATTLE" TL_LABEL.text_threshold = 150 TL_LEAGUE_NOTIFICATION = UIElement(name='TL_LEAGUE_NOTIFICATION') TL_LEAGUE_NOTIFICATION.description = "Timeline league notification if you've been promoted to new league level." TL_LEAGUE_NOTIFICATION.text_rect = Rect(0.4706257982120051, 0.759090909090909, 0.5306513409961686, 0.8022727272727272) TL_LEAGUE_NOTIFICATION.button_rect = Rect(0.438058748403576, 0.7522727272727273, 0.5625798212005109, 0.8090909090909091) TL_LEAGUE_NOTIFICATION.text = "CLOSE" TL_LEAGUE_NOTIFICATION.text_threshold = 160 TL_RESTRICTED_NOTIFICATION = UIElement(name='TL_RESTRICTED_NOTIFICATION') TL_RESTRICTED_NOTIFICATION.description = "Timeline restricted character notification." TL_RESTRICTED_NOTIFICATION.text_rect = Rect(0.46758775358682586, 0.8951491015334412, 0.5378731488466326, 0.9496493607419912) TL_RESTRICTED_NOTIFICATION.button_rect = Rect(0.46758775358682586, 0.8951491015334412, 0.5378731488466326, 0.9496493607419912) TL_RESTRICTED_NOTIFICATION.text = "CLOSE" TL_RESTRICTED_NOTIFICATION.text_threshold = 160 TL_GET_READY_BUTTON = UIElement(name='TL_GET_READY_BUTTON') TL_GET_READY_BUTTON.description = "Timeline get ready button (before fight)." TL_GET_READY_BUTTON.text_rect = Rect(0.7517202025094488, 0.9124296715263961, 0.8586437293408568, 0.9709177545794739) TL_GET_READY_BUTTON.button_rect = Rect(0.7517202025094488, 0.9124296715263961, 0.8586437293408568, 0.9709177545794739) TL_GET_READY_BUTTON.text = "GET READY" TL_GET_READY_BUTTON.text_threshold = 160 TL_SEARCH_BUTTON = UIElement(name='TL_SEARCH_BUTTON') TL_SEARCH_BUTTON.description = "Timeline search opponent button."
from lib.game.ui.general import UIElement, Rect, load_ui_image COOP_PLAY_LABEL = UIElement(name='COOP_PLAY_LABEL') COOP_PLAY_LABEL.description = "CO-OP label in mission selection." COOP_PLAY_LABEL.text_rect = Rect(0.07857142857142857, 0.29733163913595934, 0.18428571428571427, 0.3392630241423126) COOP_PLAY_LABEL.text = "CO-OP PLAY" COOP_PLAY_LABEL.text_threshold = 150 COOP_PLAY_MENU_LABEL = UIElement(name='COOP_PLAY_MENU_LABEL') COOP_PLAY_MENU_LABEL.description = "CO-OP LOBBY label at the top left corner of CO-OP menu." COOP_PLAY_MENU_LABEL.text_rect = Rect(0.05142857142857143, 0.021601016518424398, 0.125, 0.07115628970775095) COOP_PLAY_MENU_LABEL.text = "LOBBY" COOP_PLAY_MENU_LABEL.text_threshold = 150 COOP_STAGE_PERCENTAGE = UIElement(name='COOP_STAGE_PERCENTAGE') COOP_STAGE_PERCENTAGE.description = "CO-OP stage percentage." COOP_STAGE_PERCENTAGE.text_rect = Rect(0.702614427911823, 0.7783171556004411, 0.7342956657932411, 0.8003159445711723) COOP_STAGE_PERCENTAGE.text_threshold = 160 COOP_STAGE_PERCENTAGE.available_characters = "0123456789%" COOP_DEPLOY_CHARACTER = UIElement(name='COOP_DEPLOY_CHARACTER') COOP_DEPLOY_CHARACTER.description = "Deploy character message that shown if you haven't deployed a character." COOP_DEPLOY_CHARACTER.text_rect = Rect(0.3942857142857143, 0.3875476493011436, 0.6078571428571429, 0.4485387547649301) COOP_DEPLOY_CHARACTER.text = "Deploy a Character." COOP_DEPLOY_CHARACTER.text_threshold = 120
from lib.game.ui.general import UIElement, Rect, load_ui_image AB_LABEL = UIElement(name='AB_LABEL') AB_LABEL.description = "Alliance Battle label in lobby." AB_LABEL.text_rect = Rect(0.051041666666666666, 0.020370370370370372, 0.22447916666666667, 0.075) AB_LABEL.text = "ALLIANCE BATTLE" AB_LABEL.text_threshold = 150 AB_NORMAL_READY_BUTTON = UIElement(name='AB_NORMAL_READY_BUTTON') AB_NORMAL_READY_BUTTON.description = "Normal mode READY button." AB_NORMAL_READY_BUTTON.text_rect = Rect(0.7186932401749452, 0.9185624501710611, 0.9092434742845036, 0.9764076534582031) AB_NORMAL_READY_BUTTON.button_rect = Rect(0.7186932401749452, 0.9185624501710611, 0.9092434742845036, 0.9764076534582031) AB_NORMAL_READY_BUTTON.text = "NORMAL MODE READY" AB_NORMAL_READY_BUTTON.text_threshold = 150 AB_NORMAL_START_BUTTON = UIElement(name='AB_NORMAL_START_BUTTON') AB_NORMAL_START_BUTTON.description = "Normal mode START button." AB_NORMAL_START_BUTTON.text_rect = Rect(0.6698572541526252, 0.9091805866890886, 0.8723287589000652, 0.9657819573856157) AB_NORMAL_START_BUTTON.button_rect = Rect(0.6698572541526252, 0.9091805866890886, 0.8723287589000652, 0.9657819573856157) AB_NORMAL_START_BUTTON.text = "NORMAL MODE START" AB_NORMAL_START_BUTTON.text_threshold = 150
from lib.game.ui.general import UIElement, Rect, load_ui_image EVENT_LIST_DRAG_FROM = UIElement(name='EVENT_LIST_DRAG_FROM') EVENT_LIST_DRAG_FROM.description = "Event: start position of dragging the list." EVENT_LIST_DRAG_FROM.button_rect = Rect(0.7233069576171864, 0.48041542170252505, 0.9760352937641509, 0.5282693078368617) EVENT_LIST_DRAG_TO = UIElement(name='EVENT_LIST_DRAG_TO') EVENT_LIST_DRAG_TO.description = "Event: end position of dragging the list." EVENT_LIST_DRAG_TO.button_rect = Rect(0.7233069576171864, 0.8140633500280379, 0.9737921428516039, 0.8579294123178464) EVENT_BUTTON_1_1 = UIElement(name='EVENT_BUTTON_1_1') EVENT_BUTTON_1_1.description = "Event button on main screen: #1 from bottom to top without scrolling." EVENT_BUTTON_1_1.text_rect = Rect(0.7233663865283669, 0.788477455844055, 0.848876348914871, 0.8571324780041942) EVENT_BUTTON_1_1.button_rect = Rect(0.7233663865283669, 0.788477455844055, 0.848876348914871, 0.8571324780041942) EVENT_BUTTON_1_1.text_threshold = 120 EVENT_BUTTON_1_2 = UIElement(name='EVENT_BUTTON_1_2') EVENT_BUTTON_1_2.description = "Event button on main screen: #2 from bottom to top without scrolling." EVENT_BUTTON_1_2.text_rect = Rect(0.7242440785730276, 0.6987578246120553, 0.8475598108478797, 0.7666326760658291) EVENT_BUTTON_1_2.button_rect = Rect(0.7242440785730276, 0.6987578246120553, 0.8475598108478797, 0.7666326760658291) EVENT_BUTTON_1_2.text_threshold = 120 EVENT_BUTTON_1_3 = UIElement(name='EVENT_BUTTON_1_3') EVENT_BUTTON_1_3.description = "Event button on main screen: #3 from bottom to top without scrolling." EVENT_BUTTON_1_3.text_rect = Rect(0.7238052325506973, 0.6090381933800554, 0.8449267347138971, 0.6769130448338292) EVENT_BUTTON_1_3.button_rect = Rect(0.7238052325506973, 0.6090381933800554, 0.8449267347138971, 0.6769130448338292) EVENT_BUTTON_1_3.text_threshold = 120 EVENT_BUTTON_1_4 = UIElement(name='EVENT_BUTTON_1_4') EVENT_BUTTON_1_4.description = "Event button on main screen: #4 from bottom to top without scrolling." EVENT_BUTTON_1_4.text_rect = Rect(0.7233663865283668, 0.5200987328544207, 0.8453655807362276, 0.5856330721890989)
from lib.game.ui.general import UIElement, Rect, load_ui_image INVASION_LABEL = UIElement(name='INVASION_LABEL') INVASION_LABEL.description = "World Boss Invasion label in mission selection." INVASION_LABEL.text_rect = Rect(0.2642087375158959, 0.27304858178706687, 0.45487656508239277, 0.3248902917659314) INVASION_LABEL.button_rect = Rect(0.2873879636122151, 0.3647685302112118, 0.47057862147022195, 0.6811358885437697) INVASION_LABEL.text = "WORLD BOSS INVASION" INVASION_LABEL.text_threshold = 150 INVASION_MENU_LABEL = UIElement(name='INVASION_MENU_LABEL') INVASION_MENU_LABEL.description = "World Boss Invasion label in WBI menu." INVASION_MENU_LABEL.text_rect = Rect(0.05260416666666667, 0.006481481481481481, 0.1875, 0.09074074074074075) INVASION_MENU_LABEL.text = "WORLD BOSS INVASION" INVASION_MENU_LABEL.text_threshold = 165 INVASION_STAGES = UIElement(name='INVASION_STAGES') INVASION_STAGES.description = "World Boss Invasion stages." INVASION_STAGES.text_rect = Rect(0.9447916666666667, 0.7231481481481481, 0.9875, 0.7638888888888888) INVASION_STAGES.text_threshold = 150 INVASION_STAGES.available_characters = "0123456789/" INVASION_MANAGE_CHESTS = UIElement(name='INVASION_MANAGE_CHESTS') INVASION_MANAGE_CHESTS.description = "WBI Manage Supplies button." INVASION_MANAGE_CHESTS.text_rect = Rect(0.7885416666666667, 0.7194444444444444, 0.9307291666666667, 0.7657407407407407) INVASION_MANAGE_CHESTS.button_rect = Rect(0.7885416666666667, 0.7194444444444444,