前回までの状況はこちら。
今回はマウス操作を試してみます。
マウスカーソルの位置をリアルタイムで表示、さらに左クリックするとその座標を表示する、という感じでやってみます。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace sudokuGUI
{
class Program
{
[STAThread]
static void Main(string[] args)
{
// Altseedを初期化する。
asd.Engine.Initialize("数独解析ツール", 1000, 800, new asd.EngineOption());
// 下地
var background = new asd.GeometryObject2D();
asd.Engine.AddObject2D(background);
var bgRect = new asd.RectangleShape();
bgRect.DrawingArea = new asd.RectF(0, 0, 1000, 800);
background.Shape = bgRect;
// テクスチャー
asd.Texture2D texture = asd.Engine.Graphics.CreateTexture2D("squares.png");
// マス
int offsetX = 10;
int offsetY = 10;
var square = new asd.TextureObject2D();
square.Position = new asd.Vector2DF(offsetX, offsetY);
square.Texture = texture;
asd.Engine.AddObject2D(square);
int fontOffsetX = 19;
int fontOffsetY = 9;
var font = asd.Engine.Graphics.CreateFont("number.aff");
var obj = new asd.TextObject2D();
obj.Font = font;
obj.Position = new asd.Vector2DF(offsetX + fontOffsetX, offsetY + fontOffsetY);
obj.Text = "1";
asd.Engine.AddObject2D(obj);
var obj2 = new asd.TextObject2D();
obj2.Font = font;
obj2.Position = new asd.Vector2DF(64 + offsetX + fontOffsetX, 64 + offsetY + fontOffsetY);
obj2.Text = "2";
asd.Engine.AddObject2D(obj2);
var mouseXText = new asd.TextObject2D();
mouseXText.Position = new asd.Vector2DF(700, 600);
mouseXText.Font = font;
asd.Engine.AddObject2D(mouseXText);
var mouseYText = new asd.TextObject2D();
mouseYText.Position = new asd.Vector2DF(700, 670);
mouseYText.Font = font;
asd.Engine.AddObject2D(mouseYText);
var mouseHXText = new asd.TextObject2D();
mouseHXText.Position = new asd.Vector2DF(800, 600);
mouseHXText.Font = font;
asd.Engine.AddObject2D(mouseHXText);
var mouseHYText = new asd.TextObject2D();
mouseHYText.Position = new asd.Vector2DF(800, 670);
mouseHYText.Font = font;
asd.Engine.AddObject2D(mouseHYText);
// Altseedが進行可能かチェックする。
while (asd.Engine.DoEvents())
{
asd.Vector2DF pos = asd.Engine.Mouse.Position;
mouseXText.Text = string.Format("{0}", pos.X);
mouseYText.Text = string.Format("{0}", pos.Y);
if(asd.Engine.Mouse.LeftButton.ButtonState == asd.ButtonState.Push)
{
mouseHXText.Text = string.Format("{0}", pos.X);
mouseHYText.Text = string.Format("{0}", pos.Y);
}
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedを終了する。
asd.Engine.Terminate();
}
}
}
なかなか良さそうです。
じゃあ、次回からUIをもっと詰めて、クラス構成を考えてみましょう。