Esempio n. 1
0
        public override void OnArrow(float horizontal, float vertical)
        {
            // Moving left or right
            if (Mathf.Abs(horizontal) > Mathf.Abs(vertical))
            {
                int sign = System.Math.Sign(horizontal);
                // Moving from left to right
                if (CurrentSide == Side.SOURCE && TradeDestinationMenuItems.Count > 0 && sign == 1)
                {
                    TradeMenuItem previousItem = TradeSourceMenuItems[SourceItemsIndex];
                    if (previousItem != null)
                    {
                        previousItem.Text.text = previousItem.Text.text.Replace(Menu.INDICATOR, "");
                    }

                    SetItemsTextsIndex(TradeDestinationMenuItems, ref _destinationItemsIndex);
                    CurrentSide = Side.DESTINATION;
                }

                // moving from right to left
                else if (CurrentSide == Side.DESTINATION && TradeSourceMenuItems.Count > 0 && sign == -1)
                {
                    TradeMenuItem previousItem = TradeDestinationMenuItems[DestinationItemsIndex];
                    if (previousItem != null)
                    {
                        previousItem.Text.text = previousItem.Text.text.Replace(Menu.INDICATOR, "");
                    }

                    SetItemsTextsIndex(TradeSourceMenuItems, ref _sourceItemsIndex);
                    CurrentSide = Side.SOURCE;
                }
                else
                {
                    Debug.Log("Just stay where you are I guess");
                }
            }
            // Moving up or down
            else
            {
                int sign = System.Math.Sign(vertical) * -1;
                if (CurrentSide == Side.SOURCE)
                {
                    SetItemsTextsIndex(TradeSourceMenuItems, ref _sourceItemsIndex, (SourceItemsIndex + TradeSourceMenuItems.Count + sign) % TradeSourceMenuItems.Count);
                }
                else
                {
                    SetItemsTextsIndex(TradeDestinationMenuItems, ref _destinationItemsIndex, (DestinationItemsIndex + TradeDestinationMenuItems.Count + sign) % TradeDestinationMenuItems.Count);
                }
            }
        }
Esempio n. 2
0
        private void SetItemsTextsIndex(List <TradeMenuItem> tradeMenuItems, ref int masterIndex, int index = 0)
        {
            // Remove indicator from previous text
            if (masterIndex < tradeMenuItems.Count)
            {
                TradeMenuItem previousItem = tradeMenuItems[masterIndex];
                previousItem.Text.text = previousItem.Text.text.Replace(Menu.INDICATOR, "");
            }

            // Update currently selected text
            masterIndex = index;
            TradeMenuItem currentItem = tradeMenuItems[masterIndex];

            currentItem.Text.text += Menu.INDICATOR;
        }
Esempio n. 3
0
        public override void OnSubmit()
        {
            SourceCharacter.HasTraded = true;
            SourceCharacter.HasMoved  = true;
            if (CurrentSide == Side.SOURCE)
            {
                TradeMenuItem tradeMenuItem = TradeSourceMenuItems[SourceItemsIndex];
                _ = SourceCharacter.Items.Remove(tradeMenuItem.Item);
                _ = TradeSourceMenuItems.Remove(tradeMenuItem);
                DestinationCharacter.Items.Add(tradeMenuItem.Item);
                TradeDestinationMenuItems.Add(new TradeMenuItem(TradeDestinationPanel, tradeMenuItem.Item));
                Destroy(tradeMenuItem.Text.gameObject);

                if (SourceCharacter.Items.Count == 0)
                {
                    CurrentSide = Side.DESTINATION;
                    SetItemsTextsIndex(TradeDestinationMenuItems, ref _destinationItemsIndex);
                }
                else
                {
                    Debug.LogFormat("Setting source index from {0} to {1}", SourceItemsIndex, Mathf.Min(SourceItemsIndex, TradeSourceMenuItems.Count - 1));
                    SetItemsTextsIndex(TradeSourceMenuItems, ref _sourceItemsIndex, Mathf.Min(SourceItemsIndex, TradeSourceMenuItems.Count - 1));
                }
            }
            else
            {
                TradeMenuItem tradeMenuItem = TradeDestinationMenuItems[DestinationItemsIndex];
                _ = DestinationCharacter.Items.Remove(tradeMenuItem.Item);
                _ = TradeDestinationMenuItems.Remove(tradeMenuItem);
                SourceCharacter.Items.Add(tradeMenuItem.Item);
                TradeSourceMenuItems.Add(new TradeMenuItem(TradeSourcePanel, tradeMenuItem.Item));
                Destroy(tradeMenuItem.Text.gameObject);

                if (DestinationCharacter.Items.Count == 0)
                {
                    CurrentSide = Side.SOURCE;
                    SetItemsTextsIndex(TradeSourceMenuItems, ref _sourceItemsIndex);
                }
                else
                {
                    SetItemsTextsIndex(TradeDestinationMenuItems, ref _destinationItemsIndex, Mathf.Min(DestinationItemsIndex, TradeDestinationMenuItems.Count - 1));
                }
            }
        }