Exemple #1
0
        private async Task <IGameWorld> GenerateWorld(IWorldMakerListener worldGeneratorListener)
        {
            await Task.Delay(1);

            var outsideArea = new OutsideArea();
            var world       = new GameWorld(outsideArea)
            {
                TileSize = 8
            };

            var bmp = new Bitmap(AreaWidth, AreaHeight);

            var tiles = new Tile[AreaWidth, AreaHeight];

            for (var i = 0; i < AreaWidth; i++)
            {
                for (var j = 0; j < AreaHeight; j++)
                {
                    tiles[i, j] = new Tile(TileTypes.None, i, j)
                    {
                        GameWorld = world,
                        GameArea  = outsideArea
                    };
                }
            }

            var poo = 0;

            for (var i = 0; i < AreaWidth; i++)
            {
                poo = 0;
                for (var j = (int)(AreaHeight / 2.0f); j < AreaHeight; j++)
                {
                    poo++;
                    if (poo > 3)
                    {
                        tiles[i, j].TileType = TileTypes.Stone;
                        bmp.SetPixel(i, j, Color.Gray);
                    }
                    else
                    {
                        tiles[i, j].TileType = TileTypes.Dirt;
                        bmp.SetPixel(i, j, Color.Brown);
                    }
                }
            }

            bmp.Save("Map.png");

            worldGeneratorListener.OnWorldGenerationUpdate("Initiating Landing Sequence...");

            outsideArea.Tiles      = tiles;
            outsideArea.AreaWidth  = AreaWidth;
            outsideArea.AreaHeight = AreaHeight;

            return(world);
        }
Exemple #2
0
        private async Task <IGameWorld> GetWorldFromNetwork(IWorldMakerListener worldGeneratorListener)
        {
            await Task.Delay(1000);

            _tilesReceived = 0;

            AreaWidth  = 200;
            AreaHeight = 200;

            _tiles = new Tile[AreaWidth, AreaHeight];

            var outsideArea = new OutsideArea()
            {
                Tiles      = _tiles,
                AreaWidth  = AreaWidth,
                AreaHeight = AreaHeight,
            };

            var world = new GameWorld(outsideArea)
            {
                TileSize = 8
            };

            for (var i = 0; i < AreaWidth; i++)
            {
                for (var j = 0; j < AreaHeight; j++)
                {
                    _tiles[i, j] = new Tile(TileTypes.None, i, j)
                    {
                        GameWorld = world,
                        GameArea  = outsideArea
                    };
                }
            }

            Bitmap = new Bitmap(AreaWidth, AreaHeight);

            var mapRequest = new MapRequestPacket();
            var toSend     = _networkMessagePackager.Package(mapRequest);

            _networkManager.SendMessage(toSend);

            while (_tilesReceived < AreaWidth * AreaHeight)
            {
                var percent = ((float)_tilesReceived / (AreaWidth * AreaHeight)) * 100;
                worldGeneratorListener.OnWorldGenerationUpdate($"Receiving tiles... {percent}%");
            }

            worldGeneratorListener.OnWorldGenerationUpdate("Got tiles...");

            while (!ReceivedMap)
            {
                worldGeneratorListener.OnWorldGenerationUpdate("Waiting for players...");
            }

            foreach (var tile in _tiles)
            {
                Bitmap.SetPixel(tile.TileX, tile.TileY, tile.TileType == TileTypes.None ? Color.Black :
                                tile.TileType == TileTypes.Dirt ? Color.White : Color.Orange);
            }

            return(world);
        }
Exemple #3
0
 public async Task <IGameWorld> Create(IWorldMakerListener listener)
 {
     // Once we sent the message, we can run a task to check for how long it's going to take
     return(await GetWorldFromNetwork(listener));
 }
Exemple #4
0
        public async Task <IGameWorld> Create(IWorldMakerListener listener)
        {
            var world = await GenerateWorld(listener);

            return(world);
        }