Ejemplo n.º 1
0
        public void DrawTroop(GameState gameState, bool map)
        {
            if (map == false)
            {
                base.DrawLasers(gameState);
            }
            else
            {
                base.DrawFactory(gameState, map);
            }

            List<StateGameLayer.Troop> troops = gameState.getTroops();

            ModelMeshCollection modelMesh = null;

            for (int i = 0; i < troops.Count; i++)
            {
                StateGameLayer.Troop troop = troops[i];
                if (troop.Fighting)
                {
                    Vector2 troopOrigin = new Vector2(battle.Width * 0.5f, battle.Height * 0.5f);
                }

                switch (troop.ObjectType)
                {
                    case 1:
                        modelMesh = blue_tank.Meshes;
                        break;
                    case 2:
                        modelMesh = red_tank.Meshes;
                        break;
                }

                int spaceSeparationTroop = 100;

                for (int numElement = 0; numElement < troop.Elements / 3 + 1; numElement++)
                {
                    foreach (ModelMesh mesh in modelMesh)
                    {
                        // This is where the mesh orientation is set, as well
                        // as our camera and projection.
                        foreach (BasicEffect effect in mesh.Effects)
                        {
                            effect.EnableDefaultLighting();
                            effect.World = World;
                            effect.World *= Matrix.CreateRotationY((float)-troop.Rotation);

                            switch (numElement)
                            {
                                case 0:
                                    effect.World *= Matrix.CreateTranslation(/*-3200*/troop.CurrentPos.X/*COORD TROOP X*/, troop.CurrentPos.Y/*COORD TROOP Y*/, /*-4500*/troop.CurrentPos.Z/*COORD TROOP Z*/);
                                    break;
                                case 1:
                                    effect.World *= Matrix.CreateTranslation(/*-3200*/troop.CurrentPos.X - spaceSeparationTroop/*COORD TROOP X*/, troop.CurrentPos.Y/*COORD TROOP Y*/, /*-4500*/troop.CurrentPos.Z + spaceSeparationTroop/*COORD TROOP Z*/);
                                    break;
                                case 2:
                                    effect.World *= Matrix.CreateTranslation(/*-3200*/troop.CurrentPos.X + spaceSeparationTroop/*COORD TROOP X*/, troop.CurrentPos.Y/*COORD TROOP Y*/, /*-4500*/troop.CurrentPos.Z + spaceSeparationTroop/*COORD TROOP Z*/);
                                    break;
                                case 3:
                                    effect.World *= Matrix.CreateTranslation(/*-3200*/troop.CurrentPos.X + spaceSeparationTroop * 2/*COORD TROOP X*/, troop.CurrentPos.Y/*COORD TROOP Y*/, /*-4500*/troop.CurrentPos.Z + spaceSeparationTroop * 2/*COORD TROOP Z*/);
                                    break;
                                case 4:
                                    effect.World *= Matrix.CreateTranslation(/*-3200*/troop.CurrentPos.X - spaceSeparationTroop * 2/*COORD TROOP X*/, troop.CurrentPos.Y/*COORD TROOP Y*/, /*-4500*/troop.CurrentPos.Z + spaceSeparationTroop * 2/*COORD TROOP Z*/);
                                    break;
                                case 5:
                                    effect.World *= Matrix.CreateTranslation(/*-3200*/troop.CurrentPos.X/*COORD TROOP X*/, troop.CurrentPos.Y/*COORD TROOP Y*/, /*-4500*/troop.CurrentPos.Z + spaceSeparationTroop * 2/*COORD TROOP Z*/);
                                    break;
                                case 6:
                                    effect.World *= Matrix.CreateTranslation(/*-3200*/troop.CurrentPos.X/*COORD TROOP X*/, troop.CurrentPos.Y/*COORD TROOP Y*/, /*-4500*/troop.CurrentPos.Z + spaceSeparationTroop * 3/*COORD TROOP Z*/);
                                    break;
                            }
                            if (map)
                            {
                                effect.View = ViewMap;
                            }
                            else
                            {
                                effect.View = View;
                            }
                            effect.Projection = Projection;
                            // Draw the mesh, using the effects set above.
                            mesh.Draw();
                            effect.Projection = Projection;
                            mesh.Draw();
                        }
                    }
                }
            }
        }