public static void SetDefaultConfigFromFile() { string file = @"scripts\GlowingBrakes\Configs\defaultConfig.xml"; if (File.Exists(file)) { XmlSerializer serializer = new XmlSerializer(typeof(VehicleConfig)); try { FileStream fs = new FileStream(file, FileMode.Open); XmlReader reader = new XmlTextReader(fs); if (serializer.CanDeserialize(reader)) { // why do i need to cast if it should already be able to figure out the return type loadedDefaultConfig = (VehicleConfig)serializer.Deserialize(reader); Logger.Log(Logger.Level.INFO, "Using custom defaultConfig.xml"); } reader.Close(); fs.Close(); } catch (Exception e) { Logger.Log(Logger.Level.ERROR, $"{file} Read error: {e.Message}"); Logger.Log(Logger.Level.WARN, "Using hardcoded defaults"); } } else { Logger.Log(Logger.Level.INFO, "No defaultConfig.xml found - using hardcoded defaults"); Logger.Log(Logger.Level.INFO, "Default config written to defaultConfig.xml, check it out!"); Utility.WriteDefaultsFile(); } }
public static void WriteDefaultsFile() { Logger.Log(Logger.Level.INFO, "Writing a default config."); VehicleConfig cfg = new VehicleConfig(); XmlSerializer serializer = new XmlSerializer(typeof(VehicleConfig)); TextWriter writer = new StreamWriter(@"scripts\GlowingBrakes\Configs\defaultConfig.xml"); serializer.Serialize(writer, cfg); writer.Close(); }
public GlowingBrakesMain() { Logger.Clear(); Logger.Log(Logger.Level.INFO, $"Glowing Brakes {Utility.Version}"); Logger.Log(Logger.Level.INFO, $"Game version {Game.Version}"); _glowVehicles = new List <GlowVehicle>(); _vehicleConfigs = new List <VehicleConfig>(); _timer = new Timer(500); Tick += OnTick; Aborted += OnAbort; VehicleConfig.SetDefaultConfigFromFile(); ReadConfigs(); VehicleExtensions.InitializeOffsets(GlowingBrakes.Settings.Get()); }
// config is passed as reference, right? public GlowVehicle(Vehicle vehicle, List <VehicleConfig> configs) { bool found = false; foreach (var config in configs) { if (Game.GenerateHash(config.Model) == vehicle.Model) { _config = config; found = true; break; } } if (!found) { _config = new VehicleConfig(); } _vehicle = vehicle; CurrVelocity = Function.Call <Vector3>(Hash.GET_ENTITY_SPEED_VECTOR, Vehicle, true); LastVelocity = CurrVelocity; Acceleration = (CurrVelocity - LastVelocity) / Game.LastFrameTime; }