async def get_id_menu_initial_reaction_list( ctx, dgcog, monster: "MonsterModel", full_reaction_list: List[Optional[str]] = None, force_evoscroll=False): # hide some panes if we're in evo scroll mode if not full_reaction_list: full_reaction_list = [ emoji_cache.get_by_name(e) for e in IdMenuPanes.emoji_names() ] if not force_evoscroll and not settings.checkEvoID(ctx.author.id): return full_reaction_list alt_versions, gem_versions = await EvosViewState.query(dgcog, monster) if alt_versions is None and gem_versions is None: full_reaction_list.remove(IdMenuEmoji.left) full_reaction_list.remove(IdMenuEmoji.right) full_reaction_list.remove(IdMenuEmoji.evos) pantheon_list, _, _ = await PantheonViewState.query(dgcog, monster) if pantheon_list is None: full_reaction_list.remove(IdMenuEmoji.pantheon) mats, usedin, gemid, _, skillups, _, _, _ = await MaterialsViewState.query( dgcog, monster) if mats is None and usedin is None and gemid is None and skillups is None: full_reaction_list.remove(IdMenuEmoji.mats) return full_reaction_list
async def click_child_number(cls, ims, emoji_clicked, **data): emoji_response = IdMenuEmoji.refresh \ if SeriesScrollMenuPanes.respond_to_emoji_with_child(emoji_clicked) else None if emoji_response is None: return None, {} n = SeriesScrollMenuPanes.emoji_names().index(emoji_clicked) view_state = await cls._get_view_state(ims, **data) view_state.set_index(SeriesScrollMenuPanes.get_monster_index(n)) extra_ims = view_state.get_serialized_child_extra_ims( IdMenuPanes.emoji_names(), IdMenu.MENU_TYPE) return emoji_response, extra_ims
def _scroll_child(ims, update_fn, **data): dgcog = data['dgcog'] copy_ims = deepcopy(ims) update_fn(dgcog, copy_ims) paginated_monsters = SeriesScrollViewState.query_from_ims(dgcog, copy_ims) page = copy_ims.get('current_page') or 0 monster_list = paginated_monsters[page] # after we figure out new rarity extra_ims = { 'is_child': True, 'reaction_list': IdMenuPanes.emoji_names(), 'menu_type': IdMenu.MENU_TYPE, 'resolved_monster_id': monster_list[copy_ims['current_index']].monster_id, } return IdMenuEmoji.refresh, extra_ims
def click_child_number(ims, emoji_clicked, **data): dgcog = data['dgcog'] emoji_response = IdMenuEmoji.refresh \ if SeriesScrollMenuPanes.respond_to_emoji_with_child(emoji_clicked) else None if emoji_response is None: return None, {} n = SeriesScrollMenuPanes.emoji_names().index(emoji_clicked) paginated_monsters = SeriesScrollViewState.query_from_ims(dgcog, ims) page = ims.get('current_page') or 0 monster_list = paginated_monsters[page] extra_ims = { 'is_child': True, 'reaction_list': IdMenuPanes.emoji_names(), 'menu_type': IdMenu.MENU_TYPE, 'resolved_monster_id': monster_list[n - SeriesScrollMenuPanes.NON_MONSTER_EMOJI_COUNT].monster_id, } return emoji_response, extra_ims
async def _scroll_child(view_state: SeriesScrollViewState, update_fn, dbcog): await update_fn(dbcog) extra_ims = view_state.get_serialized_child_extra_ims( IdMenuPanes.emoji_names(), IdMenu.MENU_TYPE) return IdMenuEmoji.refresh, extra_ims