Esempio n. 1
0
 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);
     }
 }
Esempio n. 2
0
        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;
            }
        }