// Map Selection Action GetLoadMapAction(ScreenGameMain mainMenu) { var engine = new MapEngine(Content); var maps = engine.AvailableEntities(Content).OrderBy(e => e.DisplayName).ToImmutableList(); Action loadMap = async() => { _mousePressed = true; Cursor.CurrentState = CursorState.Normal; var selectionScreen = await UpdateContext.Wait(Task.Factory.StartNew(() => new ScreenEntitySelection { Items = maps })); await mainMenu.Navigation.PushAsync(selectionScreen); var map = await selectionScreen.SelectItemAsync(); _guiVisible = false; GameParameters.SetNextMap(map.DisplayName); Exit(Result.LoadNext); }; return(loadMap); }
Xamarin.Forms.Page CreateGUI() { var mainMenu = new ScreenGameMain(); var entities = _scriptEntityFactory.AvailableEntities(Content).ToImmutableList(); mainMenu.AddEntity_Page += () => { Cursor.CurrentState = CursorState.Normal; return(CreateEntitySelectionGUI()); }; mainMenu.BuildMode_Clicked += () => { Cursor.CurrentState = CursorState.Build; }; mainMenu.PlayPause_Clicked += () => { _isPaused = !_isPaused; }; mainMenu.LoadMap_Clicked += () => { var loadMap = GetLoadMapAction(mainMenu); loadMap(); }; // HACK 2 _mapClick += () => { var loadMap = GetLoadMapAction(mainMenu); loadMap(); }; // HACK if (!_sandbox) { _entityClick += () => mainMenu.AddEntity_Click(null, null); } return(new Xamarin.Forms.NavigationPage(mainMenu)); }