示例#1
0
 public static void Draw(SpriteBatch spriteBatch)
 {
     AnimatedSpritesManager.animatedSpritesRoomManagers[(int)currentRoom].DrawOnTheBack(spriteBatch);
     TorchManager.Draw(spriteBatch);
     PlatformsManager.platformsRoomManagers[(int)currentRoom].Draw(spriteBatch);
     if (currentRoom == Rooms.finalBoss)
     {
         FinalBoss.Draw(spriteBatch);
     }
     else if (currentRoom == Rooms.midBoss)
     {
         MidBoss.Draw(spriteBatch);
     }
     EnemyManager.enemyRoomManagers[(int)currentRoom].Draw(spriteBatch);
     CollectablesManager.collectablesRoomManagers[(int)currentRoom].Draw(spriteBatch);
     ProjectilesManager.Draw(spriteBatch);
     Player.Draw(spriteBatch);
     MapsManager.maps[(int)currentRoom].Draw(spriteBatch);
     DoorsManager.doorsRoomManagers[(int)currentRoom].Draw(spriteBatch);
     AnimatedSpritesManager.animatedSpritesRoomManagers[(int)currentRoom].DrawInFront(spriteBatch);
     FireBallsManager.Draw(spriteBatch);
     LavaGeyserManager.Draw(spriteBatch);
     MonologuesManager.monologuesRoomManagers[(int)currentRoom].Draw(spriteBatch);
 }
示例#2
0
 public static void Update(float elapsedTime)
 {
     if (switchRoom())
         LoadSaveManager.SaveGameProgress();
     CameraManager.Update(elapsedTime);
     MapsManager.maps[(int)currentRoom].Update(elapsedTime);
     if (currentRoom== Rooms.finalBoss)
     {
         FinalBoss.Update(elapsedTime);
     }
     if(currentRoom==Rooms.midBoss)
     {
        MidBoss.Update(elapsedTime);
     }
     EnemyManager.enemyRoomManagers[(int)currentRoom].Update(elapsedTime);
     FireBallsManager.Update(elapsedTime);
     LavaGeyserManager.Update(elapsedTime);
     PlatformsManager.platformsRoomManagers[(int)currentRoom].Update(elapsedTime);
     CollectablesManager.collectablesRoomManagers[(int)currentRoom].Update(elapsedTime);
     MonologuesManager.monologuesRoomManagers[(int)currentRoom].Update(elapsedTime);
     DoorsManager.doorsRoomManagers[(int)currentRoom].Update();
     AnimatedSpritesManager.animatedSpritesRoomManagers[(int)currentRoom].Update(elapsedTime);
     TorchManager.Update(elapsedTime);
 }
示例#3
0
        //this function check some condition to determine whether an event should be triggered
        static void eventHandler(float elapsedTime)
        {
            switch (RoomsManager.CurrentRoom)
            {
            case RoomsManager.Rooms.tutorial0:
                if (!eventAlreadyHappened[(int)Events.introMonologue])
                {
                    TriggerEvent(Events.introMonologue);
                }
                else if (FinalBoss.Dead && Player.position.X < 200 && Player.position.Y <= 176 - Player.height &&
                         !eventAlreadyHappened[(int)Events.finalMonologue])
                {
                    TriggerEvent(Events.finalMonologue);
                }
                else if (eventAlreadyHappened[(int)Events.finalMonologue] && !MonologuesManager.MonologuePlaying)
                {
                    TriggerEvent(Events.finalCutscene);
                }
                break;

            case RoomsManager.Rooms.tutorial3:
                if (EnemyManager.enemyRoomManagers[(int)RoomsManager.CurrentRoom].enemiesType1[0].Dead &&
                    !eventAlreadyHappened[(int)Events.keySpawns1_tutorial3])
                {
                    TriggerEvent(Events.keySpawns1_tutorial3);
                }
                else if (eventAlreadyHappened[(int)Events.keySpawns1_tutorial3] && !eventAlreadyHappened[(int)Events.key1Collected_tutorial3] &&
                         CollectablesManager.collectedItems.Count == 1)
                {
                    TriggerEvent(Events.key1Collected_tutorial3);
                }
                else if (EnemyManager.enemyRoomManagers[(int)RoomsManager.CurrentRoom].enemiesType1[1].Dead &&
                         !eventAlreadyHappened[(int)Events.keySpawns2_tutorial3])
                {
                    TriggerEvent(Events.keySpawns2_tutorial3);
                }
                else if (eventAlreadyHappened[(int)Events.keySpawns2_tutorial3] && !eventAlreadyHappened[(int)Events.key2Collected_tutorial3] &&
                         CollectablesManager.collectedItems.Count == 1)
                {
                    TriggerEvent(Events.key2Collected_tutorial3);
                }
                break;

            case RoomsManager.Rooms.churchBellTower0:
                if (Player.CollisionRectangle.Intersects(new Rectangle(196, 908, 96, 76)) &&
                    CollectablesManager.TryRemoveFromInventory(Collectable.ItemType.doubleJump_powerup, new Vector2(223, 938)) &&
                    !eventAlreadyHappened[(int)Events.unlockDoubleJump])
                {
                    TriggerEvent(Events.unlockDoubleJump);
                }
                else if (eventAlreadyHappened[(int)Events.unlockDoubleJump] && !eventAlreadyHappened[(int)Events.showDoubleJumpScreen])
                {
                    TriggerEvent(Events.showDoubleJumpScreen);
                }
                else if (Player.CollisionRectangle.Intersects(new Rectangle(196, 908, 96, 76)) &&
                         CollectablesManager.TryRemoveFromInventory(Collectable.ItemType.wallJump_powerup, new Vector2(251, 938)) &&
                         !eventAlreadyHappened[(int)Events.unlockWallJump])
                {
                    TriggerEvent(Events.unlockWallJump);
                }
                else if (eventAlreadyHappened[(int)Events.unlockWallJump] && !eventAlreadyHappened[(int)Events.showWallJumpScreen])
                {
                    TriggerEvent(Events.showWallJumpScreen);
                }
                break;

            case RoomsManager.Rooms.midBoss:
                if (MidBoss.Dead && !eventAlreadyHappened[(int)Events.keyAndPowerUpSpawn_midBoss])
                {
                    TriggerEvent(Events.keyAndPowerUpSpawn_midBoss);
                }
                else if (eventAlreadyHappened[(int)Events.keyAndPowerUpSpawn_midBoss] && CollectablesManager.collectedItems.Count > 0)
                {
                    if (!eventAlreadyHappened[(int)Events.pUpCollected_midBoss])
                    {
                        foreach (Collectable collectable in CollectablesManager.collectedItems)
                        {
                            if (collectable.type == Collectable.ItemType.wallJump_powerup)
                            {
                                TriggerEvent(Events.pUpCollected_midBoss);
                                break;
                            }
                        }
                    }
                }
                break;

            case RoomsManager.Rooms.churchGroundFloor0:
                if (Player.position.X >= 88 - Player.width && Player.position.Y < 178)
                {
                    if (Player.IsOnMovingPlatform && !eventAlreadyHappened[(int)Events.activateMovingPlatforms_churchGroundFloor0])
                    {
                        TriggerEvent(Events.activateMovingPlatforms_churchGroundFloor0);
                    }
                }
                else if (!eventAlreadyHappened[(int)Events.resetMovingPlatforms_churchGroundFloor0])
                {
                    TriggerEvent(Events.resetMovingPlatforms_churchGroundFloor0);
                }
                break;

            case RoomsManager.Rooms.church1stFloor0:
                if ((Player.position.X < 1032 && Player.position.X >= 1000) ||
                    (Player.position.X < 684 && Player.position.X >= 664) ||
                    (Player.position.X < 364 && Player.position.X >= 344 && Player.position.Y > 106))
                {
                    if (!eventAlreadyHappened[(int)Events.showInvisibleTiles_church1stFloor0])
                    {
                        TriggerEvent(Events.showInvisibleTiles_church1stFloor0);
                    }
                }
                else if (!eventAlreadyHappened[(int)Events.hide_InvisibleTiles_church1stFloor0])
                {
                    TriggerEvent(Events.hide_InvisibleTiles_church1stFloor0);
                }
                break;

            case RoomsManager.Rooms.churchAltarRoom:
                if (TorchManager.AllTorchesUnlit() && !eventAlreadyHappened[(int)Events.spawnKey_altar])
                {
                    TriggerEvent(Events.spawnKey_altar);
                }
                else if (eventAlreadyHappened[(int)Events.spawnKey_altar] &&
                         !eventAlreadyHappened[(int)Events.keyCollected_altar] &&
                         CollectablesManager.collectedItems.Count > 0)
                {
                    foreach (Collectable c in CollectablesManager.collectedItems)
                    {
                        if (c.type == Collectable.ItemType.silverKey)
                        {
                            TriggerEvent(Events.keyCollected_altar);
                            break;
                        }
                    }
                }
                break;

            case RoomsManager.Rooms.finalBoss:
                if (Player.position.X <= 200 && !eventAlreadyHappened[(int)Events.terrainCollapseFinalBoss])
                {
                    TriggerEvent(Events.terrainCollapseFinalBoss);
                }
                if (eventAlreadyHappened[(int)Events.terrainCollapseFinalBoss] && !eventAlreadyHappened[(int)Events.finalBossComesAlive])
                {
                    TriggerEvent(Events.finalBossComesAlive);
                }
                if (eventAlreadyHappened[(int)Events.finalBossComesAlive] && !eventAlreadyHappened[(int)Events.activatePlatformsFinalBoss])
                {
                    TriggerEvent(Events.activatePlatformsFinalBoss);
                }
                if (FinalBoss.Dead && !eventAlreadyHappened[(int)Events.escapeFinalBossRoom])
                {
                    TriggerEvent(Events.escapeFinalBossRoom);
                }
                break;

            case RoomsManager.Rooms.escape0:
                if (Player.position.X < 1752 && !eventAlreadyHappened[(int)Events.monologue_escape0])
                {
                    TriggerEvent(Events.monologue_escape0);
                }
                if (Player.position.X < MapsManager.maps[(int)RoomsManager.Rooms.escape0].RoomWidthtPx - 248 && !eventAlreadyHappened[(int)Events.lavaEruption1_escape0])
                {
                    TriggerEvent(Events.lavaEruption1_escape0);
                }
                if (Player.position.X < MapsManager.maps[(int)RoomsManager.Rooms.escape0].RoomWidthtPx - 416 && !eventAlreadyHappened[(int)Events.lowerFloor1_escape0])
                {
                    TriggerEvent(Events.lowerFloor1_escape0);
                }
                if (!PlatformsManager.platformsRoomManagers[(int)RoomsManager.Rooms.escape0].movingPlatforms[1].active &&
                    !eventAlreadyHappened[(int)Events.removeFloor1_escape0] && eventAlreadyHappened[(int)Events.lowerFloor1_escape0])
                {
                    TriggerEvent(Events.removeFloor1_escape0);
                }
                if (eventAlreadyHappened[(int)Events.lowerFloor1_escape0] && !eventAlreadyHappened[(int)Events.lavaEruption2_escape0])
                {
                    TriggerEvent(Events.lavaEruption2_escape0);
                }
                if (eventAlreadyHappened[(int)Events.lavaEruption2_escape0] && !eventAlreadyHappened[(int)Events.lavaEruption3_escape0])
                {
                    TriggerEvent(Events.lavaEruption3_escape0);
                }
                if (eventAlreadyHappened[(int)Events.lavaEruption3_escape0] && !eventAlreadyHappened[(int)Events.lavaEruption4_escape0])
                {
                    TriggerEvent(Events.lavaEruption4_escape0);
                }
                if (eventAlreadyHappened[(int)Events.lowerFloor1_escape0] && !eventAlreadyHappened[(int)Events.raiseFloor2_escape0])
                {
                    TriggerEvent(Events.raiseFloor2_escape0);
                }
                if (Player.position.X < MapsManager.maps[(int)RoomsManager.Rooms.escape0].RoomWidthtPx - 1352 && !eventAlreadyHappened[(int)Events.lavaEruption5_escape0])
                {
                    TriggerEvent(Events.lavaEruption5_escape0);
                }
                if (Player.position.X < MapsManager.maps[(int)RoomsManager.Rooms.escape0].RoomWidthtPx - 1448 && !eventAlreadyHappened[(int)Events.raiseFloor3_escape0])
                {
                    TriggerEvent(Events.raiseFloor3_escape0);
                }
                if (eventAlreadyHappened[(int)Events.raiseFloor3_escape0] && !eventAlreadyHappened[(int)Events.lavaEruption6_escape0])
                {
                    TriggerEvent(Events.lavaEruption6_escape0);
                }
                break;

            case RoomsManager.Rooms.escape1:
                if (Player.IsOnMovingPlatform && !eventAlreadyHappened[(int)Events.activatePlatform_escape1])
                {
                    TriggerEvent(Events.activatePlatform_escape1);
                }
                if (Player.position.X < MapsManager.maps[(int)RoomsManager.Rooms.escape1].RoomWidthtPx - 881 && !eventAlreadyHappened[(int)Events.raiseFloor1_escape1])
                {
                    TriggerEvent(Events.raiseFloor1_escape1);
                }
                if (Player.position.X < 104 && !eventAlreadyHappened[(int)Events.lavaEruption1_escape1])
                {
                    TriggerEvent(Events.lavaEruption1_escape1);
                }
                break;

            case RoomsManager.Rooms.escape2:
                if (Player.position.X + Player.width < 424)
                {
                    if (!eventAlreadyHappened[(int)Events.lavaEruption_escape2])
                    {
                        TriggerEvent(Events.lavaEruption_escape2);
                    }
                    else
                    {
                        eventAlreadyHappened[(int)Events.lavaEruption_escape2] = false;
                    }
                }
                break;
            }
        }
示例#4
0
文件: Game1.cs 项目: aaaivan/999AD
        /// <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);

#if LEVEL_EDITOR
            MapsManager.Inizialize(Content.Load <Texture2D>("tiles"));
            CameraManager.Inizialize
            (
                new Texture2D[(int)RoomsManager.Rooms.total]
            {
                Content.Load <Texture2D>(@"backgrounds\tutorial0"),
                Content.Load <Texture2D>(@"backgrounds\tutorial1"),
                Content.Load <Texture2D>(@"backgrounds\tutorial2"),
                Content.Load <Texture2D>(@"backgrounds\tutorial3"),
                Content.Load <Texture2D>(@"backgrounds\tutorial4"),
                Content.Load <Texture2D>(@"backgrounds\bellTower0"),
                Content.Load <Texture2D>(@"backgrounds\bellTower1"),
                Content.Load <Texture2D>(@"backgrounds\bellTower2"),
                Content.Load <Texture2D>(@"backgrounds\midBoss"),
                Content.Load <Texture2D>(@"backgrounds\groundFloor"),
                Content.Load <Texture2D>(@"backgrounds\altarRoom"),
                Content.Load <Texture2D>(@"backgrounds\firstFloor"),
                Content.Load <Texture2D>(@"backgrounds\secondFloor"),
                Content.Load <Texture2D>(@"backgrounds\descent"),
                Content.Load <Texture2D>(@"backgrounds\finalBoss"),
                Content.Load <Texture2D>(@"backgrounds\escape0"),
                Content.Load <Texture2D>(@"backgrounds\escape1"),
                Content.Load <Texture2D>(@"backgrounds\escape2"),
            }
            );
            spriteFont = Content.Load <SpriteFont>(@"fonts\monologue");
            PlatformsManager.Inizialize(Content.Load <Texture2D>("platforms"));
            levelEditor = new LevelEditor(Content.Load <SpriteFont>(@"fonts\arial32"),
                                          Content.Load <SpriteFont>(@"fonts\arial14"),
                                          Content.Load <Texture2D>("whiteTile"));
#else
            //load the game assets here
            currentGameState = GameStates.titleScreen;
            LoadSaveManager.Inizialize();
            GameStats.Inizialize();
            Achievements.Initialize(Content.Load <SpriteFont>(@"fonts\monologue"),
                                    Content.Load <SpriteFont>(@"fonts\LiberationMono12"));
            MapsManager.Inizialize(Content.Load <Texture2D>("tiles"));
            CameraManager.Inizialize
            (
                new Texture2D[(int)RoomsManager.Rooms.total]
            {
                Content.Load <Texture2D>(@"backgrounds\tutorial0"),
                Content.Load <Texture2D>(@"backgrounds\tutorial1"),
                Content.Load <Texture2D>(@"backgrounds\tutorial2"),
                Content.Load <Texture2D>(@"backgrounds\tutorial3"),
                Content.Load <Texture2D>(@"backgrounds\tutorial4"),
                Content.Load <Texture2D>(@"backgrounds\bellTower0"),
                Content.Load <Texture2D>(@"backgrounds\bellTower1"),
                Content.Load <Texture2D>(@"backgrounds\bellTower2"),
                Content.Load <Texture2D>(@"backgrounds\midBoss"),
                Content.Load <Texture2D>(@"backgrounds\groundFloor"),
                Content.Load <Texture2D>(@"backgrounds\altarRoom"),
                Content.Load <Texture2D>(@"backgrounds\firstFloor"),
                Content.Load <Texture2D>(@"backgrounds\secondFloor"),
                Content.Load <Texture2D>(@"backgrounds\descent"),
                Content.Load <Texture2D>(@"backgrounds\finalBoss"),
                Content.Load <Texture2D>(@"backgrounds\escape0"),
                Content.Load <Texture2D>(@"backgrounds\escape1"),
                Content.Load <Texture2D>(@"backgrounds\escape2"),
            }
            );
            PlatformsManager.Inizialize(Content.Load <Texture2D>("platforms"));
            ProjectilesManager.Inizialize(Content.Load <Texture2D>("animatedSprites"));
            Player.Inizialize(Content.Load <Texture2D>(@"characters\player"), new Vector2(16, 185));
            RoomsManager.Inizialize();
            GameEvents.Inizialize();
            FireBallsManager.Inizialize(Content.Load <Texture2D>("animatedSprites"));
            LavaGeyserManager.Inizialize(Content.Load <Texture2D>("animatedSprites"));
            EnemyManager.Initialise(Content.Load <Texture2D>(@"characters\enemy1"), Content.Load <Texture2D>(@"characters\enemy2"));
            MidBoss.Initialise(Content.Load <Texture2D>(@"characters\midboss"));
            FinalBoss.Inizialize(Content.Load <Texture2D>(@"characters\finalBoss"),
                                 new Texture2D[] { Content.Load <Texture2D>(@"characters\stoneWing"),
                                                   Content.Load <Texture2D>(@"characters\healthyWing"),
                                                   Content.Load <Texture2D>(@"characters\damagedWing"),
                                                   Content.Load <Texture2D>(@"characters\deadWing") });
            CollectablesManager.Inizialize(Content.Load <Texture2D>("animatedSprites"));
            MonologuesManager.Inizialize(Content.Load <Texture2D>("animatedSprites"),
                                         Content.Load <SpriteFont>(@"fonts\monologue"));
            DoorsManager.Inizialize(Content.Load <Texture2D>("animatedSprites"));
            AnimatedSpritesManager.Inizialize(Content.Load <Texture2D>("animatedSprites"));
            TorchManager.Initialize(Content.Load <Texture2D>("firePot"));
            PlayerDeathManager.Initialize(Content.Load <Texture2D>(@"menus\deathScreen"),
                                          Content.Load <Texture2D>(@"menus\menuOptions"));
            MenusManager.Initialize(Content.Load <Texture2D>(@"menus\menuOptions"),
                                    new Texture2D[]
            {
                Content.Load <Texture2D>(@"menus\titleScreen"),
                Content.Load <Texture2D>(@"menus\controls"),
                Content.Load <Texture2D>(@"menus\credits"),
                Content.Load <Texture2D>(@"menus\pause"),
                Content.Load <Texture2D>(@"menus\quit"),
                Content.Load <Texture2D>(@"menus\doubleJump"),
                Content.Load <Texture2D>(@"menus\wallJump"),
                Content.Load <Texture2D>(@"menus\achievements"),
            });
            CutscenesManager.Initialize(Content.Load <Texture2D>(@"characters\enemy1"),
                                        Content.Load <Texture2D>(@"characters\player"),
                                        Content.Load <SpriteFont>(@"fonts\monologue"));
            SoundEffects.Initialise
            (
                //Player Sound Effects
                Content.Load <SoundEffect>(@"sounds\pJump"),
                Content.Load <SoundEffect>(@"sounds\pShoot"),
                Content.Load <SoundEffect>(@"sounds\pHurt"),
                Content.Load <SoundEffect>(@"sounds\pickup"),

                //Enemy Sound Effects
                Content.Load <SoundEffect>(@"sounds\enemyAttack"),
                Content.Load <SoundEffect>(@"sounds\enemyHurt"),
                Content.Load <SoundEffect>(@"sounds\e2Attack"),

                //Midboss Sound Effects
                Content.Load <SoundEffect>(@"sounds\midMove"),
                Content.Load <SoundEffect>(@"sounds\midAttack"),
                Content.Load <SoundEffect>(@"sounds\midHurt"),

                Content.Load <SoundEffect>(@"sounds\finAttack"),
                Content.Load <SoundEffect>(@"sounds\finHurt"),
                Content.Load <SoundEffect>(@"sounds\finAwaken"),
                Content.Load <SoundEffect>(@"sounds\finRecover"),
                Content.Load <Song>(@"sounds\finalBossMusic")
            );
            gameInitialized = true;
            Zoom1();
#endif
        }