public void Update() { // check for create menu var enumerator_fiveContacts = mListener_FiveContacts.CreateEnumerator(); if (enumerator_fiveContacts.MoveNext()) { if (mRootSelector == null) { mRootSelector = XUI.Instance().CreateSelector(new XUI._Position(), "Debug Menu", XUI.eStyle.Frontend, XUI.eStyle.FrontendButton, XUI.eStyle.FrontendTitle, mOptions); } } // check for menu selection var selection_data = mListener_SelectorSelection.GetMaxOne(); if (selection_data != null) { if (selection_data.mSelectorID == mRootSelector.GetID()) { // destroy this selector XUI.Instance().DestroySelector(mRootSelector.GetID()); mRootSelector = null; switch (selection_data.mIndexSelected) { case 0: // map selected, sent message for that system to do what it wants Console.WriteLine("map selected"); mBroadcaster_MenuSelection.Post(new MenuSelectionEvent(selection_data.mSelectorID, mOptions[0])); break; case 2: // exit selected, do nothing, menu will close break; case 4: // quit selected, send message to end program. this menu will close XBulletinBoard.Instance().mBroadcaster_ExitGameEvent.Post(new Game1.ExitGameEvent()); break; default: // problem XUtils.Assert(false); break; } } } }
private void ProcessInput() { bool generate_map = false; bool resize_map = false; bool change_map_type = false; var key_enumerator = mListenter_KeyUp.CreateEnumerator(); while (key_enumerator.MoveNext()) { if (key_enumerator.GetCurrent().mKey == Microsoft.Xna.Framework.Input.Keys.W) { generate_map = true; } else if (key_enumerator.GetCurrent().mKey == Microsoft.Xna.Framework.Input.Keys.T) { change_map_type = true; } else if (key_enumerator.GetCurrent().mKey == Microsoft.Xna.Framework.Input.Keys.S) { resize_map = true; } } var button_enumerator = mListener_Button.CreateEnumerator(); while (button_enumerator.MoveNext()) { if (button_enumerator.GetCurrent().mID == mRegnerateMapButton.GetID()) { generate_map = true; } else if (button_enumerator.GetCurrent().mID == mMapTypeButton.GetID()) { change_map_type = true; } else if (button_enumerator.GetCurrent().mID == mMapSizeButton.GetID()) { resize_map = true; } } if (change_map_type) { // loop through map types mMapType = (XWorldGen.eMapType)(((int)mMapType + 1) % (int)XWorldGen.eMapType.Num); mGenSet = mGen.GetTuningSet(mMapType); generate_map = true; } if (resize_map) { ++mMapScale; generate_map = true; if (mMapScale > mGen.GetMaxMapScale()) { mMapScale = 1; } } if (generate_map) { XSimpleDraw simple_draw = XSimpleDraw.Instance(xeSimpleDrawType.WorldSpace_Persistent_Map); simple_draw.CancelPrimitives(); mRendered = false; Generate(); WorldRegenerated world_regenerated = new WorldRegenerated(); mBroadcaster_WorldRegenerated.Post(world_regenerated); } }
private void _Update_Input_Buttons() { // things to check for: // - currently pressed button might trigger a button up // - currently pressed button might get aborted by touch gesture or drift // - curretnly pressed button might still be pressed // - on press start, a new button may be pressed var single_poke_enumerator = _mListener_SinglePoke.CreateEnumerator(); single_poke_enumerator.MoveNext(); var data = single_poke_enumerator.GetCurrent(); if (_mCurrentlyPressed != null) { // first check if button disabled before considering input if (!_mCurrentlyPressed.IsActive()) { SendButtonAbortEvent(); return; } XUtils.Assert(data != null, "should have hold, end, or abort"); if (data.mDetail == XTouch.ePokeDetail.Hold) { if (_mCurrentlyPressed.Contains(data.mCurrentPos)) { // pressed is still pressed SendButtonHeldEvent(); return; } // have strayed off button with a hold, un-press SendButtonAbortEvent(); return; } if (data.mDetail == XTouch.ePokeDetail.End_Abort) { // touch decided this gesture is no good, un-press SendButtonAbortEvent(); return; } if (data.mDetail == XTouch.ePokeDetail.End_Normal) { // this is a pressed button SendButtonUpEvent(); return; } XUtils.Assert(false, "not expecting another state when mCurrentlyPressed is valid"); return; } if (data != null && data.mDetail == XTouch.ePokeDetail.Start) { // new press, let's see if it hits a button var enumerator = _mButtons.GetEnumerator(); while (enumerator.MoveNext()) { if (enumerator.Current.Value.Contains(data.mCurrentPos) && enumerator.Current.Value.IsActive()) { _mCurrentlyPressed = enumerator.Current.Value; SendButtonDownEvent(); break; } } } }