From fbbcff37a0c62716512ea74fbfa776c62795690d Mon Sep 17 00:00:00 2001 From: nEEtdo0d Date: Tue, 29 Dec 2020 01:19:21 -0500 Subject: [PATCH] Add: [EN] Add Reward loop check for page Guild, only Logistics is supported TODO: [CN, TW, JP] Add equivalent argparser updates --- assets/cn/reward/GUILD_RED_DOT.png | Bin 0 -> 6619 bytes config/template.ini | 3 +++ module/config/argparser_en.py | 4 ++++ module/config/config.py | 6 +++++- module/config/dictionary.py | 6 ++++++ module/reward/assets.py | 1 + module/reward/guild.py | 24 ++++++++++++++++++++---- module/reward/reward.py | 4 +++- 8 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 assets/cn/reward/GUILD_RED_DOT.png diff --git a/assets/cn/reward/GUILD_RED_DOT.png b/assets/cn/reward/GUILD_RED_DOT.png new file mode 100644 index 0000000000000000000000000000000000000000..c5b1c67b7117a9f804b96c0e81bbee2b741e2970 GIT binary patch literal 6619 zcmeHLjZ+iX7GDts#i|`&%d=Flwbss)f@K>>h#@|qMf(Acc2EQa<*{iINlK8Igk-7c zvz;llQ>z#ZQTxWn_>ds%K#Y9Ek0)reA$F8tAS8;AD1jsp6GM_sy4%>l;mw=b+1WXF z@7;6Hp5OhQz4x5&c4TF~vhdPZrcbC4t{@Bj{>{z<@zvs6sbie&z@6|8f`9!kgZ2hH0;Jq8Ex1+nG>JHuQ zm|Wrbi+Hnk@;W2#MGxmR)5tYNK<1_e_(uUh)gK8bw-Z@>o zPsn|is7e7rVM<}}&ey6ZFhQz?Rwr3Mn;N-PUC>u$vlb;?jM6?apsv_Qwz0KFO>cL7qO~?rWso^zgwBVTP9mtUZF!p*2 z>X_p6WZ$i&HN*^@JEtXlvq4Ye&ip#vGiuk_WqCGbRWjsuH}K6KV_BNl$2+HjgR6i) zz`Me5b|PFatAWMtMN5mzwSGEhYPQ*8Fa?TY=lhT6YASrHuwgDetgj2S=z?iySy}LS zd-xW@7&U{Xx<+YkE0C3lR${h2|K?G^<}7A12(D<_OhMB2#Qy`zv5sEgDCfP>0=Cv1 zSKSf$-k%_+Iwy83Am_+ruG{u4Y|ZAMtCLK2&d{)a7tQC<4eUz@z4_LWxs7MJ=2L1# zw4Hj!rPvF130srvH9b`#*=Dh|c-{F>IrPLM)YanjM!Y_Km4(%>h&meg+LDwU#6MRR z-V^r{-y23_g=sb1k}dd`tLZU^(jBbA`Wm8Y2yZx%$-#+dO3>MAwmnr;Z(1%sI$X=f zv`N|3*yxMik3%b)?ie0bO9fMs(f#)HabsyQzVuZMO_HG`wZL*~-J^aq9ux|@5f@9V zJsvGL@(hV6%43KL3!ds3mFR$OKt;`ij|j>GB_U~N`V}$>-st8X40x1mZ3^Ifo{1jpxdG2=R}Ss(R6nx_Nvv?6XopJOiHcjh+JIQd!;VVN4fLG}Ep zu+4Au{1Af#G$t9M@;Q3kEip)Ydn2tw#uq}$Dp4%8qOv?6Yu3XvX7n;kBB{&O=nyy+ z4!j5^4U5I1*lNcOzKf|~K@k7`#_Pn?j^Ome%k{BzPhaCkrkI~F_OK~4mYJgNFr@W- zfMDLi9uKbpvRpg}f(TlggES7v1W-JEV^YtU9&JCp0qi?;Yp`7-Od z4+5IV8p1OUH5r0(BIpA)8a5u&&7Jk_hOC#I2xEh#-JUOX!iT?-+ikIaH^MK1jI+;) zFg<^F*%m@KG8DCIKMPsk6k_$wP&EEu4_*l_+~;m-Nxyq>o^W*gM_C#2twl$F2j{c= Ae*gdg literal 0 HcmV?d00001 diff --git a/config/template.ini b/config/template.ini index 03b64d07d..ddc830875 100644 --- a/config/template.ini +++ b/config/template.ini @@ -108,6 +108,8 @@ research_filter_string = buy_meowfficer = 0 enable_data_key_collect = no enable_train_meowfficer = no +enable_guild_logistics = no +enable_guild_operations = no [Emulator] command = emulator @@ -228,6 +230,7 @@ meowfficer = 2020-01-01_00:00:00 dorm_feed = 2020-01-01_00:00:00 dorm_collect = 2020-01-01_00:00:00 data_key = 2020-01-01_00:00:00 +guild = 2020-01-01_00:00:00 [EventABRecord] a1 = 2020-01-01_00:00:00 diff --git a/module/config/argparser_en.py b/module/config/argparser_en.py index 7c1f99f4b..d0e1cd282 100644 --- a/module/config/argparser_en.py +++ b/module/config/argparser_en.py @@ -334,6 +334,10 @@ def main(ini_name=''): reward_data_key = reward_parser.add_argument_group('Data Key', 'If already collected, skip', gooey_options={'label_color': '#931D03'}) reward_data_key.add_argument('--enable_data_key_collect', default=default('--enable_data_key_collect'), help='Enable collection of data key in war archives.', choices=['yes', 'no'], gooey_options={'label_color': '#4B5F83'}) + reward_guild = reward_parser.add_argument_group('Guild', 'Check Guild Logistics and Operations', gooey_options={'label_color': '#931D03'}) + reward_guild.add_argument('--enable_guild_logistics', default=default('--enable_guild_logistics'), help='Enable logistics actions if applicable.', choices=['yes', 'no'], gooey_options={'label_color': '#4B5F83'}) + reward_guild.add_argument('--enable_guild_operations', default=default('--enable_guild_operations'), help='Not supported yet.', choices=['no'], gooey_options={'label_color': '#4B5F83'}) + # ==========emulator========== emulator_parser = subs.add_parser('emulator') emulator = emulator_parser.add_argument_group('Emulator', 'Need to Press start to save your settings, it will check whether the game is started \nIf the game has not started, it will be started', gooey_options={'label_color': '#931D03'}) diff --git a/module/config/config.py b/module/config/config.py index a5ae8ee75..189f864ab 100644 --- a/module/config/config.py +++ b/module/config/config.py @@ -430,6 +430,9 @@ class AzurLaneConfig: ENABLE_DATA_KEY_COLLECT = True + ENABLE_GUILD_LOGISTICS = False + ENABLE_GUILD_OPERATIONS = False + """ module.research """ @@ -620,7 +623,8 @@ class AzurLaneConfig: 'enable_dorm_reward', 'enable_dorm_feed', 'enable_commission_reward', 'enable_tactical_reward', 'enable_daily_reward', 'enable_research_reward', - 'enable_data_key_collect', 'enable_train_meowfficer']: + 'enable_data_key_collect', 'enable_train_meowfficer', + 'enable_guild_logistics', 'enable_guild_operations']: self.__setattr__(attr.upper(), to_bool(option[attr])) if not option['commission_time_limit'].isdigit(): self.COMMISSION_TIME_LIMIT = future_time(option['commission_time_limit']) diff --git a/module/config/dictionary.py b/module/config/dictionary.py index 94294ca94..f6fe5ba37 100644 --- a/module/config/dictionary.py +++ b/module/config/dictionary.py @@ -157,6 +157,8 @@ dic_true_eng_to_eng = { 'buy_meowfficer': 'buy_meowfficer', 'enable_train_meowfficer': 'enable_train_meowfficer', 'enable_data_key_collect': 'enable_data_key_collect', + 'enable_guild_logistics': 'enable_guild_logistics', + 'enable_guild_operations': 'enable_guild_operations', 'serial': 'serial', 'package_name': 'package_name', 'enable_error_log_and_screenshot_save': 'enable_error_log_and_screenshot_save', @@ -421,6 +423,8 @@ dic_chi_to_eng = { '买指挥喵': 'buy_meowfficer', '训练指挥喵': 'enable_train_meowfficer', '启用档案密钥收获': 'enable_data_key_collect', + 'enable_guild_logistics': 'enable_guild_logistics', + 'enable_guild_operations': 'enable_guild_operations', '设备': 'serial', '包名': 'package_name', '出错时保存log和截图': 'enable_error_log_and_screenshot_save', @@ -685,6 +689,8 @@ dic_tchi_to_eng = { '買指揮喵': 'buy_meowfficer', '訓練指揮喵': 'enable_train_meowfficer', '啟用檔案密鑰收穫': 'enable_data_key_collect', + 'enable_guild_logistics': 'enable_guild_logistics', + 'enable_guild_operations': 'enable_guild_operations', '設備': 'serial', '包名': 'package_name', '出錯時保存log和截圖': 'enable_error_log_and_screenshot_save', diff --git a/module/reward/assets.py b/module/reward/assets.py index 866bc4b0f..6ffbc102e 100644 --- a/module/reward/assets.py +++ b/module/reward/assets.py @@ -30,6 +30,7 @@ GUILD_MISSION_ACCEPT_AXIS = Button(area={'cn': (1070, 281, 1222, 318), 'en': (10 GUILD_MISSION_ACCEPT_AZUR = Button(area={'cn': (1070, 281, 1222, 318), 'en': (1070, 281, 1222, 318), 'jp': (1070, 281, 1222, 318), 'tw': (1070, 281, 1222, 318)}, color={'cn': (108, 125, 171), 'en': (108, 125, 171), 'jp': (108, 125, 171), 'tw': (108, 125, 171)}, button={'cn': (1070, 281, 1222, 318), 'en': (1070, 281, 1222, 318), 'jp': (1070, 281, 1222, 318), 'tw': (1070, 281, 1222, 318)}, file={'cn': './assets/cn/reward/GUILD_MISSION_ACCEPT_AZUR.png', 'en': './assets/cn/reward/GUILD_MISSION_ACCEPT_AZUR.png', 'jp': './assets/cn/reward/GUILD_MISSION_ACCEPT_AZUR.png', 'tw': './assets/cn/reward/GUILD_MISSION_ACCEPT_AZUR.png'}) GUILD_MISSION_REWARDS_AXIS = Button(area={'cn': (1071, 282, 1221, 317), 'en': (1071, 282, 1221, 317), 'jp': (1071, 282, 1221, 317), 'tw': (1071, 282, 1221, 317)}, color={'cn': (167, 102, 102), 'en': (167, 102, 102), 'jp': (167, 102, 102), 'tw': (167, 102, 102)}, button={'cn': (1071, 282, 1221, 317), 'en': (1071, 282, 1221, 317), 'jp': (1071, 282, 1221, 317), 'tw': (1071, 282, 1221, 317)}, file={'cn': './assets/cn/reward/GUILD_MISSION_REWARDS_AXIS.png', 'en': './assets/cn/reward/GUILD_MISSION_REWARDS_AXIS.png', 'jp': './assets/cn/reward/GUILD_MISSION_REWARDS_AXIS.png', 'tw': './assets/cn/reward/GUILD_MISSION_REWARDS_AXIS.png'}) GUILD_MISSION_REWARDS_AZUR = Button(area={'cn': (1071, 282, 1221, 317), 'en': (1071, 282, 1221, 317), 'jp': (1071, 282, 1221, 317), 'tw': (1071, 282, 1221, 317)}, color={'cn': (111, 128, 175), 'en': (111, 128, 175), 'jp': (111, 128, 175), 'tw': (111, 128, 175)}, button={'cn': (1071, 282, 1221, 317), 'en': (1071, 282, 1221, 317), 'jp': (1071, 282, 1221, 317), 'tw': (1071, 282, 1221, 317)}, file={'cn': './assets/cn/reward/GUILD_MISSION_REWARDS_AZUR.png', 'en': './assets/cn/reward/GUILD_MISSION_REWARDS_AZUR.png', 'jp': './assets/cn/reward/GUILD_MISSION_REWARDS_AZUR.png', 'tw': './assets/cn/reward/GUILD_MISSION_REWARDS_AZUR.png'}) +GUILD_RED_DOT = Button(area={'cn': (1250, 665, 1273, 688), 'en': (1250, 665, 1273, 688), 'jp': (1250, 665, 1273, 688), 'tw': (1250, 665, 1273, 688)}, color={'cn': (134, 86, 88), 'en': (134, 86, 88), 'jp': (134, 86, 88), 'tw': (134, 86, 88)}, button={'cn': (1250, 665, 1273, 688), 'en': (1250, 665, 1273, 688), 'jp': (1250, 665, 1273, 688), 'tw': (1250, 665, 1273, 688)}, file={'cn': './assets/cn/reward/GUILD_RED_DOT.png', 'en': './assets/cn/reward/GUILD_RED_DOT.png', 'jp': './assets/cn/reward/GUILD_RED_DOT.png', 'tw': './assets/cn/reward/GUILD_RED_DOT.png'}) GUILD_SUPPLY_REWARDS_AXIS = Button(area={'cn': (1079, 619, 1231, 656), 'en': (1079, 619, 1231, 656), 'jp': (1079, 619, 1231, 656), 'tw': (1079, 619, 1231, 656)}, color={'cn': (137, 87, 91), 'en': (137, 87, 91), 'jp': (137, 87, 91), 'tw': (137, 87, 91)}, button={'cn': (1079, 619, 1231, 656), 'en': (1079, 619, 1231, 656), 'jp': (1079, 619, 1231, 656), 'tw': (1079, 619, 1231, 656)}, file={'cn': './assets/cn/reward/GUILD_SUPPLY_REWARDS_AXIS.png', 'en': './assets/cn/reward/GUILD_SUPPLY_REWARDS_AXIS.png', 'jp': './assets/cn/reward/GUILD_SUPPLY_REWARDS_AXIS.png', 'tw': './assets/cn/reward/GUILD_SUPPLY_REWARDS_AXIS.png'}) GUILD_SUPPLY_REWARDS_AZUR = Button(area={'cn': (1079, 619, 1231, 656), 'en': (1079, 619, 1231, 656), 'jp': (1079, 619, 1231, 656), 'tw': (1079, 619, 1231, 656)}, color={'cn': (137, 87, 91), 'en': (137, 87, 91), 'jp': (137, 87, 91), 'tw': (137, 87, 91)}, button={'cn': (1079, 619, 1231, 656), 'en': (1079, 619, 1231, 656), 'jp': (1079, 619, 1231, 656), 'tw': (1079, 619, 1231, 656)}, file={'cn': './assets/cn/reward/GUILD_SUPPLY_REWARDS_AZUR.png', 'en': './assets/cn/reward/GUILD_SUPPLY_REWARDS_AZUR.png', 'jp': './assets/cn/reward/GUILD_SUPPLY_REWARDS_AZUR.png', 'tw': './assets/cn/reward/GUILD_SUPPLY_REWARDS_AZUR.png'}) MEOWFFICER_BUY = Button(area={'cn': (864, 461, 957, 493), 'en': (864, 460, 957, 492), 'jp': (863, 460, 957, 494), 'tw': (864, 461, 957, 493)}, color={'cn': (241, 217, 105), 'en': (231, 207, 105), 'jp': (241, 216, 107), 'tw': (241, 217, 105)}, button={'cn': (864, 461, 957, 493), 'en': (864, 460, 957, 492), 'jp': (863, 460, 957, 494), 'tw': (864, 461, 957, 493)}, file={'cn': './assets/cn/reward/MEOWFFICER_BUY.png', 'en': './assets/en/reward/MEOWFFICER_BUY.png', 'jp': './assets/jp/reward/MEOWFFICER_BUY.png', 'tw': './assets/tw/reward/MEOWFFICER_BUY.png'}) diff --git a/module/reward/guild.py b/module/reward/guild.py index 8b6216b6f..a650cccb4 100644 --- a/module/reward/guild.py +++ b/module/reward/guild.py @@ -310,7 +310,9 @@ class RewardGuild(UI): # Additional wait time needed # as ensure does not wait for # page to load - self.guild_sidebar_ensure(3) + if not self.guild_sidebar_ensure(3): + logger.info('Ensurance has failed, please join a Guild first') + return is_affiliation_azur = self.guild_logistics_ensure() # After ensurance, use boolean returned to determine buttons @@ -341,6 +343,9 @@ class RewardGuild(UI): if limit > 0: self.guild_exchange(limit, btn_guild_logistics_check) + def guild_operations(self): + pass + def guild_run(self, logistics=True, operations=True): """ Execute logistics and operations actions @@ -359,7 +364,7 @@ class RewardGuild(UI): self.guild_logistics() if operations: - pass + self.guild_operations() self.ui_goto_main() return True @@ -369,10 +374,21 @@ class RewardGuild(UI): Returns: bool: If executed """ - if self.config.record_executed_since(option=('RewardRecord', 'guild'), since=(0,)): + if not self.config.ENABLE_GUILD_LOGISTICS and not self.config.ENABLE_GUILD_OPERATIONS: return False - if not self.guild_run(logistics=self.config.ENABLE_GUILD_LOGISTICS, operations=False): + # Print out last date checked + self.config.record_executed_since(option=('RewardRecord', 'guild'), since=(0,)) + + # TODO: Because notification can appear for either logistics or operations, + # currently ignored as operations is not yet supported, guild will be checked + # every reward loop + #self.ui_goto_main() + #if not self.appear(GUILD_RED_DOT, offset=(30, 30)): + # logger.info('Nothing in guild to check for, no notification detected') + # return False + + if not self.guild_run(logistics=self.config.ENABLE_GUILD_LOGISTICS, operations=self.config.ENABLE_GUILD_OPERATIONS): return False self.config.record_save(option=('RewardRecord', 'guild')) diff --git a/module/reward/reward.py b/module/reward/reward.py index 2ffce8c25..c4c349f4e 100644 --- a/module/reward/reward.py +++ b/module/reward/reward.py @@ -13,11 +13,12 @@ from module.reward.dorm import RewardDorm from module.reward.meowfficer import RewardMeowfficer from module.reward.tactical_class import RewardTacticalClass from module.reward.data_key import RewardDataKey +from module.reward.guild import RewardGuild from module.ui.page import * from module.update import Update -class Reward(RewardCommission, RewardTacticalClass, RewardResearch, RewardDorm, RewardMeowfficer, RewardDataKey, LoginHandler, Update): +class Reward(RewardCommission, RewardTacticalClass, RewardResearch, RewardDorm, RewardMeowfficer, RewardDataKey, RewardGuild, LoginHandler, Update): @cached_property def reward_interval(self): """ @@ -71,6 +72,7 @@ class Reward(RewardCommission, RewardTacticalClass, RewardResearch, RewardDorm, self.handle_dorm() self.handle_meowfficer() self.handle_data_key() + self.handle_guild() self._reward_mission() self.config.REWARD_LAST_TIME = datetime.now()