finished level reading
authorDavid Anderson <dvander@alliedmods.net>
Mon Jan 29 23:09:11 2007 +0000 (2007-01-29)
changeset 4144506e613c97a
parent 413 02804e51c5a8
child 415 a6c6f395850c
finished level reading
plugins/admin-base/admin-base.sp
plugins/admin-base/admin-levels.sp
     1.1 --- a/plugins/admin-base/admin-base.sp	Mon Jan 29 22:37:37 2007 +0000
     1.2 +++ b/plugins/admin-base/admin-base.sp	Mon Jan 29 23:09:11 2007 +0000
     1.3 @@ -13,6 +13,7 @@
     1.4  /** Various globals */
     1.5  new AdminFlag:g_FlagLetters[26];			/* Maps the flag letters */		
     1.6  new bool:g_LoggedFileName = false;			/* Whether or not the file name has been logged */
     1.7 +new g_ErrorCount = 0;
     1.8  
     1.9  public OnRebuildAdminCache(cache_flags)
    1.10  {
     2.1 --- a/plugins/admin-base/admin-levels.sp	Mon Jan 29 22:37:37 2007 +0000
     2.2 +++ b/plugins/admin-base/admin-levels.sp	Mon Jan 29 23:09:11 2007 +0000
     2.3 @@ -5,6 +5,8 @@
     2.4  new Handle:g_hLevelParser = INVALID_HANDLE;
     2.5  new g_LevelState = LEVEL_STATE_NONE;
     2.6  
     2.7 +/* :TODO: log line numbers? */
     2.8 +
     2.9  InitializeLevelParser()
    2.10  {
    2.11  	if (g_hLevelParser == INVALID_HANDLE)
    2.12 @@ -35,6 +37,21 @@
    2.13  	g_FlagLetters['z'-'a'] = Admin_Root;
    2.14  }
    2.15  
    2.16 +stock LogLevelError(const String:format[], {Handle,String,Float,_}:...)
    2.17 +{
    2.18 +	decl String:buffer[512];
    2.19 +	
    2.20 +	if (!g_LoggedFileName)
    2.21 +	{
    2.22 +		LogError("Error(s) detected parsing admin_level.cfg:");
    2.23 +		g_LoggedFileName = true;
    2.24 +	}
    2.25 +	
    2.26 +	VFormat(buffer, sizeof(buffer), format, 2);
    2.27 +	
    2.28 +	LogError(" (%d) %s", ++g_ErrorCount, buffer);
    2.29 +}
    2.30 +
    2.31  public SMCResult:ReadLevels_NewSection(Handle:smc, const String:name[], bool:opt_quotes)
    2.32  {
    2.33  	if (g_LevelState == LEVEL_STATE_NONE)
    2.34 @@ -42,18 +59,12 @@
    2.35  		if (StrEqual(name, "Levels"))
    2.36  		{
    2.37  			g_LevelState = LEVEL_STATE_LEVELS;
    2.38 -		} else {
    2.39 -			/* :TODO: log error */
    2.40  		}
    2.41  	} else if (g_LevelState == LEVEL_STATE_LEVELS) {
    2.42  		if (StrEqual(name, "Flags"))
    2.43  		{
    2.44  			g_LevelState = LEVEL_STATE_FLAGS;
    2.45 -		} else {
    2.46 -			/* :TODO: log error */
    2.47  		}
    2.48 -	} else {
    2.49 -		/* :TODO: Log error */
    2.50  	}
    2.51  	
    2.52  	return SMCParse_Continue;
    2.53 @@ -67,7 +78,7 @@
    2.54  		
    2.55  		if (chr < 'a' || chr > 'z')
    2.56  		{
    2.57 -			/* :TODO: log error */
    2.58 +			LogLevelError("Unrecognized character: \"%s\"", value);
    2.59  			return SMCParse_Continue;
    2.60  		}
    2.61  		
    2.62 @@ -105,7 +116,7 @@
    2.63  		} else if (StrEqual(key, "root")) {
    2.64  			flag = Admin_Root;
    2.65  		} else {
    2.66 -			/* :TODO: log error */
    2.67 +			LogLevelError("Unrecognized flag type: %s", key);
    2.68  		}
    2.69  		
    2.70  		g_FlagLetters[chr] = flag;
    2.71 @@ -136,10 +147,17 @@
    2.72  	/* Set states */
    2.73  	g_LevelState = LEVEL_STATE_NONE;
    2.74  	g_LoggedFileName = false;
    2.75 +	g_ErrorCount = 0;
    2.76  		
    2.77  	new SMCError:err = SMC_ParseFile(g_hLevelParser, path);
    2.78  	if (err != SMCError_Okay)
    2.79  	{
    2.80 -		/* :TODO: log error */
    2.81 +		decl String:buffer[64];
    2.82 +		if (SMC_GetErrorString(err, buffer, sizeof(buffer)))
    2.83 +		{
    2.84 +			LogLevelError("%s", buffer);
    2.85 +		} else {
    2.86 +			LogLevelError("Fatal parse error");
    2.87 +		}
    2.88  	}
    2.89  }