button = menu_utils.find_component_by_field(menu['buttons'], 'name', btn_name) await menu_utils.click_component(button) def get_submenu(tm, menu_type): menu_utils.validate_menu_type(TITLE_MENU, tm) submenu = tm.get('subMenu') menu_utils.validate_menu_type(menu_type, submenu) return submenu mapping = { "<main_buttons> [game]": df_utils.async_action(click_main_button, 'main_buttons'), "[change | select] (language | languages)": menu_utils.simple_click('languageButton'), "about": menu_utils.simple_click('aboutButton'), } def load_grammar(): grammar = menu_utils.build_menu_grammar( mapping, get_title_menu, extras=[main_button_choice], defaults={'positive_num': 1}, ) grammar.load()
def get_collections_page(menu): from game_menu import game_menu menu_utils.validate_menu_type("gameMenu", menu) page = game_menu.get_page_by_name(menu, "collectionsPage") return page async def click_side_tab(menu, idx: int): cmp = menu["tabs"][idx] await menu_utils.click_component(cmp) mapping = { "<tabs>": df_utils.async_action(click_side_tab, "tabs"), "previous": menu_utils.simple_click("backButton"), "next": menu_utils.simple_click("forwardButton"), } def get_grammar(): extras = [ df_utils.positive_num, df_utils.positive_index, tabs, ] grammar = menu_utils.build_menu_grammar(mapping, get_collections_page, extras=extras) return grammar
import dragonfly as df from srabuilder import rules import menu_utils, server, df_utils, game, objective, server, constants LETTER_VIEWER_MENU = "letterViewerMenu" mapping = { "accept [quest]": menu_utils.simple_click("acceptQuestButton"), "previous": menu_utils.simple_click("backButton"), "next": menu_utils.simple_click("forwardButton"), } def load_grammar(): grammar = menu_utils.build_menu_grammar(mapping, LETTER_VIEWER_MENU) grammar.load()
import game, server, menu_utils, constants, df_utils import dragonfly as df TITLE = 'profileMenu' mapping = { "previous (character | npc)": menu_utils.simple_click('previousCharacterButton'), "next (character | npc)": menu_utils.simple_click('nextCharacterButton'), "previous [gift] type": menu_utils.simple_click('backButton'), "next [gift] type": menu_utils.simple_click('forwardButton') } def get_grammar(): grammar = menu_utils.build_menu_grammar(mapping, TITLE) return grammar
import dragonfly as df from srabuilder import rules import menu_utils, server, df_utils, game, objective, server, constants LEVEL_UP_MENU = 'shippingMenu' categories_list = ('farming', 'foraging', 'fishing', 'mining', 'other') categories = {category: i for i, category in enumerate(categories_list)} async def click_category(menu, idx: int): cmp = menu['categories'][idx] if cmp['visible']: await menu_utils.click_component(cmp) mapping = { "ok": menu_utils.simple_click("okButton"), '<category>': df_utils.async_action(click_category, 'category'), "(back | previous)": menu_utils.simple_click("backButton"), "(forward | next)": menu_utils.simple_click("forwardButton"), } def load_grammar(): grammar = menu_utils.build_menu_grammar(mapping, LEVEL_UP_MENU, extras=[df.Choice('category', categories)]) grammar.load()
TITLE = "purchaseAnimalsMenu" animals = { "[a] chicken": 0, "[a] [dairy] cow": 1, "[a] goat": 2, } async def buy_animal(menu, animal_index: str): await menu_utils.click_component(menu["animalsToPurchase"][0]) mapping = { "ok": menu_utils.simple_click("doneNamingButton"), "cancel": menu_utils.simple_click( "okButton"), # strange but using existing field names "random": menu_utils.simple_click("randomButton"), "(buy | purchase) <animals>": df_utils.async_action(buy_animal, "animals"), "pan <direction_keys>": objective.objective_action(objective.HoldKeyObjective, "direction_keys"), } def load_grammar(): extras = [ df.Choice("direction_keys", game.direction_keys),