finished level reading

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%40420
This commit is contained in:
David Anderson 2007-01-29 23:09:11 +00:00
parent afd52e1611
commit 221de124e9
2 changed files with 28 additions and 9 deletions

View File

@ -13,6 +13,7 @@ public Plugin:myinfo =
/** Various globals */ /** Various globals */
new AdminFlag:g_FlagLetters[26]; /* Maps the flag letters */ new AdminFlag:g_FlagLetters[26]; /* Maps the flag letters */
new bool:g_LoggedFileName = false; /* Whether or not the file name has been logged */ new bool:g_LoggedFileName = false; /* Whether or not the file name has been logged */
new g_ErrorCount = 0;
public OnRebuildAdminCache(cache_flags) public OnRebuildAdminCache(cache_flags)
{ {

View File

@ -5,6 +5,8 @@
new Handle:g_hLevelParser = INVALID_HANDLE; new Handle:g_hLevelParser = INVALID_HANDLE;
new g_LevelState = LEVEL_STATE_NONE; new g_LevelState = LEVEL_STATE_NONE;
/* :TODO: log line numbers? */
InitializeLevelParser() InitializeLevelParser()
{ {
if (g_hLevelParser == INVALID_HANDLE) if (g_hLevelParser == INVALID_HANDLE)
@ -35,6 +37,21 @@ LoadDefaultLetters()
g_FlagLetters['z'-'a'] = Admin_Root; g_FlagLetters['z'-'a'] = Admin_Root;
} }
stock LogLevelError(const String:format[], {Handle,String,Float,_}:...)
{
decl String:buffer[512];
if (!g_LoggedFileName)
{
LogError("Error(s) detected parsing admin_level.cfg:");
g_LoggedFileName = true;
}
VFormat(buffer, sizeof(buffer), format, 2);
LogError(" (%d) %s", ++g_ErrorCount, buffer);
}
public SMCResult:ReadLevels_NewSection(Handle:smc, const String:name[], bool:opt_quotes) public SMCResult:ReadLevels_NewSection(Handle:smc, const String:name[], bool:opt_quotes)
{ {
if (g_LevelState == LEVEL_STATE_NONE) if (g_LevelState == LEVEL_STATE_NONE)
@ -42,18 +59,12 @@ public SMCResult:ReadLevels_NewSection(Handle:smc, const String:name[], bool:opt
if (StrEqual(name, "Levels")) if (StrEqual(name, "Levels"))
{ {
g_LevelState = LEVEL_STATE_LEVELS; g_LevelState = LEVEL_STATE_LEVELS;
} else {
/* :TODO: log error */
} }
} else if (g_LevelState == LEVEL_STATE_LEVELS) { } else if (g_LevelState == LEVEL_STATE_LEVELS) {
if (StrEqual(name, "Flags")) if (StrEqual(name, "Flags"))
{ {
g_LevelState = LEVEL_STATE_FLAGS; g_LevelState = LEVEL_STATE_FLAGS;
} else {
/* :TODO: log error */
} }
} else {
/* :TODO: Log error */
} }
return SMCParse_Continue; return SMCParse_Continue;
@ -67,7 +78,7 @@ public SMCResult:ReadLevels_KeyValue(Handle:smc, const String:key[], const Strin
if (chr < 'a' || chr > 'z') if (chr < 'a' || chr > 'z')
{ {
/* :TODO: log error */ LogLevelError("Unrecognized character: \"%s\"", value);
return SMCParse_Continue; return SMCParse_Continue;
} }
@ -105,7 +116,7 @@ public SMCResult:ReadLevels_KeyValue(Handle:smc, const String:key[], const Strin
} else if (StrEqual(key, "root")) { } else if (StrEqual(key, "root")) {
flag = Admin_Root; flag = Admin_Root;
} else { } else {
/* :TODO: log error */ LogLevelError("Unrecognized flag type: %s", key);
} }
g_FlagLetters[chr] = flag; g_FlagLetters[chr] = flag;
@ -136,10 +147,17 @@ RefreshLevels()
/* Set states */ /* Set states */
g_LevelState = LEVEL_STATE_NONE; g_LevelState = LEVEL_STATE_NONE;
g_LoggedFileName = false; g_LoggedFileName = false;
g_ErrorCount = 0;
new SMCError:err = SMC_ParseFile(g_hLevelParser, path); new SMCError:err = SMC_ParseFile(g_hLevelParser, path);
if (err != SMCError_Okay) if (err != SMCError_Okay)
{ {
/* :TODO: log error */ decl String:buffer[64];
if (SMC_GetErrorString(err, buffer, sizeof(buffer)))
{
LogLevelError("%s", buffer);
} else {
LogLevelError("Fatal parse error");
}
} }
} }