コード例 #1
0
        public override void Load()
        {
            highlight = new TileHighlight(new Vector2(20, 20), Color.Blue);

            chunk       = new Chunk(new Vector2Int(0, 0));
            renderer    = new SimpleRenderer();
            chunk.State = ChunkState.NotSoReady;

            chunk.Add(new Tile(TileType.Floor, new Vector2Int(0, 0)));

            chunk.Add(new Tile(TileType.Floor, new Vector2Int(20, 20)));
            chunk.Add(new Tile(TileType.Floor, new Vector2Int(21, 20)));
            chunk.Add(new Tile(TileType.Floor, new Vector2Int(22, 20)));
            chunk.Add(new Tile(TileType.Floor, new Vector2Int(20, 21)));
            chunk.Add(new Tile(TileType.Floor, new Vector2Int(21, 21)));
            chunk.Add(new Tile(TileType.Floor, new Vector2Int(22, 21)));
            chunk.Add(new Tile(TileType.Floor, new Vector2Int(20, 22)));
            chunk.Add(new Tile(TileType.Floor, new Vector2Int(21, 22)));
            chunk.Add(new Tile(TileType.Floor, new Vector2Int(22, 22)));

            chunk.Add(new Tile(TileType.Wall, new Vector2Int(19, 20)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(19, 21)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(19, 22)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(23, 20)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(23, 22)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(23, 21)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(20, 19)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(21, 19)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(22, 19)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(20, 23)));

            //chunk.Add(new Tile(TileType.Wall, new Vector2Int(21, 23)));
            chunk.Add(new Tile(TileType.Floor, new Vector2Int(21, 23)));

            chunk.Add(new Tile(TileType.Wall, new Vector2Int(22, 23)));

            chunk.Add(new Tile(TileType.Wall, new Vector2Int(19, 19)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(19, 23)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(23, 19)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(23, 23)));

            TileProcessor.Initialize();
            TileProcessor.Process(chunk);

            World.UpdateDayLight();

            BananaGame.GamePlayer          = new Player();
            BananaGame.GamePlayer.Position = new Vector2(20, 20);
            BananaGame.GamePlayer.Load();
            ControllerManager.AddPlayer(BananaGame.GamePlayer);

            BananaGame.GameCamera.FollowTaget = true;
            BananaGame.GameCamera.Target      = (BananaGame.GamePlayer);
            //GameCamera.TargetOffset = new Vector3(0.0f, 0f, 10f);
            BananaGame.GameCamera.TargetOffset = new Vector3(0.0f, 0f, 12f);
        }
コード例 #2
0
 public void Loop()
 {
     while (keepLooping)
     {
         if (processRequest.Count > 0)
         {
             Chunk chunk = processRequest.Dequeue();
             TileProcessor.Process(chunk);
         }
         else
         {
             waiting = true;
             tileWait.WaitOne();
         }
     }
 }
コード例 #3
0
        public override void Load()
        {
            generator   = new TestTerrainGenerator();
            renderer    = new SimpleRenderer();
            chunk       = new Chunk(new Vector2Int(0, 0));
            chunk.State = ChunkState.AwaitingRender;

            generator.Generate(chunk);
            chunk.Add(new Tile(TileType.Dirt, new Vector2Int(20, 20)));
            chunk.Add(new Tile(TileType.Dirt, new Vector2Int(20, 21)));
            chunk.Add(new Tile(TileType.Dirt, new Vector2Int(20, 22)));
            chunk.Add(new Tile(TileType.Dirt, new Vector2Int(21, 20)));
            chunk.Add(new Tile(TileType.Dirt, new Vector2Int(21, 21)));
            chunk.Add(new Tile(TileType.Dirt, new Vector2Int(21, 22)));

            chunk.Add(new Tile(TileType.Wall, new Vector2Int(30, 30)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(31, 30)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(32, 30)));
            chunk.Add(new Tile(TileType.Door, new Vector2Int(33, 30)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(34, 30)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(35, 30)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(36, 30)));

            chunk.Add(new Tile(TileType.Wall, new Vector2Int(30, 31)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(31, 31)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(32, 31)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(33, 31)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(34, 31)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(35, 31)));
            chunk.Add(new Tile(TileType.Wall, new Vector2Int(36, 31)));
            //chunk.Add(new Tile(TileType.Door, new Vector2Int(20, 20)));
            TileProcessor.Initialize();
            TileProcessor.Process(chunk);

            World.UpdateDayLight();

            BananaGame.GamePlayer = new Player();
            BananaGame.GamePlayer.Load();
            ControllerManager.AddPlayer(BananaGame.GamePlayer);

            BananaGame.GameCamera.FollowTaget = true;
            BananaGame.GameCamera.Target      = (BananaGame.GamePlayer);
            //GameCamera.TargetOffset = new Vector3(0.0f, 0f, 10f);
            BananaGame.GameCamera.TargetOffset = new Vector3(0.0f, 0f, 16f);
        }
コード例 #4
0
        public unsafe override void Load(string path, int offset)
        {
            Bitmap bp = new Bitmap(path);

            Int32[,] Bits = PaletteProcessor.BitmapToIntArray(bp);

            PaletteProcessor.RoundColor5BitsPerChannel(Bits);
            ColorReductor.ReduceColorsFromBitmap <UnityColorPalette, UnityColorPaletteIndex>(15, Bits);
            var ts = TileProcessor.GetUniqueTilesPositions(Bits, tileSize.Width, tileSize.Height);

            UnityColorPalette[] pals = PaletteProcessor.ExtractPalettesFromBitmap <UnityColorPalette, UnityColorPaletteIndex>(Bits, ts.Item1, tileSize.Width, tileSize.Height, 15);
            var tiles = TileProcessor.GetTiles <UnityColorPalette, IndexedBitmapBufferDisguise>(pals, ts.Item1, ts.Item2, Bits, tileSize.Width, tileSize.Height);

            int w = bp.Width;
            int h = bp.Height;

            foreach (var kvp in tiles)
            {
                BitmapBuffer bf         = BitmapBuffer.CreateInstance(w, h, pals[0].RealObject.BytesPerColor);
                Int32[]      retbp      = new Int32[w * h];
                GCHandle     BitsHandle = GCHandle.Alloc(retbp, GCHandleType.Pinned);
                Bitmap       finishedBP = new Bitmap(w, h, w * 4, PixelFormat.Format32bppArgb, BitsHandle.AddrOfPinnedObject());
                byte[]       ret        = new byte[retbp.Length * 4];

                foreach (var t in kvp.Value)
                {
                    BitmapBuffer bpb = t.Item4.RealObject.CreateBitmapBuffer(Flip.GetFlip(t.Item2, t.Item3), pals[kvp.Key].RealObject);
                    bf.DrawBitmapBuffer(bpb, t.Item1.X * tileSize.Width, t.Item1.Y * tileSize.Height);
                }
                unsafe
                {
                    fixed(byte *bs = ret)
                    {
                        bf.CopyTo(bs, 0, w - 1, 0, h - 1, 0, 0, 0, 0);
                    }
                }
                Buffer.BlockCopy(ret, 0, retbp, 0, ret.Length);
                finishedBP.Save(Path.GetFileNameWithoutExtension(path) + kvp.Key.Value + ".png",
                                ImageFormat.Png);
            }
        }