Ejemplo n.º 1
0
 public Level(Game currentGame, ILevelRenderer renderer)
     : base(currentGame)
 {
     GameHandler = currentGame;
     this.renderer = renderer;
     Manager = new LevelManager(currentGame);
     FloorSize = 8;
     Floor = new Tile[FloorSize, FloorSize];
     for (int i = 0; i < FloorSize; i++)
     {
         for (int j = 0; j < FloorSize; j++)
         {
             Floor[i, j] = new Tile();
         }
     }
 }
Ejemplo n.º 2
0
        public Tile[,] Load(string inputPath)
        {
            inputPath = inputPath + levelFileExtension;
            Tile[,] floor = null;
            using (StreamReader reader = new StreamReader(inputPath))
            {
                string levelHeader = reader.ReadLine();

                int floorSize = parseLevelHeader(levelHeader);
                gameHandler.Level.StartDirection = (Turn)int.Parse(reader.ReadLine(), CultureInfo.InvariantCulture);
                floor = new Tile[floorSize, floorSize];

                for (int row = 0; row < floorSize; row++)
                {
                    for (int column = 0; column < floorSize; column++)
                    {
                        Tile parsedTile = parseTileLine(reader, row, column);
                        floor[row, column] = parsedTile;
                    }
                }
            }

            return floor;
        }
Ejemplo n.º 3
0
        private void renderTile(Tile tile)
        {
            GL.Material(MaterialFace.Front, MaterialParameter.AmbientAndDiffuse, new float[] { 0.0f, 0.0f, 0.0f, 1.0f });
            GL.PushMatrix();
            {
                //GL.Translate(TileSize * row, -0.5, -TileSize * column);
                GL.Enable(EnableCap.ColorMaterial);
                GL.ColorMaterial(MaterialFace.Front, ColorMaterialParameter.Ambient);

                drawBox(tile);
                getTileDrawColor(tile);
                GL.Disable(EnableCap.ColorMaterial);
                GL.Scale(TileSize - 0.05f, 0.25f, TileSize - 0.05f);
                Glut.glutSolidCube(TileSize);
            }
            GL.PopMatrix();
        }
Ejemplo n.º 4
0
        private void getTileDrawColor(Tile tile)
        {
            GL.Material(MaterialFace.Front, MaterialParameter.Emission, new float[] { 0.0f, 0.0f, 0.0f, 1.0f });
            GL.Material(MaterialFace.Front, MaterialParameter.Specular, new float[] { 0.0f, 0.0f, 0.0f, 1.0f });
            switch (tile.Type)
            {
                case TileType.NoLight:
                    GL.Material(MaterialFace.Front, MaterialParameter.Specular, new float[] { 1.0f, 1.0f, 1.0f, 1.0f });
                    GL.Color3(0.5f, 0.5f, 0.5);
                    break;

                case TileType.LightOn:
                    GL.Material(MaterialFace.Front, MaterialParameter.Emission, new float[] { 1.0f, 1.0f, 0.0f, 1.0f });
                    GL.Color3(1f, 1f, 0);
                    break;

                case TileType.LightOff:
                    //        GL.Material(MaterialFace.Front, MaterialParameter.Specular, new float[] { 0.5f, 0.5f, 0.5f, 1.0f });
                    GL.Material(MaterialFace.Front, MaterialParameter.Emission, new float[] { 0.1f, 0.1f, 0.1f, 1.0f });
                    GL.Material(MaterialFace.Front, MaterialParameter.Shininess, new float[] { 20.0f });
                    GL.Color3(1.0f, 1.0f, 1.0f);
                    break;

                case TileType.StartPosition:
                    GL.Color3(0, 1f, 0);
                    break;
            }
        }
Ejemplo n.º 5
0
        private void drawBox(Tile tile)
        {
            GL.Material(MaterialFace.Front, MaterialParameter.Emission, new float[] { 0.0f, 0.0f, 0.0f, 1.0f });
            GL.Material(MaterialFace.Front, MaterialParameter.Specular, new float[] { 0.0f, 0.0f, 0.0f, 1.0f });
            GL.Material(MaterialFace.Front, MaterialParameter.AmbientAndDiffuse, new float[] { 0.0f, 0.0f, 0.0f, 1.0f });
            switch (tile.Height)
            {
                case TileHeight.Ground:
                    break;
                case TileHeight.BoxOne:
                    GL.Scale(1, 1.5, 1);
                    Glut.glutSolidCube(1.0);
                    GL.Translate(0, 0.5, 0);
                    break;
                case TileHeight.BoxTwo:
                    GL.Translate(0, 0.5, 0);
                    GL.Scale(1, 1.8, 1);
                    Glut.glutSolidCube(1.0);
                    GL.Translate(0, 0.5, 0);
                    break;
                case TileHeight.BoxThree:
                    break;
                default:

                    break;
            }
        }
Ejemplo n.º 6
0
 public void Save(string outputPath, Tile[,] floor, int floorSize)
 {
     outputPath = outputPath + levelFileExtension;
     using (StreamWriter writer = new StreamWriter(outputPath))
     {
         writer.WriteLine("{0}x{1}", floorSize, floorSize);
         writer.WriteLine((int)gameHandler.Position.Direction);
         for (int row = 0; row < floorSize; row++)
         {
             for (int column = 0; column < floorSize; column++)
             {
                 writer.WriteLine("{0};{1};{2};{3}", row, column, (int)floor[row, column].Type, (int)floor[row, column].Height);
             }
         }
     }
 }
Ejemplo n.º 7
0
        private Tile parseTileLine(StreamReader reader, int row, int column)
        {
            string floorTile = reader.ReadLine();

            string[] tokens = splitTileInfoLine(row, column, floorTile);

            int tileRow;
            int tileColumn;
            TileType tileType;
            TileHeight tileHeight;
            parseTileLine(tokens, out tileRow, out tileColumn, out tileType, out tileHeight);

            Tile newTile = new Tile();
            newTile.Type = tileType;
            newTile.Height = tileHeight;
            return newTile;
        }