mirror of
https://github.com/TheFunny/ArisuAutoSweeper
synced 2026-06-10 02:34:51 +00:00
Upload code
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
import traceback
|
||||
|
||||
from tasks.base.assets.assets_base_page import *
|
||||
|
||||
|
||||
class Page:
|
||||
# Key: str, page name like "page_main"
|
||||
# Value: Page, page instance
|
||||
all_pages = {}
|
||||
|
||||
@classmethod
|
||||
def clear_connection(cls):
|
||||
for page in cls.all_pages.values():
|
||||
page.parent = None
|
||||
|
||||
@classmethod
|
||||
def init_connection(cls, destination):
|
||||
"""
|
||||
Initialize an A* path finding among pages.
|
||||
|
||||
Args:
|
||||
destination (Page):
|
||||
"""
|
||||
cls.clear_connection()
|
||||
|
||||
visited = [destination]
|
||||
visited = set(visited)
|
||||
while 1:
|
||||
new = visited.copy()
|
||||
for page in visited:
|
||||
for link in cls.iter_pages():
|
||||
if link in visited:
|
||||
continue
|
||||
if page in link.links:
|
||||
link.parent = page
|
||||
new.add(link)
|
||||
if len(new) == len(visited):
|
||||
break
|
||||
visited = new
|
||||
|
||||
@classmethod
|
||||
def iter_pages(cls):
|
||||
return cls.all_pages.values()
|
||||
|
||||
@classmethod
|
||||
def iter_check_buttons(cls):
|
||||
for page in cls.all_pages.values():
|
||||
yield page.check_button
|
||||
|
||||
def __init__(self, check_button):
|
||||
self.check_button = check_button
|
||||
self.links = {}
|
||||
(filename, line_number, function_name, text) = traceback.extract_stack()[-2]
|
||||
self.name = text[:text.find('=')].strip()
|
||||
self.parent = None
|
||||
Page.all_pages[self.name] = self
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.name == other.name
|
||||
|
||||
def __hash__(self):
|
||||
return hash(self.name)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def link(self, button, destination):
|
||||
self.links[destination] = button
|
||||
|
||||
|
||||
# Main Page
|
||||
page_main = Page(MAIN_GO_TO_PURCHASE)
|
||||
|
||||
# Cafe
|
||||
page_cafe = Page(CAFE_CHECK)
|
||||
page_cafe.link(HOME, destination=page_main)
|
||||
page_main.link(MAIN_GO_TO_CAFE, destination=page_cafe)
|
||||
|
||||
# Schedule
|
||||
page_schedule = Page(SCHEDULE_CHECK)
|
||||
page_schedule.link(HOME, destination=page_main)
|
||||
page_main.link(MAIN_GO_TO_SCHEDULE, destination=page_schedule)
|
||||
|
||||
# Circle
|
||||
page_circle = Page(CIRCLE_CHECK)
|
||||
page_circle.link(HOME, destination=page_main)
|
||||
page_main.link(MAIN_GO_TO_CIRCLE, destination=page_circle)
|
||||
|
||||
# Crafting Chamber
|
||||
page_crafting = Page(CRAFTING_CHECK)
|
||||
page_crafting.link(HOME, destination=page_main)
|
||||
page_main.link(MAIN_GO_TO_CRAFTING, destination=page_crafting)
|
||||
|
||||
# Shop
|
||||
page_shop = Page(SHOP_CHECK)
|
||||
page_shop.link(HOME, destination=page_main)
|
||||
page_main.link(MAIN_GO_TO_SHOP, destination=page_shop)
|
||||
|
||||
# Gacha
|
||||
page_gacha = Page(GACHA_CHECK)
|
||||
page_gacha.link(HOME, destination=page_main)
|
||||
page_main.link(MAIN_GO_TO_GACHA, destination=page_gacha)
|
||||
|
||||
# Account Info
|
||||
page_account_info = Page(ACCOUNT_INFO_CHECK)
|
||||
page_account_info.link(HOME, destination=page_main)
|
||||
|
||||
# Mail
|
||||
page_mail = Page(MAIL_CHECK)
|
||||
page_mail.link(HOME, destination=page_main)
|
||||
page_main.link(MAIN_GO_TO_MAIL, destination=page_mail)
|
||||
|
||||
# Task (Daily)
|
||||
page_task = Page(TASK_CHECK)
|
||||
page_task.link(HOME, destination=page_main)
|
||||
page_main.link(MAIN_GO_TO_TASK, destination=page_task)
|
||||
|
||||
# MomoTalk
|
||||
page_momo_talk = Page(MOMOTALK_CHECK)
|
||||
page_momo_talk.link(MOMOTALK_GO_TO_MAIN, destination=page_main)
|
||||
page_main.link(MAIN_GO_TO_MOMOTALK, destination=page_momo_talk)
|
||||
|
||||
# Work
|
||||
page_work = Page(WORK_CHECK)
|
||||
page_work.link(HOME, destination=page_main)
|
||||
page_main.link(MAIN_GO_TO_WORK, destination=page_work)
|
||||
|
||||
# Mission
|
||||
page_mission = Page(MISSION_CHECK)
|
||||
page_mission.link(HOME, destination=page_main)
|
||||
page_mission.link(BACK, destination=page_work)
|
||||
page_work.link(WORK_GO_TO_MISSION, destination=page_mission)
|
||||
|
||||
# Story
|
||||
page_story = Page(STORY_CHECK)
|
||||
page_story.link(HOME, destination=page_main)
|
||||
page_story.link(BACK, destination=page_work)
|
||||
page_work.link(WORK_GO_TO_STORY, destination=page_story)
|
||||
|
||||
# Bounty
|
||||
page_bounty = Page(BOUNTY_CHECK)
|
||||
page_bounty.link(HOME, destination=page_main)
|
||||
page_bounty.link(BACK, destination=page_work)
|
||||
page_work.link(WORK_GO_TO_BOUNTY, destination=page_bounty)
|
||||
|
||||
# Commissions
|
||||
page_commissions = Page(COMMISSIONS_CHECK)
|
||||
page_commissions.link(HOME, destination=page_main)
|
||||
page_commissions.link(BACK, destination=page_work)
|
||||
page_work.link(WORK_GO_TO_COMMISSIONS, destination=page_commissions)
|
||||
|
||||
# School Exchange
|
||||
page_school_exchange = Page(SCHOOL_EXCHANGE_CHECK)
|
||||
page_school_exchange.link(HOME, destination=page_main)
|
||||
page_school_exchange.link(BACK, destination=page_work)
|
||||
page_work.link(WORK_GO_TO_SCHOOL_EXCHANGE, destination=page_school_exchange)
|
||||
|
||||
# Tactical Challenge
|
||||
page_tactical_challenge = Page(TACTICAL_CHALLENGE_CHECK)
|
||||
page_tactical_challenge.link(HOME, destination=page_main)
|
||||
page_tactical_challenge.link(BACK, destination=page_work)
|
||||
page_work.link(WORK_GO_TO_TACTICAL_CHALLENGE, destination=page_tactical_challenge)
|
||||
Reference in New Issue
Block a user