Ejemplo n.º 1
0
		/// <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));
		}
Ejemplo n.º 2
0
		/// <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);
		}