private void createMetaTilePanel() { if (m_MetaTiles == null) { m_MetaTiles = new List <Elements.MetaTile>(); int tilesperrow = 8, tilesize = 48, tilemargin = 8; int x = 16, y = 4; bool loadtiles = (State.Data.TileSets[State.SelectedTileset] != null && State.Data.Palettes.Count != 0 && State.Data.TileGfx.PageCount != 0); for (int i = 0; i < Data.TileSet.TilesPerSet; i++) { Elements.MetaTile metatile = new Elements.MetaTile(i, x + (tilesize + tilemargin) * (i % tilesperrow), y + 18 + (tilesize + tilemargin) * (i / tilesperrow), tilesize, tilesize, metatile_OnClick); if (loadtiles) { for (int j = 0; j < 4; j++) { TilePageAttribute tile_page_attrib = State.Data.TileSets[State.SelectedTileset].GetSubTile(i, j); metatile.SetTile(j, tile_page_attrib.Tile, State.GfxPage(tile_page_attrib.Page).Texture); metatile.Attribute = tile_page_attrib.Attribute; } } m_MetaTiles.Add(metatile); } scrMetaTiles.AddWidget( new Label(x, y, "MetaTiles:")); scrMetaTiles.AddWidgets(m_MetaTiles); } }
private void metatile_OnClick(Widget widget, InputEventMouse e) { Elements.MetaTile metatile = (Elements.MetaTile)widget; switch (m_EditMode) { case EditMode.EditTiles: metatile.Attribute = (byte)State.SelectedPalette; State.Data.TileSets[State.SelectedTileset].SetAttribute(metatile.Index, (byte)State.SelectedPalette); break; case EditMode.EditAttributes: metatile.SetTile(metatile.ClickedTile, (byte)State.SelectedTile, State.GfxPage(State.SelectedPage).Texture); State.Data.TileSets[State.SelectedTileset].SetSubTileAndPage(metatile.Index, metatile.ClickedTile, (byte)State.SelectedTile, (byte)State.SelectedPage); break; case EditMode.EditBitflags: State.Data.TileSets[State.SelectedTileset].ToggleFlag(metatile.Index, metatile.ClickedFlag); metatile.Flags = State.Data.TileSets[State.SelectedTileset].GetFlags(metatile.Index); break; } }