Ejemplo n.º 1
0
void UserCharacter::levelUp()
{
	setBaseDamage(getBaseDamage() * 1.1);
	setBaseMDamage(getBaseMDamage() * 1.1);
	setBaseDefence(getBaseDefence() * 1.1);
	setBaseMDefence(getBaseMDefence() * 1.1);
	setBaseMaxHp(getBaseMaxHp() + 23);
	setBaseMaxHp(getBaseMaxMp() * 23);
	_level_up_need_exp += 15;

}
void player::levelUp()
{
    //Assigns to a random value at this point
    int currentAttribute;
    int randomAttribute = rand() % 3;
    switch(randomAttribute)
    {
        //Increases Damage
        case 0:
            currentAttribute = getBaseDamage() + 1;
            setBaseDamage(currentAttribute);
            break;
        //Increases Armor
        case 1:
            currentAttribute = getArmor() + 1;
            setArmor(currentAttribute);
            break;
        //Increase Health
        case 2:
            currentAttribute = getMaxHealth() + 1;
            setHealth(currentAttribute);
            setMaxHealth(currentAttribute);
            break;
    }


    experience=xpToLevel%experience;
    if((xpToLevel%2)>0)
    {
        xpToLevel=xpToLevel*1.5;
        xpToLevel++;
    }
    else
    {
        xpToLevel=xpToLevel*1.5;
    }
    int levelHolder=getLevel();
    levelHolder++;
    setLevel(levelHolder);
    return;
}
Ejemplo n.º 3
0
AnimalMovesWindow::AnimalMovesWindow(const std::map<QString, std::shared_ptr<db::Database>> & map, db::Database & db, const Animal & animal, QWidget * parent) :
    QWidget(),
    ui(new Ui::AnimalMovesWindow),
    m_parent(parent),
    m_db(db),
    m_dbMap(map),
    m_animal(animal)
{
    ui->setupUi(this);

    ui->label_Name->setText(m_animal.getName());

    QStringList horizontalHeader;
    horizontalHeader.append("Level");
    horizontalHeader.append("Move");
    horizontalHeader.append("Type");
    horizontalHeader.append("Category");
    horizontalHeader.append("Dmg");
    horizontalHeader.append("Acc");
    horizontalHeader.append("Prio");

    m_movesModel.setHorizontalHeaderLabels(horizontalHeader);

    ComboBoxDelegate * delegate = new ComboBoxDelegate(this);
    std::vector<QString> vec;
    for (const auto & move : m_db.getMovesByID()) {
        vec.emplace_back(move.second.getName());
    }
    delegate->setItems(vec);
    ui->tableView_Moves->setItemDelegateForColumn(1, delegate);

    QSortFilterProxyModel * proxyModel = new QSortFilterProxyModel(this);
    proxyModel->setSourceModel(&m_movesModel);
    proxyModel->setSortRole(NumericModel::SortRole);

    ui->tableView_Moves->setModel(proxyModel);
    ui->tableView_Moves->resizeColumnsToContents();
    ui->tableView_Moves->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);

    // calculate max move name size
    int size = 20;
    QFont font;
    QFontMetrics fm(font);
    for (const auto & move : m_db.getMoves()) {
        size = std::max(size, fm.width(move.first));
    }
    ui->tableView_Moves->horizontalHeader()->resizeSection(1, size + 30);

    // calculate max type name size
    size = 20;
    for (const auto & type : m_db.getTypes()) {
        size = std::max(size, fm.width(type.first));
    }
    ui->tableView_Moves->horizontalHeader()->resizeSection(2, size + 30);

    // fill moves
    for (const auto & p : m_animal.moves()) {

        assert(m_db.getMoves().count(p.second) != 0);
        const auto move = m_db.getMoves().at(p.second);
        QList<QStandardItem *> itemList;

        itemList.append(new QStandardItem(QString::number(p.first)));
        itemList.append(new QStandardItem(move.getName()));
        itemList.append(new QStandardItem(move.getType()));
        itemList.back()->setEditable(false);
        itemList.append(new QStandardItem(move.getCategory()));
        itemList.back()->setEditable(false);
        itemList.append(new QStandardItem(QString::number(move.getBaseDamage())));
        itemList.back()->setEditable(false);
        itemList.append(new QStandardItem(QString::number(move.getAccuracy())));
        itemList.back()->setEditable(false);
        itemList.append(new QStandardItem(QString::number(move.getPriority())));
        itemList.back()->setEditable(false);

        m_movesModel.appendRow(itemList);

    }

    connect(&m_movesModel, &QStandardItemModel::itemChanged, [&](QStandardItem * item){

        const auto col = item->column();

        if (col == 0) {

            // lvl changed
            ui->tableView_Moves->sortByColumn(0, Qt::AscendingOrder);

        } else if (col == 1) {

            // move changed
            const auto move = m_db.getMoves().at(item->text());
            m_movesModel.setItem(item->row(), 2, new QStandardItem(move.getType()));
            m_movesModel.setItem(item->row(), 3, new QStandardItem(move.getCategory()));
            m_movesModel.setItem(item->row(), 4, new QStandardItem(QString::number(move.getBaseDamage())));
            m_movesModel.setItem(item->row(), 5, new QStandardItem(QString::number(move.getAccuracy())));
            m_movesModel.setItem(item->row(), 6, new QStandardItem(QString::number(move.getPriority())));

        }

    });

}