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); }
public void AddMode(ILoopSubMode mode) { if (subModes.Contains(mode)) { return; } subModes.Add(mode); }
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(); }
public void RemoveMode(ILoopSubMode mode) { subModes.Remove(mode); }