Ejemplo n.º 1
0
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;
	}
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
0
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);
		}
}
Ejemplo n.º 4
0
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;
}