示例#1
0
        protected int timeTillNextRBolt = 4000; // Electricity bolt ( right )

        #endregion Fields

        #region Constructors

        public FinalBoss(Texture2D textureImage, Texture2D pulseCannonTex, Texture2D boltCannonTex, Texture2D defendersPlatformTex, Texture2D defenderTex, Texture2D pulseTex, Texture2D boltTex, Player player, Rectangle window, ExplosionManager explosionManager, SoundBank soundBank)
            : base(textureImage, new Point(1, 1),  new Vector2(window.Width / 2f, window.Height + 400), Vector2.Zero, window, explosionManager, soundBank)
        {
            this.pulseCannonTex = pulseCannonTex;
            this.boltCannonTex = boltCannonTex;
            this.defendersPlatformTex = defendersPlatformTex;
            this.defenderTex = defenderTex;
            this.pulseTex = pulseTex;
            this.boltTex = boltTex;

            this.player = player;

            this.explosionDamage = 200f;
            this.explosionRadius = 300f;
            this.scoreOnDeath = 3000;
            this.health = 14000;
            this.materialDensity = 10f;

            this.rotation = (float)Math.PI;

            boltR = new Bolt(boltTex, new Point(1, 4), position - new Vector2(230 + 105 + 10, 15), 60, false, window, explosionManager);
            boltL = new Bolt(boltTex, new Point(1, 4), position + new Vector2(230 + 105 + 10, -15), 60, true, window, explosionManager);

            this.side = Side.Aliens;

            soundBank.PlayCue("FinalBossFlyBy");
        }
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // Load the XACT data
            audioEngine = new AudioEngine(@"Content\Audio\GameAudio.xgs");
            waveBank = new WaveBank(audioEngine, @"Content\Audio\Wave Bank.xwb");
            soundBank = new SoundBank(audioEngine, @"Content\Audio\Sound Bank.xsb");

            // Start the soundtrack audio
            trackCue = soundBank.GetCue("track");
            trackCue.Play();

            // Play the start sound
            soundBank.PlayCue("start");
        }
示例#3
0
        public void Update(GameTime gameTime, SoundBank soundBank, Game1 game)
        {
            if (game.gameState != State.Tutorial)
            {
                SegmentUpdate();

                if (Ambient.IsPlaying == false)
                {
                    Ambient.Play();
                }
                else if (Ambient.IsPaused == true)
                {
                    Ambient.Resume();
                }
                if (f_Fusions >= loadedLevel.levelData.i_TargetFusions)
                {
                    game.i_GameOverSel = 1;
                    game.f_LevelCompleteBonus = 500;
                    game.fd_Fader.BeginFadingToBlack(75, true, game);
                }
                if (dt_timer.Minute == 0 && dt_timer.Second == 0)
                {
                    game.fd_Fader.BeginFadingToBlack(75, true, game);
                }
                else
                {
                    dt_timer -= gameTime.ElapsedGameTime;
                }

                offset = ship.OffsetUpdate(offset);
                if (dead == true)
                {
                    UpdateExplosion(ship.Position);
                }
                #region Enemy Spawn and Update
                for (int i = 0; i < loadedLevel.levelData.i_MaxNumberEnemies; i++)
                {
                    if (enemies[i].EnemyCollision == true)
                    {
                        UpdateShieldSpark(enemies[i].EnemyCollisionPosition, enemies[i]);
                        enemies[i].ShieldSparkCounter++;
                        if (enemies[i].ShieldSparkCounter == 40)
                        {
                            enemies[i].EnemyCollision = false;
                            enemies[i].ShieldSparkCounter = 0;
                        }
                    }

                    if (enemies[i].IsParticleKill == true)
                    {
                        UpdateParticleKill(enemies[i].ParticleKillPosition, enemies[i].p_ParticleKilled, enemies[i]);
                        enemies[i].ParticleKillCounter++;
                        if (enemies[i].ParticleKillCounter == 40)
                        {
                            enemies[i].IsParticleKill = false;
                            enemies[i].ParticleKillCounter = 0;
                        }
                    }

                    if (enemies[i].Alive == true)
                    {
                        enemies[i].updatePosition((float)gameTime.ElapsedGameTime.TotalSeconds, f_Friction);
                    }
                    else if (enemies[i].SpawnTimer == loadedLevel.levelData.i_EnemySpawnRate)
                    {
                        enemies[i] = new Enemy(game, loadedLevel);
                        enemies[i].LoadTexture(game.Content);
                        enemies[i].Spawn(offset, loadedLevel.levelBounds);
                        enemies[i].SpawnTimer = 0;
                        enemies[i].Rectangle = new Rectangle(((int)enemies[i].Position.X - (enemies[i].Texture.Width / 2)), ((int)enemies[i].Position.Y - (enemies[i].Texture.Height / 2)), enemies[i].Texture.Width, enemies[i].Texture.Height);
                        enemies[i].TextureData = new Color[enemies[i].Texture.Width * enemies[i].Texture.Height];
                        enemies[i].Texture.GetData(enemies[i].TextureData);
                    }
                }
                for (int i = 0; i < loadedLevel.levelData.i_MaxNumberEnemies; i++)
                {
                    if (enemies[i].Alive == false)
                    {
                        enemies[i].SpawnTimer++;
                        break;
                    }
                }
                #endregion
                #region Particles Spawning

                for (int i = 0; i < Photons.Length; i++)
                {
                    if (Photons[i].ParticleState == Particle.PState.Fusing)
                    {
                        if (Photons[i].i_Fusing > 50)
                        {
                            Photons[i].ParticleState = Particle.PState.Dead;
                            Photons[i].i_Fusing = 0;
                        }
                        else
                        {
                            Photons[i].i_Fusing++;
                        }
                    }
                    else if (Photons[i].ParticleState == Particle.PState.Colliding)
                    {
                        Photons[i].Velocity = new Vector2((((Photons[i].FusionPosition.X - Photons[i].Position.X) / Vector2.Distance(Photons[i].Position, Photons[i].FusionPosition)) * 10), (((Photons[i].FusionPosition.Y - Photons[i].Position.Y) / Vector2.Distance(Photons[i].Position, Photons[i].FusionPosition)) * 10));
                        Photons[i].updatePosition((float)gameTime.ElapsedGameTime.TotalSeconds, f_Friction);
                        if (Photons[i].Position.X < (Photons[i].FusionPosition.X + 1) && Photons[i].Position.X > (Photons[i].FusionPosition.X - 1) && Photons[i].Position.Y < (Photons[i].FusionPosition.Y + 1) && Photons[i].Position.Y > (Photons[i].FusionPosition.Y - 1))
                        {
                            for (int j = 0; j < loadedLevel.levelData.i_MaxNumberFused; j++)
                            {
                                if (Fused[j].ParticleState == Particle.PState.Dead)
                                {
                                    Fused[j].ParticleState = Particle.PState.Spawning;
                                    Photons[i].ParticleState = Particle.PState.Fusing;
                                    Fused[j].Position = Photons[i].Position;
                                    break;
                                }
                            }
                        }
                    }
                    else if (Photons[i].ParticleState == Particle.PState.Alive)
                    {
                        if (Photons[i].IsTethered)
                        {
                            if (!ship.BoundSphere.Intersects(new BoundingSphere(new Vector3(Photons[i].Position, 0), (Photons[i].Texture.Width / 2))))
                            {
                                Vector2 distance = ship.Position - Photons[i].Position;
                                Photons[i].Velocity += Vector2.Normalize(distance) * 20;
                            }
                        }
                        else
                        {
                            Photons[i].Position -= new Vector2(0, 0.07f);
                        }
                        Photons[i].updatePosition((float)gameTime.ElapsedGameTime.TotalSeconds, f_Friction);
                    }
                    else if (Photons[i].ParticleState == Particle.PState.Spawning)
                    {
                        if (Photons[i].Scale > 1)
                        {
                            Photons[i].Scale = 1.0f;
                            Photons[i].ParticleState = Particle.PState.Alive;
                        }
                        else
                        {
                            Photons[i].Scale += 0.02f;
                        }
                    }
                    else if (Photons[i].SpawnTimer == loadedLevel.levelData.i_PhotonSpawnRate)
                    {
                        Photons[i] = new Particle(loadedLevel.levelBounds);
                        Photons[i].LoadTex(t_Photon);
                        Photons[i].ParticleState = Particle.PState.Spawning;
                        Photons[i].Spawn(offset, loadedLevel.levelBounds, true);
                        Photons[i].SpawnTimer = 0;
                        soundBank.PlayCue("photonPop");
                    }
                }

                for (int i = 0; i < Chlor.Length; i++)
                {
                    if (Chlor[i].ParticleState == Particle.PState.Fusing)
                    {
                        if (Chlor[i].i_Fusing > 50)
                        {
                            Chlor[i].ParticleState = Particle.PState.Dead;
                            Chlor[i].i_Fusing = 0;
                        }
                        else
                        {
                            Chlor[i].i_Fusing++;
                        }
                    }
                    else if (Chlor[i].ParticleState == Particle.PState.Colliding)
                    {
                        Chlor[i].Velocity = new Vector2((((Chlor[i].FusionPosition.X - Chlor[i].Position.X) / Vector2.Distance(Chlor[i].Position, Chlor[i].FusionPosition)) * 10), (((Chlor[i].FusionPosition.Y - Chlor[i].Position.Y) / Vector2.Distance(Chlor[i].Position, Chlor[i].FusionPosition)) * 10));
                        Chlor[i].updatePosition((float)gameTime.ElapsedGameTime.TotalSeconds, f_Friction);

                        if (Chlor[i].Position.X < (Chlor[i].FusionPosition.X + 1) && Chlor[i].Position.X > (Chlor[i].FusionPosition.X - 1) && Chlor[i].Position.Y < (Chlor[i].FusionPosition.Y + 1) && Chlor[i].Position.Y > (Chlor[i].FusionPosition.Y - 1))
                        {
                            Chlor[i].ParticleState = Particle.PState.Fusing;
                        }
                    }
                    else if (Chlor[i].ParticleState == Particle.PState.Alive)
                    {
                        if (Chlor[i].IsTethered)
                        {
                            if (!ship.BoundSphere.Intersects(new BoundingSphere(new Vector3(Chlor[i].Position, 0), (Chlor[i].Texture.Width / 2))))
                            {
                                Vector2 distance = ship.Position - Chlor[i].Position;
                                Chlor[i].Velocity += Vector2.Normalize(distance) * 20;
                            }
                        }
                        else
                        {
                            Chlor[i].Position += new Vector2(0, 0.07f);
                        }
                        Chlor[i].updatePosition((float)gameTime.ElapsedGameTime.TotalSeconds, f_Friction);
                    }
                    else if (Chlor[i].ParticleState == Particle.PState.Spawning)
                    {
                        if (Chlor[i].Scale > 1)
                        {
                            Chlor[i].Scale = 1.0f;
                            Chlor[i].ParticleState = Particle.PState.Alive;
                        }
                        else
                        {
                            Chlor[i].Scale += 0.02f;
                        }
                    }
                    else if (Chlor[i].SpawnTimer == loadedLevel.levelData.i_ChloroSpawnRate)
                    {
                        Chlor[i] = new Particle(loadedLevel.levelBounds);
                        Chlor[i].LoadTex(t_Chlor);
                        Chlor[i].ParticleState = Particle.PState.Spawning;
                        Chlor[i].Spawn(offset, loadedLevel.levelBounds, false);
                        Chlor[i].SpawnTimer = 0;
                        soundBank.PlayCue("chlorPop");
                    }
                }

                for (int i = 0; i < loadedLevel.levelData.i_MaxNumberPhotons; i++)
                {
                    if (Photons[i].ParticleState == Particle.PState.Dead)
                    {
                        Photons[i].SpawnTimer++;
                        break;
                    }
                }
                for (int i = 0; i < loadedLevel.levelData.i_MaxNumberChloro; i++)
                {
                    if (Chlor[i].ParticleState == Particle.PState.Dead)
                    {
                        Chlor[i].SpawnTimer++;
                        break;
                    }
                }
                #endregion
            }

            GamePlay(gameTime, game);
        }
示例#4
0
        public void Update(GameTime gameTime,  ref PositionManager[,,]  positionManager, int floor, int playerdex, ref int skada, SoundBank soundBank, Cue attackHit, Cue attackMiss, int level, ref Character player1)
        {
            if (resetAttack == false)
            {
                moved2 += 1;
                if (moved2 > 1 && moved2 < 16)
                { Frame = 0; }
                else if (moved2 > 16 && moved2 < 32)
                { Frame = 1; }
                else if (moved2 > 32 && moved2 < 48)
                { Frame = 2; }
                else if (moved2 > 48 && moved2 < 64)
                { Frame = 3; }

                if (moved2 == 64)
                { moved2 = 0; Frame = 0; resetAttack = true; attackMissed = true; attackDidDmg = true; }   //olika variabler ändras så att man nu kan genomföra en ny rörelse
            }

            //attack animation
            if (attackAnimationDone == true)
            {
                movedattack += 4;
                if (movedattack > 1 && movedattack < 16)
                { attackFrame = 0; }
                else if (movedattack > 16 && movedattack < 32)
                { attackFrame = 1; }
                else if (movedattack > 32 && movedattack < 48)
                { attackFrame = 2; }
                else if (movedattack > 48 && movedattack < 64)
                { attackFrame = 3; }

                if (movedattack == 64)    // när man rört sig 64 pixlar så stannar gubben
                { movedattack = 0; attackFrame = 0; attackAnimationDone = false; }   //olika variabler ändras så att man nu kan genomföra en ny rörelse
            }

            CheckActive();  //Kör metoden för att kolla när fienden skall aktiveras

            //Detta ai fungerar så att fienden kollar var spelaren befinner sig i rutnätet. Först kollar den vart den är på X-leden, sedan rör den sig mot fienden tills den är
            //under den på y-leden. Efter det rör sig fienden mot spelaren på y. Om fienden befinner sig bredvid spelaren kommer den att försöka utföra en attack.
            //Skulle en vägg komma ivägen om fienden exempelvis gick in i en vägg på x-leden kommer den i detta läge undersöka om fienden befinner sig längre upp eller ner
            //på y och sedan röra sig mot spelaren på de viset. Samma sak om den går in i en vägg på y-leden, men då kommer den gå åt något håll på x-leden.

            if (allowMove)  //Om den frå röras startar ai
            {
                if (ActiveMove) // Fienden är aktiv och går mot spelaren samt attackerar om den kan.
                {   // Enemy går mot spelaren om den är tillräckligt när för att attackera så gör den det istället.
                    //if ()//ska kolla om det är kortast till spelaren från Enemy på x kordinaten eller om avståndet är lika.
                    //{
                    if (PlayerPos.X > xCoord) // kollar om spelaren är till höger om enemy.
                    {

                        if (xCoord + 1 == PlayerPos.X && yCoord == PlayerPos.Y) //kollar om spelaren är på rutan till höger om enemy.
                        {
                            if (resetAttack == true)
                            {
                                skada = EnemyAttackCalc(playerdex);
                                if (skada != 0)
                                { soundBank.PlayCue("AttackSound"); }
                                else if (skada == 0)
                                { soundBank.PlayCue("AttackMiss");  }

                                player1.TotalHp = player1.TotalHp - skada;

                            }
                        }
                        // kod för att gå till höger.
                        else if (positionManager[yCoord, xCoord + 1, floor].type != "wall" &&
                            positionManager[yCoord, xCoord + 1, floor].type != "enemy" &&
                            positionManager[yCoord, xCoord + 1, floor].type != "upstairs" &&
                            positionManager[yCoord, xCoord + 1, floor].type != "downstairs" &&
                            positionManager[yCoord, xCoord + 1, floor].type != "chest" &&
                            positionManager[yCoord, xCoord + 1, floor].type != "door")
                        {

                            moveEnemyrRight = true;
                            allowMove = false;
                            positionManager[yCoord, xCoord + 1, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                            positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                            xCoord++;
                        }
                        //Alternativ när fienden går in i en vägg
                        else if (positionManager[yCoord, xCoord + 1, floor].type == "wall" ||
                           positionManager[yCoord, xCoord + 1, floor].type == "enemy" ||
                           positionManager[yCoord, xCoord + 1, floor].type == "upstairs" ||
                           positionManager[yCoord, xCoord + 1, floor].type == "downstairs" ||
                           positionManager[yCoord, xCoord + 1, floor].type == "chest" ||
                           positionManager[yCoord, xCoord + 1, floor].type != "door")
                        {
                            if (PlayerPos.Y < yCoord) // Kollar om spelaren är ovanför enemy.
                            {
                                if (yCoord - 1 == PlayerPos.Y && xCoord == PlayerPos.X) //kollar om spelaren är på rutan ovnaför enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }
                                }
                                // kod för att gå up.
                                else if (positionManager[yCoord - 1, xCoord, floor].type != "wall" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "enemy" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "upstairs" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "downstairs" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "chest" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "door")
                                {

                                    moveEnemyUp = true;
                                    allowMove = false;
                                    positionManager[yCoord - 1, xCoord, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    yCoord--;
                                }
                            }
                            else if (PlayerPos.Y > yCoord) // annars gå uppåt.
                            {
                                if (yCoord + 1 == PlayerPos.Y && xCoord == PlayerPos.X) //kollar om spelaren är på rutan ovnaför enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }

                                }
                                //  kod för att gå ner.
                                else if (positionManager[yCoord + 1, xCoord, floor].type != "wall" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "enemy" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "upstairs" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "downstairs" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "chest" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "door")
                                {
                                    moveEnemyDown = true;
                                    allowMove = false;
                                    positionManager[yCoord + 1, xCoord, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    yCoord++;
                                }
                            }

                        }

                    }
                    else if (PlayerPos.X < xCoord)  // Annars gå till vänster.
                    {
                        if (xCoord - 1 == PlayerPos.X && yCoord == PlayerPos.Y) //kollar om spelaren är på rutan till vänster om enemy.
                        {
                            if (resetAttack == true)
                            {
                                skada = EnemyAttackCalc(playerdex);
                                if (skada != 0)
                                { soundBank.PlayCue("AttackSound"); }
                                else if (skada == 0)
                                { soundBank.PlayCue("AttackMiss"); }
                                player1.TotalHp = player1.TotalHp - skada;

                            }
                        }
                        // Kod för att gå till vänster

                        else if (positionManager[yCoord, xCoord - 1, floor].type != "wall" &&
                            positionManager[yCoord, xCoord - 1, floor].type != "enemy" &&
                            positionManager[yCoord, xCoord - 1, floor].type != "upstairs" &&
                            positionManager[yCoord, xCoord - 1, floor].type != "downstairs" &&
                            positionManager[yCoord, xCoord - 1, floor].type != "chest" &&
                            positionManager[yCoord, xCoord - 1, floor].type != "door")
                        {
                            moveEnemyLeft = true;
                            allowMove = false;
                            positionManager[yCoord, xCoord - 1, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                            positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                            xCoord--;
                        }

                        else if (positionManager[yCoord, xCoord - 1, floor].type == "wall" ||
                           positionManager[yCoord, xCoord - 1, floor].type == "enemy" ||
                           positionManager[yCoord, xCoord - 1, floor].type == "upstairs" ||
                           positionManager[yCoord, xCoord - 1, floor].type == "downstairs" ||
                           positionManager[yCoord, xCoord - 1, floor].type == "chest" ||
                           positionManager[yCoord, xCoord - 1, floor].type != "door")
                        {
                            if (PlayerPos.Y < yCoord) // Kollar om spelaren är ovanför enemy.
                            {
                                if (yCoord - 1 == PlayerPos.Y && xCoord == PlayerPos.X) //kollar om spelaren är på rutan ovnaför enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }
                                }
                                // kod för att gå up.
                                else if (positionManager[yCoord - 1, xCoord, floor].type != "wall" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "enemy" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "upstairs" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "downstairs" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "chest" &&
                                    positionManager[yCoord - 1, xCoord, floor].type != "door")
                                {

                                    moveEnemyUp = true;
                                    allowMove = false;
                                    positionManager[yCoord - 1, xCoord, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    yCoord--;
                                }

                            }
                            else if (PlayerPos.Y > yCoord) // annars gå uppåt.
                            {
                                if (yCoord + 1 == PlayerPos.Y && xCoord == PlayerPos.X) //kollar om spelaren är på rutan ovnaför enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }

                                }
                                //  kod för att gå ner.
                                else if (positionManager[yCoord + 1, xCoord, floor].type != "wall" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "enemy" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "upstairs" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "downstairs" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "chest" &&
                                    positionManager[yCoord + 1, xCoord, floor].type != "door")
                                {
                                    moveEnemyDown = true;
                                    allowMove = false;
                                    positionManager[yCoord + 1, xCoord, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    yCoord++;
                                }
                            }
                            ///////////////////////
                        ///////////////////////
                        }

                    }
                    //}

                    else if (PlayerPos.Y < yCoord) // Kollar om spelaren är ovanför enemy.
                    {
                        if (yCoord - 1 == PlayerPos.Y && xCoord == PlayerPos.X) //kollar om spelaren är på rutan ovnaför enemy.
                        {
                            if (resetAttack == true)
                            {
                                skada = EnemyAttackCalc(playerdex);
                                if (skada != 0)
                                { soundBank.PlayCue("AttackSound"); }
                                else if (skada == 0)
                                { soundBank.PlayCue("AttackMiss"); }
                                player1.TotalHp = player1.TotalHp - skada;

                            }
                        }
                        // kod för att gå up.
                        else if (positionManager[yCoord - 1, xCoord, floor].type != "wall" &&
                            positionManager[yCoord - 1, xCoord, floor].type != "enemy" &&
                            positionManager[yCoord - 1, xCoord, floor].type != "upstairs" &&
                            positionManager[yCoord - 1, xCoord, floor].type != "downstairs" &&
                            positionManager[yCoord - 1, xCoord, floor].type != "chest" &&
                            positionManager[yCoord - 1, xCoord, floor].type != "door")
                        {

                            moveEnemyUp = true;
                            allowMove = false;
                            positionManager[yCoord - 1, xCoord, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                            positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                            yCoord--;
                        }
                        else if (positionManager[yCoord - 1, xCoord, floor].type == "wall" ||
                            positionManager[yCoord - 1, xCoord, floor].type == "enemy" ||
                            positionManager[yCoord - 1, xCoord, floor].type == "upstairs" ||
                            positionManager[yCoord - 1, xCoord, floor].type == "downstairs" ||
                            positionManager[yCoord - 1, xCoord, floor].type == "chest" ||
                            positionManager[yCoord - 1, xCoord, floor].type == "door")
                        {
                            if (PlayerPos.X > xCoord) // kollar om spelaren är till höger om enemy.
                            {

                                if (xCoord + 1 == PlayerPos.X && yCoord == PlayerPos.Y) //kollar om spelaren är på rutan till höger om enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }
                                }
                                // kod för att gå till höger.
                                else if (positionManager[yCoord, xCoord + 1, floor].type != "wall" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "enemy" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "upstairs" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "downstairs" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "chest" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "door")
                                {

                                    moveEnemyrRight = true;
                                    allowMove = false;
                                    positionManager[yCoord, xCoord + 1, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true};    //Sätter sin förra position i 2d-arrayen till "null"
                                    xCoord++;
                                }

                            }
                            else if (PlayerPos.X < xCoord)  // Annars gå till vänster.
                            {
                                if (xCoord - 1 == PlayerPos.X && yCoord == PlayerPos.Y) //kollar om spelaren är på rutan till vänster om enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }
                                }
                                // Kod för att gå till vänster

                                else if (positionManager[yCoord, xCoord - 1, floor].type != "wall" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "enemy" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "upstairs" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "downstairs" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "chest" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "door")
                                {
                                    moveEnemyLeft = true;
                                    allowMove = false;
                                    positionManager[yCoord, xCoord - 1, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    xCoord--;
                                }
                            }
                            //////////////////////////////////
                        //////////////////////////////////
                        }

                    }
                    else if (PlayerPos.Y > yCoord) // annars gå uppåt.
                    {
                        if (yCoord + 1 == PlayerPos.Y && xCoord == PlayerPos.X) //kollar om spelaren är på rutan ovnaför enemy.
                        {
                            if (resetAttack == true)
                            {
                                skada = EnemyAttackCalc(playerdex);
                                if (skada != 0)
                                { soundBank.PlayCue("AttackSound"); }
                                else if (skada == 0)
                                { soundBank.PlayCue("AttackMiss"); }
                                player1.TotalHp = player1.TotalHp - skada;

                            }

                        }
                        //  kod för att gå ner.
                        else if (positionManager[yCoord + 1, xCoord, floor].type != "wall" &&
                            positionManager[yCoord + 1, xCoord, floor].type != "enemy" &&
                            positionManager[yCoord + 1, xCoord, floor].type != "upstairs" &&
                            positionManager[yCoord + 1, xCoord, floor].type != "downstairs" &&
                            positionManager[yCoord + 1, xCoord, floor].type != "chest" &&
                            positionManager[yCoord + 1, xCoord, floor].type != "door")
                        {
                            moveEnemyDown = true;
                            allowMove = false;
                            positionManager[yCoord + 1, xCoord, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                            positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                            yCoord++;
                        }
                        else if (positionManager[yCoord + 1, xCoord, floor].type == "wall" ||
                           positionManager[yCoord + 1, xCoord, floor].type == "enemy" ||
                           positionManager[yCoord + 1, xCoord, floor].type == "upstairs" ||
                           positionManager[yCoord + 1, xCoord, floor].type == "downstairs" ||
                           positionManager[yCoord + 1, xCoord, floor].type == "chest" ||
                           positionManager[yCoord + 1, xCoord, floor].type == "door")
                        {

                            if (PlayerPos.X > xCoord) // kollar om spelaren är till höger om enemy.
                            {

                                if (xCoord + 1 == PlayerPos.X && yCoord == PlayerPos.Y) //kollar om spelaren är på rutan till höger om enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;

                                    }
                                }
                                // kod för att gå till höger.
                                else if (positionManager[yCoord, xCoord + 1, floor].type != "wall" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "enemy" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "upstairs" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "downstairs" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "chest" &&
                                    positionManager[yCoord, xCoord + 1, floor].type != "door")
                                {

                                    moveEnemyrRight = true;
                                    allowMove = false;
                                    positionManager[yCoord, xCoord + 1, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    xCoord++;
                                }

                            }
                            else if (PlayerPos.X < xCoord)  // Annars gå till vänster.
                            {
                                if (xCoord - 1 == PlayerPos.X && yCoord == PlayerPos.Y) //kollar om spelaren är på rutan till vänster om enemy.
                                {
                                    if (resetAttack == true)
                                    {
                                        skada = EnemyAttackCalc(playerdex);
                                        if (skada != 0)
                                        { soundBank.PlayCue("AttackSound"); }
                                        else if (skada == 0)
                                        { soundBank.PlayCue("AttackMiss"); }
                                        player1.TotalHp = player1.TotalHp - skada;
                                        //attackAnimationDone = true; //Gör så att fiendens attackanimation

                                    }
                                }
                                // Kod för att gå till vänster

                                else if (positionManager[yCoord, xCoord - 1, floor].type != "wall" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "enemy" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "upstairs" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "downstairs" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "chest" &&
                                    positionManager[yCoord, xCoord - 1, floor].type != "door")
                                {
                                    moveEnemyLeft = true;
                                    allowMove = false;
                                    positionManager[yCoord, xCoord - 1, floor] = positionManager[yCoord, xCoord, floor]; //Sätter rutan man rörde sig mot till player
                                    positionManager[yCoord, xCoord, floor] = new PositionManager { type = "empty", floor = true };    //Sätter sin förra position i 2d-arrayen till "null"
                                    xCoord--;
                                }
                            }

                        }

                    }
                }

            }

            //Kallar på metod för att röra sig, beroende på vilket håll den valt i ai-uträkningarna
            if (moveEnemyrRight == true)
            {
                MoveRight2();
            }
            if (moveEnemyLeft == true)
            {
                MoveLeft2();
            }
            if (moveEnemyUp == true)
            {
                MoveUp2();
            }
            if (moveEnemyDown == true)
            {
                MoveDown2();
            }

            base.Update(gameTime);
        }
示例#5
0
        public void Draw(GraphicsDeviceManager graphics, Matrix Projection, Vector3 position_joueur, Vector3 position_ia, float scale_ia, Vector3 cible, SoundBank BanqueSon, bool resolution, bool[,] carte_resolution)
        {
            //On déssine les pièges
            // Si c'est des piques
            if (type == 0)
            {
                double distance_joueur_trappe = Math.Sqrt(Math.Pow(position_joueur.X - position.X, 2) + Math.Pow(position_joueur.Z - position.Z, 2));
                double distance_ia_trappe = Math.Sqrt(Math.Pow(position_ia.X * scale_ia - position.X, 2) + Math.Pow(position_ia.Z * scale_ia - position.Z, 2));

                if (distance_joueur_trappe >= trappe_declenchement || distance_ia_trappe <= 3)
                {
                    if(!afficher_trappe)
                        BanqueSon.PlayCue("trappe_ferme");
                    afficher_trappe = true;
                }
                else if (afficher_trappe)
                {
                    BanqueSon.PlayCue("trappe");
                    afficher_trappe = false;
                }

                // Les piques
                Matrix[] transforms = new Matrix[piques.Bones.Count];
                piques.CopyAbsoluteBoneTransformsTo(transforms);

                foreach (ModelMesh mesh in piques.Meshes)
                {
                    foreach (BasicEffect effect in mesh.Effects)
                    {
                        effect.Projection = Projection;
                        effect.View = Matrix.CreateLookAt(position_joueur, cible, Vector3.Up);
                        effect.World = transforms[mesh.ParentBone.Index] * Matrix.CreateTranslation(new Vector3(position.X, position.Y - 2.5f, position.Z));
                    }
                    mesh.Draw();
                }

                if (afficher_trappe)
                {
                    if (rotation_trappe < 90)
                    {
                        rotation_trappe += 10f;

                        translation_trappe.X -= 0.135f;
                        translation_trappe.Y += 0.14f;

                    }
                }
                else
                {
                    if (rotation_trappe > 0)
                    {
                        rotation_trappe -= 10f;

                        translation_trappe.X += 0.135f;
                        translation_trappe.Y -= 0.14f;

                    }
                }
                /*
                translation_trappe.X = (float)Math.Cos(MathHelper.ToRadians(rotation_trappe));
                translation_trappe.Y = (float)Math.Sin(MathHelper.ToRadians(rotation_trappe)) - 1;
                */
                // Les trappes
                Matrix[] transforms2 = new Matrix[trappe.Bones.Count];
                trappe.CopyAbsoluteBoneTransformsTo(transforms2);

                foreach (ModelMesh mesh in trappe.Meshes)
                {
                    foreach (BasicEffect effect in mesh.Effects)
                    {
                        if(resolution && carte_resolution[position_case.X, position_case.Y])
                            effect.DiffuseColor = new Vector3(255, 255, 0);
                        else
                            effect.DiffuseColor = new Vector3(255, 255, 255);

                        effect.Projection = Projection;
                        effect.View = Matrix.CreateLookAt(position_joueur, cible, Vector3.Up);
                        effect.World = Matrix.CreateRotationY(0)
                        * Matrix.CreateRotationX(MathHelper.ToRadians(rotation_trappe))
                        * Matrix.CreateRotationZ(0)
                        * Matrix.CreateTranslation(new Vector3(position.X, position.Y + translation_trappe.Y, position.Z + translation_trappe.X));
                    }
                    mesh.Draw();
                }
            }
            else
            {
                // Les lasers
                Matrix[] transforms = new Matrix[laser.Bones.Count];
                laser.CopyAbsoluteBoneTransformsTo(transforms);

                graphics.GraphicsDevice.RenderState.AlphaBlendEnable = true;
                graphics.GraphicsDevice.RenderState.AlphaTestEnable = false;
                graphics.GraphicsDevice.RenderState.ReferenceAlpha = 75;

                foreach (ModelMesh mesh in laser.Meshes)
                {
                    foreach (BasicEffect effet_laser in mesh.Effects)
                    {
                        effet_laser.AmbientLightColor = new Vector3(0.2f, 1, 0);
                        effet_laser.DiffuseColor = new Vector3(0.2f, 1, 0);
                        effet_laser.EmissiveColor = new Vector3(0.2f, 1, 0);

                        effet_laser.Projection = Projection;
                        effet_laser.View = Matrix.CreateLookAt(position_joueur, cible, Vector3.Up);
                        if (direction_laser == "EO")
                            effet_laser.World =
                            transforms[mesh.ParentBone.Index]
                            * Matrix.CreateRotationX(MathHelper.ToRadians(90))
                            * Matrix.CreateRotationY(0)
                            * Matrix.CreateRotationZ(0)
                            * Matrix.CreateTranslation(new Vector3((this.position.X) / 125, this.position.Y, this.position.Z + (float)cellsize.Z / 2))
                            * Matrix.CreateScale(new Vector3(125, 1, 1));
                        else
                            effet_laser.World =
                            transforms[mesh.ParentBone.Index]
                            * Matrix.CreateRotationX(0)
                            * Matrix.CreateRotationY(0)
                            * Matrix.CreateRotationZ(0)
                            * Matrix.CreateTranslation(new Vector3(this.position.X, this.position.Y, this.position.Z / 125))
                            * Matrix.CreateScale(new Vector3(1, 1, 125));
                    }
                    mesh.Draw();
                }
            }
        }
示例#6
0
 public static bool Collision_Patrouilleur_Heros(List<Patrouilleur> _patrouilleurs, Heros heros1, Heros heros2, SoundBank soundBank)
 {
     for (int b = 0; b < _patrouilleurs.Count; b++)
     {
         if (_patrouilleurs[b].Rectangle.Intersects(heros1.Rectangle))
         {
             ServiceHelper.Get<IGamePadService>().Vibration(50);
             soundBank.PlayCue("CriMortHero");
             return true;
         }
     }
     if (heros2 != null)
     {
         for (int b = 0; b < _patrouilleurs.Count; b++)
         {
             if (_patrouilleurs[b].Rectangle.Intersects(heros2.Rectangle))
             {
                 ServiceHelper.Get<IGamePadService>().Vibration(50);
                 soundBank.PlayCue("CriMortHero");
                 return true;
             }
         }
     }
     return false;
 }
示例#7
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here
            base.Initialize();

            audioEngine = new AudioEngine("Content\\GameAudio.xgs");
            waveBank = new WaveBank(audioEngine, "Content\\Wave Bank.xwb");
            soundBank = new SoundBank(audioEngine, "Content\\Sound Bank.xsb");

            soundBank.PlayCue("GameAudio");
        }
        /// <summary>
        /// Load GameContents
        /// </summary>
        public GameContent(GameComponent screenManager)
        {
            content = screenManager.Game.Content;
            Viewport viewport = screenManager.Game.GraphicsDevice.Viewport;
            //viewportSize = new Vector2(800, 600);

            blank = content.Load<Texture2D>("Graphics/blank");
            gradient = content.Load<Texture2D>("Graphics/gradient");
            menuBackground = content.Load<Texture2D>("Graphics/menuBackground2");

            background = content.Load<Texture2D>("Graphics/background");

            for (int i = 0; i < walk.Length; i++)
            {
                walk[i] = content.Load<Texture2D>("Graphics/" + (Shape)i + "Walk");
                idle[i] = content.Load<Texture2D>("Graphics/" + (Shape)i + "Idle");
                die[i] = content.Load<Texture2D>("Graphics/" + (Shape)i + "Die");
            }

            mouseOver = content.Load<Texture2D>("Graphics/mouseOver");
            mouseOverOrigin = new Vector2(mouseOver.Width, mouseOver.Height) / 2;

            for (int i = 0; i < castle.Length; i++)
                castle[i] = content.Load<Texture2D>("Graphics/" + (Shape)i + "Castle");
            castleOrigin = new Vector2(castle[0].Width / 2, castle[0].Height);

            pathArrow = content.Load<Texture2D>("Graphics/pathArrow");
            pathCross = content.Load<Texture2D>("Graphics/pathCross");

            healthBar = content.Load<Texture2D>("Graphics/healthBar");

            for (int i = 0; i < MaxRank; i++)
            {
                weapon[i] = content.Load<Texture2D>("Graphics/" + (Rank)i + "Weapon");
                //armyOverlay[i] = content.Load<Texture2D>("Graphics/" + ((Rank)(i)).ToString() + "Overlay");
                bullet[i] = content.Load<Texture2D>("Graphics/" + (Rank)i + "Bullet");
            }

            for (int i = 0; i < tutorial.Length; i++)
                tutorial[i] = content.Load<Texture2D>("Graphics/tutotrial" + i);

            levelUp = content.Load<Texture2D>("Graphics/levelUp");
            retry = content.Load<Texture2D>("Graphics/retry");

            debugFont = content.Load<SpriteFont>("Fonts/debugFont");
            gameFont = content.Load<SpriteFont>("Fonts/bicho_plumon50");

            audioEngine = new AudioEngine("Content/Audio/Audio.xgs");
            soundBank = new SoundBank(audioEngine, "Content/Audio/Sound Bank.xsb");
            waveBank = new WaveBank(audioEngine, "Content/Audio/Wave Bank.xwb");

            soundBank.PlayCue("Marching by Pill");

            //Thread.Sleep(1000);

            // once the load has finished, we use ResetElapsedTime to tell the game's
            // timing mechanism that we have just finished a very long frame, and that
            // it should not try to catch up.
            screenManager.Game.ResetElapsedTime();
        }
        public override void LoadContent()
        {
            Rectangle viewport = ScreenManager.Game.Window.ClientBounds;

            //loads the new spritebatch
            spriteBatch = new SpriteBatch(ScreenManager.GraphicsDevice);

            if (content == null)
                content = new ContentManager(ScreenManager.Game.Services, "Content");
            //loads the video array
            videos = new Video[videoCount];

            safeBounds = new Rectangle(
                (int)(viewport.Width * SafeAreaPortion),
                (int)(viewport.Height * SafeAreaPortion),
                (int)(viewport.Width * (1 - 2 * SafeAreaPortion)),
                (int)(viewport.Height * (1 - 2 * SafeAreaPortion)));

            //loads all arrays
            sensitivityDisplays = new OtherObject[4];
            leftBunkers = new OtherObject[4];
            rightBunkers = new OtherObject[4];
            playerTriggerSensitivitys = new float[4];
            sourceRectangleSen = new Rectangle[4];

            //loads a screenmanager font
            font = ScreenManager.Font;

            //loads the starting up sensitivity source rectangle (the first image on the sprite sheet)
            for (int i = 0; i < 4; i++)
            {
                sourceRectangleSen[i] = new Rectangle(0, 0, 250, 100);
            }
            //loads the starting up left bunker source rectangle from the sprite sheet
            //loads the starting up right bunker source rectangle from the sprite sheet
            sourceRectangleLeft = new Rectangle(658, 3, 90, 75);
            sourceRectangleRight = new Rectangle(488, 3, 90, 75);

            #region LoadXboxControllerTextures
            center = content.Load<Texture2D>("Xboxbutton\\xbox controller-center");
            textureLength = center.Width;
            //the .left component of the picture for the xbox guide button
            left = (ScreenManager.GraphicsDevice.Viewport.Width / 2) - (textureLength / 2);
            //the .top component of the picture for the xbox guide button
            top = (ScreenManager.GraphicsDevice.Viewport.Height / 2) - (textureLength / 2) - 10;

            p1NotJoined = content.Load<Texture2D>("Xboxbutton\\xboxcontrollerP1-notjoined");
            p1Ready = content.Load<Texture2D>("Xboxbutton\\xboxcontrollerP1-ready to play");
            p1JoinedNotReady = content.Load<Texture2D>("Xboxbutton\\xboxcontrollerP1-joinedbutnotready");

            p2NotJoined = content.Load<Texture2D>("Xboxbutton\\xboxcontrollerP2-notjoined");
            p2Ready = content.Load<Texture2D>("Xboxbutton\\xboxcontrollerP2-ready to play");
            p2JoinedNotReady = content.Load<Texture2D>("Xboxbutton\\xboxcontrollerP2-joinedbutnotready");

            p3NotJoined = content.Load<Texture2D>("Xboxbutton\\xboxcontrollerP3-notjoined");
            p3Ready = content.Load<Texture2D>("Xboxbutton\\xboxcontrollerP3-ready to play");
            p3JoinedNotReady = content.Load<Texture2D>("Xboxbutton\\xboxcontrollerP3-joinedbutnotready");

            p4NotJoined = content.Load<Texture2D>("Xboxbutton\\xboxcontrollerP4-notjoined");
            p4Ready = content.Load<Texture2D>("Xboxbutton\\xboxcontrollerP4-ready to play");
            p4JoinedNotReady = content.Load<Texture2D>("Xboxbutton\\xboxcontrollerP4-joinedbutnotready");
            #endregion

            #region Load Misc.
            //videos loaded into game
            videos[0] = content.Load<Video>("Video\\54321");
            player = new VideoPlayer();

            //audio engine in game
            audioEngine = new AudioEngine("Content\\Audio\\JAMAudio.xgs");
            waveBank = new WaveBank(audioEngine, "Content\\Audio\\Wave Bank.xwb");
            soundBank = new SoundBank(audioEngine, "Content\\Audio\\Sound Bank.xsb");

            //loads the character textures
            Sayid = content.Load<Texture2D>("Sprites\\Players\\Sayid\\Images\\Sayid");
            Sir_Edward = content.Load<Texture2D>("Sprites\\Players\\Sir_Edward\\Images\\Sir_Edward");
            Wilhelm = content.Load<Texture2D>("Sprites\\Players\\Wilhelm\\Images\\Wilhelm");
            Juan = content.Load<Texture2D>("Sprites\\Players\\Juan\\Images\\Juan");

            //loads the sprite sheets for the sensitivity display, the left bunker, and the right bunker
            for (int i = 0; i < 4; i++)
            {
                sensitivityDisplays[i] = new OtherObject(content.Load<Texture2D>("Sprites\\Misc\\Sensitivity_Sprite_Sheet"));
                leftBunkers[i] = new OtherObject(content.Load<Texture2D>("Sprites\\Misc\\xboxControllerSpriteSheet"));
                rightBunkers[i] = new OtherObject(content.Load<Texture2D>("Sprites\\Misc\\xboxControllerSpriteSheet"));
            }

            #endregion

            #region StartUp KnickKnacks
            //sleep for a little so the game can load
            Thread.Sleep(1000);
            //resets so xbox doesnt try to catch up with lost time in thread
            ScreenManager.Game.ResetElapsedTime();
            //make sure to set up the new menu entries upon loading
            SetMenuEntryText();
            //locked and loaded, ready to start up game
            soundBank.PlayCue("loadreload2");
            #endregion
        }
示例#10
0
        public static void Collision_Armes_Ennemis(Heros heros1, Heros heros2, List<Garde> _gardes, List<Patrouilleur> _Patrouilleurs, List<Patrouilleur_a_cheval> _PatrouilleursAChevaux, List<Boss> _Boss, List<Shuriken> listeShuriken, MoteurParticule particule, SoundBank soundBank, ref List<EnnemiMort> morts, ContentManager content)
        {
            if (_gardes.Count != 0)
            {
                for (int i = 0; i < _gardes.Count; i++)
                {
                    if (_gardes[i].Rectangle.Intersects(particule.Rectangle_Hadoken_heros1(heros1)) ||
                        _gardes[i].Rectangle.Intersects(particule.Rectangle_Ball_heros1(heros1)) ||
                        heros1.AttaqueAuSabre(_gardes[i].X, _gardes[i].Y))
                    {
                        soundBank.PlayCue("cri");
                        morts.Add(new EnnemiMort(new Vector2(28 * _gardes[i].X, 28 * _gardes[i].Y), content, EnnemiMort.TypeEnnemiMort.garde));
                        if (_gardes[i].Alerte)
                            GameplayScreen.Alerte = false;
                        _gardes.RemoveAt(i);
                        break;
                    }
                    if (heros2 != null)
                    {
                        if (_gardes[i].Rectangle.Intersects(particule.Rectangle_Hadoken_heros2(heros2)) ||
                            _gardes[i].Rectangle.Intersects(particule.Rectangle_Ball_heros2(heros2)) ||
                            heros2.AttaqueAuSabre(_gardes[i].X, _gardes[i].Y))
                        {
                            soundBank.PlayCue("cri");
                            morts.Add(new EnnemiMort(new Vector2(28 * _gardes[i].X, 28 * _gardes[i].Y), content, EnnemiMort.TypeEnnemiMort.garde));
                            if (_gardes[i].Alerte)
                                GameplayScreen.Alerte = false;
                            _gardes.RemoveAt(i);
                            break;
                        }
                    }
                    for (int j = 0; j < listeShuriken.Count; j++)
                        if (_gardes[i].Rectangle.Intersects(listeShuriken[j].Rectangle))
                        {
                            soundBank.PlayCue("cri");
                            ServiceHelper.Get<IGamePadService>().Vibration(20);
                            morts.Add(new EnnemiMort(new Vector2(28 * _gardes[i].X, 28 * _gardes[i].Y), content, EnnemiMort.TypeEnnemiMort.garde));
                            if (_gardes[i].Alerte)
                                GameplayScreen.Alerte = false;
                            _gardes.RemoveAt(i);
                            listeShuriken.RemoveAt(j);
                            break;
                        }
                }
            }

            if (_Patrouilleurs.Count != 0)
            {
                for (int i = 0; i < _Patrouilleurs.Count; i++)
                {
                    if (_Patrouilleurs[i].Rectangle.Intersects(particule.Rectangle_Hadoken_heros1(heros1)) ||
                        _Patrouilleurs[i].Rectangle.Intersects(particule.Rectangle_Ball_heros1(heros1)) ||
                        heros1.AttaqueAuSabre(_Patrouilleurs[i].X, _Patrouilleurs[i].Y))
                    {
                        soundBank.PlayCue("Bruitage patrouilleur");
                        morts.Add(new EnnemiMort(new Vector2(28 * _Patrouilleurs[i].X, 28 * _Patrouilleurs[i].Y), content, EnnemiMort.TypeEnnemiMort.patrouilleur));
                        if (_Patrouilleurs[i].Alerte)
                            GameplayScreen.Alerte = false;
                        _Patrouilleurs.RemoveAt(i);
                        break;
                    }
                    if (heros2 != null)
                    {
                        if (_Patrouilleurs[i].Rectangle.Intersects(particule.Rectangle_Hadoken_heros2(heros2)) ||
                            _Patrouilleurs[i].Rectangle.Intersects(particule.Rectangle_Ball_heros2(heros2)) ||
                            heros2.AttaqueAuSabre(_Patrouilleurs[i].X, _Patrouilleurs[i].Y))
                        {
                            soundBank.PlayCue("Bruitage patrouilleur");
                            morts.Add(new EnnemiMort(new Vector2(28 * _Patrouilleurs[i].X, 28 * _Patrouilleurs[i].Y), content, EnnemiMort.TypeEnnemiMort.patrouilleur));
                            if (_Patrouilleurs[i].Alerte)
                                GameplayScreen.Alerte = false;
                            _Patrouilleurs.RemoveAt(i);
                            break;
                        }
                    }
                    for (int j = 0; j < listeShuriken.Count; j++)
                        if (_Patrouilleurs[i].Rectangle.Intersects(listeShuriken[j].Rectangle))
                        {
                            soundBank.PlayCue("Bruitage patrouilleur");
                            morts.Add(new EnnemiMort(new Vector2(28 * _Patrouilleurs[i].X, 28 * _Patrouilleurs[i].Y), content, EnnemiMort.TypeEnnemiMort.patrouilleur));
                            if (_Patrouilleurs[i].Alerte)
                                GameplayScreen.Alerte = false;
                            _Patrouilleurs.RemoveAt(i);
                            listeShuriken.RemoveAt(j);
                            break;
                        }
                }
            }

            if (_PatrouilleursAChevaux.Count != 0)
            {
                for (int i = 0; i < _PatrouilleursAChevaux.Count; i++)
                {
                    if ((_PatrouilleursAChevaux[i].Rectangle.Intersects(particule.Rectangle_Hadoken_heros1(heros1)) ||
                        _PatrouilleursAChevaux[i].Rectangle.Intersects(particule.Rectangle_Ball_heros1(heros1))) ||
                        heros1.AttaqueAuSabre(_PatrouilleursAChevaux[i].X, _PatrouilleursAChevaux[i].Y))
                    {
                        soundBank.PlayCue("Bruitage cheval");
                        morts.Add(new EnnemiMort(new Vector2(28 * _PatrouilleursAChevaux[i].X, 28 * _PatrouilleursAChevaux[i].Y), content, EnnemiMort.TypeEnnemiMort.patrouilleurACheval));
                        if (_PatrouilleursAChevaux[i].Alerte)
                            GameplayScreen.Alerte = false;
                        _PatrouilleursAChevaux.RemoveAt(i);
                        break;
                    }
                    if (heros2 != null)
                    {
                        if (_PatrouilleursAChevaux[i].Rectangle.Intersects(particule.Rectangle_Hadoken_heros2(heros2)) ||
                            _PatrouilleursAChevaux[i].Rectangle.Intersects(particule.Rectangle_Ball_heros2(heros2)) ||
                            heros2.AttaqueAuSabre(_PatrouilleursAChevaux[i].X, _PatrouilleursAChevaux[i].Y))
                        {
                            soundBank.PlayCue("Bruitage cheval");
                            morts.Add(new EnnemiMort(new Vector2(28 * _PatrouilleursAChevaux[i].X, 28 * _PatrouilleursAChevaux[i].Y), content, EnnemiMort.TypeEnnemiMort.patrouilleurACheval));
                            if (_PatrouilleursAChevaux[i].Alerte)
                                GameplayScreen.Alerte = false;
                            _PatrouilleursAChevaux.RemoveAt(i);
                            break;
                        }
                    }
                    for (int j = 0; j < listeShuriken.Count; j++)
                        if (_PatrouilleursAChevaux[i].Rectangle.Intersects(listeShuriken[j].Rectangle))
                        {
                            soundBank.PlayCue("Bruitage cheval");
                            morts.Add(new EnnemiMort(new Vector2(28 * _PatrouilleursAChevaux[i].X, 28 * _PatrouilleursAChevaux[i].Y), content, EnnemiMort.TypeEnnemiMort.patrouilleurACheval));
                            if (_PatrouilleursAChevaux[i].Alerte)
                                GameplayScreen.Alerte = false;
                            _PatrouilleursAChevaux.RemoveAt(i);
                            listeShuriken.RemoveAt(j);
                            break;
                        }
                }
            }

            if (_Boss.Count != 0)
            {
                for (int i = 0; i < _Boss.Count; i++)
                {
                    if (_Boss[i].Vie < 0 || heros1.AttaqueAuSabre(_Boss[i].X, _Boss[i].Y))
                    {
                        _Boss[i].Vie = 5;
                        morts.Add(new EnnemiMort(new Vector2(28 * _Boss[i].X, 28 * _Boss[i].Y), content, EnnemiMort.TypeEnnemiMort.boss));
                        if (_Boss[i].Alerte)
                            GameplayScreen.Alerte = false;
                        _Boss.RemoveAt(i);
                        soundBank.PlayCue("cri");
                    }
                    else if (_Boss[i].Rectangle.Intersects(particule.Rectangle_Hadoken_heros1(heros1)))
                    {
                        _Boss[i].Vie = _Boss[i].Vie - 2;
                        soundBank.PlayCue("Bruitage boss touche");
                        particule.Rectangle_Hadoken_Est_Present_Hero1 = false;
                    }
                    else if (_Boss[i].Rectangle.Intersects(particule.Rectangle_Ball_heros1(heros1)))
                    {
                        _Boss[i].Vie = _Boss[i].Vie - 2;
                        soundBank.PlayCue("Bruitage boss touche");
                        particule.Rectangle_Ball_Est_Present_Hero1 = false;
                    }
                    else if (heros2 != null)
                    {
                        if (_Boss[i].Vie < 0 || heros2.AttaqueAuSabre(_Boss[i].X, _Boss[i].Y))
                        {
                            _Boss[i].Vie = 5;
                            morts.Add(new EnnemiMort(new Vector2(28 * _Boss[i].X, 28 * _Boss[i].Y), content, EnnemiMort.TypeEnnemiMort.boss));
                            if (_Boss[i].Alerte)
                                GameplayScreen.Alerte = false;
                            _Boss.RemoveAt(i);
                            soundBank.PlayCue("cri");
                        }
                        else if (_Boss[i].Rectangle.Intersects(particule.Rectangle_Hadoken_heros2(heros2)))
                        {
                            _Boss[i].Vie = _Boss[i].Vie - 2;
                            soundBank.PlayCue("Bruitage boss touche");
                            particule.Rectangle_Hadoken_Est_Present_Hero2 = false;
                        }
                        else if (_Boss[i].Rectangle.Intersects(particule.Rectangle_Ball_heros2(heros2)))
                        {
                            _Boss[i].Vie = _Boss[i].Vie - 2;
                            soundBank.PlayCue("Bruitage boss touche");
                            particule.Rectangle_Ball_Est_Present_Hero2 = false;
                        }
                    }
                    for (int j = 0; j < listeShuriken.Count; j++)
                        if (_Boss.Count > 0 && _Boss[i].Rectangle.Intersects(listeShuriken[j].Rectangle))
                        {
                            // une fois que le shuriken a touché le boss, le boss regarder vers le heros
                            if (listeShuriken[j].Direction == Vector2.UnitY)
                                _Boss[i].SourceRectangle = new Rectangle(26, 0, 16, 24);
                            else if (listeShuriken[j].Direction == -Vector2.UnitX)
                                _Boss[i].SourceRectangle = new Rectangle(26, 33, 16, 24);
                            else if (listeShuriken[j].Direction == -Vector2.UnitY)
                                _Boss[i].SourceRectangle = new Rectangle(26, 64, 16, 24);
                            else if (listeShuriken[j].Direction == Vector2.UnitX)
                                _Boss[i].SourceRectangle = new Rectangle(26, 97, 16, 24);

                            soundBank.PlayCue("Bruitage boss touche");
                            _Boss[i].Vie--;
                            listeShuriken.RemoveAt(j);
                            break;
                        }
                }
            }
        }
示例#11
0
		/// <summary>
		/// Allows the game component to perform any initialization it needs to before starting
		/// to run.  This is where it can query for any required services and load content.
		/// </summary>
		public override void Initialize() {
			// We don't want XNA calling this method each time we resume from the menu,
			// unfortunately, it'll call it whatever we try. So the only thing
			// we can do is check if it has been called already and return. Yes, it's ugly.
			if (mSpriteBatch != null) {
				GhostSoundsManager.ResumeLoops();
				return;
			}
			// Otherwise, this is the first time this component is Initialized, so proceed.

			GhostSoundsManager.Init(Game);

			Grid.Reset();
			Constants.Level = 1;
			mSpriteBatch = (SpriteBatch)Game.Services.GetService(typeof(SpriteBatch));
			mGraphicsDeviceManager = (GraphicsDeviceManager)Game.Services.GetService(typeof(GraphicsDeviceManager));
			mSoundBank = (SoundBank)Game.Services.GetService(typeof(SoundBank));

			mScoreFont = Game.Content.Load<SpriteFont>("Score");
			mScoreEventFont = Game.Content.Load<SpriteFont>("ScoreEvent");
			mXLife = Game.Content.Load<Texture2D>("sprites/ExtraLife");
			mPPill = Game.Content.Load<Texture2D>("sprites/PowerPill");
			mCrump = Game.Content.Load<Texture2D>("sprites/Crump");
			mBoard = Game.Content.Load<Texture2D>("sprites/Board");
			mBoardFlash = Game.Content.Load<Texture2D>("sprites/BoardFlash");
			mBonusEaten = new Dictionary<string, int>();
			mBonus = new Dictionary<string, Texture2D>(9);
			mBonus.Add("Apple", Game.Content.Load<Texture2D>("bonus/Apple"));
			mBonus.Add("Banana", Game.Content.Load<Texture2D>("bonus/Banana"));
			mBonus.Add("Bell", Game.Content.Load<Texture2D>("bonus/Bell"));
			mBonus.Add("Cherry", Game.Content.Load<Texture2D>("bonus/Cherry"));
			mBonus.Add("Key", Game.Content.Load<Texture2D>("bonus/Key"));
			mBonus.Add("Orange", Game.Content.Load<Texture2D>("bonus/Orange"));
			mBonus.Add("Pear", Game.Content.Load<Texture2D>("bonus/Pear"));
			mBonus.Add("Pretzel", Game.Content.Load<Texture2D>("bonus/Pretzel"));
			mBonus.Add("Strawberry", Game.Content.Load<Texture2D>("bonus/Strawberry"));

			mScoreEvents = new List<ScoreEvent>(5);
			mBonusPresent = false;
			mBonusSpawned = 0;
			mEatenGhosts = 0;
			Score = 0;
			mXLives = 2;
			mPaChomp = true;
			mPLayerDied = false;
			mPlayer = new Player(Game);

			mGhosts = new List<Ghost> { 
				new Ghost(Game, mPlayer, EGhostType.Blinky), 
				new Ghost(Game, mPlayer, EGhostType.Clyde),
				new Ghost(Game, mPlayer, EGhostType.Inky), 
				new Ghost(Game, mPlayer, EGhostType.Pinky)
			};
			mGhosts[2].SetBlinky(mGhosts[0]); // Oh, dirty hack. Inky needs this for his AI.
			mSoundBank.PlayCue("Intro");
			LockTimer = TimeSpan.FromMilliseconds(4500);

			base.Initialize();
		}
示例#12
0
文件: Nyan.cs 项目: postoakt/archer
        public void update(GameTime gametime, SoundBank soundbank)
        {
            angle += ANGLE;

            elapsed += (float)gametime.ElapsedGameTime.TotalSeconds;
            randlapsed += (float)gametime.ElapsedGameTime.TotalSeconds;

            if (!nyanSongIsPlaying && ismoving)
            {
                NyanSong = soundbank.GetCue("Nyan Cat");
                NyanSong.Play();
                nyanSongIsPlaying = true;
            }

            // handle animation
            if (!isDead)
            {
                if (elapsed > .25f && texture == nyan1)
                {
                    texture = nyan2;
                    Collidable.LoadTexture(texture);
                }
                else if (elapsed > .5f && texture == nyan2)
                {
                    texture = nyan1;
                    Collidable.LoadTexture(texture);
                    elapsed = 0;
                }
            }
            else
            {
                texture = nyanDead;
                elapsed = 0;
            }

            // end animation handling

            // if angle is greater than pi * 2, reset to zero. 2PI == 0 DUHH NOOOB
            if (angle >= Math.PI * 2)
            {
                angle = 0;
            }

            if (!isDead) // if nyancat is dead, dont bother handling his random appearance. he can't appear if HES DEAD
            {
                handleWhenonScreen();
                position.Y += (float)Math.Sin(angle) * 3;
            }
            else // handles when falling after shot.
            {
                NyanSong.Stop(AudioStopOptions.AsAuthored);

                if (deadlapsed < 2.0f)
                {
                    deadlapsed += (float)gametime.ElapsedGameTime.TotalSeconds;
                }
                if (!meowHasPlayed)
                {
                    soundbank.PlayCue("meow");
                    meowHasPlayed = true;
                }

                ismoving = false;
                if (position.Y < SCREEN_HEIGHT - (texture.Height))
                {
                    position.Y += 30f;
                }
                else
                {
                    position.Y = SCREEN_HEIGHT - texture.Height;
                    if (!thudHasPlayed)
                    {
                        soundbank.PlayCue("thud");
                        thudHasPlayed = true;
                    }
                }
            }

            Collidable.Position = this.position; // sets bounding box to same position as where nyancat is being drawn.
        }
示例#13
0
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            backgroundTexture = Content.Load<Texture2D>(@"Images\background");

            scoreFont = Content.Load<SpriteFont>(@"fonts\Score");

            audioEngine = new AudioEngine(@"Content\Audio\GameAudio.xgs");
            waveBank = new WaveBank(audioEngine, @"Content\Audio\Wave Bank.xwb");
            soundBank = new SoundBank(audioEngine, @"Content\Audio\Sound Bank.xsb");

            // Start the soundtrack audio
            trackCue = soundBank.GetCue("track");
            trackCue.Play();

            // Play the start sound
            soundBank.PlayCue("start");
        }
示例#14
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch     =   new SpriteBatch(GraphicsDevice);

            /*** LOAD ASSETS ***/
            Properties.parallax_1 = Content.Load<Texture2D>("mock/gui/screens/parallax_1");
            Properties.parallax_2 = Content.Load<Texture2D>("mock/gui/screens/parallax_2");
            Properties.parallax_3 = Content.Load<Texture2D>("mock/gui/screens/parallax_3");
            Properties.TexturaParticula     = Content.Load<Texture2D>("mock/gui/particula");
            Properties.TexturaNave          = Content.Load<Texture2D>("mock/gui/nave");
            Properties.TexturaAtractor1     = Content.Load<Texture2D>("mock/gui/Atractors");
            Properties.TexturaAtractor2     = Content.Load<Texture2D>("mock/gui/Atractors1");
            Properties.TexturaAtractor3     = Content.Load<Texture2D>("mock/gui/Atractors2");
            Properties.TexturaAtractor4     = Content.Load<Texture2D>("mock/gui/Atractors4");
            Properties.TexturaPlaneta       = Content.Load<Texture2D>("mock/gui/planeta");
            Properties.TexturaObjetivo      = Content.Load<Texture2D>("mock/gui/objetivo");
            Properties.texturaBotonHome     = Content.Load<Texture2D>("mock/gui/botones/botonHome");
            Properties.texturaBotonReload   = Content.Load<Texture2D>("mock/gui/botones/botonReload");
            Properties.texturaBotonCerrar   = Content.Load<Texture2D>("mock/gui/botones/botonCerrar");
            Properties.texturaBotonAyuda    = Content.Load<Texture2D>("mock/gui/botones/botonAyuda");
            Properties.texturaUIBarras      = Content.Load<Texture2D>("mock/gui/barras");
            Properties.texturaUIFill1       = Content.Load<Texture2D>("mock/gui/barrasLaserRelleno");
            Properties.texturaUIFill2       = Content.Load<Texture2D>("mock/gui/barrasRellenoObjetivo");

            screenSplashTexture    =   Content.Load<Texture2D>("mock/gui/screens/Splash");
            screenHelpTexture      =   Content.Load<Texture2D>("mock/gui/screens/Instrucciones");
            screenMenuTexture      =   Content.Load<Texture2D>("mock/gui/screens/Menu");
            screenCreditsTexture   =   Content.Load<Texture2D>("mock/gui/screens/Credits");
            screenGameTexture      =   Content.Load<Texture2D>("mock/gui/screens/GameScreen");
            screenPauseTexture     =   Content.Load<Texture2D>("mock/gui/screens/Pause");
            guiSelectorTexture     =   Content.Load<Texture2D>("mock/gui/Selector");
            guiRectangeTexture     =   Content.Load<Texture2D>("mock/gui/rect");
            mouseTexture           =   Content.Load<Texture2D>("mock/gui/cursor");
            // TODO: use this.Content to load your game content here
            screenMenu              = new Menu(screenMenuTexture, guiRectangeTexture, this);
            screenCreditos          = new Creditos(screenCreditsTexture, guiRectangeTexture, this);
            screenInstrucciones     = new Instrucciones(screenHelpTexture, guiRectangeTexture, this);

            //screenMenu.addButton(Properties.SCREEN_WITH/2 - 120, 130, 200, 35);
            //screenMenu.addButton(Properties.SCREEN_WITH/2 - 120, 180, 200, 35);

            /*** init juego ***/
            juego = new Juego(screenGameTexture, guiRectangeTexture, this);
            mouse = new MouseDP(mouseTexture, Vector2.Zero);
            posMouse = new Vector2(Properties.SCREEN_WITH/2, Properties.SCREEN_HEIGHT/2);

            /*** LOAD AUDIO ***/

            audioEngine = new AudioEngine("Content/Audio/audio.xgs");
            waveBank = new WaveBank(audioEngine, "Content/Audio/waves.xwb");
            soundBank = new SoundBank(audioEngine, "Content/Audio/sounds.xsb");
            soundBank.PlayCue("Tema");

            /****************
             * soundBank.PlayCue("Tema");
             * los nombres que tenemos son Bridge, Tema, Verso
             * ***************/
        }
示例#15
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            //// use a fixed frame rate of 30 frames per second
            //IsFixedTimeStep = true;
            //TargetElapsedTime = new TimeSpan(0, 0, 0, 0, 33);

            // run at full speed
            IsFixedTimeStep = false;

            // set screen size
            InitScreen();

            // initialize our sound objects
            m_audio = new AudioEngine(@"Content\example.xgs");
            m_wave = new WaveBank(m_audio, @"Content\example.xwb");
            m_sound = new SoundBank(m_audio, @"Content\example.xsb");

            // get a reference to our two sound categories
            m_catMusic = m_audio.GetCategory("Music");
            m_catDefault = m_audio.GetCategory("Default");

            // get a reference to Zoe's story
            m_story = m_sound.GetCue("zoe");

            // start playing our background music
            m_sound.PlayCue("ensalada");

            base.Initialize();
        }
示例#16
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here
            graphics.SynchronizeWithVerticalRetrace = false;
            graphics.ApplyChanges();
            IsFixedTimeStep = true;//this 3 lines are for the frames per second.

            screenCenter = new Vector2(graphics.PreferredBackBufferWidth / 2.0f, graphics.PreferredBackBufferHeight / 2.0f);

            // TODO: Add your initialization logic here
            // Initialize audio objects.
            // Initialize audio objects.
            engine = new AudioEngine("Content\\Original.xgs");
            soundBank = new SoundBank(engine, "Content\\Sound Bank.xsb");
            waveBank = new WaveBank(engine, "Content\\Wave Bank.xwb");

            // Play the sound.
            soundBank.PlayCue("Capture2");

            //Controller list
            actionList = new List<Controller.Action>();
            actionList.Add(new Controller.Action("LUp", Buttons.LeftThumbstickUp, Keys.W));
            actionList.Add(new Controller.Action("LDown", Buttons.LeftThumbstickDown, Keys.S));
            actionList.Add(new Controller.Action("LLeft", Buttons.LeftThumbstickLeft, Keys.A));
            actionList.Add(new Controller.Action("LRight", Buttons.LeftThumbstickRight, Keys.D));
            actionList.Add(new Controller.Action("RUp", Buttons.RightThumbstickUp, Keys.Up));
            actionList.Add(new Controller.Action("RDown", Buttons.RightThumbstickDown, Keys.Down));
            actionList.Add(new Controller.Action("RLeft", Buttons.RightThumbstickRight, Keys.Left));
            actionList.Add(new Controller.Action("RRight", Buttons.RightThumbstickRight, Keys.Right));
            actionList.Add(new Controller.Action("LT", Buttons.LeftTrigger, Keys.LeftShift));
            actionList.Add(new Controller.Action("RT", Buttons.RightTrigger, Keys.E));
            actionList.Add(new Controller.Action("A", Buttons.A, Keys.C));
            actionList.Add(new Controller.Action("B", Buttons.B, Keys.V));
            actionList.Add(new Controller.Action("Reset", Buttons.A, Keys.R));
            con = new Controller(PlayerIndex.One, actionList);

            //One BoundingBox level collision, you can add as many as you want.
            //This info comes from making collision boxes in your 3D application
            //and getting the Bounding box min and max values.
            bbLevel = new BoundingBox[] {
                new BoundingBox( new Vector3(-135,175,129), new Vector3(45,355,309) ),
                new BoundingBox( new Vector3(-270,-5,129), new Vector3(-90,175,309) ),
                new BoundingBox( new Vector3(-90,-5,129), new Vector3(90,175,309) ),
                new BoundingBox( new Vector3(90,-5,129), new Vector3(270,175,309) ),
                new BoundingBox( new Vector3(-720,-5,-501), new Vector3(720,625,-411) ),
                new BoundingBox( new Vector3(977,-291,-1153), new Vector3(1500,187,-498) ),
                new BoundingBox( new Vector3(1064,-113,-5691), new Vector3(1701,1750,-2585) ),
                new BoundingBox( new Vector3(1415,-99,-5859), new Vector3(2154,2064,-2254) ),
                new BoundingBox( new Vector3(1822,-83,-6053), new Vector3(2680,2428,-1868) ),
                new BoundingBox( new Vector3(2295,-64,-6279), new Vector3(3290,2851,-1421) ),
                new BoundingBox( new Vector3(2843,-42,-6541), new Vector3(3999,3341,-902) ),
                new BoundingBox( new Vector3(-674,-218,-10093), new Vector3(-372,76,-9253) ),
                new BoundingBox( new Vector3(-139,-240,-10382), new Vector3(1416,602,-9040) ),
                new BoundingBox( new Vector3(336,-80,-6425), new Vector3(949,390,-5788) ),
                new BoundingBox( new Vector3(-1702,-113,-5691), new Vector3(-1065,1750,-2585) ),
                new BoundingBox( new Vector3(-2458,-74,-6154), new Vector3(-1539,2618,-1668) ),
                new BoundingBox( new Vector3(3823,-167,2719), new Vector3(5008,444,3513) ),
                new BoundingBox( new Vector3(3602,-80,4158), new Vector3(4215,390,4795) ),
                new BoundingBox( new Vector3(1142,-41,6497), new Vector3(3609,360,7150) ),
                new BoundingBox( new Vector3(5067,-41,4043), new Vector3(6482,1657,5057) ),
                new BoundingBox( new Vector3(4195,-37,4215), new Vector3(10020,2801,29366) ),
                new BoundingBox( new Vector3(19913,-12,450), new Vector3(21519,1340,632) ),
                new BoundingBox( new Vector3(3154,-15,20674), new Vector3(4161,787,21772) ),
                new BoundingBox( new Vector3(-3185,-1951,-11980), new Vector3(-2145,1092,74861) ),
                new BoundingBox( new Vector3(-3459,3,-12484), new Vector3(83382,3047,-11444) ),
                new BoundingBox( new Vector3(15490,-132,35105), new Vector3(20535,4172,47827) )

                };

            //Initialize Collection variables
            usedTargetXZ = new List<Vector2>();
            Random rand = new Random((int)DateTime.Now.Ticks);

            Viewport vp = GraphicsDevice.Viewport;//Viewport
            float aspectRatio = (float)vp.Width / vp.Height;

            projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, aspectRatio,
                        1, 30000);

            //Add targets to the game
            for (int i = 0; i < NUM_OF_Target; i++)
            {
                int tx = 0;
                int tz = 0;
                do
                {
                    tx = rand.Next(tXValues[MIN], tXValues[MAX]);
                    tz = rand.Next(tZValues[MIN], tZValues[MAX]);
                } while (OriginalTXZ(tx, tz)); //Get Original Value for collectable

                usedTargetXZ.Add(new Vector2(tx, tz)); //Mark collectable as used (reserves position on the game world)
                targets.Add(new Enemy(new Vector3(tx, 10, tz), Content.Load<Model>("squirrel_enemy"), projection)); //add collectable to the game
            }

            //Initialize Collection variables
            usedXZ = new List<Vector2>();

            //Add all collectables to the game
            for (int i = 0; i < NUM_OF_COLLECTABLES; i++)
            {
                int x = 0;
                int z = 0;
                do
                {
                    x = rand.Next(XValues[MIN], XValues[MAX]);
                    z = rand.Next(ZValues[MIN], ZValues[MAX]);
                } while (OriginalXZ(x, z)); //Get Original Value for collectable

                usedXZ.Add(new Vector2(x, z)); //Mark collectable as used (reserves position on the game world)
                collectables.Add(new Collectable(new Vector3(x, 10, z))); //add collectable to the game
            }

            //Target list and null position values from your 3D application.
            //Of course you can guess this values from the XNA application.
            //targetList.Add(new Target(new Vector3(-310, 10, 12250)));
            //targetList.Add(new Target(new Vector3(-310, 10, 6404)));
            //targetList.Add(new Target(new Vector3(-310, 10, 2957)));
            //targetList.Add(new Target(new Vector3(-310, 10, 1359)));
            //targetList.Add(new Target(new Vector3(-310, 10, 326)));

            base.Initialize();

            #if WINDOWS_PHONE
            // Frame rate is 30 fps by default for Windows Phone.
            TargetElapsedTime = TimeSpan.FromTicks(333333);

            graphics.IsFullScreen = true;
            #endif
        }
        /// <summary>
        /// Load graphics content for the game.
        /// </summary>
        public override void LoadContent()
        {
            if (content == null)
                content = new ContentManager(ScreenManager.Game.Services, "Content");

            gameFont = content.Load<SpriteFont>("gamefont");

            //audio = new AudioEngine("Content/Sounds.xgs");
            //wavebank = new WaveBank(audio, "Content/XNAsteroids Waves.xwb");
            //soundbank = new SoundBank(audio, "Content/XNAsteroids Cues.xsb");
            //soundEffect = content.Load<SoundEffect>("bgm");
            //engine = new AudioEngine("Content\\Audio\\PlaySound.xgs");
            //soundBank = new SoundBank(engine, "Content\\Audio\\Sound Bank.xsb");
            //waveBank = new WaveBank(engine, "Content\\Audio\\Wave Bank.xwb");

            audio = new AudioEngine("Content\\Audio\\bgm.xgs");
            wavebank = new WaveBank(audio, "Content\\Audio\\bgm.xwb");
            soundbank = new SoundBank(audio, "Content\\Audio\\bgm.xsb");

            soundbank.PlayCue("bgm");

            // A real game would probably have more content than this sample, so
            // it would take longer to load. We simulate that by delaying for a
            // while, giving you a chance to admire the beautiful loading screen.
            //Thread.Sleep(1000);

            // once the load has finished, we use ResetElapsedTime to tell the game's
            // timing mechanism that we have just finished a very long frame, and that
            // it should not try to catch up.
            ScreenManager.Game.ResetElapsedTime();
        }
示例#18
0
        public static bool Collision_Heros_Bonus(ref Heros heros1, ref Heros heros2, ref List<Bonus> bonus, SoundBank soundBank)
        {
            for (int u = 0; u < bonus.Count; u++)
            {
                if (heros1.X == bonus[u].X && heros1.Y == bonus[u].Y)
                {
                    switch (bonus[u].TypeBonus)
                    {
                        case TypeBonus.shuriken:
                            heros1.NombreShuriken += 3;
                            bonus.RemoveAt(u);
                            soundBank.PlayCue("shurikenobt");
                            break;
                        case TypeBonus.hadoken:
                            heros1.NombreHadoken++;
                            bonus.RemoveAt(u);
                            soundBank.PlayCue("hadokenobt");
                            break;
                        case TypeBonus.checkPoint:
                            bonus.RemoveAt(u);
                            soundBank.PlayCue("CheckPoint");
                            return true;
                    }
                }
            }

            if (heros2 != null)
            {
                for (int u = 0; u < bonus.Count; u++)
                {
                    if (heros2.X == bonus[u].X && heros2.Y == bonus[u].Y)
                    {
                        switch (bonus[u].TypeBonus)
                        {
                            case TypeBonus.shuriken:
                                heros2.NombreShuriken += 3;
                                bonus.RemoveAt(u);
                                soundBank.PlayCue("shurikenobt");
                                break;
                            case TypeBonus.hadoken:
                                heros2.NombreHadoken++;
                                bonus.RemoveAt(u);
                                soundBank.PlayCue("hadokenobt");
                                break;
                            case TypeBonus.checkPoint:
                                bonus.RemoveAt(u);
                                soundBank.PlayCue("CheckPoint");
                                return true;
                        }
                    }
                }
            }
            return false;
        }
        public void Update(GameTime gameTime, ref Character player, ref LoadSave saveAndLoadGame, ref int floor, ref  List<Enemy> enemies, ref PositionManager[, ,] positionManager, ref float hpBarBredd
            , ref bool playmenumusic, ref bool playingamemusic, Cue IngameTGU, ref LevelManager levelManager, ref bool attackDone, ref bool attackDone2
            , ref bool attackDoneMiss, SoundBank soundBank, Cue attackHit, Cue attackMiss, ref Attack attack2, ref int playerDamgeDelt
            , ref Rectangle hpBarPos, List<GameObj> objects, Texture2D tileset)
        {
            KeyboardState ks = Keyboard.GetState();

            //Hp och hpbar uträkningar test
            Random tal = new Random();

            //När en attack är klar sätts dessa till true
            if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
            {
                attackDone2 = true;
                attackDoneMiss = true;
            }

            //Rörelse via tangentbordskontroller
            if (ks.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.D)) //Knapptryckning för att röra sig till höger
            {
                if (player.moveCharRight == false && player.allowButtonPress == true)  //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                {
                    player.Frame = 6;   //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen

                    if (positionManager[player.playerPosY, player.playerPosX + 1, floor].type == "enemy")
                    {
                        if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                        {
                            for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                            {
                                if (enemies[i].xCoord == player.playerPosX + 1 && enemies[i].yCoord == player.playerPosY)
                                {

                                    attackDone = false;
                                    player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack

                                    attack2.attackPos = new Vector2(player.playerPosX + 1, player.playerPosY);
                                    attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                    int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                    enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                    int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                    playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                    player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                    if (hpBefore == hpAfter)   //Då har attacken missat
                                    {
                                        attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                        attackDone2 = true;
                                        soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                    }
                                    else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                    {
                                        attackDoneMiss = true;
                                        attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                        soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                    }

                                    if (enemies[i].hp <= 0)   //Ifall fienden dör
                                    {

                                        positionManager[player.playerPosY, player.playerPosX + 1, floor].type = "empty";   //Sätter positionen den var på till empty

                                        player.Xp += enemies[i].ReturnExp();
                                        enemies.RemoveAt(i);  //Tar bort fienden

                                        if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                        {
                                            player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar

                                        }
                                    }
                                }
                                else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                {

                                }
                            }
                        }
                    }

                    else if (positionManager[player.playerPosY, player.playerPosX + 1, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                    {
                        player.moveCharRight = true;    //Gör så att man rör sig åt höger
                        player.allowButtonPress = false;    //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                        player.playerPosX += 1;

                    }

                }
            }
            if (ks.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.A)) //Knapptryckning för att röra sig till vänster
            {
                if (player.moveCharLeft == false && player.allowButtonPress == true)  //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                {
                    player.Frame = 3;  //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen
                    if (positionManager[player.playerPosY, player.playerPosX - 1, floor].type == "enemy")
                    {
                        if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                        {
                            for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                            {
                                if (enemies[i].xCoord == player.playerPosX - 1 && enemies[i].yCoord == player.playerPosY)
                                {

                                    attackDone = false;
                                    player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack
                                    attack2.attackPos = new Vector2(player.playerPosX - 1, player.playerPosY);
                                    attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                    int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                    enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                    int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                    playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                    player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                    if (hpBefore == hpAfter)   //Då har attacken missat
                                    {
                                        attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                        attackDone2 = true;
                                        soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                    }
                                    else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                    {
                                        attackDoneMiss = true;
                                        attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                        soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                    }

                                    if (enemies[i].hp <= 0)   //Ifall fienden dör
                                    {

                                        positionManager[player.playerPosY, player.playerPosX - 1, floor].type = "empty";
                                        player.Xp += enemies[i].ReturnExp();
                                        enemies.RemoveAt(i);  //Tar bort fienden
                                        if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                        {
                                            player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar
                                        }
                                    }
                                }
                                else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                {

                                }
                            }
                        }
                    }

                    else if (positionManager[player.playerPosY, player.playerPosX - 1, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                    {
                        player.moveCharLeft = true;    //Gör så att man rör sig åt vänster

                        player.allowButtonPress = false;   //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                        player.playerPosX -= 1;
                    }
                }
            }
            if (ks.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.W)) //Knapptryckning för att röra sig upp
            {
                if (player.moveCharUp == false && player.allowButtonPress == true)    //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                {
                    player.Frame = 9;  //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen
                    if (positionManager[player.playerPosY - 1, player.playerPosX, floor].type == "enemy")
                    {
                        if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                        {
                            for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                            {
                                if (enemies[i].xCoord == player.playerPosX && enemies[i].yCoord == player.playerPosY - 1)
                                {

                                    attackDone = false;
                                    player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack
                                    attack2.attackPos = new Vector2(player.playerPosX, player.playerPosY - 1);
                                    attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                    int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                    enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                    int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                    playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                    player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                    if (hpBefore == hpAfter)   //Då har attacken missat
                                    {
                                        attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                        attackDone2 = true;
                                        soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                    }
                                    else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                    {
                                        attackDoneMiss = true;
                                        attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                        soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                    }

                                    if (enemies[i].hp <= 0)   //Ifall fienden dör
                                    {
                                        positionManager[player.playerPosY - 1, player.playerPosX, floor].type = "empty";
                                        player.Xp += enemies[i].ReturnExp();
                                        enemies.RemoveAt(i);  //Tar bort fienden
                                        if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                        {
                                            player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar
                                        }
                                    }
                                }
                                else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                {

                                }
                            }
                        }
                    }

                    else if (positionManager[player.playerPosY - 1, player.playerPosX, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                    {
                        player.moveCharUp = true;  //Gör så att man rör sig upp

                        player.allowButtonPress = false;   //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                        player.playerPosY -= 1;
                    }
                }
            }
            if (ks.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.S))  //Knapptryckning för att röra sig ner
            {
                if (player.moveCharDown == false && player.allowButtonPress == true)  //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                {
                    player.Frame = 0; //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen

                    if (positionManager[player.playerPosY + 1, player.playerPosX, floor].type == "enemy")
                    {
                        if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                        {
                            for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                            {
                                if (enemies[i].xCoord == player.playerPosX && enemies[i].yCoord == player.playerPosY + 1)
                                {

                                    attackDone = false;
                                    player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack
                                    attack2.attackPos = new Vector2(player.playerPosX, player.playerPosY + 1);
                                    attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                    int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                    enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                    int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                    playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                    player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                    if (hpBefore == hpAfter)   //Då har attacken missat
                                    {
                                        attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                        attackDone2 = true;
                                        soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                    }
                                    else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                    {
                                        attackDoneMiss = true;
                                        attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                        soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                    }

                                    if (enemies[i].hp <= 0)   //Ifall fienden dör
                                    {

                                        positionManager[player.playerPosY + 1, player.playerPosX, floor].type = "empty";
                                        player.Xp += enemies[i].ReturnExp();
                                        enemies.RemoveAt(i);  //Tar bort fienden
                                        if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                        {
                                            player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar
                                        }
                                    }
                                }
                                else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                {

                                }
                            }
                        }
                    }

                    else if (positionManager[player.playerPosY + 1, player.playerPosX, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                    {
                        player.moveCharDown = true;    //Gör så att man rör sig ner

                        player.allowButtonPress = false;   //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                        player.playerPosY += 1;
                    }

                }
            }
            prevKs = ks;

            //Rörelse via musklick
            MouseState mousestate1 = Mouse.GetState();
            var mouseposition = new Point(mousestate1.X, mousestate1.Y);
            Rectangle moveUpBox = new Rectangle(400 - 28, 294 - 28, 56, 56);
            Rectangle moveDownBox = new Rectangle(400 - 28, 406 - 28, 56, 56);
            Rectangle moveLeftBox = new Rectangle(344 - 28, 350 - 28, 56, 56);
            Rectangle moveRightBox = new Rectangle(456 - 28, 350 - 28, 56, 56);

            if (mousestate1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Released) && prevMs1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Pressed))
            {
                if (moveUpBox.Contains(mouseposition))
                {
                    if (player.moveCharUp == false && player.allowButtonPress == true)    //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                    {
                        player.Frame = 9;  //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen
                        if (positionManager[player.playerPosY - 1, player.playerPosX, floor].type == "enemy")
                        {
                            if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                            {
                                for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                                {
                                    if (enemies[i].xCoord == player.playerPosX && enemies[i].yCoord == player.playerPosY - 1)
                                    {

                                        attackDone = false;
                                        player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack
                                        attack2.attackPos = new Vector2(player.playerPosX, player.playerPosY - 1);
                                        attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                        int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                        enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                        int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                        playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                        player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                        if (hpBefore == hpAfter)   //Då har attacken missat
                                        {
                                            attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                            attackDone2 = true;
                                            soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                        }
                                        else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                        {
                                            attackDoneMiss = true;
                                            attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                            soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                        }

                                        if (enemies[i].hp <= 0)   //Ifall fienden dör
                                        {

                                            positionManager[player.playerPosY - 1, player.playerPosX, floor].type = "empty";
                                            player.Xp += enemies[i].ReturnExp();
                                            enemies.RemoveAt(i);  //Tar bort fienden
                                            if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                            {
                                                player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar
                                            }
                                        }
                                    }
                                    else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                    {

                                    }
                                }
                            }
                        }

                        else if (positionManager[player.playerPosY - 1, player.playerPosX, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                        {
                            player.moveCharUp = true;  //Gör så att man rör sig upp

                            player.allowButtonPress = false;   //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                            player.playerPosY -= 1;
                        }
                    }
                }
            }

            if (mousestate1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Released) && prevMs1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Pressed))
            {
                if (moveDownBox.Contains(mouseposition))
                {
                    if (player.moveCharDown == false && player.allowButtonPress == true)  //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                    {
                        player.Frame = 0; //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen

                        if (positionManager[player.playerPosY + 1, player.playerPosX, floor].type == "enemy")
                        {
                            if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                            {
                                for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                                {
                                    if (enemies[i].xCoord == player.playerPosX && enemies[i].yCoord == player.playerPosY + 1)
                                    {

                                        attackDone = false;
                                        player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack
                                        attack2.attackPos = new Vector2(player.playerPosX, player.playerPosY + 1);
                                        attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                        int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                        enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                        int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                        playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                        player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                        if (hpBefore == hpAfter)   //Då har attacken missat
                                        {
                                            attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                            attackDone2 = true;
                                            soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                        }
                                        else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                        {
                                            attackDoneMiss = true;
                                            attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                            soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                        }

                                        if (enemies[i].hp <= 0)   //Ifall fienden dör
                                        {

                                            positionManager[player.playerPosY + 1, player.playerPosX, floor].type = "empty";
                                            player.Xp += enemies[i].ReturnExp();
                                            enemies.RemoveAt(i);  //Tar bort fienden
                                            if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                            {
                                                player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar
                                            }
                                        }
                                    }
                                    else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                    {

                                    }
                                }
                            }
                        }

                        else if (positionManager[player.playerPosY + 1, player.playerPosX, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                        {
                            player.moveCharDown = true;    //Gör så att man rör sig ner

                            player.allowButtonPress = false;   //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                            player.playerPosY += 1;
                        }

                    }
                }
            }

            if (mousestate1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Released) && prevMs1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Pressed))
            {
                if (moveLeftBox.Contains(mouseposition))
                {
                    if (player.moveCharLeft == false && player.allowButtonPress == true)  //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                    {
                        player.Frame = 3;  //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen
                        if (positionManager[player.playerPosY, player.playerPosX + 1, floor].type == "enemy")
                        {
                            if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                            {
                                for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                                {
                                    if (enemies[i].xCoord == player.playerPosX + 1 && enemies[i].yCoord == player.playerPosY)
                                    {

                                        attackDone = false;
                                        player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack

                                        int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                        enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                        int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                        playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                        player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                        if (hpBefore == hpAfter)   //Då har attacken missat
                                        {
                                            attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                            attackDone2 = true;
                                            soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                        }
                                        else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                        {
                                            attackDoneMiss = true;
                                            attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                            soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                        }
                                        if (enemies[i].hp <= 0)   //Ifall fienden dör
                                        {

                                            positionManager[player.playerPosY, player.playerPosX + 1, floor].type = "empty";   //Sätter positionen den var på till empty

                                            player.Xp += enemies[i].ReturnExp();
                                            enemies.RemoveAt(i);  //Tar bort fienden
                                            if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                            {
                                                player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar
                                            }
                                        }
                                    }
                                    else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                    {

                                    }
                                }
                            }
                        }
                        else if (positionManager[player.playerPosY, player.playerPosX - 1, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                        {
                            player.moveCharLeft = true;    //Gör så att man rör sig åt vänster

                            player.playerPosX -= 1;
                            player.allowButtonPress = false;   //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                        }
                    }
                }
            }

            if (mousestate1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Released) && prevMs1.RightButton == (Microsoft.Xna.Framework.Input.ButtonState.Pressed))
            {
                if (moveRightBox.Contains(mouseposition))
                {
                    if (player.moveCharRight == false && player.allowButtonPress == true)  //Gör så att man enbart kan genomföra en ny rörelse om karaktären för tillfället inte rör sig åt något håll
                    {
                        player.Frame = 6;   //sätter framen till det håll man försöker gå åt, ifall det är en vägg ivägen körs inte animationen men karaktären vänder sig mot väggen

                        if (positionManager[player.playerPosY, player.playerPosX + 1, floor].type == "enemy")
                        {
                            if (attackDone == true)    //Gör så att man enbart kan genomföra en atack åt gången
                            {
                                for (int i = 0; i < enemies.Count; i++)   //Kollar igenom alla fiender
                                {
                                    if (enemies[i].xCoord == player.playerPosX + 1 && enemies[i].yCoord == player.playerPosY)
                                    {

                                        attackDone = false;
                                        player.allowButtonPress = false; //Gör så man ej kan göra någon annan rörelse eller attack medans man genomför nuvarande attack

                                        attack2.attackPos = new Vector2(player.playerPosX + 1, player.playerPosY);
                                        attack2.Position = new Vector2(attack2.attackPos.X * 64, attack2.attackPos.Y * 64);   //Ritar ut attackanimationen i rätt ruta

                                        int hpBefore = enemies[i].hp;   //Fiendens hp innan utförd attack
                                        enemies[i].hp -= attack2.CharAttackCalc(player.Totstr, enemies[i].dex);   //Kör spelarens attackuträkning på fienden
                                        int hpAfter = enemies[i].hp;   //Fiendens hp efter attack

                                        playerDamgeDelt = hpBefore - hpAfter;   //Skadan som fienden tog

                                        player.allowButtonPress = true;   //Gör att man får trycka på en knapp igen
                                        if (hpBefore == hpAfter)   //Då har attacken missat
                                        {
                                            attackDoneMiss = false;   //Gör att texten för miss ritas ut
                                            attackDone2 = true;
                                            soundBank.PlayCue("AttackMiss");   //Spelar upp ljud för miss
                                        }
                                        else if (hpBefore != hpAfter)   //Ifall attacken träffar
                                        {
                                            attackDoneMiss = true;
                                            attackDone2 = false;   //gör så att attackanimationen får ritas ut
                                            soundBank.PlayCue("AttackSound");   //Spelar upp ljud för träff
                                        }

                                        if (enemies[i].hp <= 0)   //Ifall fienden dör
                                        {

                                            positionManager[player.playerPosY, player.playerPosX + 1, floor].type = "empty";   //Sätter positionen den var på till empty

                                            player.Xp += enemies[i].ReturnExp();
                                            enemies.RemoveAt(i);  //Tar bort fienden
                                            if (player.Xp >= player.XpToLevel)   //Gör så att man går upp i level
                                            {
                                                player.LevelUp(ref hpBarPos.Width);   //Återställer spelarens hpbar

                                            }
                                        }
                                    }
                                    else if (enemies[i].xCoord != player.playerPosX + 1 || enemies[i].yCoord != player.playerPosY)
                                    {

                                    }
                                }
                            }
                        }

                        else if (positionManager[player.playerPosY, player.playerPosX + 1, floor].type != "wall")   //Kollar om det är en vägg framför karaktären, om detta är fallet utförs ingen rörelse
                        {
                            player.moveCharRight = true;    //Gör så att man rör sig åt höger
                            player.allowButtonPress = false;    //Gör så att man inte kan trycka på någon annan knapp medans en rörelse genomförs
                            player.playerPosX += 1;

                        }

                    }
                }
            }

            prevMs1 = mousestate1;

            base.Update(gameTime);
        }
示例#20
0
 public static bool Collision_Heros_Dark_Hero(Heros heros, Dark_Hero dark, SoundBank SB)
 {
     if (dark != null && heros.Rectangle.Intersects(dark.Rectangle))
     {
         SB.PlayCue("dark");
         return true;
     }
     return false;
 }
示例#21
0
        public void FireBullet(Player PlayerThatShoots, SoundBank TheSoundBank)
        {
            Bullet2 newBullet = new Bullet2(Texture);

            newBullet.Velocity = new Vector2((float)Math.Cos(PlayerThatShoots.Rotation), (float)Math.Sin(PlayerThatShoots.Rotation)) * 100.0f;

            newBullet.Position = PlayerThatShoots.Position + newBullet.Velocity * 1.75f;
            newBullet.Rotation = PlayerThatShoots.Rotation;
            newBullet.Scale = 1.0f;
            newBullet.Create();
            TheSoundBank.PlayCue("MP5-1");
            bullets.Add(newBullet);

        }
示例#22
0
        public static bool Collision_Heros_ExplosionStatues(List<Statue> _statues, Heros heros1, Heros heros2, MoteurParticule particule, SoundBank soundBank)
        {
            if (_statues.Count != 0)
            {
                for (int i = 0; i < _statues.Count; i++)
                {
                    if (heros1.Rectangle.Intersects(particule.Rectangle_Hadoken_Statue(_statues[i])))
                    {
                        ServiceHelper.Get<IGamePadService>().Vibration(50);
                        soundBank.PlayCue("CriMortHero");
                        return true;
                    }
                    if (heros2 != null)
                    {
                        if (heros2.Rectangle.Intersects(particule.Rectangle_Hadoken_Statue(_statues[i])))
                        {
                            ServiceHelper.Get<IGamePadService>().Vibration(50);
                            soundBank.PlayCue("CriMortHero");
                            return true;
                        }

                    }
                }
            }
            return false;
        }