void StatsWindow::addSkills(const SkillList &skills, const std::string &titleId, const std::string &titleDefault, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2) { WindowManager *wm = environment.mWindowManager; // Add a line separator if there are items above if (!skillWidgets.empty()) { addSeparator(coord1, coord2); } addGroup(wm->getGameSettingString(titleId, titleDefault), coord1, coord2); SkillList::const_iterator end = skills.end(); for (SkillList::const_iterator it = skills.begin(); it != end; ++it) { int skillId = *it; if (skillId < 0 || skillId > ESM::Skill::Length) // Skip unknown skill indexes continue; assert(skillId >= 0 && skillId < ESM::Skill::Length); const std::string &skillNameId = ESMS::Skill::sSkillNameIds[skillId]; const MWMechanics::Stat<float> &stat = skillValues.find(skillId)->second; float base = stat.getBase(); float modified = stat.getModified(); ColorStyle style = CS_Normal; if (modified > base) style = CS_Super; else if (modified < base) style = CS_Sub; MyGUI::StaticTextPtr widget = addValueItem(wm->getGameSettingString(skillNameId, skillNameId), boost::lexical_cast<std::string>(static_cast<int>(modified)), style, coord1, coord2); skillWidgetMap[skillId] = widget; } }
void StatsWindow::addSkills(const SkillList &skills, const std::string &titleId, const std::string &titleDefault, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2) { // Add a line separator if there are items above if (!skillWidgets.empty()) { addSeparator(coord1, coord2); } addGroup(mWindowManager.getGameSettingString(titleId, titleDefault), coord1, coord2); SkillList::const_iterator end = skills.end(); for (SkillList::const_iterator it = skills.begin(); it != end; ++it) { int skillId = *it; if (skillId < 0 || skillId > ESM::Skill::Length) // Skip unknown skill indexes continue; assert(skillId >= 0 && skillId < ESM::Skill::Length); const std::string &skillNameId = ESMS::Skill::sSkillNameIds[skillId]; const MWMechanics::Stat<float> &stat = skillValues.find(skillId)->second; float base = stat.getBase(); float modified = stat.getModified(); int progressPercent = (modified - float(static_cast<int>(modified))) * 100; const ESM::Skill* skill = mWindowManager.getStore().skills.search(skillId); assert(skill); std::string icon = "icons\\k\\" + ESM::Skill::sIconNames[skillId]; const ESM::Attribute* attr = mWindowManager.getStore().attributes.search(skill->data.attribute); assert(attr); std::string state = "normal"; if (modified > base) state = "increased"; else if (modified < base) state = "decreased"; MyGUI::TextBox* widget = addValueItem(mWindowManager.getGameSettingString(skillNameId, skillNameId), boost::lexical_cast<std::string>(static_cast<int>(modified)), state, coord1, coord2); for (int i=0; i<2; ++i) { skillWidgets[skillWidgets.size()-1-i]->setUserString("ToolTipType", "Layout"); skillWidgets[skillWidgets.size()-1-i]->setUserString("ToolTipLayout", "SkillToolTip"); skillWidgets[skillWidgets.size()-1-i]->setUserString("Caption_SkillName", "#{"+skillNameId+"}"); skillWidgets[skillWidgets.size()-1-i]->setUserString("Caption_SkillDescription", skill->description); skillWidgets[skillWidgets.size()-1-i]->setUserString("Caption_SkillAttribute", "#{sGoverningAttribute}: #{" + attr->name + "}"); skillWidgets[skillWidgets.size()-1-i]->setUserString("ImageTexture_SkillImage", icon); skillWidgets[skillWidgets.size()-1-i]->setUserString("Caption_SkillProgressText", boost::lexical_cast<std::string>(progressPercent)+"/100"); skillWidgets[skillWidgets.size()-1-i]->setUserString("Range_SkillProgress", "100"); skillWidgets[skillWidgets.size()-1-i]->setUserString("RangePosition_SkillProgress", boost::lexical_cast<std::string>(progressPercent)); } skillWidgetMap[skillId] = widget; } }
void printSkillList(SkillList l) { SkillList::iterator itr(l.begin()); for(;itr != l.end(); itr++) { std::cout << itr->getName().toAnsiString() << std::endl; std::cout << "Puissance : " << itr->getBasePower() << " Target : " << itr->needTarget() << " Target type : " << itr->getTargetType() << " CD : " << itr->getCooldown() << std::endl; } }
void ObjectController::_handleSetCurrentSkillTitle(uint64 targetId,Message* message,ObjectControllerCmdProperties* cmdProperties) { PlayerObject* playerObject = dynamic_cast<PlayerObject*>(mObject); BString newTitle; message->getStringUnicode16(newTitle); newTitle.convert(BSTRType_ANSI); SkillList* sList = playerObject->getSkills(); SkillList::iterator sEnd = sList->end(); for(SkillList::iterator it=sList->begin(); it != sEnd; ++it) { if((*it)->mIsTitle) { if(strcmp((*it)->mName.getAnsi(),newTitle.getAnsi()) == 0) { playerObject->setTitle(newTitle.getAnsi()); gMessageLib->sendTitleUpdate(playerObject); break; } } } }
void ReviewDialog::addSkills(const SkillList &skills, const std::string &titleId, const std::string &titleDefault, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2) { // Add a line separator if there are items above if (!mSkillWidgets.empty()) { addSeparator(coord1, coord2); } addGroup(mWindowManager.getGameSettingString(titleId, titleDefault), coord1, coord2); SkillList::const_iterator end = skills.end(); for (SkillList::const_iterator it = skills.begin(); it != end; ++it) { int skillId = *it; if (skillId < 0 || skillId > ESM::Skill::Length) // Skip unknown skill indexes continue; assert(skillId >= 0 && skillId < ESM::Skill::Length); const std::string &skillNameId = ESM::Skill::sSkillNameIds[skillId]; const MWMechanics::Stat<float> &stat = mSkillValues.find(skillId)->second; float base = stat.getBase(); float modified = stat.getModified(); std::string state = "normal"; if (modified > base) state = "increased"; else if (modified < base) state = "decreased"; MyGUI::TextBox* widget = addValueItem(mWindowManager.getGameSettingString(skillNameId, skillNameId), boost::lexical_cast<std::string>(static_cast<int>(modified)), state, coord1, coord2); for (int i=0; i<2; ++i) { ToolTips::createSkillToolTip(mSkillWidgets[mSkillWidgets.size()-1-i], skillId); } mSkillWidgetMap[skillId] = widget; } }