示例#1
0
        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);
                }
            }
        }