/// <summary> /// Handles the button press event to track which focused menu item will get the activation /// </summary> /// <param name="backButton"></param> /// <param name="startButton"></param> /// <param name="systemButton"></param> /// <param name="aButton"></param> /// <param name="bButton"></param> /// <param name="xButton"></param> /// <param name="yButton"></param> /// <param name="leftShoulder"></param> /// <param name="rightShoulder"></param> /// <param name="player"></param> protected override void OnGamePadButtonUpdate(CCGamePadButtonStatus backButton, CCGamePadButtonStatus startButton, CCGamePadButtonStatus systemButton, CCGamePadButtonStatus aButton, CCGamePadButtonStatus bButton, CCGamePadButtonStatus xButton, CCGamePadButtonStatus yButton, CCGamePadButtonStatus leftShoulder, CCGamePadButtonStatus rightShoulder, Microsoft.Xna.Framework.PlayerIndex player) { base.OnGamePadButtonUpdate(backButton, startButton, systemButton, aButton, bButton, xButton, yButton, leftShoulder, rightShoulder, player); if (!HasFocus) { return; } if (backButton == CCGamePadButtonStatus.Pressed || aButton == CCGamePadButtonStatus.Pressed || bButton == CCGamePadButtonStatus.Pressed || xButton == CCGamePadButtonStatus.Pressed || yButton == CCGamePadButtonStatus.Pressed || leftShoulder == CCGamePadButtonStatus.Pressed || rightShoulder == CCGamePadButtonStatus.Pressed) { CCMenuItem item = FocusedItem; item.Selected(); m_pSelectedItem = item; m_eState = CCMenuState.TrackingTouch; } else if (backButton == CCGamePadButtonStatus.Released || aButton == CCGamePadButtonStatus.Released || bButton == CCGamePadButtonStatus.Released || xButton == CCGamePadButtonStatus.Released || yButton == CCGamePadButtonStatus.Released || leftShoulder == CCGamePadButtonStatus.Released || rightShoulder == CCGamePadButtonStatus.Released) { if (m_eState == CCMenuState.TrackingTouch) { // Now we are selecting the menu item CCMenuItem item = FocusedItem; if (item != null && m_pSelectedItem == item) { // Activate this item item.Unselected(); item.Activate(); m_eState = CCMenuState.Waiting; m_pSelectedItem = null; } } } }
public override void TouchCancelled(CCTouch touch) { Debug.Assert(m_eState == CCMenuState.TrackingTouch, "[Menu ccTouchCancelled] -- invalid state"); if (m_pSelectedItem != null) { m_pSelectedItem.Unselected(); } m_eState = CCMenuState.Waiting; }
public override void TouchEnded(CCTouch touch, CCEvent e) { Debug.Assert(m_eState == CCMenuState.TrackingTouch, "[Menu TouchEnded] -- invalid state"); if (m_pSelectedItem != null) { m_pSelectedItem.Unselected(); m_pSelectedItem.Activate(); } m_eState = CCMenuState.Waiting; }
/// <summary> /// The position of the menu is set to the center of the main screen /// </summary> /// <param name="items"></param> /// <returns></returns> private bool InitWithArray(params CCMenuItem[] items) { if (_Items.Count > 0) { List <CCMenuItem> copy = new List <CCMenuItem>(_Items); foreach (CCMenuItem i in copy) { RemoveChild(i, false); } } if (base.Init()) { if (CCConfiguration.SharedConfiguration.UseGraphPriority) { TouchPriority = kMaxGraphPriority; } else { TouchPriority = kCCMenuHandlerPriority; } TouchMode = CCTouchMode.OneByOne; TouchEnabled = true; m_bEnabled = true; // menu in the center of the screen CCSize s = CCDirector.SharedDirector.WinSize; IgnoreAnchorPointForPosition = true; AnchorPoint = new CCPoint(0.5f, 0.5f); ContentSize = s; Position = (new CCPoint(s.Width / 2, s.Height / 2)); if (items != null) { int z = 0; foreach (CCMenuItem item in items) { AddChild(item, z); z++; } } // [self alignItemsVertically]; m_pSelectedItem = null; m_eState = CCMenuState.Waiting; // enable cascade color and opacity on menus CascadeColorEnabled = true; CascadeOpacityEnabled = true; return(true); } return(false); }
public override void OnExit() { if (m_eState == CCMenuState.TrackingTouch) { m_pSelectedItem.Unselected(); m_eState = CCMenuState.Waiting; m_pSelectedItem = null; } foreach (CCMenuItem item in _Items) { CCFocusManager.Instance.Remove(item); } base.OnExit(); }
/// <summary> /// The position of the menu is set to the center of the main screen /// </summary> /// <param name="items"></param> /// <returns></returns> private bool InitWithArray(params CCMenuItem[] items) { if (_Items.Count > 0) { List <CCMenuItem> copy = new List <CCMenuItem>(_Items); foreach (CCMenuItem i in copy) { RemoveChild(i, false); } } if (base.Init()) { TouchEnabled = true; m_bEnabled = true; // menu in the center of the screen CCSize s = CCDirector.SharedDirector.WinSize; IgnoreAnchorPointForPosition = true; AnchorPoint = new CCPoint(0.5f, 0.5f); ContentSize = s; Position = (new CCPoint(s.Width / 2, s.Height / 2)); if (items != null) { int z = 0; foreach (CCMenuItem item in items) { AddChild(item, z); z++; } } // [self alignItemsVertically]; m_pSelectedItem = null; m_eState = CCMenuState.Waiting; return(true); } return(false); }
public override bool TouchBegan(CCTouch touch) { if (m_eState != CCMenuState.Waiting || !m_bVisible || !m_bEnabled) { return(false); } for (CCNode c = m_pParent; c != null; c = c.Parent) { if (c.Visible == false) { return(false); } } m_pSelectedItem = ItemForTouch(touch); if (m_pSelectedItem != null) { m_eState = CCMenuState.TrackingTouch; m_pSelectedItem.Selected(); return(true); } return(false); }
public override bool TouchBegan(CCTouch touch) { if (m_eState != CCMenuState.Waiting || !m_bVisible || !m_bEnabled) { return false; } for (CCNode c = m_pParent; c != null; c = c.Parent) { if (c.Visible == false) { return false; } } m_pSelectedItem = ItemForTouch(touch); if (m_pSelectedItem != null) { m_eState = CCMenuState.TrackingTouch; m_pSelectedItem.Selected(); return true; } return false; }
public override void OnExit() { if (m_eState == CCMenuState.TrackingTouch) { if (m_pSelectedItem != null) { m_pSelectedItem.Unselected(); m_pSelectedItem = null; } m_eState = CCMenuState.Waiting; } foreach (CCMenuItem item in _Items) { CCFocusManager.Instance.Remove(item); } base.OnExit(); }
/// <summary> /// The position of the menu is set to the center of the main screen /// </summary> /// <param name="items"></param> /// <returns></returns> private bool InitWithArray(params CCMenuItem[] items) { if (_Items.Count > 0) { List<CCMenuItem> copy = new List<CCMenuItem>(_Items); foreach (CCMenuItem i in copy) { RemoveChild(i, false); } } if (base.Init()) { TouchPriority = kCCMenuHandlerPriority; TouchMode = CCTouchMode.OneByOne; TouchEnabled = true; m_bEnabled = true; // menu in the center of the screen CCSize s = CCDirector.SharedDirector.WinSize; IgnoreAnchorPointForPosition = true; AnchorPoint = new CCPoint(0.5f, 0.5f); ContentSize = s; Position = (new CCPoint(s.Width / 2, s.Height / 2)); if (items != null) { int z = 0; foreach (CCMenuItem item in items) { AddChild(item, z); z++; } } // [self alignItemsVertically]; m_pSelectedItem = null; m_eState = CCMenuState.Waiting; // enable cascade color and opacity on menus CascadeColorEnabled = true; CascadeOpacityEnabled = true; return true; } return false; }