using System; using FairyGUI.Utils; namespace FairyGUI { public class ControllerAction { public enum ActionType { PlayTransition, ChangePage } public string[] fromPage; public string[] toPage; public static ControllerAction CreateAction(ActionType type) { switch (type) { case ActionType.PlayTransition: return new PlayTransitionAction(); case ActionType.ChangePage: return new ChangePageAction(); } return null; } public ControllerAction() { } public void Run(Controller controller, string prevPage, string curPage) { if ((fromPage == null || fromPage.Length == 0 || Array.IndexOf(fromPage, prevPage) != -1) && (toPage == null || toPage.Length == 0 || Array.IndexOf(toPage, curPage) != -1)) Enter(controller); else Leave(controller); } virtual protected void Enter(Controller controller) { } virtual protected void Leave(Controller controller) { } virtual public void Setup(ByteBuffer buffer) { int cnt; cnt = buffer.ReadShort(); fromPage = new string[cnt]; for (int i = 0; i < cnt; i++) fromPage[i] = buffer.ReadS(); cnt = buffer.ReadShort(); toPage = new string[cnt]; for (int i = 0; i < cnt; i++) toPage[i] = buffer.ReadS(); } } }