void C4ObjectInfoCore::UpdateCustomRanks(C4DefList *pDefs) { assert(pDefs); C4Def *pDef = pDefs->ID2Def(id); if (!pDef) return; if (pDef->pRankNames) { StdStrBuf sRank(pDef->pRankNames->GetRankName(Rank,false)); if (sRank) sRankName.Copy(sRank); // next rank data StdStrBuf sNextRank(pDef->pRankNames->GetRankName(Rank+1,false)); if (sNextRank) { sNextRankName.Copy(sNextRank); NextRankExp = pDef->pRankNames->Experience(Rank+1); } else { // no more promotion possible by custom rank system sNextRankName.Clear(); NextRankExp = C4RankSystem::EXP_NoPromotion; } } else { // definition does not have custom rank names sNextRankName.Clear(); NextRankExp = 0; } }
bool C4ObjectInfoCore::GetNextRankInfo(C4RankSystem &rDefaultRanks, int32_t *piNextRankExp, StdStrBuf *psNextRankName) { int32_t iNextRankExp; // custom rank assigned? if (NextRankExp) { iNextRankExp = NextRankExp; if (psNextRankName) psNextRankName->Copy(sNextRankName); } else { // no custom rank: Get from default set StdStrBuf sRank(rDefaultRanks.GetRankName(Rank+1, false)); if (sRank) { iNextRankExp = rDefaultRanks.Experience(Rank+1); if (psNextRankName) psNextRankName->Copy(sRank); } else // no more promotion iNextRankExp = C4RankSystem::EXP_NoPromotion; } // return result if (piNextRankExp) *piNextRankExp = iNextRankExp; // return value is whether additional promotion is possible return iNextRankExp != C4RankSystem::EXP_NoPromotion; }
void C4ObjectInfo::Recruit() { // already recruited? if (InAction) return; WasInAction=true; InAction=true; InActionTime=Game.Time; // rank name overload by def? C4Def *pDef=::Definitions.ID2Def(id); if (pDef) if (pDef->pRankNames) { StdStrBuf sRank(pDef->pRankNames->GetRankName(Rank, true)); if (sRank) sRankName.Copy(sRank); } }
bool Card::SetRankAndSuit(const std::string &sRankAndSuit) { if (sRankAndSuit.empty()) return false; std::string sSuit(1, sRankAndSuit.back()); if (!SetSuit(sSuit)) return false; std::string sRank(sRankAndSuit.substr(0, sRankAndSuit.length() - 1)); if (!SetRank(sRank)) return false; return true; }