84 lines
1.9 KiB
C#
84 lines
1.9 KiB
C#
|
using System;
|
||
|
|
||
|
public class LifeWindow
|
||
|
{
|
||
|
private LifeBoard lifeBoard;
|
||
|
private LifeRender lifeRender;
|
||
|
|
||
|
void ResizeEvt(efl.ui.Win win, EventArgs ev)
|
||
|
{
|
||
|
lifeRender.Layout(win);
|
||
|
}
|
||
|
|
||
|
void QuitEvt(efl.ui.Win win, EventArgs ev)
|
||
|
{
|
||
|
// quit the mainloop
|
||
|
efl.ui.Config.Exit();
|
||
|
}
|
||
|
|
||
|
void TouchEvt(efl.ui.Win win, efl.input.Pointer ev)
|
||
|
{
|
||
|
int cellx, celly;
|
||
|
var position = ev.GetPosition();
|
||
|
lifeRender.CellForCoords(win, position, out cellx, out celly);
|
||
|
|
||
|
int i = LifeRender.IndexForPosition(cellx, celly);
|
||
|
lifeBoard.Cells[i] = !lifeBoard.Cells[i];
|
||
|
lifeRender.RenderCell(win, cellx, celly);
|
||
|
}
|
||
|
|
||
|
void KeyDownEvt(efl.ui.Win win, efl.input.Key ev)
|
||
|
{
|
||
|
if (ev.GetKey() == "space")
|
||
|
lifeBoard.TogglePause(win);
|
||
|
}
|
||
|
|
||
|
public void Run()
|
||
|
{
|
||
|
lifeBoard.Run(win);
|
||
|
}
|
||
|
|
||
|
public LifeWindow()
|
||
|
{
|
||
|
efl.ui.Win win = new efl.Ui.WinConcrete(null, (efl.ui.Win ewin) => {
|
||
|
ewin.SetWinType(efl.ui.win.Type.Basic);
|
||
|
ewin.SetText("EFL Life");
|
||
|
ewin.SetAutohide(true);
|
||
|
});
|
||
|
|
||
|
// when the user clicks "close" on a window there is a request to hide
|
||
|
win.HIDE += QuitEvt;
|
||
|
|
||
|
eina.Size2D sz;
|
||
|
sz.W = 10 * LifeBoard.Width * win.GetScale();
|
||
|
sz.H = 10 * LifeBoard.Height * win.GetScale();
|
||
|
|
||
|
lifeBoard = new LifeBoard();
|
||
|
lifeRender = new LifeRender(win, lifeBoard);
|
||
|
lifeRender.Refresh(win);
|
||
|
|
||
|
win.RESIZE += ResizeEvt;
|
||
|
win.POINTER_DOWN += TouchEvt;
|
||
|
win.KEY_DOWN += KeyDownEvt;
|
||
|
|
||
|
win.SetSize(sz);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public class Example
|
||
|
{
|
||
|
public static void Main()
|
||
|
{
|
||
|
efl.All.Init(efl.Components.Ui);
|
||
|
|
||
|
var lifeWin = new LifeWin();
|
||
|
|
||
|
lifeWin.Run();
|
||
|
|
||
|
// start the mainloop
|
||
|
efl.ui.Config.Run();
|
||
|
|
||
|
efl.All.Shutdown();
|
||
|
}
|
||
|
}
|