예제 #1
0
        public void ProcessFixedUpdate(Scene scene)
        {
            var box          = scene.AllEntities.Single(e => e.HasComponent <BoxMovementComponent>());
            var mousePointer = scene.RootEntities.Single(e => e.HasComponent <MousePointerComponent>());
            var camera       = scene.AllEntities.Single(e => e.HasComponent <CameraComponent>());

            foreach (var entity in scene.AllEntities.ToList())
            {
                if (entity.HasComponent <DieFromBoxComponent>())
                {
                    var collider = entity.GetComponent <CircleColliderComponent>();
                    if (collider.IsColliding)
                    {
                        var collidedWithBox                  = collider.CollidingEntities.Contains(box);
                        var collidedWithMousePointer         = collider.CollidingEntities.Contains(mousePointer);
                        var mousePointerHasLeftButtonPressed = mousePointer.GetComponent <MousePointerComponent>().LeftButtonPressed;

                        if (collidedWithBox || (collidedWithMousePointer && mousePointerHasLeftButtonPressed))
                        {
                            _audioPlayer.PlayOnce(_assetStore.GetAsset <ISound>(AssetsIds.SfxSound));
                            entity.DestroyAfterFixedTimeStep();
                        }
                    }
                }

                if (entity.HasComponent <CloseGameOnEscapeKeyComponent>())
                {
                    var inputComponent = entity.GetComponent <InputComponent>();
                    if (inputComponent.HardwareInput.KeyboardInput.Escape)
                    {
                        _engineManager.ScheduleEngineShutdown();
                    }
                    if (inputComponent.HardwareInput.KeyboardInput.F5)
                    {
                        _sceneLoader.Save(scene, "quicksave.geisha-scene");
                    }
                    if (inputComponent.HardwareInput.KeyboardInput.F9)
                    {
                        _sceneManager.LoadScene("quicksave.geisha-scene");
                    }

                    var mouseScrollDelta = inputComponent.HardwareInput.MouseInput.ScrollDelta;
                    var scalingFactor    = 0.0001 * mouseScrollDelta;
                    //box.GetComponent<Transform2DComponent>().Scale += new Vector2(scalingFactor, scalingFactor);
                    scalingFactor = mouseScrollDelta == 0 ? 1 : mouseScrollDelta > 0 ? 10d / 11d : 11d / 10d;
                    camera.GetComponent <CameraComponent>().ViewRectangle *= scalingFactor;
                }
            }
        }
예제 #2
0
 public override void SaveDocument()
 {
     _sceneLoader.Save(_scene, _sceneFilePath);
 }