36 const char *szDefRanks,
52 sprintf(keyname,
"Rank%03d",crank+1);
53 rankname = GetRegistryString(
Register,keyname);
74 if (!szDefRanks)
return 0;
79 for (
char * p =
szRankNames; *p; ++p)
if (*p ==
'|')
101 assert(szFilenames); assert(szLanguage);
106 if (!
iSize)
return false;
116 for (i=0; i<
iSize; ++i,++pPos)
126 else if (*pRank0 !=
'#')
147 for (i=0; i<
iSize; ++i,++pPos)
156 *pszCurrRankExt++ = pRank0+1;
159 else if (*pRank0 !=
'#')
166 pRank0[iEqPos]=0;
char *szValue=pRank0+iEqPos+1;
167 if (
SEqual(pRank0,
"Base"))
174 *pszCurrRank++=pRank0;
197 if (!fReturnLastIfOver)
return StdStrBuf();
204 int iExtension = iRank /
iRankNum - 1;
221 sprintf(keyname,
"Rank%03d",iRank+1);
222 rankname = GetRegistryString(
Register,keyname);
225 if (!fReturnLastIfOver)
return StdStrBuf();
234 if (iRank<0)
return 0;
235 return (
int) ( pow (
double(iRank), 1.5) *
RankBase );
249 sprintf(keyname,
"Rank%03d",iRank);
250 if (!GetRegistryString(
Register,keyname).isNull())
254 return SetRegistryString(
Register,keyname,szDefRankName);
283 if (iRank<0) iRank = 0;
285 int32_t iMaxRankSym,Q;
288 if (!iMaxRankSym) iMaxRankSym=1;
289 int32_t iBaseRank=iRank%iRankSymbolCount;
290 if (iRank/iRankSymbolCount)
295 if (iMaxRankSym > iRankSymbolCount)
297 int32_t iExtended = iRank / iRankSymbolCount - 1 + iRankSymbolCount;
298 if (iExtended >= iMaxRankSym)
301 iExtended = iMaxRankSym - 1;
302 iBaseRank = iRankSymbolCount - 1;
304 fctExtended = pfctRankSymbols->
GetPhase(iExtended);
306 int32_t
iSize = pfctRankSymbols->
Wdt;
315 pfctRankSymbols->
Draw(cgoDrawDirect->
Surface,cgoDrawDirect->
X+iXOff,cgoDrawDirect->
Y,iBaseRank);
316 fctExtended.
Draw(cgoDrawDirect->
Surface, cgoDrawDirect->
X+iXOff-4,cgoDrawDirect->
Y-3);
324 pfctRankSymbols->
Draw(cgoDrawDirect->
Surface, cgoDrawDirect->
X+iXOff,cgoDrawDirect->
Y,iBaseRank);
326 else if (fOwnSurface)
328 int32_t
iSize = pfctRankSymbols->
Wdt;
334 fctSymbol->
Set(pfctRankSymbols->
GetPhase(iBaseRank));
C4GraphicsResource GraphicsResource
C4RankSystem DefaultRanks
int SCharPos(char cTarget, const char *szInStr, int iIndex)
bool SCopySegment(const char *szString, int iSegment, char *sTarget, char cSeparator, int iMaxL, bool fSkipWhitespace)
void SCopy(const char *szSource, char *sTarget, size_t iMaxL)
bool SEqual(const char *szStr1, const char *szStr2)
size_t SLen(const char *sptr)
const char * GetData() const
size_t GetDataSize() const
C4Facet GetPhase(int iPhaseX=0, int iPhaseY=0)
void Draw(C4Facet &cgo, bool fAspect=true, int32_t iPhaseX=0, int32_t iPhaseY=0, bool fTransparent=true)
bool GetPhaseNum(int32_t &rX, int32_t &rY)
void DrawX(C4Surface *sfcTarget, float iX, float iY, float iWdt, float iHgt, int32_t iPhaseX=0, int32_t iPhaseY=0) const
bool Create(int iWdt, int iHgt, int iWdt2=C4FCT_Full, int iHgt2=C4FCT_Full)
void Set(const C4Facet &cpy)
static bool LoadComponentHost(C4ComponentHost *host, C4Group &hGroup, const char *szFilename, const char *szLanguage)
static bool DrawRankSymbol(C4FacetSurface *fctSymbol, int32_t iRank, C4Facet *pfctRankSymbols, int32_t iRankSymbolCount, bool fOwnSurface, int32_t iXOff=0, C4Facet *cgoDrawDirect=nullptr)
int Init(const char *szRegister, const char *szDefRanks, int iRankBase)
StdStrBuf GetRankName(int iRank, bool fReturnLastIfOver)
int RankByExperience(int iExp)
char RankName[C4MaxName+1]
int Experience(int iRank)
char ** pszRankExtensions
bool Check(int iRank, const char *szDefRankName)
bool Load(C4Group &hGroup, const char *szFilenames, int DefRankBase, const char *szLanguage)
void AppendChars(char cChar, size_t iCnt)
void Ref(const char *pnData)
const char * getData() const
void Format(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O