Beispiel #1
0
void BWDB::_finalize()
{
    if (stmt)
    {
        sqlite3_finalize(stmt);
        stmt = nullptr;
    }
    _clear_row();
}
Beispiel #2
0
const BWDB::dbrow *BWDB::get_prepared_row()
{
    _clear_row();
    rowp = new(row);
    int colcount = sqlite3_column_count(stmt);
    if (sqlite3_step(stmt) == SQLITE_ROW)
    {
        for (int i = 0; i < colcount; ++i)
        {
            const char *colname = (const char *) sqlite3_column_name(stmt, i);
            const char *colval = (const char *) sqlite3_column_text(stmt, i);
            if (colname && colval)
            {
                rowp->insert({colname, colval});
            }
        }
        return rowp;
    } else
    {
        _finalize();
        return nullptr;
    }

}
Beispiel #3
0
static void _list(_choice_array_t *choices)
{
    int start_col = _start_col();
    int extra_col = _extra_col();
    int row = 1;
    int current_type = _TYPE_UNINITIALIZED;
    int current_row = 0;
    int i;

    _clear_row(1); /* Prompt */
    _clear_row(2); /* Header Line */
    _clear_row(3); /* Header Underline */

    c_put_str(TERM_YELLOW, _choose_prompt(choices), row++, start_col);
    switch (_display_mode)
    {
    case _DISPLAY_MODE_STATS:
                            /* [         1         2     ]   3         4         5         6         7       */
                            /* 01234567890123456789012345678901234567890123456789012345678901234567890123456 */
        c_put_str(TERM_WHITE, "Name                       STR  INT  WIS  DEX  CON  CHR  Life  Body            ", row++, start_col);
        c_put_str(TERM_WHITE, "===============================================================================", row++, start_col);
        break;
    case _DISPLAY_MODE_SKILLS:
        c_put_str(TERM_WHITE, "Name                       Dsrm   Dvce   Save   Stlh  Srch  Prcp  Melee  Bows  ", row++, start_col);
        c_put_str(TERM_WHITE, "===============================================================================", row++, start_col);
        break;
    case _DISPLAY_MODE_EXTRA:
        c_put_str(TERM_WHITE, "Name                       Lvl  Max  Speed    AC  Pseudo-Class                 ", row++, start_col);
        c_put_str(TERM_WHITE, "===============================================================================", row++, start_col);
        break;
    }

    for (i = 0; i < choices->size; i++)
    {
        _choice_t *choice = &choices->choices[i];

        /* Group Header */
        if (choice->type != current_type)
        {
            if (current_type != _TYPE_UNINITIALIZED)
                _clear_row(row++);

            current_type = choice->type;
            _clear_row(row);
            switch (current_type)
            {
            case _TYPE_NEW:
                c_put_str(TERM_YELLOW, "New Form", row, start_col);
                break;
            case _TYPE_KNOWN:
                c_put_str(TERM_RED, "Known Forms", row, start_col);
                break;
            case _TYPE_VISIBLE:
                c_put_str(TERM_UMBER, "Visible Forms", row, start_col);
                break;
            }
            row++;
        }

        _clear_row(row);

        if (i == choices->current)
            current_row = row;

        if (!choice->r_idx)
        {
            assert(choice->type == _TYPE_KNOWN);
            c_put_str((i == choices->current) ? TERM_L_BLUE : TERM_L_DARK,
                  format(" %-23.23s", "Unused"), 
                  row, start_col + 1
            );
        }
        else
        {
            char          buf[255];
            byte          attr = TERM_WHITE;
            monster_race *r_ptr = &r_info[choice->r_idx];

            /* Name */
            if (i == choices->current)
                attr = TERM_L_BLUE;

            if (choice->key)
                sprintf(buf, " %c) %-20.20s", choice->key, r_name + r_ptr->name);
            else
                sprintf(buf, "    %-20.20s", r_name + r_ptr->name);

            Term_putch(start_col, row, r_ptr->x_attr, r_ptr->x_char);
            c_put_str(attr, buf, row, start_col + 1);

            /* Extra Info */
            if ((p_ptr->wizard || (r_ptr->r_xtra1 & MR1_POSSESSOR)) && r_ptr->body.life)
            {
                if (_display_mode == _DISPLAY_MODE_STATS)
                {
                    int                j;
                    equip_template_ptr body = &b_info[r_ptr->body.body_idx];

                    for (j = 0; j < 6; j++)
                    {                      
                        sprintf(buf, "%+3d", r_ptr->body.stats[j]);
                        c_put_str(j == r_ptr->body.spell_stat ? TERM_L_GREEN : TERM_WHITE,
                                    buf, row, extra_col + j * 5);
                    }
                    sprintf(buf, "%+3d%%", r_ptr->body.life);
                    c_put_str(TERM_WHITE, buf, row, extra_col + 30);

                    for (j = 0; j < body->count; j++)
                    {
                        int c = extra_col + 36 + j;
                        int r = row;
                        switch (body->slots[j].type)
                        {
                        case EQUIP_SLOT_GLOVES:
                            _prt_equippy(r, c, TV_GLOVES, SV_SET_OF_GAUNTLETS);
                            break;
                        case EQUIP_SLOT_WEAPON_SHIELD:
                            if (body->slots[j].hand % 2)
                                _prt_equippy(r, c, TV_SHIELD, SV_LARGE_METAL_SHIELD);
                            else
                                _prt_equippy(r, c, TV_SWORD, SV_LONG_SWORD);
                            break;
                        case EQUIP_SLOT_WEAPON:
                            _prt_equippy(r, c, TV_SWORD, SV_LONG_SWORD);
                            break;
                        case EQUIP_SLOT_RING:         
                            _prt_equippy(r, c, TV_RING, 0);
                            break;
                        case EQUIP_SLOT_BOW:          
                            _prt_equippy(r, c, TV_BOW, SV_LONG_BOW);
                            break;
                        case EQUIP_SLOT_AMULET:       
                            _prt_equippy(r, c, TV_AMULET, 0);
                            break;
                        case EQUIP_SLOT_LITE:         
                            _prt_equippy(r, c, TV_LITE, SV_LITE_FEANOR);
                            break;
                        case EQUIP_SLOT_BODY_ARMOR:   
                            _prt_equippy(r, c, TV_HARD_ARMOR, SV_CHAIN_MAIL);
                            break;
                        case EQUIP_SLOT_CLOAK:        
                            _prt_equippy(r, c, TV_CLOAK, SV_CLOAK);
                            break;
                        case EQUIP_SLOT_BOOTS:        
                            _prt_equippy(r, c, TV_BOOTS, SV_PAIR_OF_HARD_LEATHER_BOOTS);
                            break;
                        case EQUIP_SLOT_HELMET:       
                            _prt_equippy(r, c, TV_HELM, SV_IRON_HELM);
                            break;
                        case EQUIP_SLOT_ANY:             
                            Term_putch(r, c, TERM_WHITE, '*');
                            break;
                        case EQUIP_SLOT_CAPTURE_BALL:
                            _prt_equippy(r, c, TV_CAPTURE, 0);
                            break;
                        }
                    }
                }
                else if (_display_mode == _DISPLAY_MODE_SKILLS)
                {
                    sprintf(buf, "%2d+%-2d  %2d+%-2d  %2d+%-2d  %4d  %4d  %4d  %2d+%-2d  %2d+%-2d\n", 
                        r_ptr->body.skills.dis, r_ptr->body.extra_skills.dis, 
                        r_ptr->body.skills.dev, r_ptr->body.extra_skills.dev, 
                        r_ptr->body.skills.sav, r_ptr->body.extra_skills.sav,
                        r_ptr->body.skills.stl, 
                        r_ptr->body.skills.srh, 
                        r_ptr->body.skills.fos,
                        r_ptr->body.skills.thn, r_ptr->body.extra_skills.thn, 
                        r_ptr->body.skills.thb, r_ptr->body.extra_skills.thb
                    );
                    c_put_str(TERM_WHITE, buf, row, extra_col);
                }
                else if (_display_mode == _DISPLAY_MODE_EXTRA)
                {
                    int speed = possessor_r_speed(choice->r_idx);
                    int ac = possessor_r_ac(choice->r_idx);

                    sprintf(buf, "%3d  %3d  %+5d  %+4d  %s", 
                        r_ptr->level, MAX(15, r_ptr->level + 5), speed, ac,
                        get_class_aux(r_ptr->body.class_idx, 0)->name
                    );
                    c_put_str(TERM_WHITE, buf, row, extra_col);
                }
            }
        } 
        row++;
    }
    _clear_row(row++);
    _clear_row(row);
    c_put_str(TERM_WHITE, "['?' to recall, '=' for more info, ESC to cancel, ENTER to select]", row++, start_col);
    _clear_row(row);

    if (current_row)
        Term_gotoxy(start_col, current_row);
}