|  |  | using System.Collections.Generic;
 | 
						
						
						
							|  |  | using FairyGUI.Utils;
 | 
						
						
						
							|  |  | using System;
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | namespace FairyGUI
 | 
						
						
						
							|  |  | {
 | 
						
						
						
							|  |  |     /// <summary>
 | 
						
						
						
							|  |  |     /// Controller class.
 | 
						
						
						
							|  |  |     /// 控制器类。控制器的创建和设计需通过编辑器完成,不建议使用代码创建。
 | 
						
						
						
							|  |  |     /// 最常用的方法是通过selectedIndex获得或改变控制器的活动页面。如果要获得控制器页面改变的通知,使用onChanged事件。
 | 
						
						
						
							|  |  |     /// </summary>
 | 
						
						
						
							|  |  |     public class Controller : EventDispatcher
 | 
						
						
						
							|  |  |     {
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Name of the controller
 | 
						
						
						
							|  |  |         /// 控制器名称。
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         public string name;
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         internal GComponent parent;
 | 
						
						
						
							|  |  |         internal bool autoRadioGroupDepth;
 | 
						
						
						
							|  |  |         internal bool changing;
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         int _selectedIndex;
 | 
						
						
						
							|  |  |         int _previousIndex;
 | 
						
						
						
							|  |  |         List<string> _pageIds;
 | 
						
						
						
							|  |  |         List<string> _pageNames;
 | 
						
						
						
							|  |  |         List<ControllerAction> _actions;
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         EventListener _onChanged;
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         static uint _nextPageId;
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         public Controller()
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             _pageIds = new List<string>();
 | 
						
						
						
							|  |  |             _pageNames = new List<string>();
 | 
						
						
						
							|  |  |             _selectedIndex = -1;
 | 
						
						
						
							|  |  |             _previousIndex = -1;
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         public void Dispose()
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             RemoveEventListeners();
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// When controller page changed.
 | 
						
						
						
							|  |  |         /// 当控制器活动页面改变时,此事件被触发。
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         public EventListener onChanged
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             get { return _onChanged ?? (_onChanged = new EventListener(this, "onChanged")); }
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Current page index.
 | 
						
						
						
							|  |  |         /// 获得或设置当前活动页面索引。
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         public int selectedIndex
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             get
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 return _selectedIndex;
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |             set
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 if (_selectedIndex != value)
 | 
						
						
						
							|  |  |                 {
 | 
						
						
						
							|  |  |                     if (value > _pageIds.Count - 1)
 | 
						
						
						
							|  |  |                         throw new IndexOutOfRangeException("" + value);
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |                     changing = true;
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |                     _previousIndex = _selectedIndex;
 | 
						
						
						
							|  |  |                     _selectedIndex = value;
 | 
						
						
						
							|  |  |                     parent.ApplyController(this);
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |                     DispatchEvent("onChanged", null);
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |                     changing = false;
 | 
						
						
						
							|  |  |                 }
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Set current page index, no onChanged event.
 | 
						
						
						
							|  |  |         /// 通过索引设置当前活动页面,和selectedIndex的区别在于,这个方法不会触发onChanged事件。
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         /// <param name="value">Page index</param>
 | 
						
						
						
							|  |  |         public void SetSelectedIndex(int value)
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             if (_selectedIndex != value)
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 if (value > _pageIds.Count - 1)
 | 
						
						
						
							|  |  |                     throw new IndexOutOfRangeException("" + value);
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |                 changing = true;
 | 
						
						
						
							|  |  |                 _previousIndex = _selectedIndex;
 | 
						
						
						
							|  |  |                 _selectedIndex = value;
 | 
						
						
						
							|  |  |                 parent.ApplyController(this);
 | 
						
						
						
							|  |  |                 changing = false;
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Set current page by name, no onChanged event.
 | 
						
						
						
							|  |  |         /// 通过页面名称设置当前活动页面,和selectedPage的区别在于,这个方法不会触发onChanged事件。
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         /// <param name="value">Page name</param>
 | 
						
						
						
							|  |  |         public void SetSelectedPage(string value)
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             int i = _pageNames.IndexOf(value);
 | 
						
						
						
							|  |  |             if (i == -1)
 | 
						
						
						
							|  |  |                 i = 0;
 | 
						
						
						
							|  |  |             this.SetSelectedIndex(i);
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Current page name.
 | 
						
						
						
							|  |  |         /// 获得当前活动页面名称
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         public string selectedPage
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             get
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 if (_selectedIndex == -1)
 | 
						
						
						
							|  |  |                     return null;
 | 
						
						
						
							|  |  |                 else
 | 
						
						
						
							|  |  |                     return _pageNames[_selectedIndex];
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |             set
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 int i = _pageNames.IndexOf(value);
 | 
						
						
						
							|  |  |                 if (i == -1)
 | 
						
						
						
							|  |  |                     i = 0;
 | 
						
						
						
							|  |  |                 this.selectedIndex = i;
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Previouse page index.
 | 
						
						
						
							|  |  |         /// 获得上次活动页面索引
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         public int previsousIndex
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             get { return _previousIndex; }
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Previous page name.
 | 
						
						
						
							|  |  |         /// 获得上次活动页面名称。
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         public string previousPage
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             get
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 if (_previousIndex == -1)
 | 
						
						
						
							|  |  |                     return null;
 | 
						
						
						
							|  |  |                 else
 | 
						
						
						
							|  |  |                     return _pageNames[_previousIndex];
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Page count of this controller.
 | 
						
						
						
							|  |  |         /// 获得页面数量。
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         public int pageCount
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             get { return _pageIds.Count; }
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Get page name by an index.
 | 
						
						
						
							|  |  |         /// 通过页面索引获得页面名称。
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         /// <param name="index">Page index</param>
 | 
						
						
						
							|  |  |         /// <returns>Page Name</returns>
 | 
						
						
						
							|  |  |         public string GetPageName(int index)
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             return _pageNames[index];
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Get page id by an index.
 | 
						
						
						
							|  |  |         /// 通过页面索引获得页面id。
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         /// <param name="index">Page index</param>
 | 
						
						
						
							|  |  |         /// <returns>Page Id</returns>
 | 
						
						
						
							|  |  |         public string GetPageId(int index)
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             return _pageIds[index];
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Get page id by name
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         /// <param name="aName"></param>
 | 
						
						
						
							|  |  |         /// <returns></returns>
 | 
						
						
						
							|  |  |         public string GetPageIdByName(string aName)
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             int i = _pageNames.IndexOf(aName);
 | 
						
						
						
							|  |  |             if (i != -1)
 | 
						
						
						
							|  |  |                 return _pageIds[i];
 | 
						
						
						
							|  |  |             else
 | 
						
						
						
							|  |  |                 return null;
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Add a new page to this controller.
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         /// <param name="name">Page name</param>
 | 
						
						
						
							|  |  |         public void AddPage(string name)
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             if (name == null)
 | 
						
						
						
							|  |  |                 name = string.Empty;
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |             AddPageAt(name, _pageIds.Count);
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Add a new page to this controller at a certain index.
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         /// <param name="name">Page name</param>
 | 
						
						
						
							|  |  |         /// <param name="index">Insert position</param>
 | 
						
						
						
							|  |  |         public void AddPageAt(string name, int index)
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             string nid = "_" + (_nextPageId++);
 | 
						
						
						
							|  |  |             if (index == _pageIds.Count)
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 _pageIds.Add(nid);
 | 
						
						
						
							|  |  |                 _pageNames.Add(name);
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |             else
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 _pageIds.Insert(index, nid);
 | 
						
						
						
							|  |  |                 _pageNames.Insert(index, name);
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Remove a page.
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         /// <param name="name">Page name</param>
 | 
						
						
						
							|  |  |         public void RemovePage(string name)
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             int i = _pageNames.IndexOf(name);
 | 
						
						
						
							|  |  |             if (i != -1)
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 _pageIds.RemoveAt(i);
 | 
						
						
						
							|  |  |                 _pageNames.RemoveAt(i);
 | 
						
						
						
							|  |  |                 if (_selectedIndex >= _pageIds.Count)
 | 
						
						
						
							|  |  |                     this.selectedIndex = _selectedIndex - 1;
 | 
						
						
						
							|  |  |                 else
 | 
						
						
						
							|  |  |                     parent.ApplyController(this);
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Removes a page at a certain index.
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         /// <param name="index"></param>
 | 
						
						
						
							|  |  |         public void RemovePageAt(int index)
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             _pageIds.RemoveAt(index);
 | 
						
						
						
							|  |  |             _pageNames.RemoveAt(index);
 | 
						
						
						
							|  |  |             if (_selectedIndex >= _pageIds.Count)
 | 
						
						
						
							|  |  |                 this.selectedIndex = _selectedIndex - 1;
 | 
						
						
						
							|  |  |             else
 | 
						
						
						
							|  |  |                 parent.ApplyController(this);
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Remove all pages.
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         public void ClearPages()
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             _pageIds.Clear();
 | 
						
						
						
							|  |  |             _pageNames.Clear();
 | 
						
						
						
							|  |  |             if (_selectedIndex != -1)
 | 
						
						
						
							|  |  |                 this.selectedIndex = -1;
 | 
						
						
						
							|  |  |             else
 | 
						
						
						
							|  |  |                 parent.ApplyController(this);
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         /// <summary>
 | 
						
						
						
							|  |  |         /// Check if the controller has a page.
 | 
						
						
						
							|  |  |         /// </summary>
 | 
						
						
						
							|  |  |         /// <param name="aName">Page name.</param>
 | 
						
						
						
							|  |  |         /// <returns></returns>
 | 
						
						
						
							|  |  |         public bool HasPage(string aName)
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             return _pageNames.IndexOf(aName) != -1;
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         internal int GetPageIndexById(string aId)
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             return _pageIds.IndexOf(aId);
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         internal string GetPageNameById(string aId)
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             int i = _pageIds.IndexOf(aId);
 | 
						
						
						
							|  |  |             if (i != -1)
 | 
						
						
						
							|  |  |                 return _pageNames[i];
 | 
						
						
						
							|  |  |             else
 | 
						
						
						
							|  |  |                 return null;
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         internal string selectedPageId
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             get
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 if (_selectedIndex == -1)
 | 
						
						
						
							|  |  |                     return string.Empty;
 | 
						
						
						
							|  |  |                 else
 | 
						
						
						
							|  |  |                     return _pageIds[_selectedIndex];
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |             set
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 int i = _pageIds.IndexOf(value);
 | 
						
						
						
							|  |  |                 if (i != -1)
 | 
						
						
						
							|  |  |                     this.selectedIndex = i;
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         internal string oppositePageId
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             set
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 int i = _pageIds.IndexOf(value);
 | 
						
						
						
							|  |  |                 if (i > 0)
 | 
						
						
						
							|  |  |                     this.selectedIndex = 0;
 | 
						
						
						
							|  |  |                 else if (_pageIds.Count > 1)
 | 
						
						
						
							|  |  |                     this.selectedIndex = 1;
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         internal string previousPageId
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             get
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 if (_previousIndex == -1)
 | 
						
						
						
							|  |  |                     return null;
 | 
						
						
						
							|  |  |                 else
 | 
						
						
						
							|  |  |                     return _pageIds[_previousIndex];
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         public void RunActions()
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             if (_actions != null)
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 int cnt = _actions.Count;
 | 
						
						
						
							|  |  |                 for (int i = 0; i < cnt; i++)
 | 
						
						
						
							|  |  |                 {
 | 
						
						
						
							|  |  |                     _actions[i].Run(this, previousPageId, selectedPageId);
 | 
						
						
						
							|  |  |                 }
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         public void Setup(ByteBuffer buffer)
 | 
						
						
						
							|  |  |         {
 | 
						
						
						
							|  |  |             int beginPos = buffer.position;
 | 
						
						
						
							|  |  |             buffer.Seek(beginPos, 0);
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |             name = buffer.ReadS();
 | 
						
						
						
							|  |  |             autoRadioGroupDepth = buffer.ReadBool();
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |             buffer.Seek(beginPos, 1);
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |             int cnt = buffer.ReadShort();
 | 
						
						
						
							|  |  |             _pageIds.Capacity = cnt;
 | 
						
						
						
							|  |  |             _pageNames.Capacity = cnt;
 | 
						
						
						
							|  |  |             for (int i = 0; i < cnt; i++)
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 _pageIds.Add(buffer.ReadS());
 | 
						
						
						
							|  |  |                 _pageNames.Add(buffer.ReadS());
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |             int homePageIndex = 0;
 | 
						
						
						
							|  |  |             if (buffer.version >= 2)
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 int homePageType = buffer.ReadByte();
 | 
						
						
						
							|  |  |                 switch (homePageType)
 | 
						
						
						
							|  |  |                 {
 | 
						
						
						
							|  |  |                     case 1:
 | 
						
						
						
							|  |  |                         homePageIndex = buffer.ReadShort();
 | 
						
						
						
							|  |  |                         break;
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |                     case 2:
 | 
						
						
						
							|  |  |                         homePageIndex = _pageNames.IndexOf(UIPackage.branch);
 | 
						
						
						
							|  |  |                         if (homePageIndex == -1)
 | 
						
						
						
							|  |  |                             homePageIndex = 0;
 | 
						
						
						
							|  |  |                         break;
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |                     case 3:
 | 
						
						
						
							|  |  |                         homePageIndex = _pageNames.IndexOf(UIPackage.GetVar(buffer.ReadS()));
 | 
						
						
						
							|  |  |                         if (homePageIndex == -1)
 | 
						
						
						
							|  |  |                             homePageIndex = 0;
 | 
						
						
						
							|  |  |                         break;
 | 
						
						
						
							|  |  |                 }
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |             buffer.Seek(beginPos, 2);
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |             cnt = buffer.ReadShort();
 | 
						
						
						
							|  |  |             if (cnt > 0)
 | 
						
						
						
							|  |  |             {
 | 
						
						
						
							|  |  |                 if (_actions == null)
 | 
						
						
						
							|  |  |                     _actions = new List<ControllerAction>(cnt);
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |                 for (int i = 0; i < cnt; i++)
 | 
						
						
						
							|  |  |                 {
 | 
						
						
						
							|  |  |                     int nextPos = buffer.ReadUshort();
 | 
						
						
						
							|  |  |                     nextPos += buffer.position;
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |                     ControllerAction action = ControllerAction.CreateAction((ControllerAction.ActionType)buffer.ReadByte());
 | 
						
						
						
							|  |  |                     action.Setup(buffer);
 | 
						
						
						
							|  |  |                     _actions.Add(action);
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |                     buffer.position = nextPos;
 | 
						
						
						
							|  |  |                 }
 | 
						
						
						
							|  |  |             }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |             if (parent != null && _pageIds.Count > 0)
 | 
						
						
						
							|  |  |                 _selectedIndex = homePageIndex;
 | 
						
						
						
							|  |  |             else
 | 
						
						
						
							|  |  |                 _selectedIndex = -1;
 | 
						
						
						
							|  |  |         }
 | 
						
						
						
							|  |  |     }
 | 
						
						
						
							|  |  | }
 |