/// <summary> /// Initializes a new instance of the <see cref="GoogleRepository"/> class. /// </summary> /// <param name="logger">The logger.</param> /// <exception cref="System.ArgumentNullException">logger is null</exception> public GoogleRepository(CrossCutting.ILoggerService logger) { if (logger == null) { throw new ArgumentNullException("logger"); } this.logger = logger; }
/// <summary> /// Initializes a new instance of the <see cref="DataSettings"/> class. /// </summary> /// <param name="logger">The logger.</param> /// <exception cref="System.ArgumentNullException">logger is null</exception> public DataSettings(CrossCutting.ILoggerService logger) { if (logger == null) { throw new ArgumentNullException("logger"); } this.logger = logger; this.settingFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "CollectionneurRecettes.Addon\\Settings.xml"); }
/// <summary> /// Initializes a new instance of the <see cref="CollectorReceiptRepository"/> class. /// </summary> /// <param name="database">The h2 database.</param> /// <param name="logger">The logger.</param> /// <exception cref="System.ArgumentNullException"> /// h2Database /// or /// logger /// </exception> public CollectorReceiptRepository(Interfaces.IH2Database database, CrossCutting.ILoggerService logger) { if (database == null) { throw new ArgumentNullException("h2Database"); } if (logger == null) { throw new ArgumentNullException("logger"); } this.database = database; this.logger = logger; }
public Vector3 Resolve(CrossCutting.Entities.EntityPlayer entity) { List<AxisAlignedBoundingBox> collidingObjects; Vector3 response = entity.Position; Vector3 v = entity.Velocity; AxisAlignedBoundingBox AABB = entity.AABB; Vector3 testZ = entity.Position; Vector3 testX = entity.Position; HandleZ(ref testZ, ref v); HandleX(ref testX, ref v); bool zFirst = Math.Abs(response.Z - testZ.Z) > Math.Abs(response.X - testX.X); if (zFirst) { response = testZ; HandleX(ref response, ref v); } else { response = testX; HandleZ(ref response, ref v); } //HandleY entity.onGround = false; collidingObjects = GetCollidingObjects(new Vector3(response.X, response.Y + v.Y, response.Z)); if (collidingObjects.Count > 0) { if (v.Y < 0) { response.Y = collidingObjects.Max(o => o.Max.Y) - AABB.Min.Y; entity.onGround = true; } v.Y = 0; } else response.Y += v.Y; entity.Velocity = v; return response; }
public Vector3 Resolve(CrossCutting.Entities.EntityPlayer entity) { World theWorld = World.Instance; Vector3 pos = entity.Position; // already collided? - then bubble up int x = MathLibrary.FloorToWorldGrid(pos.X); int y = MathLibrary.FloorToWorldGrid(pos.Y); int z = MathLibrary.FloorToWorldGrid(pos.Z); if (Block.FromId(theWorld.GetBlock(x, y, z)).IsOpaque) { // allready collided entity.Velocity = new Vector3(); if (!Block.FromId(theWorld.GetBlock(x - 1, y, z)).IsOpaque) return pos + new Vector3(-1, 0, 0); if (!Block.FromId(theWorld.GetBlock(x + 1, y, z)).IsOpaque) return pos + new Vector3(1, 0, 0); if (!Block.FromId(theWorld.GetBlock(x, y, z-1)).IsOpaque) return pos + new Vector3(0, 0, -1); if (!Block.FromId(theWorld.GetBlock(x, y, z+1)).IsOpaque) return pos + new Vector3(0, 0, 1); if (!Block.FromId(theWorld.GetBlock(x, y+1, z)).IsOpaque) return pos + new Vector3(0, 1, 0); if (!Block.FromId(theWorld.GetBlock(x, y-1, z)).IsOpaque) return pos + new Vector3(0, -1, 0); // could not be resolved .. entity should be killed! throw new NotImplementedException("Kill entity in this case!"); } Vector3 v = entity.Velocity; Vector3 destpos = pos + v; x = MathLibrary.FloorToWorldGrid(destpos.X); y = MathLibrary.FloorToWorldGrid(destpos.Y); z = MathLibrary.FloorToWorldGrid(destpos.Z); Block block = Block.FromId(theWorld.GetBlock(x, y, z)); if (block.IsOpaque) { entity.Velocity = -entity.Velocity / 2f; v = new Vector3(); } return pos+v; }
/// <summary> /// Initializes a new instance of the <see cref="GoogleManager"/> class. /// </summary> /// <param name="logger">The logger.</param> /// <param name="googleRepository">The google repository.</param> /// <param name="settingsManager">The settings manager.</param> /// <exception cref="System.ArgumentNullException"> /// googleRepository /// or /// settingsManager /// or /// logger /// </exception> public GoogleManager(CrossCutting.ILoggerService logger, Interfaces.IGoogleRepository googleRepository, ISettingsManager settingsManager) { if (googleRepository == null) { throw new ArgumentNullException("googleRepository"); } if (settingsManager == null) { throw new ArgumentNullException("settingsManager"); } if (logger == null) { throw new ArgumentNullException("logger"); } this.googleRepository = googleRepository; this.settingsManager = settingsManager; this.logger = logger; }
public MainWindowViewModel( CrossCutting.ILoggerService logger, Interfaces.ICollectorReceiptManager collectorReceiptManager, Interfaces.ISettingsManager settingsManager, Interfaces.IGoogleManager googleManager, Services.IDispatcherService dispatcherService, IEventAggregator eventAggregator) { if (settingsManager == null) { throw new ArgumentNullException("settingsManager"); } if (dispatcherService == null) { throw new ArgumentNullException("dispatcherService"); } if (collectorReceiptManager == null) { throw new ArgumentNullException("collectorReceiptManager"); } if (eventAggregator == null) { throw new ArgumentNullException("eventAggregator"); } if (googleManager == null) { throw new ArgumentNullException("googleManager"); } if (logger == null) { throw new ArgumentNullException("logger"); } this.exitCommand = new DelegateCommand(new Action(() => { System.Windows.Application.Current.Shutdown(); })); this.showParametersCommand = new DelegateCommand(new Action(() => { var regionManager = ServiceLocator.Current.GetInstance<Prism.Regions.IRegionManager>(); regionManager.RequestNavigate("AppBarRegion", new Uri("AppBarParametersView", UriKind.Relative)); regionManager.RequestNavigate("MainRegion", new Uri("ParametersView", UriKind.Relative)); this.eventAggregator.GetEvent<Events.ActivateWindowEvent>().Publish(null); })); this.SyncMenuCommand = new DelegateCommand(() => { var regionManager = ServiceLocator.Current.GetInstance<Prism.Regions.IRegionManager>(); //regionManager.RequestNavigate("AppBarRegion", new Uri("AppBarParametersView", UriKind.Relative)); regionManager.RequestNavigate("MainRegion", new Uri("SyncMenuView", UriKind.Relative)); this.eventAggregator.GetEvent<Events.ActivateWindowEvent>().Publish(null); this.eventAggregator.GetEvent<Events.StartSyncEvent>().Publish(null); }); this.ShowAboutCommand = new DelegateCommand(() => { var regionManager = ServiceLocator.Current.GetInstance<Prism.Regions.IRegionManager>(); regionManager.RequestNavigate("MainRegion", new Uri("AboutView", UriKind.Relative)); this.eventAggregator.GetEvent<Events.ActivateWindowEvent>().Publish(null); }); this.logger = logger; this.eventAggregator = eventAggregator; this.collectorReceiptManager = collectorReceiptManager; this.googleManager = googleManager; this.settingsManager = settingsManager; this.dispatcherService = dispatcherService; this.LoadCommand = new DelegateCommand(() => { if (string.IsNullOrEmpty(this.settingsManager.LoadSettings().CollectionneurDabasePath)) { this.logger.LogInformation("Application settings not set, show parameters window"); this.dispatcherService.Invoke(() => { this.ShowParametersCommand.Execute(); }); } this.checkAppRunningTimer = new Timer((state) => { if (this.collectorReceiptManager.CanSync() == Entity.CanNotSyncReason.None) { if (this.collectorReceiptManager.IsCollectorReceiptAppRunning()) { if (!this.isAppCollectorAlreadyRunning) { // the app is not running before, so show notification this.eventAggregator.GetEvent<Events.DisplayNotificationMessageEvent>().Publish("Application collectionneur de recettes détectées, en attente de fermeture pour synchronisation"); this.isAppCollectorAlreadyRunning = true; } } else { if (this.isAppCollectorAlreadyRunning) { // the app was running, so launch sync // TODO: launch sync var regionManager = ServiceLocator.Current.GetInstance<Prism.Regions.IRegionManager>(); regionManager.RequestNavigate("MainRegion", new Uri("SyncMenuView", UriKind.Relative)); this.eventAggregator.GetEvent<Events.StartSyncEvent>().Publish(null); this.eventAggregator.GetEvent<Events.DisplayNotificationMessageEvent>().Publish("Application collectionneur de recettes fermée, début de la synchronisation"); this.isAppCollectorAlreadyRunning = false; } } } this.checkAppRunningTimer.Change(2000, Timeout.Infinite); }, null, 1000, Timeout.Infinite); this.dispatcherService.Invoke(() => { if (!this.googleManager.SecretFileExists()) { this.logger.LogWarning("Google json secret file doesn't exists, application will close"); this.eventAggregator.GetEvent<Events.DisplayErrorMessageEvent>().Publish(new Events.DisplayErrorMessageEventArgs() { Message = "Veuillez créer votre fichier client_secrets.json, placez le dans " + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\CollectionneurRecettes.Addon\n et redémarrez l'application", CloseApplication = true }); } }); }); }