Exemplo n.º 1
0
        // Updates door timer if on. If timer reaches 0 handles situation separately depending on level and makes timer switch appear again.
        private void UpdateDoorTimer(GameTime gameTime)
        {
            if (doorTimerOn)
            {
                doorTimer -= gameTime.ElapsedGameTime;

                if (doorTimer.Seconds <= 0)
                {
                    // Turn timer diplay off
                    doorTimerOn = false;

                    // If door timer has been switched off reset everything that was changed
                    // Handle situation depending on level
                    switch (levelIndex)
                    {
                        case 2:
                            // Put laser beam back in place
                            for (int i = 0; i < 3; i++)
                                LoadLaserTile(32, 13 + i, false, true, false, RotationDirection.None);

                            // Put timer switch back in place
                            Tiles[59, 5] = LoadTile("timerTile", TileCollision.Timer);

                            break;

                        case 5:
                            // Put lasers back in place
                            for (int i = 0; i < 3; i++)
                            {
                                LoadLaserTile(140, 49 + i, false, true, false, RotationDirection.None);
                                LoadLaserTile(139, 59 + i, false, true, false, RotationDirection.None);
                            }

                            // Unblock ladder
                            Tiles[189, 21] = new Tile(null, TileCollision.Passable);
                            Tiles[190, 21] = new Tile(null, TileCollision.Passable);
                            Tiles[190, 22] = new Tile(null, TileCollision.Passable);

                            // Put timer switch back in place
                            Tiles[215, 13] = LoadTile("timerTile", TileCollision.Timer);

                            break;

                        default:   
                            break;
                    }

                    // Remove enemies created by timer event (for timers in every level)
                    for (int i = 0; i < Enemies.Count; i++)
                    {
                        Enemy enemy = Enemies[i];
                        if (enemy.createdByEvent)
                            enemy.Remove();
                    }

                    // Remove flashing lasers created by timer event (for timers in every level)
                    for (int i = 0; i < lasers.Count; i++)
                    {
                        Laser laser = lasers[i];
                        if (laser.createdByEvent && laser.flashing)
                            laser.Remove();
                    }
                     
                }
            }
        }
Exemplo n.º 2
0
        /*
         * Reloads all levels platforms, lifts and gun pickups as the may have been disturbed during previous play
         */
        private void reloadNonstaticComponents()
        {
                // Loop over every tileType in stored char array of level and reload only falling platforms (so dont have to reload whole
                // level on each death)
                for (int y = 0; y < Height; ++y)
                {
                    for (int x = 0; x < Width; ++x)
                    {
                        char tileType = levelChars[x, y];
                        if (inSudo3D())
                        {
                            switch (tileType)
                            {
                                case 'T':
                                    tiles[x, y] = LoadTurretTile(x, y, false, false); break;
                                case 'M':
                                    tiles[x, y] = LoadTurretTile(x, y, false, true); break;
                                // Reload enemies
                                case 'r':
                                    tiles[x, y] = LoadEnemyTile(x, y, "MonsterR", false); break;
                                case 'l':
                                    tiles[x, y] = LoadEnemyTile(x, y, "MonsterL", false); break;
                                case 'U':
                                    tiles[x, y] = LoadEnemyTile(x, y, "MonsterU", false); break;

                                case '|':
                                    tiles[x, y] = LoadLaserTile(x, y, false, true, false, RotationDirection.None); break;
                                case '=':
                                    tiles[x, y] = LoadLaserTile(x, y, false, false, false, RotationDirection.None); break;
                                case '%':
                                    tiles[x, y] = LoadLaserTile(x, y, false, true, false, RotationDirection.Clockwise); break;
                                case 't':
                                    if (inCarRaceMode())
                                    {
                                        // Load different triggers depending on zone in level
                                        if (x > 690)
                                            tiles[x, y] = LoadLevelTile("iceFloorTile", TileCollision.Trigger);
                                        else if (x > 524)
                                            tiles[x, y] = LoadLevelTile("pavementTile", TileCollision.Trigger);
                                        else if (x > 263)
                                            tiles[x, y] = LoadLevelTile("grassTile", TileCollision.Trigger);
                                        else
                                            tiles[x, y] = LoadTile("transparentTile", TileCollision.Trigger);
                                    }
                                    else
                                        tiles[x, y] = LoadTile("transparentTile", TileCollision.Trigger); break; // was "triggerTile"
                                case '+':
                                    tiles[x, y] = LoadTile("iceTargetTile", TileCollision.Target); break;
                            }
                        }

                        else 
                        {

                        switch (tileType)
                        {
                            case '^':
                                if (levelIndex == 11)
                                    tiles[x, y] = LoadLevelTile("flyUpTile", TileCollision.Trigger); break;
                            case '4':
                                tiles[x, y] = LoadLevelTile("slopeGrassFloorTile", TileCollision.Slope); break;
                            case '-':
                                tiles[x, y] = LoadFallingPlatformTile(x, y); break;
                            case 'p':
                                tiles[x, y] = LoadTile("pistolTile", TileCollision.Gun); break;
                            case 'Z':
                                tiles[x, y] = LoadTile("powerBulletTile", TileCollision.Gun); break;
                            case 'v':
                                 tiles[x, y] = LoadLevelTile("vehicleTile", TileCollision.Vehicle); break;
                            case 'L':
                                tiles[x, y] = LoadElevatorTile(x, y); break;
                            case '[':
                                tiles[x, y] = LoadMovingSpikeTile(x, y, false, false, true); break;
                            case ']':
                                tiles[x, y] = LoadMovingSpikeTile(x, y, false, true, true); break;
                            case '_':
                                tiles[x, y] = LoadMovingPlatformTile(x, y, false, false, true); break;
                            case '|':
                                tiles[x, y] = LoadMovingPlatformTile(x, y, false, false, false); break;
                            case ':':
                                tiles[x, y] = LoadMovingPlatformTile(x, y, false, true, true); break;
                            case ';':
                                tiles[x, y] = LoadMovingPlatformTile(x, y, false, true, false); break;
                            case 't':
                                tiles[x, y] = LoadTile("transparentTile", TileCollision.Trigger); break; // was "triggerTile"
                            case 'O':
                                tiles[x, y] = LoadLevelTile("visibleTriggerTile", TileCollision.Trigger); break;
                            case 'l':
                                tiles[x, y] = LoadLaserTile(x, y, false, true, false, RotationDirection.None); break;
                            case '=':
                                tiles[x, y] = LoadLaserTile(x, y, false, false, false, RotationDirection.None); break;
                            case '*':
                                if (levelIndex == 9)
                                {
                                    tiles[x, y] = LoadTile("brickTargetTile", TileCollision.Target); break;
                                }
                                tiles[x, y] = LoadLaserTile(x, y, false, true, true, RotationDirection.None); break;
                            case '&':
                                tiles[x, y] = LoadLaserTile(x, y, false, false, true, RotationDirection.None); break;
                            case '{':
                                tiles[x, y] = LoadLaserTile(x, y, false, true, false, RotationDirection.Clockwise); break;
                            case '+':
                                tiles[x, y] = LoadTile("targetTile", TileCollision.Target); break;
                            case '!':
                                tiles[x, y] = LoadTile("timerTile", TileCollision.Timer); break;
                            case 'T':
                                tiles[x, y] = LoadTurretTile(x, y, false, false); break;
                            case 'M':
                                tiles[x, y] = LoadTurretTile(x, y, false, true); break;
                            // Reload enemies
                            case 'a':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterA", false); break;
                            case 'b':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterB", false); break;
                            case 'c':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterC", false); break;
                            case 'd':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterD", false); break;
                            case 'e':
                                tiles[x, y] = LoadEnemyTile(x, y, "Boss1", false); break;
                            case 'f':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterF", false); break;
                            case 'g':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterG", false); break;
                            case 'H':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterH", false); break;
                            case 'I':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterI", false); break;
                            case 'j':
                                tiles[x, y] = LoadEnemyTile(x, y, "Boss2", false); break;
                            case 'k':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterK", false); break;
                            case 'm':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterM", false); break;
                            case 'n':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterN", false); break;
                            case 'N':
                                tiles[x, y] = LoadEnemyTile(x, y, "Boss3", false); break;
                            case 'P':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterP", false); break;
                            case 'q':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterQ", false); break;
                            case 'x':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterX", false); break;
                            case 'y':
                                tiles[x, y] = LoadEnemyTile(x, y, "MonsterY", false); break;
                            case 'z':
                                tiles[x, y] = LoadEnemyTile(x, y, "Boss4", false); break;
                            case 'Y':
                                tiles[x, y] = LoadEnemyTile(x, y, "Boss5", false); break;
                            case '.':
                                tiles[x, y] = new Tile(null, TileCollision.Passable); break;
                            case ',':
                                if (GetTileSet() == "Street/")
                                    tiles[x, y] = LoadLevelTile("brickPlatformTile", TileCollision.Impassable);
                                else
                                    tiles[x, y] = new Tile(null, TileCollision.Wind); break;
                            default: break;
                        }
                    }
                }
            }
        }