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); }
public void Loop() { while (keepLooping) { if (processRequest.Count > 0) { Chunk chunk = processRequest.Dequeue(); TileProcessor.Process(chunk); } else { waiting = true; tileWait.WaitOne(); } } }
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); }
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); } }