void PokeTeam::load() { PokeGeneral::load(); /*set the default gender & ability */ if (genderAvail() == Pokemon::NeutralAvail) { gender() = Pokemon::Neutral; } else if (genderAvail() == Pokemon::FemaleAvail) { gender() = Pokemon::Female; } else if (genderAvail() == Pokemon::MaleAvail) { gender() = Pokemon::Male; } else { gender() = true_rand() % 2 ? Pokemon::Male : Pokemon::Female; } ability() = abilities().ab(0); nickname() = PokemonInfo::Name(num()); PokeGraphics::load(gender(), false); PokeGraphics::loadIcon(num()); }
void PokePersonal::controlGender() { if (PokemonInfo::Gender(num()) == Pokemon::MaleAndFemaleAvail) { int rate = PokemonInfo::GenderRate(num()); if (DV(Attack) < (8-rate) * 2) { gender() = Pokemon::Female; } else { gender() = Pokemon::Male; } } }
void PokePersonal::reset() { num() = Pokemon::NoPoke; level() = 100; for (int i = 0; i < 4; i++) m_moves[i] = 0; happiness() = 0; shiny() = false; gender() = Pokemon::Neutral; ability() = 0; nickname() = ""; nature() = 0; item() = 0; for (int i = 0; i < 6; i ++) { if (gen() >= 3) { m_EVs[i] = 0; m_DVs[i] = 31; } else { m_EVs[i] = 255; m_DVs[i] = 15; } } }
void Character::SaveCharacter() { _log( ITEM__TRACE, "Saving character %u.", itemID() ); sLog.Debug( "Character::SaveCharacter()", "Saving all character info and skill attribute info to DB for character %s...", itemName().c_str() ); // character data m_factory.db().SaveCharacter( itemID(), CharacterData( accountID(), title().c_str(), description().c_str(), gender(), bounty(), balance(), securityRating(), logonMinutes(), corporationID(), allianceID(), warFactionID(), stationID(), solarSystemID(), constellationID(), regionID(), ancestryID(), careerID(), schoolID(), careerSpecialityID(), startDateTime(), createDateTime(), corporationDateTime() ) ); // corporation data m_factory.db().SaveCorpMemberInfo( itemID(), CorpMemberInfo( corporationHQ(), corpRole(), rolesAtAll(), rolesAtBase(), rolesAtHQ(), rolesAtOther() ) ); // Save this character's own attributes: SaveAttributes(); // Loop through all skills and invoke mAttributeMap.SaveAttributes() for each std::vector<InventoryItemRef> skills; GetSkillsList( skills ); std::vector<InventoryItemRef>::iterator cur, end; cur = skills.begin(); end = skills.end(); for(; cur != end; cur++) cur->get()->SaveAttributes(); //cur->get()->mAttributeMap.Save(); }
void PokeTeam::loadQuietly() { PokeGeneral::load(); /*set the default gender & ability */ runCheck(); PokeGraphics::load(gender(), false); PokeGraphics::loadIcon(num()); }
int gender(const int generation, const long long int child_no) { if (generation == 1) if (child_no == 1) return 1; else return 999; long long int parent_no; if (child_no%2 == 0) { parent_no = child_no/2; return 1 - gender(generation-1, parent_no); } else { parent_no = (child_no+1)/2; return gender(generation-1, parent_no); } }
void GenderTest::shouldAssignValue() { const QString genderStr(QStringLiteral("F")); KContacts::Gender gender(genderStr); const QString commentStr(QStringLiteral("foo")); gender.setComment(commentStr); QVERIFY(gender.isValid()); QVERIFY(!gender.gender().isEmpty()); QCOMPARE(gender.gender(), genderStr); QVERIFY(!gender.comment().isEmpty()); QCOMPARE(gender.comment(), commentStr); }
void PokeTeam::loadQuietly() { PokeGeneral::load(); /*set the default gender & ability */ runCheck(); /* Crashes on headless servers / etc otherwise */ if (PokemonInfoConfig::getFillMode() == FillMode::Client) { PokeGraphics::load(gender(), false); PokeGraphics::loadIcon(num()); } }
void PokeTeam::load() { PokeGeneral::load(); /*set the default gender & ability */ if (genderAvail() == Pokemon::NeutralAvail) { gender() = Pokemon::Neutral; } else if (genderAvail() == Pokemon::FemaleAvail) { gender() = Pokemon::Female; } else if (genderAvail() == Pokemon::MaleAvail) { gender() = Pokemon::Male; } else { if (gender() == Pokemon::Neutral) { /* Gen 2 has to do with IVs, so since we set max Att IV by default, it's male */ gender() = gen() <= 2 ? Pokemon::Male : (true_rand() % 2 ? Pokemon::Male : Pokemon::Female); } } if (ability() == 0 || !abilities().contains(ability())) { ability() = abilities().ab(0); } /* Crashes on headless servers / etc otherwise */ if (PokemonInfoConfig::getFillMode() == FillMode::Client) { PokeGraphics::load(gender(), false); PokeGraphics::loadIcon(num()); } }
QDomElement & PokeTeam::toXml(QDomElement &el) const { const_cast<PokeTeam*>(this)->sanityCheck(); QDomDocument doc; el.setAttribute("Nickname", nickname()); el.setAttribute("Num", num().pokenum); el.setAttribute("Item", item()); el.setAttribute("Ability", ability()); el.setAttribute("Nature", nature()); el.setAttribute("Gender", gender()); el.setAttribute("Shiny", shiny()); el.setAttribute("Happiness", happiness()); el.setAttribute("Forme", num().subnum); el.setAttribute("Lvl", level()); el.setAttribute("Gen", gen().num); el.setAttribute("SubGen", gen().subnum); for(int i = 0; i < 4; i++) { QDomElement move = doc.createElement("Move"); el.appendChild(move); QDomText name = doc.createTextNode(QString("%1").arg(this->move(i))); move.appendChild(name); } for(int i = 0; i < 6; i++) { QDomElement Dv = doc.createElement("DV"); el.appendChild(Dv); QDomText Dvname = doc.createTextNode(QString("%1").arg(DV(i))); Dv.appendChild(Dvname); } for(int i = 0; i < 6; i++) { QDomElement Ev = doc.createElement("EV"); el.appendChild(Ev); QDomText Evname = doc.createTextNode(QString("%1").arg(EV(i))); Ev.appendChild(Evname); } return el; }
void Character::SaveCharacter() const { _log( ITEM__TRACE, "Saving character %u.", itemID() ); // character data m_factory.db().SaveCharacter( itemID(), CharacterData( accountID(), title().c_str(), description().c_str(), gender(), bounty(), balance(), securityRating(), logonMinutes(), corporationID(), allianceID(), warFactionID(), stationID(), solarSystemID(), constellationID(), regionID(), ancestryID(), careerID(), schoolID(), careerSpecialityID(), startDateTime(), createDateTime(), corporationDateTime() ) ); // corporation data m_factory.db().SaveCorpMemberInfo( itemID(), CorpMemberInfo( corporationHQ(), corpRole(), rolesAtAll(), rolesAtBase(), rolesAtHQ(), rolesAtOther() ) ); }
std::string GameCritterObject::_generateArmorFrmString() { if (!armorSlot()) { return ResourceManager::FIDtoFrmName(FID()).substr(13,6); } switch(gender()) { case GENDER_FEMALE: { return ResourceManager::FIDtoFrmName(armorSlot()->femaleFID()).substr(13, 6); } default: // MALE { return ResourceManager::FIDtoFrmName(armorSlot()->maleFID()).substr(13, 6); } } }
void PokeTeam::loadFromXml(const QDomElement &poke, int version) { if (poke.hasAttribute("Gen")) { setGen(Pokemon::gen(poke.attribute("Gen", QString::number(GenInfo::GenMax())).toInt(), poke.attribute("SubGen", QString::number(GenInfo::NumberOfSubgens(poke.attribute("Gen", QString::number(GenInfo::GenMax())).toInt())-1)).toInt())); } reset(); /* Code to import old teams which had different formes registered as different pokemon numbers */ int num = poke.attribute("Num").toInt(); int forme = poke.attribute("Forme").toInt(); if (gen().num == 4 && num > 493 && forme == 0 && !PokemonInfo::Exists(Pokemon::uniqueId(num, 0), 4)) { //Old way int indexes[] = { 479,479,479,479,479,386,386,386,413,413,492,487 }; int formes[] = { 1,2,3,4,5,1,2,3,1,2,1,1 }; int i = num - 494; setNum(Pokemon::uniqueId(indexes[i], formes[i])); } else { setNum(Pokemon::uniqueId(num, forme)); } bool outdated = gen() < 5 && version < 1; load(); nickname() = poke.attribute("Nickname"); item() = poke.attribute("Item").toInt(); ability() = poke.attribute("Ability").toInt(); if (outdated) { ability() = AbilityInfo::ConvertFromOldAbility(ability()); } nature() = poke.attribute("Nature").toInt(); gender() = poke.attribute("Gender").toInt(); shiny() = QVariant(poke.attribute("Shiny")).toBool(); happiness() = poke.attribute("Happiness").toInt(); level() = poke.attribute("Lvl").toInt(); int cptMove=0; QDomElement moveElement = poke.firstChildElement("Move"); while(!moveElement.isNull()) { int movenum = moveElement.text().toInt(); if (outdated) { movenum = MoveInfo::ConvertFromOldMove(movenum); } setMove(movenum,cptMove,false); cptMove++; moveElement = moveElement.nextSiblingElement("Move"); } int cptDV=0; QDomElement DVElement = poke.firstChildElement("DV"); while(!DVElement.isNull()) { setDV(outdated ? NatureInfo::ConvertToStat(cptDV) : cptDV,DVElement.text().toInt()); cptDV++; DVElement = DVElement.nextSiblingElement("DV"); } int cptEV=0; QDomElement EVElement = poke.firstChildElement("EV"); while(!EVElement.isNull()) { setEV(outdated ? NatureInfo::ConvertToStat(cptEV) : cptEV,EVElement.text().toInt()); cptEV++; EVElement = EVElement.nextSiblingElement("EV"); } }
QPixmap PokeTeam::picture() { return PokeGraphics::picture(gender(), shiny()); }
void PlayerCreateState::think() { State::think(); auto player = Game::getInstance()->player(); auto msgEditor = ResourceManager::msgFileType("text/english/game/editor.msg"); _labels.at("name")->setText(player->name()); _labels.at("age")->setText(msgEditor->message(104))->appendText(" ")->appendText(std::to_string(player->age())); _labels.at("gender")->setText(msgEditor->message(player->gender() == 0 ? 107 : 108)); // 0 - male 1 - female _counters.at("statsPoints")->setNumber(player->statsPoints()); _counters.at("skillsPoints")->setNumber(player->skillsPoints()); _labels.at("health_1")->setText(msgEditor->message(300))->appendText(" ")->appendText(std::to_string(player->hitPointsMax()))->appendText("/")->appendText(std::to_string(player->hitPointsMax())); _labels.at("params_1_value")->setText(player->armorClass()); _labels.at("params_2_value")->setText(player->actionPoints()); _labels.at("params_3_value")->setText(player->carryWeightMax()); _labels.at("params_4_value")->setText(player->meleeDamage()); _labels.at("params_5_value")->setText(player->damageResistance())->appendText("%"); _labels.at("params_6_value")->setText(player->poisonResistance())->appendText("%"); _labels.at("params_7_value")->setText(player->radiationResistance())->appendText("%"); _labels.at("params_8_value")->setText(player->sequence()); _labels.at("params_9_value")->setText(player->healingRate()); _labels.at("params_10_value")->setText(player->criticalChance())->appendText("%"); // Stats counters and labels for (unsigned int i = 0; i < 7; i++) { std::stringstream ss; ss << "stats_" << (i+1); unsigned int val = player->statTotal(i); _counters.at(ss.str())->setNumber(val); _counters.at(ss.str())->setColor(BigCounter::COLOR_WHITE); if (val > 10) { val = 10; _counters.at(ss.str())->setColor(BigCounter::COLOR_RED); } _labels.at(ss.str())->setText(msgEditor->message(199 + (val < 1 ? 1 : val))); } // Skills values for (unsigned int i = 0; i != 18; ++i) { std::stringstream ss; ss << "skills_" << (i + 1) << "_value"; _labels.at(ss.str())->setText(player->skillValue(i))->appendText("%"); } // Default labels colors for(auto it = _labels.begin(); it != _labels.end(); ++it) { std::string name = it->first; auto font1_3ff800ff = ResourceManager::font("font1.aaf", 0x3ff800ff); auto font1_a0a0a0ff = ResourceManager::font("font1.aaf", 0xa0a0a0ff); auto font1_183018ff = ResourceManager::font("font1.aaf", 0x183018ff); if (name.find("stats_") == 0 || name.find("params_") == 0) { it->second->setFont(font1_3ff800ff); } if (name.find("traits_") == 0) { unsigned int number = atoi(name.substr(7).c_str()); it->second->setFont(player->trait(number - 1) ? font1_a0a0a0ff : font1_3ff800ff); } if (name.find("skills_") == 0) { unsigned int number = atoi(name.substr(7).c_str()); it->second->setFont(player->skill(number - 1) ? font1_a0a0a0ff : font1_3ff800ff); } if (name.find("health_") == 0) { it->second->setFont(name.compare("health_1") == 0 ? font1_3ff800ff : font1_183018ff); } } // Selected labels colors for(auto it = _labels.begin(); it != _labels.end(); ++it) { if (_selectedLabel != it->second) continue; std::string name = it->first; _title->setText(_titles.at(name)); _description->setText(_descriptions.at(name)); _selectedImage->setTexture(_images.at(name)->texture()); auto font1_ffff7fff = ResourceManager::font("font1.aaf", 0xffff7fff); auto font1_ffffffff = ResourceManager::font("font1.aaf", 0xffffffff); auto font1_707820ff = ResourceManager::font("font1.aaf", 0x707820ff); if (name.find("stats_") == 0) { it->second->setFont(font1_ffff7fff); } if (name.find("params_") == 0) { it->second->setFont(font1_ffff7fff); _labels.at(name+"_value")->setFont(font1_ffff7fff); } if (name.find("traits_") == 0) { unsigned int number = atoi(name.substr(7).c_str()); it->second->setFont(player->trait(number - 1) ? font1_ffffffff : font1_ffff7fff); } if (name.find("skills_") == 0) { unsigned int number = atoi(name.substr(7).c_str()); it->second->setFont(player->skill(number - 1) ? font1_ffffffff : font1_ffff7fff); _labels.at(name+"_value")->setFont(player->skill(number - 1) ? font1_ffffffff : font1_ffff7fff); } if (name.find("health_") == 0) { it->second->setFont(name.compare("health_1") == 0 ? font1_ffff7fff : font1_707820ff); } } }
void Sav5::trade(std::shared_ptr<PKX> pk) { if (pk->egg() && (otName() != pk->otName() || TID() != pk->TID() || SID() != pk->SID() || gender() != pk->otGender())) { pk->metDay(Configuration::getInstance().day()); pk->metMonth(Configuration::getInstance().month()); pk->metYear(Configuration::getInstance().year() - 2000); pk->metLocation(30003); } }
void PokePersonal::runCheck() { if (!PokemonInfo::Exists(num(), gen())) { reset(); return; } if (!PokemonInfo::AFormesShown(num())) { num() = num().original(); } if (gen() <= 2) { ability() = 0; nature() = 0; } else { AbilityGroup ab = PokemonInfo::Abilities(num(), gen()); if (ability() == 0 || (ability() != ab.ab(2) && ability() != ab.ab(1))) ability() = ab.ab(0); } if (gen().num == 2) controlGender(); if (!ItemInfo::Exists(item(), gen())) { item() = 0; } for (int i = 0; i < 6; i++) controlEVs(i); if (gen() <= 2) { for (int i = 0; i < 6; i++) { if (DV(i) >= 15) setDV(i, 15); } } if (gen().num == 2) { setEV(SpDefense, EV(SpAttack)); setDV(SpDefense, DV(SpAttack)); } int avail = PokemonInfo::Gender(num()); if (avail != Pokemon::MaleAndFemaleAvail) { gender() = avail; } else if (gender() == Pokemon::Neutral){ gender() = Pokemon::Male; } int minLevel = PokemonInfo::AbsoluteMinLevel(num(), gen()); if (MoveSetChecker::enforceMinLevels && level() < minLevel) { level() = minLevel; } QSet<int> invalidMoves; MoveSetChecker::isValid(num(), gen(), move(0), move(1), move(2), move(3), ability(), gender(), level(), false, &invalidMoves); while (invalidMoves.size() > 0) { for (int i = 0; i < 4; i++) { if (invalidMoves.contains(move(i))) { setMove(0, i, false); } } invalidMoves.clear(); MoveSetChecker::isValid(num(), gen(), move(0), move(1), move(2), move(3), ability(), gender(), level(), false, &invalidMoves); } if (num().pokenum == Pokemon::Keldeo) { if (move(0) == Move::SecretSword || move(1) == Move::SecretSword || move(2) == Move::SecretSword || move(3) == Move::SecretSword) { num() = Pokemon::Keldeo_R; } else { num() = num().original(); } } }
void PokePersonal::setMove(int moveNum, int moveSlot, bool check) throw(QString) { if (moveNum == move(moveSlot)) return; if (check && moveNum != 0) { m_moves[moveSlot] = Move::NoMove; if (hasMove(moveNum)) throw QObject::tr("%1 already has move %2.").arg(nickname(), MoveInfo::Name(moveNum)); else if (gen() > 1 && !PokemonInfo::Moves(num(), gen()).contains(moveNum)) throw QObject::tr("%1 can't learn %2.").arg(nickname(), MoveInfo::Name(moveNum)); } m_moves[moveSlot] = moveNum; if (check) { QSet<int> invalid_moves; QString error; if (!MoveSetChecker::isValid(num(), gen(), m_moves[0],m_moves[1],m_moves[2],m_moves[3],ability(),gender(),level(),false,&invalid_moves, &error)) { m_moves[moveSlot] = Move::NoMove; throw error; } } }
int main() { odd_even(); operation_two(); gender(); age(); }
void Sav6::trade(std::shared_ptr<PKX> pk) { PK6 *pk6 = (PK6*)pk.get(); if (pk6->egg()) { if (otName() != pk6->otName() || TID() != pk6->TID() || SID() != pk6->SID() || gender() != pk6->otGender()) { pk6->metDay(Configuration::getInstance().day()); pk6->metMonth(Configuration::getInstance().month()); pk6->metYear(Configuration::getInstance().year() - 2000); pk6->metLocation(30002); } return; } else if (otName() == pk6->otName() && TID() == pk6->TID() && SID() == pk6->SID() && gender() == pk6->otGender()) { pk6->currentHandler(0); if (!pk6->untraded() && (country() != pk6->geoCountry(0) || subRegion() != pk6->geoRegion(0))) { for (int i = 4; i > 0; i--) { pk6->geoCountry(pk6->geoCountry(i - 1), i); pk6->geoRegion(pk6->geoRegion(i - 1), i); } pk6->geoCountry(country()); pk6->geoRegion(subRegion()); } } else { if (otName() != pk6->htName() || gender() != pk6->htGender() || (pk6->geoCountry(0) == 0 && pk6->geoRegion(0) == 0 && !pk6->untradedEvent())) { for (int i = 4; i > 0; i--) { pk6->geoCountry(pk6->geoCountry(i - 1), i); pk6->geoRegion(pk6->geoRegion(i - 1), i); } pk6->geoCountry(country()); pk6->geoRegion(subRegion()); } if (pk6->htName() != otName()) { pk6->htFriendship(pk6->baseFriendship()); pk6->htAffection(0); pk6->htName(otName()); } pk6->currentHandler(1); pk6->htGender(gender()); if (pk6->htMemory() == 0) { pk6->htMemory(4); pk6->htTextVar(9); pk6->htIntensity(1); /*static constexpr u32 memoryBits[70] = { 0x000000, 0x04CBFD, 0x004BFD, 0x04CBFD, 0x04CBFD, 0xFFFBFB, 0x84FFF9, 0x47FFFF, 0xBF7FFA, 0x7660B0, 0x80BDF9, 0x88FB7A, 0x083F79, 0x0001FE, 0xCFEFFF, 0x84EBAF, 0xB368B0, 0x091F7E, 0x0320A0, 0x080DDD, 0x081A7B, 0x404030, 0x0FFFFF, 0x9A08BC, 0x089A7B, 0x0032AA, 0x80FF7A, 0x0FFFFF, 0x0805FD, 0x098278, 0x0B3FFF, 0x8BBFFA, 0x8BBFFE, 0x81A97C, 0x8BB97C, 0x8BBF7F, 0x8BBF7F, 0x8BBF7F, 0x8BBF7F, 0xAC3ABE, 0xBFFFFF, 0x8B837C, 0x848AFA, 0x88FFFE, 0x8B0B7C, 0xB76AB2, 0x8B1FFF, 0xBE7AB8, 0xB77EB8, 0x8C9FFD, 0xBF9BFF, 0xF408B0, 0xBCFE7A, 0x8F3F72, 0x90DB7A, 0xBCEBFF, 0xBC5838, 0x9C3FFE, 0x9CFFFF, 0x96D83A, 0xB770B0, 0x881F7A, 0x839F7A, 0x839F7A, 0x839F7A, 0x53897F, 0x41BB6F, 0x0C35FF, 0x8BBF7F, 0x8BBF7F };*/ u32 bits = 0x04CBFD; //memoryBits[pk6->htMemory()]; while (true) { u32 feel = randomNumbers() % 20; if ((bits & (1 << feel)) != 0) { pk6->htFeeling(feel); break; } } } } }
void Opcode80CA::_run() { auto& debug = Logger::debug("SCRIPT"); debug << "[80CA] [+] int value = get_critter_stat(GameCritterObject* who, int number)" << std::endl; int number = _script->dataStack()->popInteger(); debug << " number = " << number << std::endl; auto object = _script->dataStack()->popObject(); if (!object) { _error("get_critter_stat(who, stat) - who is NULL"); } auto critter = dynamic_cast<Game::CritterObject*>(object); if (!critter) { _error("get_critter_stat(who, stat) - who is not a critter"); } int result = 0; switch (number) { case 0: // ST case 1: // PE case 2: // EN case 3: // CH case 4: // IN case 5: // AG case 6: // LU { result = critter->statTotal((STAT)number); break; } case 7: // max hit points { result = critter->hitPointsMax(); break; } case 8: // max action points { result = critter->actionPointsMax(); break; } case 9: // armor class { result = critter->armorClass(); break; } case 11: // melee damage { result = critter->meleeDamage(); break; } case 12: // carry weight max { result = critter->carryWeightMax(); break; } case 13: // sequence { result = critter->sequence(); break; } case 14: // heal rate { result = critter->healingRate(); break; } case 15: // crit chance { result = critter->criticalChance(); break; } case 16: // better criticals // @TODO break; case 17: // { result = critter->damageThreshold(DAMAGE::NORMAL); break; } case 18: // { result = critter->damageThreshold(DAMAGE::LASER); break; } case 19: // { result = critter->damageThreshold(DAMAGE::FIRE); break; } case 20: // { result = critter->damageThreshold(DAMAGE::PLASMA); break; } case 21: // { result = critter->damageThreshold(DAMAGE::ELECTRICAL); break; } case 22: // { result = critter->damageThreshold(DAMAGE::EMP); break; } case 23: // { result = critter->damageThreshold(DAMAGE::EXPLOSIVE); break; } case 24: // { result = critter->damageResist(DAMAGE::NORMAL); break; } case 25: // { result = critter->damageResist(DAMAGE::LASER); break; } case 26: // { result = critter->damageResist(DAMAGE::FIRE); break; } case 27: // { result = critter->damageResist(DAMAGE::PLASMA); break; } case 28: // { result = critter->damageResist(DAMAGE::ELECTRICAL); break; } case 29: // { result = critter->damageResist(DAMAGE::EMP); break; } case 30: // { result = critter->damageResist(DAMAGE::EXPLOSIVE); break; } case 31: // rad resist { result = critter->damageResist(DAMAGE::RADIATION); break; } case 32: // poison resist { result = critter->damageResist(DAMAGE::POISON); break; } case 33: // age { result = critter->age(); break; } case 34: // gender { result = (unsigned)critter->gender(); break; } case 35: // hit points { result = critter->hitPoints(); break; } case 36: // current poison { result = critter->poisonLevel(); break; } case 37: // current radiation { result = critter->radiationLevel(); break; } default: { _error("VM::opcode80CA - unimplemented number:" + std::to_string(number)); } } _script->dataStack()->push(result); debug << " value = " << result << std::endl; }
int main(void) { assert (gender(1, 1) == 1); assert (gender(2, 1) == 1); assert (gender(2, 2) == 0); assert (gender(3, 1) == 1); assert (gender(3, 2) == 0); assert (gender(3, 3) == 0); assert (gender(3, 4) == 1); assert (gender(4, 1) == 1); assert (gender(4, 2) == 0); assert (gender(4, 3) == 0); assert (gender(4, 4) == 1); assert (gender(4, 5) == 0); assert (gender(4, 6) == 1); assert (gender(4, 7) == 1); assert (gender(4, 8) == 0); int t; scanf("%d\n", &t); while (t-- > 0) { int n; long long int k; scanf("%d %lld\n", &n, &k); printf("%s\n", gender(n, k) == 0 ? "Female" : "Male"); } return 0; }
/*! Returns a rich text formatted QString representing the contents the contact. */ QString OPimContact::toRichText() const { QString text; QString value, comp, state; QString str; bool marker = false; Config cfg( "qpe" ); cfg.setGroup( "Appearance" ); int addressformat = cfg.readNumEntry( "AddressFormat", Zip_City_State ); // name, jobtitle and company if ( !( value = fullName() ).isEmpty() ) text += "<b><h3><img src=\"addressbook/AddressBook\"> " + Qtopia::escapeString( value ) + "</h3></b>"; if ( !( value = jobTitle() ).isEmpty() ) text += Qtopia::escapeString( value ) + " "; comp = company(); if ( !( value = department() ).isEmpty() ) { text += Qtopia::escapeString( value ); if ( comp ) text += ", " + Qtopia::escapeString( comp ); } else if ( comp ) text += "<br>" + Qtopia::escapeString( comp ); text += "<br><hr>"; // defailt email QString defEmail = defaultEmail(); if ( !defEmail.isEmpty() ) { text += "<b><img src=\"addressbook/email\"> " + QObject::tr( "Default Email: " ) + "</b>" + Qtopia::escapeString( defEmail ); marker = true; } // business address if ( !businessStreet().isEmpty() || !businessCity().isEmpty() || !businessZip().isEmpty() || !businessCountry().isEmpty() ) { text += QObject::tr( "<br><b>Work Address:</b>" ); marker = true; } if ( !( value = businessStreet() ).isEmpty() ) { text += "<br>" + Qtopia::escapeString( value ); marker = true; } switch ( addressformat ) { case Zip_City_State: { // Zip_Code City, State state = businessState(); if ( !( value = businessZip() ).isEmpty() ) { text += "<br>" + Qtopia::escapeString( value ) + " "; marker = true; } if ( !( value = businessCity() ).isEmpty() ) { marker = true; if ( businessZip().isEmpty() && !businessStreet().isEmpty() ) text += "<br>"; text += Qtopia::escapeString( value ); if ( state ) text += ", " + Qtopia::escapeString( state ); } else if ( !state.isEmpty() ) { text += "<br>" + Qtopia::escapeString( state ); marker = true; } break; } case City_State_Zip: { // City, State Zip_Code state = businessState(); if ( !( value = businessCity() ).isEmpty() ) { marker = true; text += "<br>" + Qtopia::escapeString( value ); if ( state ) text += ", " + Qtopia::escapeString( state ); } else if ( !state.isEmpty() ) { text += "<br>" + Qtopia::escapeString( state ); marker = true; } if ( !( value = businessZip() ).isEmpty() ) { text += " " + Qtopia::escapeString( value ); marker = true; } break; } } if ( !( value = businessCountry() ).isEmpty() ) { text += "<br>" + Qtopia::escapeString( value ); marker = true; } // rest of Business data str = office(); if ( !str.isEmpty() ) { text += "<br><b>" + QObject::tr( "Office: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = businessWebpage(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/webpagework\"> " + QObject::tr( "Business Web Page: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = businessPhone(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/phonework\"> " + QObject::tr( "Business Phone: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = businessFax(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/faxwork\"> " + QObject::tr( "Business Fax: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = businessMobile(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/mobilework\"> " + QObject::tr( "Business Mobile: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = businessPager(); if ( !str.isEmpty() ) { text += "<br><b>" + QObject::tr( "Business Pager: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } // text += "<br>"; // home address if ( !homeStreet().isEmpty() || !homeCity().isEmpty() || !homeZip().isEmpty() || !homeCountry().isEmpty() ) { text += QObject::tr( "<br><b>Home Address:</b>" ); marker = true; } if ( !( value = homeStreet() ).isEmpty() ) { text += "<br>" + Qtopia::escapeString( value ); marker = true; } switch ( addressformat ) { case Zip_City_State: { // Zip_Code City, State state = homeState(); if ( !( value = homeZip() ).isEmpty() ) { text += "<br>" + Qtopia::escapeString( value ) + " "; marker = true; } if ( !( value = homeCity() ).isEmpty() ) { marker = true; if ( homeZip().isEmpty() && !homeStreet().isEmpty() ) text += "<br>"; text += Qtopia::escapeString( value ); if ( !state.isEmpty() ) text += ", " + Qtopia::escapeString( state ); } else if ( !state.isEmpty() ) { text += "<br>" + Qtopia::escapeString( state ); marker = true; } break; } case City_State_Zip: { // City, State Zip_Code state = homeState(); if ( !( value = homeCity() ).isEmpty() ) { marker = true; text += "<br>" + Qtopia::escapeString( value ); if ( state ) text += ", " + Qtopia::escapeString( state ); } else if ( !state.isEmpty() ) { text += "<br>" + Qtopia::escapeString( state ); marker = true; } if ( !( value = homeZip() ).isEmpty() ) { text += " " + Qtopia::escapeString( value ); marker = true; } break; } } if ( !( value = homeCountry() ).isEmpty() ) { text += "<br>" + Qtopia::escapeString( value ); marker = true; } // rest of Home data str = homeWebpage(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/webpagehome\"> " + QObject::tr( "Home Web Page: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = homePhone(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/phonehome\"> " + QObject::tr( "Home Phone: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = homeFax(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/faxhome\"> " + QObject::tr( "Home Fax: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = homeMobile(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/mobilehome\"> " + QObject::tr( "Home Mobile: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } if ( marker ) text += "<br><hr>"; // the rest... str = emails(); if ( !str.isEmpty() && ( str != defEmail ) ) text += "<br><b>" + QObject::tr( "All Emails: " ) + "</b>" + Qtopia::escapeString( str ); str = profession(); if ( !str.isEmpty() ) text += "<br><b>" + QObject::tr( "Profession: " ) + "</b>" + Qtopia::escapeString( str ); str = assistant(); if ( !str.isEmpty() ) text += "<br><b>" + QObject::tr( "Assistant: " ) + "</b>" + Qtopia::escapeString( str ); str = manager(); if ( !str.isEmpty() ) text += "<br><b>" + QObject::tr( "Manager: " ) + "</b>" + Qtopia::escapeString( str ); str = gender(); if ( !str.isEmpty() && str.toInt() != 0 ) { text += "<br>"; if ( str.toInt() == 1 ) str = QObject::tr( "Male" ); else if ( str.toInt() == 2 ) str = QObject::tr( "Female" ); text += "<b>" + QObject::tr( "Gender: " ) + "</b>" + str; } str = spouse(); if ( !str.isEmpty() ) text += "<br><b>" + QObject::tr( "Spouse: " ) + "</b>" + Qtopia::escapeString( str ); if ( birthday().isValid() ) { str = TimeString::numberDateString( birthday() ); text += "<br><b>" + QObject::tr( "Birthday: " ) + "</b>" + Qtopia::escapeString( str ); } if ( anniversary().isValid() ) { str = TimeString::numberDateString( anniversary() ); text += "<br><b>" + QObject::tr( "Anniversary: " ) + "</b>" + Qtopia::escapeString( str ); } str = children(); if ( !str.isEmpty() ) text += "<br><b>" + QObject::tr( "Children: " ) + "</b>" + Qtopia::escapeString( str ); str = nickname(); if ( !str.isEmpty() ) text += "<br><b>" + QObject::tr( "Nickname: " ) + "</b>" + Qtopia::escapeString( str ); // categories if ( categoryNames( "Contacts" ).count() ) { text += "<br><b>" + QObject::tr( "Category:" ) + "</b> "; text += categoryNames( "Contacts" ).join( ", " ); } // notes last if ( !( value = notes() ).isEmpty() ) { text += "<br><hr><b>" + QObject::tr( "Notes:" ) + "</b> "; QRegExp reg( "\n" ); //QString tmp = Qtopia::escapeString(value); QString tmp = QStyleSheet::convertFromPlainText( value ); //tmp.replace( reg, "<br>" ); text += "<br>" + tmp + "<br>"; } return text; }
void AddresseeTest::storeTest() { KContacts::Addressee addressee; KContacts::Picture logo(QStringLiteral("http://scottlandyard.info/pics/logo.png")); KContacts::Picture photo(QStringLiteral("http://scottlandyard.info/~sinclair/photo.png")); KContacts::Sound sound(QStringLiteral("http://scottlandyard.info/~sinclair/sound.wav")); QStringList emails; emails << QStringLiteral("*****@*****.**") << QStringLiteral("*****@*****.**"); KContacts::Key::List keys; keys << KContacts::Key(QStringLiteral("SecretKey")); QStringList categories; categories << QStringLiteral("Helper") << QStringLiteral("Friend"); QStringList customs; customs << QStringLiteral("X-Danger: high"); KContacts::Gender gender(QStringLiteral("H")); addressee.setGender(gender); KContacts::Lang lang(QLatin1String("lang")); addressee.setLangs(KContacts::Lang::List() << lang); addressee.setUid(QStringLiteral("My uid")); addressee.setName(QStringLiteral("John Sinclair")); addressee.setFormattedName(QStringLiteral("Sinclair, John")); addressee.setFamilyName(QStringLiteral("Sinclair")); addressee.setGivenName(QStringLiteral("John")); addressee.setAdditionalName(QStringLiteral("Bob")); addressee.setPrefix(QStringLiteral("Sir")); addressee.setSuffix(QStringLiteral("II")); addressee.setNickName(QStringLiteral("ghosthunter")); addressee.setBirthday(QDate(1982, 7, 19)); addressee.setMailer(QStringLiteral("mutt")); addressee.setTimeZone(KContacts::TimeZone(2)); addressee.setGeo(KContacts::Geo(42, 23)); addressee.setTitle(QStringLiteral("Ghost Hunter")); addressee.setRole(QStringLiteral("Leader")); addressee.setOrganization(QStringLiteral("Scottland Yard")); addressee.setNote(QStringLiteral("Don't cross black deads way...")); addressee.setProductId(QStringLiteral("ProductId45")); addressee.setRevision(QDateTime(QDate(1982, 9, 15))); addressee.setSortString(QStringLiteral("Name")); KContacts::ResourceLocatorUrl url; url.setUrl(QUrl(QStringLiteral("www.scottlandyard.info"))); addressee.setUrl(url); addressee.setSecrecy(KContacts::Secrecy(KContacts::Secrecy::Public)); addressee.setLogo(logo); addressee.setPhoto(photo); addressee.setSound(sound); addressee.setEmails(emails); addressee.setKeys(keys); addressee.setCategories(categories); addressee.setCustoms(customs); addressee.setKind(QStringLiteral("foo")); addressee.setChanged(false); KContacts::Impp imp; imp.setType(KContacts::Impp::GaduGadu); imp.setAddress(QStringLiteral("*****@*****.**")); KContacts::Impp::List listImp; listImp << imp; addressee.setImppList(listImp); QVERIFY(addressee.imppList() == listImp); QVERIFY(addressee.langs() == (KContacts::Lang::List() << lang)); QVERIFY(addressee.gender() == gender); QVERIFY(addressee.uid() == QStringLiteral("My uid")); QVERIFY(addressee.name() == QStringLiteral("John Sinclair")); QVERIFY(addressee.formattedName() == QStringLiteral("Sinclair, John")); QVERIFY(addressee.familyName() == QStringLiteral("Sinclair")); QVERIFY(addressee.givenName() == QStringLiteral("John")); QVERIFY(addressee.additionalName() == QStringLiteral("Bob")); QVERIFY(addressee.prefix() == QStringLiteral("Sir")); QVERIFY(addressee.suffix() == QStringLiteral("II")); QVERIFY(addressee.nickName() == QStringLiteral("ghosthunter")); QVERIFY(addressee.birthday().date() == QDate(1982, 7, 19)); QVERIFY(addressee.birthday().time() == QTime(0, 0)); QVERIFY(!addressee.birthdayHasTime()); QVERIFY(addressee.mailer() == QStringLiteral("mutt")); QVERIFY(addressee.timeZone() == KContacts::TimeZone(2)); QVERIFY(addressee.geo() == KContacts::Geo(42, 23)); QVERIFY(addressee.title() == QStringLiteral("Ghost Hunter")); QVERIFY(addressee.role() == QStringLiteral("Leader")); QVERIFY(addressee.organization() == QStringLiteral("Scottland Yard")); QVERIFY(addressee.note() == QStringLiteral("Don't cross black deads way...")); QVERIFY(addressee.productId() == QStringLiteral("ProductId45")); QVERIFY(addressee.revision() == QDateTime(QDate(1982, 9, 15))); QVERIFY(addressee.sortString() == QStringLiteral("Name")); QVERIFY(addressee.url() == url); QVERIFY(addressee.secrecy() == KContacts::Secrecy(KContacts::Secrecy::Public)); QVERIFY(addressee.logo() == logo); QVERIFY(addressee.photo() == photo); QVERIFY(addressee.sound() == sound); QVERIFY(addressee.emails() == emails); QVERIFY(addressee.keys() == keys); QVERIFY(addressee.categories() == categories); QVERIFY(addressee.customs() == customs); QVERIFY(addressee.changed() == false); QCOMPARE(addressee.kind(), QStringLiteral("foo")); }