You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			175 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			175 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C#
		
	
| using FairyGUI.Utils;
 | |
| 
 | |
| namespace FairyGUI
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Gear is a connection between object and controller.
 | |
|     /// </summary>
 | |
|     abstract public class GearBase
 | |
|     {
 | |
|         public static bool disableAllTweenEffect = false;
 | |
| 
 | |
|         protected GObject _owner;
 | |
|         protected Controller _controller;
 | |
|         protected GearTweenConfig _tweenConfig;
 | |
| 
 | |
|         public GearBase(GObject owner)
 | |
|         {
 | |
|             _owner = owner;
 | |
|         }
 | |
| 
 | |
|         public void Dispose()
 | |
|         {
 | |
|             if (_tweenConfig != null && _tweenConfig._tweener != null)
 | |
|             {
 | |
|                 _tweenConfig._tweener.Kill();
 | |
|                 _tweenConfig._tweener = null;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Controller object.
 | |
|         /// </summary>
 | |
|         public Controller controller
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return _controller;
 | |
|             }
 | |
| 
 | |
|             set
 | |
|             {
 | |
|                 if (value != _controller)
 | |
|                 {
 | |
|                     _controller = value;
 | |
|                     if (_controller != null)
 | |
|                         Init();
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public GearTweenConfig tweenConfig
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (_tweenConfig == null)
 | |
|                     _tweenConfig = new GearTweenConfig();
 | |
|                 return _tweenConfig;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public void Setup(ByteBuffer buffer)
 | |
|         {
 | |
|             _controller = _owner.parent.GetControllerAt(buffer.ReadShort());
 | |
|             Init();
 | |
| 
 | |
|             int cnt = buffer.ReadShort();
 | |
|             if (this is GearDisplay)
 | |
|             {
 | |
|                 ((GearDisplay)this).pages = buffer.ReadSArray(cnt);
 | |
|             }
 | |
|             else if (this is GearDisplay2)
 | |
|             {
 | |
|                 ((GearDisplay2)this).pages = buffer.ReadSArray(cnt);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 for (int i = 0; i < cnt; i++)
 | |
|                 {
 | |
|                     string page = buffer.ReadS();
 | |
|                     if (page == null)
 | |
|                         continue;
 | |
| 
 | |
|                     AddStatus(page, buffer);
 | |
|                 }
 | |
| 
 | |
|                 if (buffer.ReadBool())
 | |
|                     AddStatus(null, buffer);
 | |
|             }
 | |
| 
 | |
|             if (buffer.ReadBool())
 | |
|             {
 | |
|                 _tweenConfig = new GearTweenConfig();
 | |
|                 _tweenConfig.easeType = (EaseType)buffer.ReadByte();
 | |
|                 _tweenConfig.duration = buffer.ReadFloat();
 | |
|                 _tweenConfig.delay = buffer.ReadFloat();
 | |
|             }
 | |
| 
 | |
|             if (buffer.version >= 2)
 | |
|             {
 | |
|                 if (this is GearXY)
 | |
|                 {
 | |
|                     if(buffer.ReadBool())
 | |
|                     {
 | |
|                         ((GearXY)this).positionsInPercent = true;
 | |
|                         for (int i = 0; i < cnt; i++)
 | |
|                         {
 | |
|                             string page = buffer.ReadS();
 | |
|                             if (page == null)
 | |
|                                 continue;
 | |
| 
 | |
|                             ((GearXY)this).AddExtStatus(page, buffer);
 | |
|                         }
 | |
| 
 | |
|                         if (buffer.ReadBool())
 | |
|                             ((GearXY)this).AddExtStatus(null, buffer);
 | |
|                     }
 | |
|                 }
 | |
|                 else if (this is GearDisplay2)
 | |
|                     ((GearDisplay2)this).condition = buffer.ReadByte();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         virtual public void UpdateFromRelations(float dx, float dy)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         abstract protected void AddStatus(string pageId, ByteBuffer buffer);
 | |
|         abstract protected void Init();
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Call when controller active page changed.
 | |
|         /// </summary>
 | |
|         abstract public void Apply();
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Call when object's properties changed.
 | |
|         /// </summary>
 | |
|         abstract public void UpdateState();
 | |
|     }
 | |
| 
 | |
|     public class GearTweenConfig
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// Use tween to apply change.
 | |
|         /// </summary>
 | |
|         public bool tween;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Ease type.
 | |
|         /// </summary>
 | |
|         public EaseType easeType;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Tween duration in seconds.
 | |
|         /// </summary>
 | |
|         public float duration;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Tween delay in seconds.
 | |
|         /// </summary>
 | |
|         public float delay;
 | |
| 
 | |
|         internal uint _displayLockToken;
 | |
|         internal GTweener _tweener;
 | |
| 
 | |
|         public GearTweenConfig()
 | |
|         {
 | |
|             tween = true;
 | |
|             easeType = EaseType.QuadOut;
 | |
|             duration = 0.3f;
 | |
|             delay = 0;
 | |
|         }
 | |
|     }
 | |
| }
 |