public Individual(Crowd crowd, Vector2 positionInCrowd) : base() { m_transform.Position = positionInCrowd; m_transform.ParentTransform = crowd.Transform; m_spriteTransform = new Transform(); m_jumpTransform = new PastaGameLibrary.Transform(m_spriteTransform, true); m_sprite = new PastaGameLibrary.Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("perso_foule"), m_jumpTransform); m_sprite.Origin = new Vector2(0.5f, 1.0f); m_saut = new Sequence(-1); /// ///Jump animation /// Vector2 jumpTarget = new Vector2(0, (float)(Program.Random.NextDouble() * JumpHeight * 0.5 + JumpHeight * 0.5)); float movementTime = (float)(Program.Random.NextDouble() * 0.5 * JumpMovementTime + JumpMovementTime * 0.5); MoveToStaticAction jumpMovement = new MoveToStaticAction(Program.TheGame, m_jumpTransform, jumpTarget, 1); jumpMovement.Timer.Interval = movementTime; jumpMovement.Interpolator = new PBounceInterpolation(0); m_saut.AddAction(jumpMovement); m_saut.AddAction(new DelayAction(Program.TheGame, TotalJumpTime - movementTime)); /// ///Walk animation /// m_walk = new MoveToStaticAction(Program.TheGame, m_jumpTransform, new Vector2(0, 1), -1); m_walk.Timer.Interval = (float)Program.Random.NextDouble() * WalkAnimationTime * 0.5f + WalkAnimationTime * 0.5f; m_walk.Interpolator = new BooleanInterpolation(); /// ///Throw player animation /// m_throw = new Sequence(1); float intensity = 1 - Math.Min(1, m_transform.Position.Length() * 0.02f); m_throwStretch = new ScaleToAction(Program.TheGame, m_jumpTransform, new Vector2(1.0f, 1 - intensity * 0.5f), 1); m_throwStretch.Interpolator = new PSmoothstepInterpolation(); ScaleToAction throwDestretch = new ScaleToAction(Program.TheGame, m_jumpTransform, new Vector2(1.0f, 1.0f), 1); throwDestretch.Timer.Interval = 0.1f; m_throw.AddAction(m_throwStretch); MoveToStaticAction throwMovement = new MoveToStaticAction(Program.TheGame, m_jumpTransform, Vector2.Zero, 1); throwMovement.StartPosition = new Vector2(0, -20 - 30 * intensity); throwMovement.Timer.Interval = 0.4f; throwMovement.Interpolator = new PBounceInterpolation(0, 1); m_throw.AddAction(new Concurrent(new PastaGameLibrary.Action[] { throwMovement, throwDestretch })); m_actionManager = new SingleActionManager(); }
public static void Initalise() { cutscenePlayer = new CutscenePlayer(); cutscenePlayer.Transform.PosX = -100; monster = new Monster(); crowd = new Crowd(40, 18, new Vector2(2.5f, 0.5f)); title = new Title(); DelayAction cameraDelay = new DelayAction(Program.TheGame, CameraDelay); moveToTotem = new MoveToStaticAction(Program.TheGame, Game1.GameCamera.Transform, Vector2.Zero, 1); moveToTotem.StartPosition = new Vector2(CameraMenuX, CameraMenuY); moveToTotem.Interpolator = new PSmoothstepInterpolation(); moveToTotem.Timer.Interval = TimeToFirstTotem; MethodAction moveCrowd = new MethodAction(delegate() { crowd.MoveTo(currentTotemPosition + TotemCrowdOffset, TimeToFirstTotem); }); gotoFirstTotem = new Sequence(1); gotoFirstTotem.AddAction(cameraDelay); gotoFirstTotem.AddAction(moveCrowd); gotoFirstTotem.AddAction(moveToTotem); gotoFirstTotem.AddAction(new MethodAction(delegate() { Cutscenes.ThrowPlayer(Game1.CurrentTotem); })); playerLaunch = new Sequence(1); playerLaunch.AddAction(new DelayAction(Program.TheGame, Crowd.LaunchTensionTime)); moveToAscendingPlayer = new MoveToTransform(Program.TheGame, Game1.GameCamera.Transform, new Transform(), cutscenePlayer.Transform, 1); moveToAscendingPlayer.Interpolator = new PSquareInterpolation(0.1f); moveToAscendingPlayer.RotationActive = false; playerLaunch.AddAction(moveToAscendingPlayer); readySequence = new Sequence(1); Transform end = new Transform(Game1.player.Transform, true); end.PosY = Game1.CameraOffset; moveToFallingPlayer = new MoveToTransform(Program.TheGame, Game1.GameCamera.Transform, new Transform(), end, 1); moveToFallingPlayer.Interpolator = new PSmoothstepInterpolation(); moveToFallingPlayer.RotationActive = false; readySequence.AddAction(new MethodAction(delegate() { Game1.player.GetReady(); })); readySequence.AddAction(moveToFallingPlayer); readySequence.AddAction(new MethodAction(delegate() { Game1.player.StartCountDown(); })); cameraZoom = new ScaleToAction(Program.TheGame, Game1.GameCamera.Transform, Vector2.Zero, 1); cameraZoom.Interpolator = new PSmoothstepInterpolation(); cameraZoom.Timer.Interval = 0.3f; goToPlayerOnGround = new Sequence(1); goToPlayerOnGroundMovement = new MoveToTransform(Program.TheGame, Game1.GameCamera.Transform, new Transform(), cutscenePlayer.Transform, 1); goToPlayerOnGroundMovement.Timer.Interval = 1.0f; goToPlayerOnGroundMovement.Interpolator = new PSmoothstepInterpolation(); goToPlayerOnGround.AddAction(new DelayAction(Program.TheGame, 0.5f)); goToPlayerOnGround.AddAction(goToPlayerOnGroundMovement); intro = new Sequence(1); MoveToStaticAction moveToMenu = new MoveToStaticAction(Program.TheGame, Game1.GameCamera.Transform, new Vector2(CameraMenuX, CameraMenuY), 1); moveToMenu.Timer.Interval = MoveInTime + 1.0f; intro.AddAction(moveToMenu); intro.AddAction(new MethodAction(delegate() { crowd.PushNewGuy(); })); intro.AddAction(new DelayAction(Program.TheGame, 1.5f)); intro.AddAction(new MethodAction(delegate() { StartMainMenu(); })); goToCliff = new Sequence(1); goToCliff.AddAction(moveToTotem); goToCliff.AddAction(new MethodAction(delegate() { cutscenePlayer.GiveSouls(Game1.TotalScore); monster.OpenMouth(); })); auraTexture = TextureLibrary.GetSpriteSheet("soul_temp"); soulTexture = TextureLibrary.GetSpriteSheet("soul"); //moveToAscendingPlayer = new MoveToTransform(Program.TheGame, Game1.GameCamera.Transform, new Transform(), cutscenePlayer.Transform, 1); }