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; }
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()))); } }); }