public void DrawRoom(BitsyGame.Room room, IRenderSurface context) { var pal = _env.GetRoomPalette(room.Id); context.FillSurface(_env.GetCurrentPalette().Colors[0]); for (int i = 0; i < room.Tilemap.GetLength(0); i++) { for (int j = 0; j < room.Tilemap.GetLength(1); j++) { string id = room.Tilemap[i, j]; if (id != BitsyGame.ID_DEFAULT) { BitsyGame.Tile tile; if (_env.Tiles.TryGetValue(id, out tile)) { this.DrawTile(tile.DrawId, tile.Anim.FrameIndex, i, j, pal.Colors[tile.Color], context); } else { id = BitsyGame.ID_DEFAULT; room.Tilemap[i, j] = id; } } } } for (int i = 0; i < room.Items.Count; i++) { BitsyGame.Item item; if (_env.Items.TryGetValue(room.Items[i].Id, out item)) { this.DrawTile(item.DrawId, item.Anim.FrameIndex, room.Items[i].x, room.Items[i].y, pal.Colors[item.Color], context); } } foreach (var spr in _env.Sprites.Values) { if (spr.RoomId == room.Id) { this.DrawTile(spr.DrawId, spr.Anim.FrameIndex, spr.x, spr.y, pal.Colors[spr.Color], context); } } }