コード例 #1
0
 public PauseScreen()
 {
     isGamePaused = false;
     m_sprite     = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("pause"), m_transform);
     m_sprite.Transform.Position = new Vector2(80, 72);
     m_sprite.Transform.Scale    = new Vector2(0);
 }
コード例 #2
0
 public static void InitialiseIndexes()
 {
     particleTextures[0] = TextureLibrary.GetSpriteSheet("totem_particle_1");
     particleTextures[1] = TextureLibrary.GetSpriteSheet("totem_particle_2");
     particleTextures[2] = TextureLibrary.GetSpriteSheet("totem_particle_3");
     particleTextures[3] = TextureLibrary.GetSpriteSheet("totem_particle_4");
 }
コード例 #3
0
        public MapBorder()
        {
            m_actionManager = new SingleActionManager();

            m_sprite             = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("score_background"), m_transform);
            m_transform.Position = new Vector2(168, 72);

            pixelPlayer                 = new Sprite(Program.TheGame, TextureLibrary.PixelSpriteSheet, new Transform(m_transform, true));
            pixelPlayer.Colour          = new Vector4((float)255 / (float)255, (float)251 / (float)255, (float)240 / (float)255, 1);
            pixelPlayer.Transform.PosX  = -4;
            pixelPlayer.Transform.Scale = new Vector2(2, 2);

            pixelTotem                 = new Sprite(Program.TheGame, TextureLibrary.PixelSpriteSheet, new Transform(m_transform, true));
            pixelTotem.Colour          = new Vector4((float)255 / (float)255, (float)251 / (float)255, (float)240 / (float)255, 1);
            pixelTotem.Origin          = new Vector2(0.5f, 1);
            pixelTotem.Transform.PosY  = m_mapFloor;
            pixelTotem.Transform.Scale = new Vector2(2, m_mapCeiling);

            m_slideToScreen = new MoveToStaticAction(Program.TheGame, m_transform, positionOnScreen, 1);
            m_slideToScreen.Interpolator   = new PSmoothstepInterpolation();
            m_slideToScreen.Timer.Interval = durationSlide;

            m_slideOutOfScreen = new MoveToStaticAction(Program.TheGame, m_transform, positionOutOfScreen, 1);
            m_slideOutOfScreen.Interpolator   = new PSmoothstepInterpolation();
            m_slideOutOfScreen.StartPosition  = positionOnScreen;
            m_slideOutOfScreen.Timer.Interval = durationSlide;
        }
コード例 #4
0
ファイル: Soul.cs プロジェクト: TastyWithPasta/GameboyJam2013
        // TODO NOTE
        // Si besoin de créer des particules, il faut un générateur de particules ( ParticleGenerator<ClasseDeParticle> )

        /*
         * "J'ai un système de particules statique deans Game1, Il te faut un générateur de particules pour créer des particules"
         */

        public Soul(Vector2 initialPosition, Player player)
        {
            //m_transform.ParentTransform = player.Transform;
            m_playerInstance = player;
            m_sprite         = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("soul"), m_transform);
            Vector2 explodePosition;

            if (player.IsToLeft)
            {
                explodePosition.X = player.Transform.PosX + Program.Random.Next(-72, -20);
            }
            else
            {
                explodePosition.X = player.Transform.PosX + Program.Random.Next(20, 73);
            }
            explodePosition.Y = Program.Random.Next((int)player.Transform.PosY + 50, (int)(player.Transform.PosY + 50 + ExplosionBreadth * m_playerInstance.SpeedMultiplier));

            MoveToStaticAction moveToExplosionPoint = new MoveToStaticAction(Program.TheGame, m_transform, explodePosition, 1);

            moveToExplosionPoint.StartPosition  = initialPosition;
            moveToExplosionPoint.Timer.Interval = BaseExplosionDuration / player.SpeedMultiplier;
            moveToExplosionPoint.Interpolator   = new PSmoothstepInterpolation();
            m_moveToPlayer = new MoveToStaticAction(Program.TheGame, m_transform, explodePosition, 1);
            m_moveToPlayer.StartPosition  = explodePosition;
            m_moveToPlayer.Interpolator   = new PSquareInterpolation(1);
            m_moveToPlayer.Timer.Interval = MoveToPlayerTime;


            m_animation = new Sequence(1);
            m_animation.AddAction(moveToExplosionPoint);
            m_animation.AddAction(new DelayAction(Program.TheGame, (float)(Program.Random.NextDouble() * 0.5f + 0.1f) / m_playerInstance.SpeedMultiplier));
            m_animation.AddAction(m_moveToPlayer);
            m_animation.Start();
        }
コード例 #5
0
        public override void Update()
        {
            if (activeTimer)
            {
                timer = (float)Program.TheGame.ElapsedTime;

                //timer += (float)gameTime.ElapsedGameTime.TotalMilliseconds;
                timeCounter -= timer;

                if (timeCounter < 1.0f)
                {
                    m_sprite = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("counter_2"), m_transform);
                }

                if (timeCounter < 0.5f)
                {
                    m_sprite = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("counter_1"), m_transform);
                }

                if (timeCounter < 0)
                {
                    activeTimer = false;
                    m_sprite.Transform.Scale = new Vector2(0);
                    countdownHasFinished     = true;
                    Game1.scoreBorder.Slide(true);
                    Game1.mapBorder.Slide(true);

                    OnFinish();
                }
            }
        }
コード例 #6
0
        public void SetCounter(int combo, bool triggerAnimation)
        {
            if (combo == 0)
            {
                m_transform.SclX = 0;
                return;
            }

            if (combo > Game1.scoreBorder.ScoreMultiplierMax)
            {
                combo = Game1.scoreBorder.ScoreMultiplierMax;
            }

            string comboIndex = "multiplier_x" + player.ComboCount.ToString();

            // TODO Limiter le counter par rapport au sprite
            //
            if (combo > Game1.scoreBorder.ScoreMultiplierMax)
            {
                m_sprite.SpriteSheet = TextureLibrary.GetSpriteSheet("multiplier_x" + Game1.scoreBorder.ScoreMultiplierMax);
            }
            else
            {
                m_sprite.SpriteSheet = TextureLibrary.GetSpriteSheet(comboIndex);
            }

            if (triggerAnimation)
            {
                m_bump.StartScale = new Vector2(2.1f, 2.1f);
                m_bump.Restart();
            }
        }
コード例 #7
0
        public void OnHit()
        {
            Transform transform    = new Transform(m_transform, true);
            Sprite    impactSprite = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("shuriken_impact"), transform);

            transform.Position  = m_shurikenBounds.GetRandomPoint(Globals.Random) - m_transform.PositionGlobal;
            transform.Direction = m_helper.GetAngle(m_shurikenBounds.Transform, transform);
            //transform.Direction += Globals.Random.NextDouble() - 0.5;

            Transform impactEffectTransform = new Transform(transform);

            impactEffectTransform.ScaleUniform = 6;
            impactEffectTransform.Direction   += 0.5f;
            m_hitParticles.AddParticle(new ImpactEffect(impactEffectTransform, ImpactTexture, 0.15f));

            double distance = m_helper.GetDistance(m_shurikenBounds.Transform.PositionGlobal, transform.PositionGlobal);

            transform.SclX = (float)(distance / m_shurikenBounds.Radius) + 0.2f;
            transform.SclY = 1 + (float)(Globals.Random.NextDouble() * 0.5);

            if (currentIndex == m_impacts.Length)
            {
                currentIndex = 0;
            }
            m_impacts[currentIndex] = impactSprite;
            currentIndex++;
        }
コード例 #8
0
        public MenuScreen()
        {
            isActive          = false;
            isHidden          = true;
            canLauchChallenge = false;

            menuSound = SoundEffectLibrary.Get("cursor").CreateInstance();

            m_sprite = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("menu_start_bg"), m_transform);
            m_sprite.Transform.Position = outPos;
            arrow = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("arrow"), new Transform(m_transform, true));

            moveTo = new MoveToStaticAction(Program.TheGame, m_transform, inPos, 1);
            moveTo.StartPosition  = new Vector2(80, 200);
            moveTo.Interpolator   = new PSmoothstepInterpolation();
            moveTo.Timer.Interval = 0.5f;

            moveOut = new MoveToStaticAction(Program.TheGame, m_transform, outPos, 1);
            moveOut.StartPosition  = inPos;
            moveOut.Interpolator   = new PSmoothstepInterpolation();
            moveOut.Timer.Interval = 0.5f;

            choice          = MenuState.START;
            challengeChoice = ChallengeState.CHALL_1;
        }
コード例 #9
0
 public PowerUp(int index, bool isToLeft)
 {
     indexTotemToPlacePowerUp = index;
     m_sprite      = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("power_up"), m_transform);
     isPickedUp    = false;
     this.isToLeft = isToLeft;
 }
コード例 #10
0
 public Bg_Cloud_Long(int depth)
     : base(TextureLibrary.GetSpriteSheet("bg_cloudlong"), depth)
 {
     //_placementOffset = new Vector2(100, 24);
     m_sprite.Alpha    = 0.2f;
     m_placementJitter = new Vector2(600, 100);
     Transform.Scale   = new Vector2(2.0f, 2.0f);
 }
コード例 #11
0
 public Prop(string textureName)
     : base()
 {
     m_sprite = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet(textureName), new Transform(m_transform, true));
     m_sprite.Transform.Direction = Math.PI * 10;
     Physics          = new PhysicsComponent(Program.TheGame, m_sprite.Transform);
     Physics.OnBounce = delegate() { IsVisible = false; };
 }
コード例 #12
0
 public void resetCountdown()
 {
     timer                = 0;
     timeCounter          = TimerMaxValue;
     activeTimer          = false;
     countdownHasFinished = false;
     m_sprite             = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("counter_3"), m_transform);
 }
コード例 #13
0
 public Countdown()
 {
     timer                       = 0;
     activeTimer                 = false;
     countdownHasFinished        = false;
     m_sprite                    = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("counter_3"), m_transform);
     m_sprite.Transform.Position = new Vector2(Game1.GameboyWidth / 2, Game1.GameboyHeight / 2);
     m_sprite.Transform.Scale    = new Vector2();
 }
コード例 #14
0
 public void ShowMenu()
 {
     choice = MenuState.START;
     actionManager.StartNew(moveTo);
     isActive = true;
     isHidden = false;
     m_transform.ScaleUniform = 1.0f;
     m_sprite.SpriteSheet     = TextureLibrary.GetSpriteSheet("menu_start_bg");
     m_transform.Position     = outPos;
 }
コード例 #15
0
        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();
        }
コード例 #16
0
        public Shuriken() : base()
        {
            m_attack          = new AttackComponent(1.0f, 0.1f);
            m_sprite          = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("atk_shuriken", 1, 5), m_transform);
            m_sprite.Origin   = new Vector2(0.5f, 0.0f);
            m_transform.Scale = new Vector2(3.0f, 3.0f);
            m_animation       = new SpriteSheetAnimation(m_sprite, 0, 4, 0.1f, 1);
            m_pointCollider   = new PointCollider(m_attack, Transform);

            World.UL_Global.Add(this, 0);
            World.DL_Foreground.Add(this, 0);
        }
コード例 #17
0
        public static void Initialise(InsoGame insoGame)
        {
            theGame = insoGame;



            Backgrounds = new BackgroundObjectLibrary();
            TextureLibrary.Initialise(theGame.GraphicsDevice);
            debugFont = insoGame.Content.Load <SpriteFont>("Spritefonts/debug");

            EarthTile.GroundSectionTextures = new SpriteSheet[]
            {
                TextureLibrary.GetSpriteSheet("section"),
            };

            ShurikenReceiver.ImpactTexture = TextureLibrary.GetSpriteSheet("shuriken_impacteffect", 1, 4);

            //Destructible.MiniFireTexture = TextureLibrary.GetSpriteSheet("minifire", 1, 4);

            //FireworkSpark.SparkTexture = InsoGame.Pixel;
            //FireworkBlast.ParticleTextures = new SpriteSheet[] {
            //    TextureLibrary.GetSpriteSheet("firework_blastp"),
            //    TextureLibrary.GetSpriteSheet("firework_blastp_2"),
            //    TextureLibrary.GetSpriteSheet("firework_blastp_3"),
            //    TextureLibrary.GetSpriteSheet("firework_blastp_4"),
            //    TextureLibrary.GetSpriteSheet("firework_blastp_5"),
            //};
            //FireworkBlastParticle.BackgroundTexture = TextureLibrary.GetSpriteSheet("firework_blastp_b");
            //FireworkBlast.HaloTexture = TextureLibrary.GetSpriteSheet("firework_halo");
            //PointDigit.IndicatorTexture = TextureLibrary.GetSpriteSheet("counter_vertical");
            //House.GroundTexture = TextureLibrary.GetSpriteSheet("section_1");
            //Tpl_Enemy.DefaultThumbnail = TextureLibrary.GetSpriteSheet("thb_default");
            //BurnSmoke.SmokeTexture = TextureLibrary.GetSpriteSheet("smoke1");
            //Confetti.ConfettiTexture = TextureLibrary.GetSpriteSheet("confetti", 1, 4);
            Coin.CoinTextures = new SpriteSheet[]
            {
                TextureLibrary.GetSpriteSheet("coin_copper", 1, 6),
                TextureLibrary.GetSpriteSheet("coin_silver", 1, 6),
                TextureLibrary.GetSpriteSheet("coin_gold", 1, 6),
            };
            //StackCoin.StackCoinTextures = new Texture2D[]
            //{
            //    TextureLibrary.GetSpriteSheet("coin_copper_pile"),
            //    TextureLibrary.GetSpriteSheet("coin_silver_pile"),
            //    TextureLibrary.GetSpriteSheet("coin_gold_pile"),
            //};
            //Ts_BaseZombie.ZombieTombStoneTextures = new Texture2D[]
            //{
            //    TextureLibrary.GetSpriteSheet("ts_bz_1"),
            //    TextureLibrary.GetSpriteSheet("ts_bz_2"),
            //};
        }
コード例 #18
0
 public Title()
     : base()
 {
     m_sprite    = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("titre_anime", 4, 1), m_transform);
     m_animation = new SpriteSheetAnimation(m_sprite, 0, 3, 1.0f, -1);
     m_animation.Start();
     m_physics             = new PhysicsComponent(Program.TheGame, m_transform);
     m_physics.GroundLevel = (int)TitleY;
     m_physics.Mass        = 4;
     m_moveTo = new MoveToStaticAction(Program.TheGame, m_transform, new Vector2(TitleX, -100), 1);
     m_moveTo.Interpolator   = new PSmoothstepInterpolation();
     m_moveTo.Timer.Interval = 0.4f;
     m_transform.Position    = new Vector2(TitleX, -100);
 }
コード例 #19
0
        public static void Initialise()
        {
            s_transform    = new Transform();
            Backpackers[0] = new Backpacker(TextureLibrary.GetSpriteSheet("backpacker_0", 1, 8), 0);
            Backpackers[1] = new Backpacker(TextureLibrary.GetSpriteSheet("backpacker_1", 1, 8), 1);
            Backpackers[2] = new Backpacker(TextureLibrary.GetSpriteSheet("backpacker_2", 1, 8), 2);

            for (int i = 0; i < Backpackers.Length; ++i)
            {
                World.DL_Backpackers.Add(Backpackers[i], 0);
                World.UL_Global.Add(Backpackers[i], 0);
            }

            InitialiseMovingOutAnimation();
        }
コード例 #20
0
        public ComboCounter(Player player)
        {
            m_sprite = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("multiplier_x1"), m_transform);
            m_sprite.Transform.Position = new Vector2(Game1.GameboyWidth / 2, Game1.GameboyHeight / 2 + 20);
            m_sprite.Transform.Scale    = new Vector2(0);

            m_bump = new ScaleToAction(Program.TheGame, m_transform, new Vector2(2.3f, 2.3f), 1);
            m_bump.Interpolator   = new PBounceInterpolation(0);
            m_bump.Timer.Interval = 0.2f;


            this.player              = player;
            initialWidth             = 37;
            m_sprite.SourceRectangle = new Rectangle(0, 0, 0, (int)m_sprite.Height);
            m_sprite.Origin          = new Vector2(0f, 0.5f);
        }
コード例 #21
0
        public void ExecuteStartAction()
        {
            // Start challenges
            //
            if (choice == MenuState.CHALLENGE_CHOICE && canLauchChallenge)
            {
                HideMenu();
                Program.TheGame.LoadLevel((int)challengeChoice);
                //Game1.totem.BuildFromFile("Level1_p1");
                //Game1.scoreBorder.ScoreBarMaxValue = Game1.scoreBorder.calculateScoreMax();
                //Game1.mapBorder.setTopTotem();
                canLauchChallenge = false;
                Game1.SetupNextLevel();
                Cutscenes.GoToTotem(Game1.CurrentTotem, 0.5f, -40);
                Cutscenes.title.Dissappear();
                //Cutscenes.GoToTotem(Game1.CurrentTotem, 3.0f);
            }

            // Start random game
            //
            if (choice == MenuState.START)
            {
                HideMenu();
                Program.TheGame.LoadRandomLevel();
                Game1.SetupNextLevel();

                canLauchChallenge = false;
                //Game1.SetupNextLevel();
                Cutscenes.GoToTotem(Game1.CurrentTotem, 0.5f, -40);
                Cutscenes.title.Dissappear();
                //// Set informations for slides
                ////
                //Game1.scoreBorder.ScoreBarMaxValue = Game1.scoreBorder.calculateScoreMax();
                //Game1.mapBorder.setTopTotem();

                //Cutscenes.GoToTotem(Game1.totem);
            }

            if (choice == MenuState.CHALLENGES)
            {
                choice = MenuState.CHALLENGE_CHOICE;
                m_sprite.SpriteSheet     = TextureLibrary.GetSpriteSheet("menu_chall_bg");
                arrow.Transform.Position = new Vector2(-47, 7);
                canLauchChallenge        = true;
            }
        }
コード例 #22
0
        public void OnHit(Vector2 position)
        {
            Transform transform    = new Transform(m_transform, true);
            Sprite    impactSprite = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("shuriken_impact"), transform);

            transform.Position  = position - m_transform.PositionGlobal;
            transform.Direction = Globals.Random.NextDouble();
            //transform.Direction += Globals.Random.NextDouble() - 0.5;

            transform.SclX = 1 + (float)(Globals.Random.NextDouble() * 0.5) + 0.5f;

            if (currentIndex == m_impacts.Length)
            {
                currentIndex = 0;
            }
            m_impacts[currentIndex] = impactSprite;
            currentIndex++;
        }
コード例 #23
0
        public Monster() : base()
        {
            m_spriteSheetNomNom      = TextureLibrary.GetSpriteSheet("anim_monstre_miam", 8, 1);
            m_spriteSheetIdle        = TextureLibrary.GetSpriteSheet("anim_monstre_neutre", 5, 1);
            m_sprite                 = new Sprite(Program.TheGame, m_spriteSheetIdle, m_transform);
            m_sprite.PixelCorrection = true;
            m_idle       = new SpriteSheetAnimation(m_sprite, 0, 4, 3.0f, -1);
            m_openMouth  = new SpriteSheetAnimation(m_sprite, 4, 6, 0.5f, 1);
            m_closeMouth = new Sequence(1);
            m_closeMouth.AddAction(new SpriteSheetAnimation(m_sprite, 6, 7, 0.45f, 1));
            m_closeMouth.AddAction(new MethodAction(Idle));
            m_actionManager      = new SingleActionManager();
            m_transform.Position = new Vector2(MonsterPosX, MonsterPosY);

            m_breathing = new MoveToStaticAction(Program.TheGame, m_transform, m_transform.Position + new Vector2(0, 3), -1);
            m_breathing.Interpolator   = new PSineInterpolation();
            m_breathing.Timer.Interval = 4.0f;
            m_breathing.Start();
        }
コード例 #24
0
        public NewLevelButton()
            : base(new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("btn_newlevel", 1, 4), new Transform()))
        {
            m_animation = new SpriteSheetAnimation(m_buttonSprite, 0, 3, 0.5f, -1);
            m_popAction = new SingleActionManager();

            //m_in = new MoveToStaticAction(Globals.TheGame, m_transform, new Vector2(150, 300), false);
            //m_out = new MoveToStaticAction(Globals.TheGame, m_transform, new Vector2(150, 0), false);
            m_transform.Position = new Vector2(150, 300);

            _generation = new Counter(2, TextureLibrary.GetSpriteSheet("levelscore_vertical", 20, 1));
            _generation.Transform.ParentTransform = m_transform;

            _section = new Counter(1, TextureLibrary.GetSpriteSheet("levelscore_vertical", 20, 1));
            _section.Transform.ParentTransform = m_transform;

            _generation.Alpha = _section.Alpha = 1.0f;

            _generation.ScrollSpeed = _section.ScrollSpeed = 50;
        }
コード例 #25
0
        public MetalSection(SectionType type)
            : base(type)
        {
            m_sprite        = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("totem_sprite_1"), m_transform);
            m_sprite.Origin = TotemSection.spriteOrigin;

            bool left  = type == SectionType.Left || type == SectionType.Bilateral;
            bool right = type == SectionType.Right || type == SectionType.Bilateral;

            if (left)
            {
                m_metalSpriteLeft = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("totem_sprite_metal_left"), new Transform(m_transform, true));
                m_metalSpriteLeft.Transform.PosX = -3;
                m_metalSpriteLeft.Origin         = TotemSection.spriteOrigin;
            }
            if (right)
            {
                m_metalSpriteRight = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("totem_sprite_metal_right"), new Transform(m_transform, true));
                m_metalSpriteRight.Transform.PosX = 3;
                m_metalSpriteRight.Origin         = TotemSection.spriteOrigin;
            }
        }
コード例 #26
0
        public ScoreBorder()
        {
            m_actionManager = new SingleActionManager();

            score = 0;

            m_sprite             = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("score_background"), m_transform);
            m_transform.Position = new Vector2(-8, 72);

            m_graphicScore                    = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("score_foreground"), new Transform(m_transform, true));
            m_graphicScore.Origin             = new Vector2(0.5f, 1);
            m_graphicScore.Transform.Position = new Vector2(0, 72);
            m_graphicScore.Transform.SclY     = 0f;

            m_slideToScreen = new MoveToStaticAction(Program.TheGame, m_transform, positionOnScreen, 1);
            m_slideToScreen.Interpolator   = new PSmoothstepInterpolation();
            m_slideToScreen.Timer.Interval = durationSlide;

            m_slideOutOfScreen = new MoveToStaticAction(Program.TheGame, m_transform, positionOutOfScreen, 1);
            m_slideOutOfScreen.StartPosition  = positionOnScreen;
            m_slideOutOfScreen.Interpolator   = new PSmoothstepInterpolation();
            m_slideOutOfScreen.Timer.Interval = durationSlide;
        }
コード例 #27
0
        public SpikeSection(SectionType type)
            : base(type)
        {
            m_sprite        = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("totem_sprite_1"), m_transform);
            m_sprite.Origin = TotemSection.spriteOrigin;

            bool left  = type == SectionType.Left || type == SectionType.Bilateral;
            bool right = type == SectionType.Right || type == SectionType.Bilateral;

            if (left)
            {
                m_spikeSpriteLeft = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("totem_sprite_spikes_left_1"), new Transform(m_transform, true));
                //m_spikeSpriteLeft.Transform.PosX = -4;
                m_spikeSpriteLeft.Transform.PosX = -19;
                m_spikeSpriteLeft.Origin         = TotemSection.spriteOrigin;
            }
            if (right)
            {
                m_spikeSpriteRight        = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("totem_sprite_spikes_right_1"), new Transform(m_transform, true));
                m_spikeSpriteRight.Origin = TotemSection.spriteOrigin;
                //m_spikeSpriteRight.Transform.PosX = 4;
                m_spikeSpriteRight.Transform.PosX = 19;
            }
        }
コード例 #28
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            TextureLibrary.LoadContent(Content, "Textures");
            TextureLibrary.Initialise(GraphicsDevice);
            Explosion.InitialiseIndexes();

            debugText = Content.Load <SpriteFont>("Text/Debug");
            menuText  = Content.Load <SpriteFont>("Text/Menu");

            SoundEffectLibrary.LoadContent(Content, "SoundEffects");

            m_drawer               = new GameboyDrawer(this);
            GameCamera             = new Camera2D(new Vector2(GameboyWidth * 0.5f, GameboyHeight * 0.5f));
            GameCamera.ScaleToZoom = true;

            // Totem
            //

            //LoadLevel(1);
            //totems[0] = new Totem();
            ////testTotem.BuildFromFile("Level1_p1");
            //totems[0].AddSections(new SectionData(typeof(NormalSection), 0, 0, 30));
            //totems[0].AddSections(new SectionData(typeof(MetalSection), 10, 10, 7));
            //totems[0].AddSections(new SectionData(typeof(SpikeSection), 4, 4, 7));
            //totems[0].BuildRandom();
            //totems[0].Transform.PosX = 100;


            // Player initialisation
            //
            player = new Player();

            // Pause screen & GUI initialisation
            //
            menuScreen        = new MenuScreen();
            pauseScreen       = new PauseScreen();
            startingCountdown = new Countdown();
            scoreBorder       = new ScoreBorder();
            mapBorder         = new MapBorder();
            comboCounter      = new ComboCounter(player);
            scoreDisplay      = new ScoreDisplay();

            // Background textures
            //
            m_falaise                = new Sprite(this, TextureLibrary.GetSpriteSheet("decors_sol_falaise"), new Transform());
            m_falaise.Origin         = new Vector2(0, 0.32f);
            m_falaise.Transform.PosX = -235;
            m_falaise.Transform.PosY = 8;

            // Sound & musics
            //
            normalTotemCollisionSound_Channel1        = SoundEffectLibrary.Get("normal_collision_sound").CreateInstance();
            normalTotemCollisionSound_Channel1.Volume = 0.6f;
            normalTotemCollisionSound_Channel2        = SoundEffectLibrary.Get("normal_collision_sound").CreateInstance();
            normalTotemCollisionSound_Channel2.Volume = 0.6f;
            metalTotemCollisionSound_Channel1         = SoundEffectLibrary.Get("metal_collision_sound").CreateInstance();
            metalTotemCollisionSound_Channel2         = SoundEffectLibrary.Get("metal_collision_sound").CreateInstance();

            swordSlashSound             = SoundEffectLibrary.Get("sword_slash").CreateInstance();
            moveLeftToRightSound        = SoundEffectLibrary.Get("move_left_to_right").CreateInstance();
            moveLeftToRightSound.Volume = 0.6f;
            moveRightToLeftSound        = SoundEffectLibrary.Get("move_right_to_left").CreateInstance();
            moveRightToLeftSound.Volume = 0.6f;
            spikeHitSound      = SoundEffectLibrary.Get("spike_hit").CreateInstance();
            groundImpact       = SoundEffectLibrary.Get("ground_slam").CreateInstance();
            footsteps          = SoundEffectLibrary.Get("footsteps").CreateInstance();
            footsteps.IsLooped = true;
            menuMusic          = SoundEffectLibrary.Get("music_menu").CreateInstance();
            successJingle      = SoundEffectLibrary.Get("success_jingle").CreateInstance();

            feedback_powerUp            = SoundEffectLibrary.Get("feedback_powerup").CreateInstance();
            feedback_combo3             = SoundEffectLibrary.Get("feedback_combo3").CreateInstance();
            feedback_combo3.Volume      = 0.2f;
            feedback_combo6             = SoundEffectLibrary.Get("feedback_combo6").CreateInstance();
            feedback_combo6.Volume      = 0.3f;
            feedback_combo9             = SoundEffectLibrary.Get("feedback_combo9").CreateInstance();
            feedback_combo9.Volume      = 0.4f;
            feedback_comboBreaker       = SoundEffectLibrary.Get("feedback_comboBreaker").CreateInstance();
            feedbackLock                = true;
            isComboBreakerSoundPossible = false;

            musicT4P1L1 = SoundEffectLibrary.Get("music_T4P1L1").CreateInstance();
            musicT4P1L2 = SoundEffectLibrary.Get("music_T4P1L2").CreateInstance();
            musicT4P1L3 = SoundEffectLibrary.Get("music_T4P1L3").CreateInstance();
            musicT4P1L4 = SoundEffectLibrary.Get("music_T4P1L4").CreateInstance();

            musicT4P2L1 = SoundEffectLibrary.Get("music_T4P2L1").CreateInstance();
            musicT4P2L2 = SoundEffectLibrary.Get("music_T4P2L2").CreateInstance();
            musicT4P2L3 = SoundEffectLibrary.Get("music_T4P2L3").CreateInstance();
            musicT4P2L4 = SoundEffectLibrary.Get("music_T4P2L4").CreateInstance();

            musicT4P3L1 = SoundEffectLibrary.Get("music_T4P3L1").CreateInstance();
            musicT4P3L2 = SoundEffectLibrary.Get("music_T4P3L2").CreateInstance();
            musicT4P3L3 = SoundEffectLibrary.Get("music_T4P3L3").CreateInstance();
            musicT4P3L4 = SoundEffectLibrary.Get("music_T4P3L4").CreateInstance();

            //dynamicMusic = new DynamicMusic(musicT1P1L1, musicT1P1L2, musicT1P1L3, musicT1P1L4);
            //dynamicMusic = new DynamicMusic(musicT1P2L1, musicT1P2L2, musicT1P2L3, musicT1P2L4);
            //dynamicMusic = new DynamicMusic(musicT4P2L1, musicT4P2L2, musicT4P2L3, musicT4P2L4);
            //dynamicMusic = new DynamicMusic(musicT4P3L1, musicT4P3L2, musicT4P3L3, musicT4P3L4);
            //Foule et joueur porté
            Cutscenes.Initalise();
            Cutscenes.Intro();
            SetupNextLevel();
        }
コード例 #29
0
        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);
        }
コード例 #30
0
        public CutscenePlayer()
            : base()
        {
            m_ascendSound = SoundEffectLibrary.Get("ascend").CreateInstance();
            m_cloud       = new Prop("cloud");
            m_sword       = new Prop("sword");

            m_shlingSprite = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("shling"), new Transform(m_transform, true));

            m_sprite                 = new PastaGameLibrary.Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("player_cutscene", 1, 4), new Transform(m_transform, true));
            m_sprite.Origin          = new Vector2(0.5f, 0.5f);
            m_sprite.PixelCorrection = false;

            m_moveToCrowd = new MoveToTransform(Program.TheGame, m_transform, null, null, 1);
            m_moveToCrowd.Timer.Interval = 0.1f;
            MoveToStaticAction carryMovement = new MoveToStaticAction(Program.TheGame, m_transform, new Vector2(0, CarryHeight - 5), 1);

            carryMovement.Interpolator   = new PBounceInterpolation(1.0f);
            carryMovement.StartPosition  = new Vector2(0, CarryHeight);
            carryMovement.Timer.Interval = 0.2f;
            MethodAction action = new MethodAction(delegate() { carryMovement.StartPosition = new Vector2(0, CarryHeight); });

            Sequence bounceAnimation = new Sequence(-1);

            bounceAnimation.AddAction(carryMovement);
            bounceAnimation.AddAction(action);

            m_carryAnimation = new Sequence(1);
            m_carryAnimation.AddAction(m_moveToCrowd);
            m_carryAnimation.AddAction(bounceAnimation);


            //Sword movement
            Transform start = new Transform(m_transform, true);
            Transform end   = new Transform(m_transform, true);

            m_swordMovement = new MoveToTransform(Program.TheGame, m_sword.Transform, start, end, 1);
            end.PosX        = SwordOffsetToPlayerX;
            end.PosY        = SwordOffsetToPlayerY;
            m_swordDelay    = new DelayAction(Program.TheGame, AscendDuration * SwordStartTimeRatio);

            //Cloud movement
            m_cloudMovement = new MoveToStaticAction(Program.TheGame, m_cloud.Transform, new Vector2(CloudOffsetToPlayerX, CloudOffsetToPlayerY), 1);
            m_cloudMovement.StartPosition = new Vector2(CloudStartX, 0);
            m_cloudMovement.Interpolator  = new PSquareInterpolation(0.25f);

            //Delay of the ascend, then sword/cloud movement
            Sequence swordAndCloudMovement = new Sequence(1);

            swordAndCloudMovement.AddAction(m_swordDelay);
            swordAndCloudMovement.AddAction(new Concurrent(new PastaGameLibrary.Action[] { m_swordMovement, m_cloudMovement }));

            m_ascendMovement = new MoveToTransform(Program.TheGame, m_transform, new Transform(), new Transform(), 1);
            m_ascendMovement.Interpolator = new PSquareInterpolation(0.5f);

            MethodAction showPlayer = new MethodAction(delegate()
            {
                m_sprite.Transform.PosY -= 1;
                Game1.player.ShowPlayer();
                isVisible         = false;
                m_cloud.IsVisible = false;
                m_sword.IsVisible = false;
            });

            //Shling!
            ScaleToAction shlingScale = new ScaleToAction(Program.TheGame, m_shlingSprite.Transform, new Vector2(ShlingScale, ShlingScale), 1);

            shlingScale.Timer.Interval = ShlingTime;
            shlingScale.StartScale     = Vector2.Zero;
            shlingScale.Interpolator   = new PSquareInterpolation(2);

            RotateToStaticAction shlingRotate = new RotateToStaticAction(Program.TheGame, m_shlingSprite.Transform, ShlingSpin, 1);

            shlingRotate.Timer.Interval = ShlingTime;
            m_shling = new Concurrent(new PastaGameLibrary.Action[] { shlingScale, shlingRotate });

            Sequence readyAnim = new Sequence(1);

            readyAnim.AddAction(new DelayAction(Program.TheGame, 0.5f));
            readyAnim.AddAction(new MethodAction(delegate() {
                Cutscenes.GetReady();
                SoundEffectLibrary.Get("sword_slash").Play();
            }));

            Concurrent shlingReady = new Concurrent(new PastaGameLibrary.Action[] {
                m_shling,
                readyAnim,
            });

            m_ascend = new Sequence(1);
            m_ascend.AddAction(new DelayAction(Program.TheGame, Crowd.LaunchTensionTime));
            m_ascend.AddAction(new MethodAction(delegate() { m_ascendSound.Play(); }));
            Concurrent ascendAndSword = new Concurrent(new PastaGameLibrary.Action[] { m_ascendMovement, swordAndCloudMovement });

            m_ascend.AddAction(ascendAndSword);
            m_ascend.AddAction(showPlayer);
            m_ascend.AddAction(shlingReady);

            m_physics      = new PhysicsComponent(Program.TheGame, m_transform);
            m_physics.Mass = 3.0f;

            m_jumpFromTotem           = new Sequence(1);
            m_decelerate              = new MoveToStaticAction(Program.TheGame, m_transform, Vector2.Zero, 1);
            m_decelerate.Interpolator = new PSquareInterpolation(0.5f);
            m_jumpFromTotem.AddAction(m_decelerate);
            m_jumpFromTotem.AddAction(new DelayAction(Program.TheGame, 0.2f));
            m_jumpFromTotem.AddAction(new MethodAction(delegate()
            {
                m_physics.OnBounce = null;
                m_physics.Throw(1.0f, -2.0f, 0);
                Game1.CurrentMusic.StopDynamicMusic();
                SoundEffectLibrary.Get("sword_slash").Play();
            }));
            m_jumpFromTotem.AddAction(new DelayAction(Program.TheGame, 0.75f));
            m_jumpFromTotem.AddAction(new MethodAction(delegate()
            {
                Game1.SetupNextRound();
                if (Game1.CurrentTotem == null)
                {
                    Cutscenes.GoToCliff();
                }
                else
                {
                    Cutscenes.GoToTotem(Game1.CurrentTotem, 1.0f, 0);
                }
            }));
            m_actionManager = new SingleActionManager();

            m_hitSpikes = new Sequence(1);

            m_moveToCrashingPlayer = new MoveToTransform(Program.TheGame, Game1.GameCamera.Transform, new Transform(), new Transform(), 1);
            m_moveToCrashingPlayer.Timer.Interval = 0.2f;

            m_hitSpikes.AddAction(new DelayAction(Program.TheGame, 1.0f));
            m_hitSpikes.AddAction(m_moveToCrashingPlayer);
            m_hitSpikes.AddAction(new DelayAction(Program.TheGame, 0.5f));
            m_hitSpikes.AddAction(new MethodAction(delegate() {
                if (Game1.CurrentTotem == null)
                {
                    Cutscenes.GoToCliff();
                }
                else
                {
                    Cutscenes.GoToTotem(Game1.CurrentTotem, 1.0f, 0);
                }
                m_sprite.SetFrame(0);
                m_physics.OnBounce = null;
                m_physics.Throw(0, -3, 0);
                m_transform.PosY = m_physics.GroundLevel;
            }));

            m_auraParticles = new ParticleSystem(Program.TheGame, 100);
            m_soulParticles = new ParticleSystem(Program.TheGame, 500);

            m_levitate       = new Sequence(1);
            m_moveToCliffTip = new MoveToStaticAction(Program.TheGame, m_transform, new Vector2(Cutscenes.InitialCharacterPosition + 10, -8), 1);
            m_moveToCliffTip.Interpolator   = new PSmoothstepInterpolation();
            m_moveToCliffTip.Timer.Interval = 1.0f;
            m_levitate.AddAction(m_moveToCliffTip);
            m_levitate.AddAction(new MethodAction(delegate() { m_generateSouls = true; }));

            m_particleGenerator                    = new ParticleGenerator <GlitterParticle>(Program.TheGame, m_auraParticles);
            m_particleGenerator.Automatic          = true;
            m_particleGenerator.GenerationInterval = 0.01f;
            m_soulParticleGenerator                = new ParticleGenerator <SoulParticle>(Program.TheGame, m_soulParticles);

            m_jumpInMouth = new Sequence(1);
            m_jumpInMouth.AddAction(new DelayAction(Program.TheGame, 0.5f));
            m_jumpInMouth.AddAction(new MethodAction(delegate() { m_generateSouls = false; }));
            m_jumpInMouth.AddAction(new DelayAction(Program.TheGame, 0.5f));
            m_jumpInMouth.AddAction(new MethodAction(delegate() { JumpInMonsterMouth(); }));
            m_jumpInMouth.AddAction(new DelayAction(Program.TheGame, 0.25f));
            m_jumpInMouth.AddAction(new MethodAction(delegate() { Cutscenes.monster.CloseMouth(); }));
            m_jumpInMouth.AddAction(new DelayAction(Program.TheGame, 2.0f));
            m_jumpInMouth.AddAction(new MethodAction(delegate() { Cutscenes.crowd.PushNewGuy(); }));
            m_jumpInMouth.AddAction(new DelayAction(Program.TheGame, 1.0f));
            m_jumpInMouth.AddAction(new MethodAction(delegate() { Cutscenes.StartMainMenu(); }));
        }