コード例 #1
0
ファイル: DebugMenu.cs プロジェクト: barronds/XNARTS
        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;
                    }
                }
            }
        }
コード例 #2
0
ファイル: World.cs プロジェクト: barronds/XNARTS
        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);
            }
        }
コード例 #3
0
ファイル: Input.cs プロジェクト: barronds/XNARTS
        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;
                    }
                }
            }
        }