示例#1
0
文件: Map.cs 项目: er1/c376p1
 public Tile GetTile(TileCoord tc)
 {
     if (!doesTileExist(tc))
     {
         map.Add(tc, new Tile());
     }
     return map[tc];
 }
示例#2
0
文件: GunTower.cs 项目: er1/c376p1
 public GunTower(ref Model gunModel, Vector3 pos, TileCoord tc)
     : base(ref gunModel, pos, tc)
 {
     world *= Matrix.CreateRotationY(MathHelper.ToRadians(180));
     world *= Matrix.CreateTranslation(pos);
     //life = 50;
     towerDmg = 10;
     timer =  TimeSpan.FromSeconds(1.5);
 }
示例#3
0
 public ChickenTower(ref Model missileModel, Vector3 pos, TileCoord tc)
     : base(ref missileModel, pos, tc)
 {
     world *= Matrix.CreateRotationY(MathHelper.ToRadians(180));
     world *= Matrix.CreateTranslation(pos);
     life = 50;
     towerDmg = 10;
     timer = TimeSpan.FromSeconds(2.0);
 }
示例#4
0
文件: Map.cs 项目: er1/c376p1
 public bool doesTileExist(TileCoord tc)
 {
     if (map.ContainsKey(tc))
     {
         return true;
     }
     else
     {
         return false;
     }
 }
示例#5
0
文件: tower.cs 项目: er1/c376p1
 public tower(ref Model temp, Vector3 location, TileCoord currentTC)
     : base(temp)
 {
     position = location;
     tc = currentTC;
     //upgradeLevel = 0;
     isDead = false;
     range = 10;
     life = 20;
     //usually set a different timer depending on different types of tower
     //timer = TimeSpan.FromSeconds(2.0);
 }
示例#6
0
文件: Camera.cs 项目: er1/c376p1
 public Camera(Game game, Vector3 newPosition, Vector3 direction, Vector3 up, Viewport NewViewport, bool move, int WorldSize)
     : base(game)
 {
     // TODO: Construct any child components here
     currentTC = new TileCoord(0,0);
     worldSize = WorldSize;
     cameraPosition = newPosition;
     cameraDirection = direction - newPosition;
     cameraDirection.Normalize();
     cameraUp = up;
     CreateLootAt();
     viewport = NewViewport;
     projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, (float)viewport.Width / (float)viewport.Height, 1, 1500);
     timer = TimeSpan.FromSeconds(0.3);
     moveable = true;
 }
示例#7
0
文件: Map.cs 项目: er1/c376p1
 public void SetTile(TileCoord tc, Tile tile)
 {
     map[tc] = tile;
 }
示例#8
0
文件: Game1.cs 项目: er1/c376p1
        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();
            GamePadState gamePadState = GamePad.GetState(PlayerIndex.One);
            #region Menus (GAMESTATES)

            #region Main Menu
            //Credits
            if (gameState == -1)
            {
                if (!creditsMusik)
                {
                    MediaPlayer.Stop();
                    menuMusik = false;
                    MediaPlayer.Play(creditsMusic);
                    creditsMusik = true;
                }
                if ((Keyboard.GetState().IsKeyDown(Keys.Enter) || gamePadState.Buttons.B == ButtonState.Pressed) && !aButton)
                {
                    aButton = true;
                    gameState = 0;

                }

                if ((gamePadState.Buttons.B == ButtonState.Released) && (Keyboard.GetState().IsKeyUp(Keys.Enter)))
                {
                    aButton = false;
                }

            }
            if (gameState == 0)
            {
                if (!menuMusik)
                {
                    MediaPlayer.Stop();
                    creditsMusik = false;
                    gameMusik = false;
                    MediaPlayer.Play(menuMusic);
                    menuMusik = true;
                }

                if (!started)
                {
                    Components.Remove(cameraMain);
                    Components.Remove(spriteManager);
                    Components.Remove(spriteManager.frames);

                    cameraMain = new Camera(this, new Vector3(0, 200, 199), new Vector3(0, -5, 1), Vector3.Up, MainScreen, true, worldSize);
                    spriteManager = new SpriteManager(this);

                    Components.Add(cameraMain);
                    Components.Add(spriteManager);
                    started = true;
                }
                if((Keyboard.GetState().IsKeyDown(Keys.Up)||gamePadState.DPad.Up== ButtonState.Pressed) && !dPadUp)
                {
                    dPadUp = true;
                    menuState--;
                    if (menuState < 0)
                        menuState = 2;

                }
                if ((Keyboard.GetState().IsKeyDown(Keys.Down)||gamePadState.DPad.Down == ButtonState.Pressed) && !dPadDown)
                {
                    dPadDown = true;
                    menuState++;

                    if (menuState > 2)
                        menuState = 0;

                }
                if ((Keyboard.GetState().IsKeyDown(Keys.Enter) || gamePadState.Buttons.A == ButtonState.Pressed) && !aButton)
                {
                    aButton = true;
                    if (menuState == 0)
                    {
                        gameState = 1;
                    }
                    if (menuState == 1)
                    {
                        gameState = -1;
                    }
                    if (menuState == 2)
                    {
                        this.Exit();
                    }

                }
                if ((Keyboard.GetState().IsKeyDown(Keys.Escape)|| gamePadState.Buttons.A == ButtonState.Pressed) && !aButton )
                {
                    aButton = true;
                    if (menuState == 2)
                    {
                        this.Exit();
                    }
                }

                if ((gamePadState.Buttons.B == ButtonState.Released) && (Keyboard.GetState().IsKeyUp(Keys.Z)))
                {
                    bButton = false;
                }
                if ((gamePadState.Buttons.A == ButtonState.Released) && (Keyboard.GetState().IsKeyUp(Keys.Enter)))
                {
                    aButton = false;
                }
                if ((gamePadState.DPad.Up == ButtonState.Released) && (Keyboard.GetState().IsKeyUp(Keys.Up)))
                {
                    dPadUp = false;
                }
                if ((gamePadState.DPad.Down == ButtonState.Released) && (Keyboard.GetState().IsKeyUp(Keys.Down)))
                {
                    dPadDown = false;
                }

            }
            #endregion
            // game

            #region Win/Lose
            else if ((gameState == 3) || (gameState == 4))
            {
                if ((Keyboard.GetState().IsKeyDown(Keys.Enter) || gamePadState.Buttons.A == ButtonState.Pressed) && !aButton)
                {
                    wavesLevel.Clear();

                    aButton = true;
                    LIFE = 1000;
                    gameState = 0;
                    wavesLevel.Clear();
                    towers.Clear();
                    projectiles.Clear();
                    monsters.Clear();
                    resourcemanager = new ResourceManager();
                    gatherzone = new GatherZone(resourcemanager, this);
                    chosenTile = new TileCoord(0, 0);
                    started = false;
                    base.Initialize();
                }

                if ((gamePadState.Buttons.A == ButtonState.Released) && Keyboard.GetState().IsKeyUp(Keys.Enter))
                {
                    aButton = false;
                }
                if ((gamePadState.DPad.Up == ButtonState.Released) && (Keyboard.GetState().IsKeyUp(Keys.Up)))
                {
                    dPadUp = false;
                }
                if ((gamePadState.DPad.Down == ButtonState.Released) && (Keyboard.GetState().IsKeyUp(Keys.Down)))
                {
                    dPadDown = false;
                }

            }
            #endregion

            #region Main Game
            else if (gameState == 1)
            {

                if (!gameMusik)
                {
                    MediaPlayer.Stop();
                    menuMusik = false;
                    MediaPlayer.Play(gameMusic);
                    gameMusik = true;
                }
                base.Update(gameTime);

                if (Keyboard.GetState().IsKeyDown(Keys.Escape))
                {
                    gameState = 2;
                }
                if (gamePadState.Buttons.Start == ButtonState.Pressed)
                {
                    gameState = 2;
                }

            }
            #endregion

            #region Pause Menu
            //pause
            else if (gameState == 2)
            {
                if ((Keyboard.GetState().IsKeyDown(Keys.Up) || gamePadState.DPad.Up == ButtonState.Pressed) && !dPadUp)
                {
                    dPadUp = true;
                    pauseState--;
                    if (pauseState < 0)
                        pauseState = 1;

                }
                if ((Keyboard.GetState().IsKeyDown(Keys.Down) || gamePadState.DPad.Down == ButtonState.Pressed) && !dPadDown)
                {
                    dPadDown = true;
                    pauseState++;

                    if (pauseState > 1)
                        pauseState = 0;

                }
                if ((Keyboard.GetState().IsKeyDown(Keys.Enter) || gamePadState.Buttons.A == ButtonState.Pressed) && !aButton)
                {
                    aButton = true;
                    if (pauseState == 0)
                    {
                        gameState = 1;
                    }
                    if (pauseState == 1)
                    {
                        LIFE = 1000;
                        gameState = 0;
                        wavesLevel.Clear();
                        towers.Clear();
                        projectiles.Clear();
                        monsters.Clear();
                        resourcemanager = new ResourceManager();
                        gatherzone = new GatherZone(resourcemanager, this);
                        chosenTile = new TileCoord(0, 0);
                        started = false;
                        base.Initialize();
                    }

                }

                if ((gamePadState.Buttons.A == ButtonState.Released) && (Keyboard.GetState().IsKeyUp(Keys.Enter)))
                {
                    aButton = false;
                }
                if ((gamePadState.DPad.Up == ButtonState.Released) && (Keyboard.GetState().IsKeyUp(Keys.Up)))
                {
                    dPadUp = false;
                }
                if ((gamePadState.DPad.Down == ButtonState.Released) && (Keyboard.GetState().IsKeyUp(Keys.Down)))
                {
                    dPadDown = false;
                }

            }
            #endregion

            #endregion

            #region GAMESTATE 1 = playing
            if (gameState == 1)
            {
                if (gamePadState.Buttons.Start == ButtonState.Pressed)
                    gameState = 2;
                #region Update Level
                //Level 1
                if (currentWave < wavesLevel.Count)
                {
                    wavesLevel[currentWave].UpdateWave(gameTime);
                    spriteManager.drawHUD(wavesLevel[currentWave].levelTimer, wavesLevel[currentWave].level, curResource);
                    //Check if this Waves Timer is done or monsters are all dead (so wave is done)
                    if (((wavesLevel[currentWave].levelDone && wavesLevel[currentWave].spawn <= 1) && monsters.Count<1 ))
                    {
                        //Game.Exit();
                        //System.GC.Collect();
                        currentWave++;
                    }
                    //If Level isn't done then check the Timer to add monsters at invervals
                    else if (wavesLevel[currentWave].canSpawn && wavesLevel[currentWave].spawn > 0)
                    {

                        int z = RandomNumber(-80, 60);
                        wavesLevel[currentWave].spawn--;
                        wavesLevel[currentWave].canSpawn = false;
                        chance = RandomNumber(1, wavesLevel[currentWave].level);

                        if (chance == 1)
                        {
                            monsters.Add(new monster1(ref Monster1, new Vector3(-390 + 1, 5, z), new Vector3(1, 0, 0), this), true);
                            spriteManager.addLifeBarsMonsters(new Vector2(-390 + 1, z));
                        }
                        if (chance == 2)
                        {
                            monsters.Add(new monster2(ref Monster2, new Vector3(-390 + 1, 5, z), new Vector3(1, 0, 0), this), true);
                            spriteManager.addLifeBarsMonsters(new Vector2(-390 + 1, z));
                        }
                        if (chance == 3)
                        {
                            monsters.Add(new monster3(ref Monster3, new Vector3(-390 + 1, 5, z), new Vector3(1, 0, 0), this), true);
                            spriteManager.addLifeBarsMonsters(new Vector2(-390 + 1, z));
                        }
                        if (chance >= 4)
                        {
                            monsters.Add(new monster4(ref Monster4, new Vector3(-390 + 1, 5, z), new Vector3(1, 0, 0), this), true);
                            spriteManager.addLifeBarsMonsters(new Vector2(-390 + 1, z));
                        }
                    }
                }
                else
                {
                    gameState = 3;
                }

                if (LIFE <= 0)
                {
                    gameState = 4;
                }
                #endregion

                #region Update Drawing the Map
                //update Map
                map.Update();
                //Selected tile
                chosenTile = cameraMain.getCurrentTC();
                SelectionTile.Update(gameTime);

                #endregion

                RemoveDeadEntities();
                UpdateExplosions(gameTime);
                //Has some key input here
                //Selecting Resources
                if (curResource > 0)
                {
                    if (((gamePadState.Buttons.X == ButtonState.Pressed) || (Keyboard.GetState().IsKeyDown(Keys.Q))) && !SpaceBar)//
                    {
                        curResource--;
                        SpaceBar = true;
                    }
                }
                if (curResource < 5)
                {
                    if (((gamePadState.Buttons.Y == ButtonState.Pressed) || (Keyboard.GetState().IsKeyDown(Keys.E))) && !SpaceBar)//
                    {
                        curResource++;
                        SpaceBar = true;
                    }
                }

                #region Update Monster, Tower, bullets + a little logic

                #region monster
                foreach (KeyValuePair<monster, bool> pair in monsters)
                {
                    /*
                    percentage = 0;

                    if ((pair.Key.life / 100) * 100 == 100)
                    {
                        percentage = 100;
                    }
                    else if ((pair.Key.life / 100) * 100 > 75 && (pair.Key.life / 100) * 100 <= 99)
                    {
                        percentage = 100;
                    }
                    else if ((pair.Key.life / 100) * 100 > 51 && (pair.Key.life / 100) * 100 <= 75)
                    {
                        percentage = 75;
                    }
                    else if ((pair.Key.life / 100) * 100 > 25 && (pair.Key.life / 100) * 100 <= 51)
                    {
                        percentage = 50;
                    }
                    else if ((pair.Key.life / 100) * 100 <= 25)
                    {
                        percentage = 25;
                    }
                    */

                    pair.Key.Update(gameTime);
                    //spriteManager.updateLifeBarsMonsters(0, percentage, pair.Key.getPosition(), cameraMain, MainScreen);
                    TileCoord monsterLocation
                        =
                        new TileCoord((int)Math.Floor((pair.Key.getPosition().X + 10) / 20.0), (int)Math.Floor((pair.Key.getPosition().Z + 10) / 20.0));

                    map.GetTile(monsterLocation).addEntity(pair.Key);
                    // HIT THE COLONY NOT FINISHED ( REMOVE LIFE AND BLAH BLAH)
                    //if (pair.Key.hitColony)
                    //{

                    //    //pair.Key.life -= 100;
                    //    //spriteManager.removeLifeBarsMonsters(pair.Key);
                    //    //LIFE -= 10;
                    //}
                }
                #endregion

                #region towers
                //Draws Tower list
                foreach (KeyValuePair<tower, bool> pair in towers)
                {
                    pair.Key.Update();
                    pair.Key.game = this;

                    TileCoord towerLocation
                        =
                        new TileCoord((int)Math.Floor((pair.Key.getPosition().X + 10) / 20.0), (int)Math.Floor((pair.Key.getPosition().Z + 10) / 20.0));

                    map.GetTile(towerLocation).addEntity(pair.Key);

                    //Shoots a projectile based on a Timer from tower
                    if ((pair.Key.iWantToShoot(gameTime)) && (pair.Key.lookForTarget(map)))
                    {
                        if (pair.Key.shooting)
                        {
                            pair.Key.shooting = false;
                            //towers[i].timer = TimeSpan.FromSeconds(3.0);
                            pair.Key.Shoot();
                            //addProject(towers[i].getPosition() + new Vector3(0, 25, 0), new Vector3(-1, 0, 0));
                        }
                    }
                }
                #endregion

                #region projectiles
                //updates projectile list
                foreach (KeyValuePair<projectile, bool> pair in projectiles)
                {
                    pair.Key.Update(gameTime);

                    TileCoord projectileLocation
                        =
                        new TileCoord((int)Math.Floor((pair.Key.getPosition().X + 10) / 20.0), (int)Math.Floor((pair.Key.getPosition().Z + 10) / 20.0));

                    map.GetTile(projectileLocation).addEntity(pair.Key);

                    //Check if projectile Timer is at zero to remove
                    if (pair.Key.removeProject(gameTime))
                    {
                        projectiles.Remove(pair.Key);
                        break;
                    }
                }
                #endregion

                #region Collision detection
                //CheckBoxCollision();
                foreach (KeyValuePair<TileCoord, Tile> pair in map.getDictionary())
                {
                    if ((pair.Value.anyMonster()) && (pair.Value.anyTower()))
                    {
                        List<model> test = pair.Value.getEntities();
                        for (int i = 0; i < test.Count(); i++)
                        {
                            if (test[i] is tower)
                            {
                                foreach (KeyValuePair<tower, bool> pairA in towers)
                                {
                                    if (pairA.Key.getID() == test[i].getID())
                                    {
                                        ((tower)pairA.Key).life -= 25;
                                        break;
                                    }
                                }
                            }
                            if (test[i] is monster)
                            {
                                ((monster)test[i]).life -= 1000;
                            }

                        }
                    }

                    if ((pair.Value.anyMonster()) && (pair.Value.anyProjectile()))
                    {
                        List<model> test = pair.Value.getEntities();
                        for (int i = 0; i < test.Count(); i++)
                        {
                            if (test[i] is monster)
                            {
                                ((monster)test[i]).life -= 25;
                            }
                            if (test[i] is projectile)
                            {
                                foreach (KeyValuePair<projectile, bool> pairA in projectiles)
                                {
                                    if (pairA.Key.getID() == test[i].getID())
                                    {
                                        projectiles.Remove(pairA.Key);
                                        break;
                                    }
                                }
                            }
                        }
                        //CheckTileCollision(pair.Value.getEntities());
                    }
                }
                #endregion

                #region Tower Adding

                //Add Gatherer
                if ((Keyboard.GetState().IsKeyDown(Keys.Z)) || (gamePadState.Buttons.B == ButtonState.Pressed)) {
                    if (bButton == false) {
                        if (resourcemanager.resourceA >= 8) {
                            Gatherer g = new Gatherer(gatherzone, new Vector3(100, 8, 0));
                            g.targetPosition = new Vector3(250, 8, 0);
                            gatherzone.add(g);
                            resourcemanager.resourceA -= 8;
                        }
                    }
                    bButton = true;
                }

                if ((Keyboard.GetState().IsKeyUp(Keys.Z)) && (gamePadState.Buttons.B == ButtonState.Released)) {
                    bButton = false;
                }

                if (((Keyboard.GetState().IsKeyDown(Keys.Space)) && (!map.GetTile(chosenTile).anyTower()) && !SpaceBar) ||
                    ((gamePadState.Buttons.A == ButtonState.Pressed) && (!map.GetTile(chosenTile).anyTower()) && !SpaceBar))
                {
                    SpaceBar = true;

                    tower towerToAdd;
                    //Add Gun Tower
                    if ((curResource == 0) && (resourcemanager.resourceA >= 5))
                    {
                        resourcemanager.resourceA -= 5;
                        towerToAdd = new GunTower(ref gunTower, (new Vector3(chosenTile.x * 20, 5, chosenTile.y * 20)), chosenTile);
                        towers.Add(towerToAdd, true);
                        map.GetTile(chosenTile).addEntity(towerToAdd);
                    }
                    //Add Cannon Tower
                    else if ((curResource == 1) && (resourcemanager.resourceA >= 5) && (resourcemanager.resourceB >= 8))
                    {
                        resourcemanager.resourceA -= 5;
                        resourcemanager.resourceB -= 8;
                        towerToAdd = new CanonTower(ref cannonTower, (new Vector3(chosenTile.x * 20, 5, chosenTile.y * 20)), chosenTile);
                        towers.Add(towerToAdd, true);
                        map.GetTile(chosenTile).addEntity(towerToAdd);
                    }
                    //Add missile tower
                    else if ((curResource == 2) && (resourcemanager.resourceB >= 5) && (resourcemanager.resourceC >= 10))
                    {
                        resourcemanager.resourceB -= 5;
                        resourcemanager.resourceC -= 10;
                        towerToAdd = new MissileTower(ref missileTower, (new Vector3(chosenTile.x * 20, 5, chosenTile.y * 20)), chosenTile);
                        towers.Add(towerToAdd, true);
                        map.GetTile(chosenTile).addEntity(towerToAdd);
                    }
                    //Add Fire Tower
                    else if ((curResource == 3) && (resourcemanager.resourceC >= 10) && (resourcemanager.resourceD >= 10))
                    {
                        resourcemanager.resourceC -= 10;
                        resourcemanager.resourceD -= 10;
                        towerToAdd = new FireTower(ref fireTower, (new Vector3(chosenTile.x * 20, 5, chosenTile.y * 20)), chosenTile);
                        towers.Add(towerToAdd, true);
                        map.GetTile(chosenTile).addEntity(towerToAdd);
                    }
                    //Add Electric Tower
                    else if ((curResource == 4) && (resourcemanager.resourceC >= 15))
                    {
                        resourcemanager.resourceC -= 15;
                        towerToAdd = new ElectricTower(ref electricTower, (new Vector3(chosenTile.x * 20, 5, chosenTile.y * 20)), chosenTile);
                        towers.Add(towerToAdd, true);
                        map.GetTile(chosenTile).addEntity(towerToAdd);
                    }
                    //Add Chicken tower
                    else if ((curResource == 5) && (resourcemanager.resourceD >= 20))
                    {
                        resourcemanager.resourceD -= 20;
                        towerToAdd = new ChickenTower(ref chickenTower, (new Vector3(chosenTile.x * 20, 5, chosenTile.y * 20)), chosenTile);
                        towers.Add(towerToAdd, true);
                        map.GetTile(chosenTile).addEntity(towerToAdd);
                    }

                }

                if (
                    (Keyboard.GetState().IsKeyUp(Keys.Space)) &&
                    (Keyboard.GetState().IsKeyUp(Keys.Q)) &&
                    (Keyboard.GetState().IsKeyUp(Keys.E)) &&
                    (gamePadState.Buttons.A == ButtonState.Released) &&
                    (gamePadState.Buttons.X == ButtonState.Released) &&
                    (gamePadState.Buttons.Y == ButtonState.Released)
                )
                {
                    SpaceBar = false;
                }

                #endregion

                #endregion

                #region Update Resource Manager
                gatherzone.update();
                #endregion
            }
            #endregion
        }
示例#9
0
文件: Game1.cs 项目: er1/c376p1
        protected override void Initialize()
        {
            LIFE = 1000;

            worldHeight = graphics.PreferredBackBufferHeight;
            worldWidth = graphics.PreferredBackBufferWidth;
            map = new Map();
            #region Viewport stuff
            MainScreen = new Viewport();
            MainScreen.X = 0;
            MainScreen.Y = 0;
            MainScreen.Width = worldWidth;
            MainScreen.Height = worldHeight;
            MainScreen.MinDepth = 0;
            MainScreen.MaxDepth = 1;
            #endregion

            #region init Game components
            Components.Remove(cameraMain);
            Components.Remove(spriteManager);
            cameraMain = new Camera(this, new Vector3(0, 200, 199), new Vector3(0, -5, 1), Vector3.Up, MainScreen, true, worldSize);
            spriteManager = new SpriteManager(this);
            Components.Add(cameraMain);
            Components.Add(spriteManager);
            #endregion

            chosenTile = cameraMain.getCurrentTC();
            this.IsFixedTimeStep = false;
            this.TargetElapsedTime = new TimeSpan(0, 0, 0, 0, 20);

            // resource management
            resourcemanager = new ResourceManager();
            gatherzone = new GatherZone(resourcemanager, this);

            base.Initialize();
        }
示例#10
0
文件: Game1.cs 项目: er1/c376p1
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
            GraphicsDevice.Viewport = MainScreen;
            if (gameState == 1)
            {
                GraphicsDevice.DepthStencilState = DepthStencilState.Default;

                #region Draw Game Map
                //Draw the Texture world around the game.

                #region Draw Cube World
                // Set the vertex buffer on the GraphicsDevice
                GraphicsDevice.SetVertexBuffer(vertexBuffer);
                //Set object and camera info
                //effect.World = Matrix.Identity;
                effect.World = world;
                //effect.World = worldRotation * worldTranslation * worldRotation;
                effect.View = cameraMain.view;
                effect.Projection = cameraMain.projection;
                //effect.VertexColorEnabled = true;
                effect.Texture = boxTexture;
                effect.TextureEnabled = true;

                // Begin effect and draw for each pass
                foreach (EffectPass pass in effect.CurrentTechnique.Passes)
                {
                    pass.Apply();
                    GraphicsDevice.DrawUserPrimitives<VertexPositionTexture>
                        (PrimitiveType.TriangleStrip, worldBox.getCubeVertices(), 0, 24);
                }
                #endregion

                //Draw Map
                foreach (KeyValuePair<monster, bool> pair in tiles)
                {
                    pair.Key.DrawModel(cameraMain);

                }
                //Draw the left base
                mainBase.DrawModel(cameraMain);
                //Selected tile
                chosenTile = cameraMain.getCurrentTC();
                SelectionTile.setPosition(new Vector3(chosenTile.x * 20, 2, chosenTile.y * 20));
                SelectionTile.DrawModel(cameraMain);
                #endregion

                #region Draw Monsters, towers, bullets

                //gatherzone.draw(cameraMain);

                //Draw Monsters
                foreach (KeyValuePair<monster, bool> pair in monsters)
                {
                   pair.Key.DrawModel(cameraMain);
                }
                //Draws projectiles list
                foreach (KeyValuePair<projectile, bool> pair in projectiles)
                {
                    pair.Key.DrawModel(cameraMain);
                }
                //Draws Tower list
                foreach (KeyValuePair<tower, bool> pair in towers)
                {
                    pair.Key.DrawModel(cameraMain);
                }
                #endregion

                foreach (KeyValuePair<ParticleExplosion, bool> temp in explosions)
                {
                    temp.Key.Draw(cameraMain);
                }

                gatherzone.draw(cameraMain);
            }

            base.Draw(gameTime);
        }
示例#11
0
文件: tower.cs 项目: er1/c376p1
 public bool lookForTarget(Map mainMap)
 {
     map = mainMap;
     for (int i = 0; i < range; i++)
     {
         TileCoord test = tc;
         test.x -= i;
         if (map.GetTile(test).anyMonster())
         {
             currentTargetTC = test;
              return true;
         }
     }
     return false;
 }