def create_character_data_list(request, formatter): table = Table() characters = load_json_from_page(request, None, u"CharacterList", u"characters") or [] header_row = TitleRow() newline = formatter.linebreak(preformatted=False) header_row.cells.append(TitleCell(u"キャラクター", formatted=True, cls=["center"])) header_row.cells.append(TitleCell(u"よろけにくさ", formatted=True, cls=["center"])) header_row.cells.append(TitleCell(u"ジャンプ%s上昇力" % newline, formatted=True, cls=["center"])) header_row.cells.append(TitleCell(u"空中ダッシュ%s初速度" % newline, formatted=True, cls=["center"])) header_row.cells.append(TitleCell(u"空中ダッシュ%s最終速度" % newline, formatted=True, cls=["center"])) header_row.cells.append(TitleCell(u"腕力", formatted=True, cls=["center"])) header_row.cells.append(TitleCell(u"格闘距離", formatted=True, cls=["center"])) table.rows.append(header_row) for character_name in characters: c = load_json_from_page(request, None, character_name, u"character") or {} data = c.get(u"キャラクターデータ", {}) row = Row() row.cells.append(Cell(None, character_name, cls=["center"])) row.cells.append(Cell(None, data.get(u"よろけにくさ", u""), cls=["center"])) row.cells.append(Cell(None, data.get(u"ジャンプ上昇力", u""), cls=["center"])) row.cells.append(Cell(None, data.get(u"空中ダッシュ初速度", u""), cls=["center"])) row.cells.append(Cell(None, data.get(u"空中ダッシュ最終速度", u""), cls=["center"])) row.cells.append(Cell(None, data.get(u"腕力", u""), cls=["center"])) row.cells.append(Cell(None, u"%dm" % data.get(u"格闘距離", 0), cls=["right"])) table.rows.append(row) html_table = table.toHtmlTable(generate_header=False) return html_table.format(formatter)
def get_leveled_weapon_and_subweapon_rows(request, j, formatter, name, level, place_name, wp_name): weapon_json = load_json_from_page(request, None, name, u'weapon') or {} row = Row() row.cells.append(Cell(u'装備箇所', place_name, cls=['center','hc'])) WeaponData.create_row(request, weapon_json, row, level, formatter, subweapon_in_row=False, subtrigger_in_row=False, show_name=True) subrow = Row() subrow.cells.append(Cell(u'装備箇所', u'サブ', cls=[u'center','hc'])) leveled_weapon = weapon_json.get(u'レベル', {}).get(u'%d' % level, {}) if u'サブウェポン' in leveled_weapon: subweapon = leveled_weapon[u'サブウェポン'] subname = subweapon[u'名称'] sublevel = subweapon[u'レベル'] subweapon_json = load_json_from_page(request, None, subname, u'weapon') or {} WeaponData.create_row(request, subweapon_json, subrow, sublevel, formatter, subweapon_in_row=False, subtrigger_in_row=False, show_name=True) return row, subrow elif u'サブトリガー' in leveled_weapon: subtrigger = leveled_weapon[u'サブトリガー'] subrow.cells.append(Cell(u'武装名', u'(%s)' % subtrigger, cls=[u'center'])) # fill empty columns so that this row does not be shorter than the other rows subrow.cells.extend([Cell()] * (len(row.cells) - 2)) return row, subrow elif is_xi_wp(request, wp_name) and place_name in [u'サイド', u'タンデム']: subname = u'クシーバルカン' if place_name == u'サイド' else u'クシーグレネード' subweapon_json = load_json_from_page(request, None, subname, u'weapon') or {} WeaponData.create_row(request, subweapon_json, subrow, 1, formatter, subweapon_in_row=False, subtrigger_in_row=False, show_name=True) return row, subrow else: return row, None
def load_wp_to_character_table(request): character_list = load_json_from_page(request, None, u'CharacterList', u'characters') or [] wp_to_character = {} for character_name in character_list: character = load_json_from_page(request, None, character_name, u'character') or {} wp_list = character.get(u'ウェポンパック', []) for wp in wp_list: wp_to_character[wp] = character_name return wp_to_character
def create_wp_data(request, parser, formatter, requested_wps): j = load_json_from_page(request, parser, requested_wps[0], u'wp') or {} if not j: return u'no wp data' wp_name = j.get(u'名称', u'') table = Table() text = formatter.linebreak(preformatted=False) text += u""" コスト: %(cost)s 耐久力: %(life)s 格闘補正: x%(melee)s倍 タイプ: %(type)s 入手条件: %(howtoget)s\n """ % { u'cost': j.get(u'コスト', None) or u'???', u'life': j.get(u'耐久力', None) or u'???', u'melee': j.get(u'格闘補正', None) or u'???', u'type': j.get(u'タイプ', None) or u'???', u'howtoget': j.get(u'入手条件', u'') or u'???'} weapon_names = (j[u'右手武器'], j[u'左手武器'], j[u'サイド武器'], j[u'タンデム武器']) place_names = (u'右手', u'左手', u'サイド', u'タンデム') for place_name, weapon_name in zip(place_names, weapon_names): name = weapon_name.get(u'名称', u'unknown') level = weapon_name.get(u'レベル', 0) row, subrow = get_leveled_weapon_and_subweapon_rows( request, j, formatter, name, level, place_name, wp_name) table.rows.append(row) if subrow: table.rows.append(subrow) html_table = table.toHtmlTable() text += html_table.format(formatter) text += get_tune_table(j, formatter) return text
def find_sub_weapon(weapon): weapon_json = load_json_from_page(request, None, weapon.get(u'名称', u''), u'weapon') or {} leveled_weapon = weapon_json.get(u'レベル', {}).get(u'%d' % weapon.get(u'レベル', 0), {}) subweapon = leveled_weapon.get(u'サブウェポン', {}) if subweapon: return subweapon subtrigger = leveled_weapon.get(u'サブトリガー', u'') if subtrigger: return subtrigger return None
def create_weapon_data(request, parser, formatter, requested_weapons, **kw): j = load_json_from_page(request, parser, requested_weapons[0], u'weapon') or {} if not j: return u'No weapon data' table = Table() create_table(request, j, table, formatter, **kw) html_table = table.toHtmlTable() return (formatter.linebreak(preformatted=False) + formatter.text(u'弾種: %s' % j[u'弾種']) + html_table.format(formatter))
def create_wp_list(macro, request, parser, formatter, character_name): j = load_json_from_page(request, parser, character_name, u'character') if not j: return 'No WP(s) are defined for this character.' j = j.get(u'ウェポンパック', []) text = u'' last_parser = macro.parser for wp_name in j: include_args = u'%(wp_name)s, "%(wp_name)s", 3, from="=== %(wp_name)s ===", to="==== コメント ===="' % { u'wp_name': wp_name } text += Include.execute(macro, include_args) return text
def macro_IncludeWeapons(macro, _trailing_args=[]): request = macro.request formatter = macro.formatter parser = macro.parser requested_weapons = _trailing_args if not requested_weapons: # assume the caller requested to show a weapon data of the current page. requested_weapons = [macro.formatter.page.page_name] else: parser = None requested_weapons.reverse() tables = [] all_rows = [] existing_weapons = [] for weapon_name in requested_weapons: w = load_json_from_page(request, parser, weapon_name, u'weapon') or {} table = Table() if w: WeaponData.create_table(request, w, table, formatter, show_wp_owners=True) existing_weapons.append(weapon_name) all_rows.extend(table.rows) tables.append(table) table.remove_empty_columns(all_rows) html_tables = [] for table in tables: html_tables.append(table.toHtmlTable(remove_empty_columns=False)) html_rows = [] for (weapon_name, html_table) in zip(existing_weapons, html_tables): row_cells = [] row_cells.append(HtmlCell( formatter.pagelink(True, weapon_name) + formatter.text(weapon_name) + formatter.pagelink(False), attrs={u'colspan': (u'%d' % len(all_rows[0].cells))}, formatted=True )) # row_cells has only 1 column because the all cells are colspan-ed. html_rows.append(HtmlRow(row_cells, cls=[u'wheader left'])) html_rows.extend(html_table.rows) final_table = HtmlTable(html_rows) return final_table.format(formatter)
def get_character_list(request): return load_json_from_page(request, None, u'CharacterList', u'characters')
def create_character_data(request, parser, formatter, character_name): j = load_json_from_page(request, parser, character_name, u"character") return create_desc(j, formatter)
def wp_to_rows(request, formatter, character_name, wp_name): output = u'' wp = load_json_from_page(request, None, wp_name, u'wp') or {} # First row: WP brief data output += formatter.table_row(True, attrs={u'rowclass': u'wpheader'}) output += formatter.table_cell(True, colspan=4) output += formatter.pagelink(True, wp_name) output += formatter.text(u'%s: %s' % (character_name, wp_name)) output += formatter.pagelink(False) output += formatter.linebreak(preformatted=False) cost = wp.get(u'コスト', u'???') hp = wp.get(u'耐久力', u'???') grapple = wp.get(u'格闘補正', u'???') output += formatter.text( u'コスト: %s 耐久力: %s 格闘補正: %s' % (cost, hp, grapple), style=u'font-size:70%') output += formatter.table_cell(False) output += formatter.table_row(False) # Second row: | | double style | side style | tandem style | output += formatter.table_row(True, attrs={u'rowclass': u'sheader'}) output += formatter.table_cell(True) + formatter.table_cell(False) output += formatter.table_cell(True) + formatter.text(u'ダブルスタイル') + formatter.table_cell(False) output += formatter.table_cell(True) + formatter.text(u'サイドスタイル') + formatter.table_cell(False) output += formatter.table_cell(True) + formatter.text(u'タンデムスタイル') + formatter.table_cell(False) output += formatter.table_row(False) # Third & forth row: weapons right_weapon = wp.get(u'右手武器', {}) left_weapon = wp.get(u'左手武器', {}) side_weapon = wp.get(u'サイド武器', {}) tandem_weapon = wp.get(u'タンデム武器', {}) def find_sub_weapon(weapon): weapon_json = load_json_from_page(request, None, weapon.get(u'名称', u''), u'weapon') or {} leveled_weapon = weapon_json.get(u'レベル', {}).get(u'%d' % weapon.get(u'レベル', 0), {}) subweapon = leveled_weapon.get(u'サブウェポン', {}) if subweapon: return subweapon subtrigger = leveled_weapon.get(u'サブトリガー', u'') if subtrigger: return subtrigger return None side_sub_weapon = find_sub_weapon(side_weapon) tandem_sub_weapon = find_sub_weapon(tandem_weapon) def get_weapon_name(weapon): if isinstance(weapon, unicode): return u'(%s)' % weapon else: return u'%s Lv%d' % (weapon.get(u'名称', u'???'), weapon.get(u'レベル', 0)) def get_weapon_link(weapon): weapon_name = get_weapon_name(weapon) if isinstance(weapon, unicode): return formatter.text(weapon_name) else: return (formatter.pagelink(True, weapon.get(u'名称', u'???')) + formatter.text(weapon_name) + formatter.pagelink(False)) # first row of weapons rows output += formatter.table_row(True) output += formatter.table_cell(True) + formatter.text(u'右') + formatter.table_cell(False) output += formatter.table_cell(True) + get_weapon_link(right_weapon) + formatter.table_cell(False) output += formatter.table_cell(True, rowspan=(1 if side_sub_weapon else 2)) output += get_weapon_link(side_weapon) output += formatter.table_cell(False) output += formatter.table_cell(True, rowspan=(1 if tandem_sub_weapon else 2)) output += get_weapon_link(tandem_weapon) output += formatter.table_cell(False) output += formatter.table_row(False) # second row of weapons rows output += formatter.table_row(True) output += formatter.table_cell(True) + formatter.text(u'左') + formatter.table_cell(False) output += formatter.table_cell(True) + get_weapon_link(left_weapon) + formatter.table_cell(False) if side_sub_weapon: output += formatter.table_cell(True) + get_weapon_link(side_sub_weapon) + formatter.table_cell(False) if tandem_sub_weapon: output += formatter.table_cell(True) + get_weapon_link(tandem_sub_weapon) + formatter.table_cell(False) output += formatter.table_row(False) return output
def is_xi_wp(request, wp_name): xi_json = load_json_from_page(request, None, u'ξ(クシー)988', u'character') or {} return wp_name in xi_json.get(u'ウェポンパック', [])