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 C4ObjectInfoCore::Promote(int32_t iRank, C4RankSystem &rRanks, bool fForceRankName) { Rank=iRank; // copy new rank name if defined only, or forced to use highest defined rank for too high info ranks StdStrBuf sNewRank(rRanks.GetRankName(Rank,fForceRankName)); if (sNewRank) sRankName.Copy(sNewRank); }
bool C4PlayerInfoCore::CheckPromotion(C4RankSystem &rRanks) { if (TotalScore>=rRanks.Experience(Rank+1)) { Promote(Rank+1,rRanks); return true; } return false; }
BOOL C4PlayerInfoCore::CheckPromotion(C4RankSystem &rRanks) { if (Score>=rRanks.Experience(Rank+1)) { Promote(Rank+1,rRanks); return TRUE; } return FALSE; }
void C4GraphicsOverlay::DrawRankSymbol(C4Facet &cgo, C4Object *rank_obj) { // Determine source gfx for rank if (!rank_obj || !rank_obj->Info) return; C4RankSystem *pRankSys = &::DefaultRanks; C4Facet *pRankRes=&::GraphicsResource.fctRank; int iRankCnt=::GraphicsResource.iNumRanks; C4Def *rank_def=rank_obj->Def; if (rank_def->pRankSymbols) { pRankRes=rank_def->pRankSymbols; iRankCnt=rank_def->iNumRankSymbols; } if (rank_def->pRankNames) { pRankSys = rank_def->pRankNames; iRankCnt = rank_def->pRankNames->GetBaseRankNum(); } pRankSys->DrawRankSymbol(NULL, rank_obj->Info->Rank, pRankRes, iRankCnt, false, 0, &cgo); }
void C4PlayerInfoCore::Promote(int32_t iRank, C4RankSystem &rRanks) { Rank=iRank; SCopy(rRanks.GetRankName(Rank,true).getData(),RankName,C4MaxName); }