Exemple #1
0
        private ILoopSubMode GetNewMode(
            Command direction, ILoopSubMode current, ILoopSubMode[] modes)
        {
            SubModeUITag[] header = GetComponent <UIHeader>().SortedHeader;

            int currentIndex = Array.IndexOf(header, current.ModeName);
            int maxIndex     = header.Length - 1;
            int newIndex;

            switch (direction)
            {
            case Command.Next:
                newIndex = ((currentIndex + 1) > maxIndex)
                        ? 0 : (currentIndex + 1);
                break;

            case Command.Previous:
                newIndex = ((currentIndex - 1) < 0)
                       ? maxIndex : (currentIndex - 1);
                break;

            default:
                newIndex = currentIndex;
                break;
            }

            foreach (ILoopSubMode sm in modes)
            {
                if (sm.ModeName == header[newIndex])
                {
                    return(sm);
                }
            }
            return(current);
        }
Exemple #2
0
 public void AddMode(ILoopSubMode mode)
 {
     if (subModes.Contains(mode))
     {
         return;
     }
     subModes.Add(mode);
 }
Exemple #3
0
        public void SwitchMode(Command direction)
        {
            ILoopSubMode[] subModes    = GetComponent <HeaderStatus>().SubModes;
            ILoopSubMode   currentMode = null;
            ILoopSubMode   newMode;

            foreach (ILoopSubMode sm in subModes)
            {
                if (sm.IsActive)
                {
                    currentMode = sm;
                    break;
                }
            }
            if (currentMode == null)
            {
                return;
            }

            currentMode.ExitMode();

            newMode = GetNewMode(direction, currentMode, subModes);
            newMode.EnterMode();
        }
Exemple #4
0
 public void RemoveMode(ILoopSubMode mode)
 {
     subModes.Remove(mode);
 }