private void SendButtonEvent <T>(bool pressed_now, XBroadcaster <T> b, T e) where T : class { XUtils.Assert(_mCurrentlyPressed != null); _mCurrentlyPressed.SetPressed(pressed_now); b.Post(e); if (!pressed_now) { _mCurrentlyPressed = null; } }
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); } }
public void Update() { var state = Microsoft.Xna.Framework.Input.Keyboard.GetState(); var curr_pressed = state.GetPressedKeys(); // get pressed keys // check if previously pressed keys are now not pressed - send key up events // check if previously pressed keys still pressed - send key held events for (int p = 0; p < mPrevPressedKeys.Count; ++p) { bool found = false; for (int c = 0; c < curr_pressed.Length; ++c) { if (curr_pressed[c] == mPrevPressedKeys[p]) { found = true; break; } } if (found) { KeyHeld msg = new KeyHeld(); msg.mKey = mPrevPressedKeys[p]; mBroadcaster_KeyHeld.Post(msg); } else { KeyUp msg = new KeyUp(); msg.mKey = mPrevPressedKeys[p]; mBroadcaster_KeyUp.Post(msg); } } // check if previously not pressed keys are now pressed - send key down events for (int c = 0; c < curr_pressed.Length; ++c) { bool found = false; for (int p = 0; p < mPrevPressedKeys.Count; ++p) { if (mPrevPressedKeys[p] == curr_pressed[c]) { found = true; break; } } if (!found) { KeyDown msg = new KeyDown(); msg.mKey = curr_pressed[c]; mBroadcaster_KeyDown.Post(msg); } } // update keys prev pressed mPrevPressedKeys.Clear(); for (int c = 0; c < curr_pressed.Length; ++c) { mPrevPressedKeys.Add(curr_pressed[c]); } }