/// <summary> /// Creates the engine. /// </summary> /// <returns>The task.</returns> /// <param name="cartridge">Cartridge handled by this instance.</param> private async System.Threading.Tasks.Task CreateEngine(Cartridge cartridge) { if (this.engine != null) { this.DestroyEngine(); } // Get device sound and vibration this.sound = DependencyService.Get<ISound>(); this.vibration = DependencyService.Get<IVibration>(); // Get os helper var helper = DependencyService.Get<IPlatformHelper>(); this.engine = new Engine(helper); // Set all events for engine this.engine.AttributeChanged += this.OnAttributeChanged; this.engine.CommandChanged += this.OnCommandChanged; this.engine.InventoryChanged += this.OnInventoryChanged; this.engine.ZoneStateChanged += this.OnZoneStateChanged; this.engine.CartridgeCompleted += this.OnCartridgeComplete; this.engine.InputRequested += this.OnGetInput; this.engine.LogMessageRequested += this.OnLogMessage; this.engine.PlayAlertRequested += this.OnPlayAlert; this.engine.PlayMediaRequested += this.OnPlayMedia; this.engine.SaveRequested += this.OnSaveCartridge; this.engine.ShowMessageBoxRequested += this.OnShowMessageBox; this.engine.ShowScreenRequested += this.OnShowScreen; this.engine.ShowStatusTextRequested += this.OnShowStatusText; this.engine.StopSoundsRequested += this.OnStopSound; this.engine.PropertyChanged += this.OnPropertyChanged; this.engine.CartridgeCrashed += this.OnCartridgeCrashed; // Open logFile first time this.logFile = this.cartridgeTag.CreateLogFile(); this.logFile.MinimalLogLevel = this.logLevel; await System.Threading.Tasks.Task.Run(() => this.engine.Init(new FileStream(Path.Combine(App.PathCartridges, Path.GetFileName(cartridge.Filename)), FileMode.Open), cartridge)); }
/// <summary> /// Logs the message. /// </summary> /// <param name="level">Level of log message.</param> /// <param name="message">Message to log.</param> private void LogMessage(LogLevel level, string message) { if (this.logFile == null) { this.logFile = this.cartridgeTag.CreateLogFile(); this.logFile.MinimalLogLevel = this.logLevel; } if (level <= this.logLevel) { this.logFile.TryWriteLogEntry(this.logLevel, message, this.engine); } // TODO: Remove Console.WriteLine(message); }