You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
5.4 KiB
203 lines
5.4 KiB
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(); |
|
} |
|
|
|
if (buffer.version >= 4 && _tweenConfig != null && _tweenConfig.easeType == EaseType.Custom) |
|
{ |
|
_tweenConfig.customEase = new CustomEase(); |
|
_tweenConfig.customEase.Create(buffer.ReadPath()); |
|
} |
|
|
|
if (buffer.version >= 6) |
|
{ |
|
if (this is GearAnimation) |
|
{ |
|
for (int i = 0; i < cnt; i++) |
|
{ |
|
string page = buffer.ReadS(); |
|
if (page == null) |
|
continue; |
|
|
|
((GearAnimation)this).AddExtStatus(page, buffer); |
|
} |
|
|
|
if (buffer.ReadBool()) |
|
((GearAnimation)this).AddExtStatus(null, buffer); |
|
} |
|
} |
|
} |
|
|
|
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> |
|
/// |
|
/// </summary> |
|
public CustomEase customEase; |
|
|
|
/// <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; |
|
} |
|
} |
|
}
|
|
|