예제 #1
0
        public MenuItem AddMenuItem(MenuItem parent, OtherKeyType key, String text, RhythmGame.GameStateType nextState)
        {
            VerticalTextItem newItem = new VerticalTextItem(Game, this);

            newItem.LargeFont = true;
            newItem.ItemText  = text;
            newItem.NextState = nextState;
            MenuItem inside = (MenuItem)newItem;

            if (parent != null)
            {
                if (!parent.AddLink(ref inside, key))
                {
                    parent = null;
                }
            }

            if (parent == null)
            {
                newItem.ItemSetup();
                Selected = newItem;
            }

            Items.Add(newItem);
            Shift += new Action <int, int>(newItem.Shift);
            return(newItem);
        }
예제 #2
0
        public MenuItem AddMenuItem(MenuItem parent, OtherKeyType key, String text, RhythmGame.GameStateType nextState, int childId, SkillInformation info)
        {
            VerticalTextItem newItem = new VerticalTextItem(Game, this);
            bool             owns    = (info.Level <= 0);

            if (owns)
            {
                newItem.FontColor = Color.Gray;
            }
            newItem.ChildId  = childId;
            newItem.ItemText = text;
            if (owns)
            {
                newItem.NextState = nextState;
            }
            else
            {
                newItem.NextState = RhythmGame.GameStateType.None;
            }
            //newItem.DriftRateX = -2.0f;
            //newItem.DriftRateY = -0.25f;
            //newItem.ScaleRate = 0.9f;
            newItem.DefaultX = 120;
            newItem.StartY   = 175;
            MenuItem.ScreenInfo screenInfo = newItem.CurrentInfo;
            //info.pos.Y -= 220;
            //info.pos.X += 30;
            newItem.CurrentInfo = screenInfo;
            newItem.LargeFont   = true;
            MenuItem inside = (MenuItem)newItem;

            if (parent != null)
            {
                if (!parent.AddLink(ref inside, key))
                {
                    parent = null;
                }
            }

            if (parent == null)
            {
                newItem.ItemSetup();
                Selected = newItem;
            }

            skillInformation.Add(childId, info);

            Items.Add(newItem);
            Shift += new Action <int, int>(newItem.Shift);
            newItem.PreSelected += new Action <RhythmGame.GameStateType>(BuySkill);
            //newItem.PreSelected += new Action<RhythmGame.GameStateType>(LeavingMenu);
            return(newItem);
        }
예제 #3
0
        public MenuItem AddMenuItem(MenuItem parent, OtherKeyType key, String text, RhythmGame.GameStateType nextState, int childId, TaskInformation info)
        {
            VerticalTextItem newItem = new VerticalTextItem(Game, this);

            newItem.ChildId   = childId;
            newItem.ItemText  = text;
            newItem.NextState = RhythmGame.GameStateType.None;
            //newItem.DriftRateX = -2.0f;
            //newItem.DriftRateY = -0.25f;
            //newItem.ScaleRate = 0.9f;
            newItem.DefaultX = 120;
            newItem.StartY   = 175;
            MenuItem.ScreenInfo screenInfo = newItem.CurrentInfo;
            //info.pos.Y -= 220;
            //info.pos.X += 30;
            newItem.CurrentInfo = screenInfo;
            newItem.LargeFont   = true;
            MenuItem inside = (MenuItem)newItem;

            if (parent != null)
            {
                if (!parent.AddLink(ref inside, key))
                {
                    parent = null;
                }
            }

            if (parent == null)
            {
                newItem.ItemSetup();
                Selected = newItem;
            }

            taskInformation.Add(childId, info);

            Items.Add(newItem);
            Shift += new Action <int, int>(newItem.Shift);

            return(newItem);
        }
예제 #4
0
 public abstract bool OtherKeyHeld(OtherKeyType type);
예제 #5
0
 /// <summary>
 /// Other mapped keys.  These keys are used primary for menu navigation.
 /// </summary>
 public abstract bool OtherKeyPressed(OtherKeyType type);
예제 #6
0
 public override bool OtherKeyHeld(OtherKeyType type)
 {
     return(otherStates[(int)type] == KeyState.HELD);
 }
예제 #7
0
 public override bool OtherKeyPressed(OtherKeyType type)
 {
     return(otherStates[(int)type] == KeyState.PRESSED);
 }
예제 #8
0
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);

            keyboardState = Keyboard.GetState();
            Keys[] newKeys = (Keys[])keyboardState.GetPressedKeys();

            if (fake && (fakeKeys.Length > 0))
            {
                int    index    = 0;
                Keys[] tempKeys = new Keys[(newKeys.Length + fakeKeys.Length)];
                foreach (Keys k in newKeys)
                {
                    tempKeys[index++] = k;
                }

                foreach (Keys k in fakeKeys)
                {
                    tempKeys[index++] = k;
                }

                newKeys  = (Keys[])tempKeys.Clone();
                fakeKeys = new Keys[0];
            }

            for (int i = 0; i < states.Length; i++)
            {
                states[i] = KeyState.NONE;
            }
            for (int i = 0; i < otherStates.Length; i++)
            {
                otherStates[i] = KeyState.NONE;
            }
            _fullPressed = 0UL;
            _fullHeld    = 0UL;
            _strummed    = false;

            //if (GamePad.GetState(PlayerIndex.One).Buttons.A == ButtonState.Pressed)
            //return OtherKeyType.Select;
            if (pressedKeys != null || GamePad.GetState(PlayerIndex.One).Buttons.A == ButtonState.Pressed)
            {
                foreach (Keys key in newKeys)
                {
                    bool found = false;

                    foreach (Keys oldKey in pressedKeys)
                    {
                        if (key == oldKey)
                        {
                            found = true;
                            break;
                        }
                    }

                    int id = KeyToID(key);
                    if (id != -1)
                    {
                        if (found)
                        {
                            _fullHeld |= 1UL << id;
                            states[id] = KeyState.HELD;
                        }
                        else
                        {
                            _fullPressed |= 1UL << id;
                            states[id]    = KeyState.PRESSED;
                        }
                    }

                    OtherKeyType oid = OtherKeyToID(key);
                    if (oid != OtherKeyType.EndType)
                    {
                        if (found)
                        {
                            otherStates[(int)oid] = KeyState.HELD;
                        }
                        else
                        {
                            otherStates[(int)oid] = KeyState.PRESSED;
                        }
                        if (oid == OtherKeyType.Cancel)
                        {
                            otherStates[(int)OtherKeyType.Pause] = otherStates[(int)OtherKeyType.Cancel];
                        }
                        if (oid == OtherKeyType.Select)
                        {
                            ((RhythmGame)Game).ActiveInput = this;
                        }
                    }

                    if (IsStrum(key))
                    {
                        _strummed = !found;
                    }
                }
            }

            pressedKeys = newKeys;
        }
예제 #9
0
        public MenuItem AddMenuItem(MenuItem parent, String name, String details, Texture2D logo, OtherKeyType key)
        {
            PhotoTextItem newItem = new PhotoTextItem(Game, this);

            MenuItem.ScreenInfo info = newItem.CurrentInfo;
            info.pos.Y         -= 110;
            info.pos.X         -= 275;
            newItem.CurrentInfo = info;
            newItem.SetStringAndLogo(name, logo);
            newItem.SetDetails(details);

            newItem.NextState = RhythmGame.GameStateType.None;
            MenuItem inside = (MenuItem)newItem;

            if (parent != null)
            {
                if (!parent.AddLink(ref inside, key))
                {
                    parent = null;
                }
            }

            if (parent == null)
            {
                newItem.ItemSetup();
                Selected = newItem;
            }

            Items.Add(newItem);
            Shift += new Action <int, int>(newItem.Shift);
            return(newItem);
        }