Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
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))
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
def get_character_list(request):
    return load_json_from_page(request, None, u'CharacterList', u'characters')
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
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
Exemplo n.º 12
0
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'ウェポンパック', [])