前回までの状況はこちら。
最新ソースはこちら(gitHub)
https://github.com/takishita2nd/sudokuGUI
引き続き、パレットの中身を実装していきます。
パレットに×を追加します。
×のフォントをフォントジェネレータで作成して実装します。
    static class Resource
    {
        private static asd.Font _fontBatsu = null;
        public static asd.Font getFontBatsu()
        {
            if (_fontBatsu == null)
            {
                _fontBatsu = asd.Engine.Graphics.CreateFont("batsu.aff");
            }
            return _fontBatsu;
        }
これを使用します。
クラスは・・・PaletteSquareObjectを拡張しましょうか。
    class PaletteBatsuSquareObject : PaletteSquareObject
    {
        public PaletteBatsuSquareObject(int row, int col) : base(row, col)
        {
            _valueText.Font = Resource.getFontBatsu();
        }
        public void showBatsu()
        {
            _valueText.Text = "×";
        }
        public new void setPosition(asd.Vector2DF pos)
        {
            _x = _row * width + (int)pos.X;
            _y = _col * height + (int)pos.Y;
            _backTexture.Position = new asd.Vector2DF(_x, _y);
            _valueText.Position = new asd.Vector2DF(_x + fontOffsetX - 8, _y + fontOffsetY);
        }
    }
コンストラクタで、フォントを追加した物に指定、showBatsu()で×を表示します。
また、×の表示位置を調整するため、setPosition()をオーバーライドしています。
    class SquareObject
    {
        public void hide()
        {
            _valueText.Text = "";
        }
SquareObjectクラスにhide()を追加しました。これでわかりやすく文字を消すことができます。
これらをPaletteクラスに実装します。
    class Palette
    {
        PaletteBatsuSquareObject PaletteBatsuSquareObject = new PaletteBatsuSquareObject(0, -1);
        public void setEngine()
        {
            asd.Engine.AddObject2D(_texture);
            for (int row = 0; row < 3; row++)
            {
                for (int col = 0; col < 3; col++)
                {
                    asd.Engine.AddObject2D(paletteSquareObjects[row, col].getBackTexture());
                    asd.Engine.AddObject2D(paletteSquareObjects[row, col].getTextObject());
                }
            }
            asd.Engine.AddObject2D(PaletteBatsuSquareObject.getBackTexture());
            asd.Engine.AddObject2D(PaletteBatsuSquareObject.getTextObject());
        }
        public void show(asd.Vector2DF pos)
        {
            palettePosition = new asd.Vector2DF(pos.X, pos.Y - 64);
            _texture.Position = palettePosition;
            _texture.Texture = Resource.getPalette();
            int value = 1;
            for (int row = 0; row < 3; row++)
            {
                for (int col = 0; col < 3; col++)
                {
                    paletteSquareObjects[row, col].setPosition(pos);
                    paletteSquareObjects[row, col].setValue(value);
                    value++;
                }
            }
            PaletteBatsuSquareObject.setPosition(pos);
            PaletteBatsuSquareObject.showBatsu();
        }
        public void hide()
        {
            _texture.Texture = null;
            for (int row = 0; row < 3; row++)
            {
                for (int col = 0; col < 3; col++)
                {
                    paletteSquareObjects[row, col].hide();
                }
            }
            PaletteBatsuSquareObject.hide();
        }
やることは他の文字と同じで、Altseedエンジンへの追加、表示、消去を行います。
実行結果はこんな感じです。
まあまあですかね。
 
		