/// <summary>Creates a new Hovertank game.</summary> /// <param name="sys">The system.</param> public Hovertank(Sys sys) { _sfxPlayer = sys.SfxPlayer; _display = new Display(); _picCache = new PicCache(NUMCHUNKS); _sys = sys; // as: string replacements _strings = sys.Strings; _strings.Initialise(this); // If the config file GAME.HOV exists use it for game modifications string modFileName = "GAME." + EXTENSION; if(sys.FileExists(modFileName)) { Config config = new Config(Encoding.ASCII); config.Read(new MemoryStream(sys.FileReadAllBytes(modFileName))); if(string.CompareOrdinal(config.ID, "Hovertank3D.Game") == 0) { // as: string replacements for(int i = 0; i < Strings.Identifiers.Length; i++) { string identifier = Strings.Identifiers[i]; string replacementText = config.GetString(identifier, null); if(replacementText != null) _strings[i] = replacementText; } // Level time limits for(int i = 0; i < 20; i++) { levmin[i] = (short) config.GetInt32("levmin" + i, 0, 9, levmin[i]); levsec[i] = (short) config.GetInt32("levsec" + i, 0, 59, levsec[i]); } // Warp colors for(int i = 0; i < cyclecolors.Length; i++) cyclecolors[i] = (short) config.GetInt32("cyclecolors" + i, 0, 15, cyclecolors[i]); barColor = (byte) config.GetInt32("barColor", 0, 15, 15); } else { _sys.Log("Unexpected configuration id '" + config.ID + "'!"); } } HovDrawInitialise(); HovLoopInitialise(); }
/// <summary>Creates a new GameConfig.</summary> public GameConfig() { _config = new Config(Encoding.ASCII); }
/// <summary>Runs the parser.</summary> /// <param name="config">The config.</param> /// <param name="stream">The stream containing the configuration data.</param> public void Run(Config config, Stream stream) { _config = config; _streamReader = new StreamReader(stream, config._encoding); _lineNumber = 0; if(!ReadLine()) throw new Exception("Unexpected end of stream, expecting configuration version identifier!"); config._id = _line; config._options.Clear(); _optionValue = new StringBuilder(); try { while(ReadLine()) { if(_line.Length == 0) continue; // Empty line // Comment if(_line.StartsWith("//", StringComparison.Ordinal)) continue; _optionIdentifier = ParseIdentifier(); string value = ParseValue(); _config.SetString(_optionIdentifier, value); } } catch(Exception ex) { throw new Exception(ex.Message + ", at line " + _lineNumber, ex); } }