前回までの状況はこちら。
最新ソースはこちら(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エンジンへの追加、表示、消去を行います。
実行結果はこんな感じです。
まあまあですかね。