using System; public class LifeWindow { private LifeBoard lifeBoard; private LifeRender lifeRender; void ResizeEvt(object sender, EventArgs ev) { lifeRender.RenderLayout((efl.ui.IWin)sender); } void QuitEvt(object sender, EventArgs ev) { // quit the mainloop efl.ui.Config.Exit(); } void TouchEvt(object sender, efl.input.Interface.PointerDownEvt_Args ev) { int cellx, celly; efl.ui.IWin win = (efl.ui.IWin)sender; var position = ev.arg.GetPosition(); lifeRender.CellForCoords(win, position, out cellx, out celly); int i = LifeBoard.IndexForPosition(cellx, celly); lifeBoard.Cells[i] = !lifeBoard.Cells[i]; lifeRender.RenderCell(win, cellx, celly); } void KeyDownEvt(object sender, efl.input.Interface.KeyDownEvt_Args ev) { efl.ui.IWin win = (efl.ui.IWin)sender; if (ev.arg.GetKey() == "space") lifeBoard.TogglePause(win); } public LifeWindow() { efl.ui.IWin win = new efl.ui.Win(null, (efl.ui.IWin 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.HideEvt += QuitEvt; eina.Size2D sz; sz.W = (int)(10 * LifeBoard.Width * win.GetScale()); sz.H = (int)(10 * LifeBoard.Height * win.GetScale()); lifeBoard = new LifeBoard(); lifeRender = new LifeRender(win, lifeBoard); lifeRender.Refresh(win); win.ResizeEvt += ResizeEvt; win.PointerDownEvt += TouchEvt; win.KeyDownEvt += KeyDownEvt; win.SetSize(sz); lifeBoard.Run(win); } } public class Example { public static void Main() { efl.All.Init(efl.Components.Ui); var lifeWin = new LifeWindow(); // start the mainloop efl.ui.Config.Run(); efl.All.Shutdown(); } }