Beispiel #1
0
        private void ReactToShipDying(Ship ship)
        {
            // to prevent collisions, etc
            ShipList.Remove(ship);
            DeadShipList.Add(ship);

            ship.Visible = false;
            var randomSpawnPoint = GetSpawnPoint();

            var controller = CameraControllerList.First(item => item.TargetEntity == ship);

            controller.FollowImmediately = false;

            this.Call(() =>
            {
                controller.Tween("X", to: randomSpawnPoint.X,
                                 during: CameraController.TimeToInterpolateToNewSpawnLocation,
                                 interpolation: FlatRedBall.Glue.StateInterpolation.InterpolationType.Quadratic,
                                 easing: FlatRedBall.Glue.StateInterpolation.Easing.InOut);

                controller.Tween("Y", to: randomSpawnPoint.Y,
                                 during: CameraController.TimeToInterpolateToNewSpawnLocation,
                                 interpolation: FlatRedBall.Glue.StateInterpolation.InterpolationType.Quadratic,
                                 easing: FlatRedBall.Glue.StateInterpolation.Easing.InOut);
            })
            .After(CameraController.TimeToWatchSinkingShip);

            this.Call(() =>
            {
                ship.ResetHealth();
                ship.X        = randomSpawnPoint.X;
                ship.Y        = randomSpawnPoint.Y;
                ship.Velocity = Vector3.Zero;

                DeadShipList.Remove(ship);
                ShipList.Add(ship);
                controller.FollowImmediately = true;


                ship.Visible = true;
            })
            .After(CameraController.TimeToWatchSinkingShip + CameraController.TimeToInterpolateToNewSpawnLocation +
                   CameraController.TimeToLookAtNewSpawnPointBeforeSpawning);
        }