Compile-driven bulk-copy loop (tools/engine-port/m1_copy_loop.py) pulled the precise reference closure of the battle-core roots, stopping at the classify god-object/View-VFX-UI boundary. 782 files; no re-explosion (M0 had estimated ~order 1000). Residual frontier = 52 shim-classified + 80 external (Unity/BCL) types to author next.
277 lines
5.2 KiB
C#
277 lines
5.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
[AddComponentMenu("NGUI/Interaction/Button")]
|
|
public class UIButton : UIButtonColor
|
|
{
|
|
public static UIButton current;
|
|
|
|
public bool dragHighlight;
|
|
|
|
public string hoverSprite;
|
|
|
|
public string pressedSprite;
|
|
|
|
public string disabledSprite;
|
|
|
|
public Sprite hoverSprite2D;
|
|
|
|
public Sprite pressedSprite2D;
|
|
|
|
public Sprite disabledSprite2D;
|
|
|
|
public bool pixelSnap;
|
|
|
|
public List<EventDelegate> onClick = new List<EventDelegate>();
|
|
|
|
[NonSerialized]
|
|
private UISprite mSprite;
|
|
|
|
[NonSerialized]
|
|
private UI2DSprite mSprite2D;
|
|
|
|
[NonSerialized]
|
|
private string mNormalSprite;
|
|
|
|
[NonSerialized]
|
|
private Sprite mNormalSprite2D;
|
|
|
|
public override bool isEnabled
|
|
{
|
|
get
|
|
{
|
|
if (!base.enabled)
|
|
{
|
|
return false;
|
|
}
|
|
Collider component = base.gameObject.GetComponent<Collider>();
|
|
if ((bool)component && component.enabled)
|
|
{
|
|
return true;
|
|
}
|
|
Collider2D component2 = GetComponent<Collider2D>();
|
|
if ((bool)component2)
|
|
{
|
|
return component2.enabled;
|
|
}
|
|
return false;
|
|
}
|
|
set
|
|
{
|
|
if (isEnabled == value)
|
|
{
|
|
return;
|
|
}
|
|
Collider component = base.gameObject.GetComponent<Collider>();
|
|
if (component != null)
|
|
{
|
|
component.enabled = value;
|
|
UIButton[] components = GetComponents<UIButton>();
|
|
for (int i = 0; i < components.Length; i++)
|
|
{
|
|
components[i].SetState((!value) ? State.Disabled : State.Normal, immediate: false);
|
|
}
|
|
return;
|
|
}
|
|
Collider2D component2 = GetComponent<Collider2D>();
|
|
if (component2 != null)
|
|
{
|
|
component2.enabled = value;
|
|
UIButton[] components = GetComponents<UIButton>();
|
|
for (int i = 0; i < components.Length; i++)
|
|
{
|
|
components[i].SetState((!value) ? State.Disabled : State.Normal, immediate: false);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
base.enabled = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
public string normalSprite
|
|
{
|
|
get
|
|
{
|
|
if (!mInitDone)
|
|
{
|
|
OnInit();
|
|
}
|
|
return mNormalSprite;
|
|
}
|
|
set
|
|
{
|
|
if (!mInitDone)
|
|
{
|
|
OnInit();
|
|
}
|
|
if (mSprite != null && !string.IsNullOrEmpty(mNormalSprite) && mNormalSprite == mSprite.spriteName)
|
|
{
|
|
mNormalSprite = value;
|
|
SetSprite(value);
|
|
NGUITools.SetDirty(mSprite);
|
|
return;
|
|
}
|
|
mNormalSprite = value;
|
|
if (mState == State.Normal)
|
|
{
|
|
SetSprite(value);
|
|
}
|
|
}
|
|
}
|
|
|
|
public Sprite normalSprite2D
|
|
{
|
|
get
|
|
{
|
|
if (!mInitDone)
|
|
{
|
|
OnInit();
|
|
}
|
|
return mNormalSprite2D;
|
|
}
|
|
set
|
|
{
|
|
if (!mInitDone)
|
|
{
|
|
OnInit();
|
|
}
|
|
if (mSprite2D != null && mNormalSprite2D == mSprite2D.sprite2D)
|
|
{
|
|
mNormalSprite2D = value;
|
|
SetSprite(value);
|
|
NGUITools.SetDirty(mSprite);
|
|
return;
|
|
}
|
|
mNormalSprite2D = value;
|
|
if (mState == State.Normal)
|
|
{
|
|
SetSprite(value);
|
|
}
|
|
}
|
|
}
|
|
|
|
protected override void OnInit()
|
|
{
|
|
base.OnInit();
|
|
mSprite = mWidget as UISprite;
|
|
mSprite2D = mWidget as UI2DSprite;
|
|
if (mSprite != null)
|
|
{
|
|
mNormalSprite = mSprite.spriteName;
|
|
}
|
|
if (mSprite2D != null)
|
|
{
|
|
mNormalSprite2D = mSprite2D.sprite2D;
|
|
}
|
|
}
|
|
|
|
protected override void OnEnable()
|
|
{
|
|
if (isEnabled)
|
|
{
|
|
if (mInitDone)
|
|
{
|
|
OnHover(UICamera.hoveredObject == base.gameObject);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SetState(State.Disabled, immediate: true);
|
|
}
|
|
}
|
|
|
|
protected override void OnDragOver()
|
|
{
|
|
if (isEnabled && (dragHighlight || UICamera.currentTouch.pressed == base.gameObject))
|
|
{
|
|
base.OnDragOver();
|
|
}
|
|
}
|
|
|
|
protected override void OnDragOut()
|
|
{
|
|
if (isEnabled && (dragHighlight || UICamera.currentTouch.pressed == base.gameObject))
|
|
{
|
|
base.OnDragOut();
|
|
}
|
|
}
|
|
|
|
protected virtual void OnClick()
|
|
{
|
|
if (current == null && isEnabled)
|
|
{
|
|
current = this;
|
|
EventDelegate.Execute(onClick);
|
|
current = null;
|
|
}
|
|
}
|
|
|
|
public override void SetState(State state, bool immediate)
|
|
{
|
|
base.SetState(state, immediate);
|
|
if (mSprite != null)
|
|
{
|
|
switch (state)
|
|
{
|
|
case State.Normal:
|
|
SetSprite(mNormalSprite);
|
|
break;
|
|
case State.Hover:
|
|
SetSprite(string.IsNullOrEmpty(hoverSprite) ? mNormalSprite : hoverSprite);
|
|
break;
|
|
case State.Pressed:
|
|
SetSprite(pressedSprite);
|
|
break;
|
|
case State.Disabled:
|
|
SetSprite(disabledSprite);
|
|
break;
|
|
}
|
|
}
|
|
else if (mSprite2D != null)
|
|
{
|
|
switch (state)
|
|
{
|
|
case State.Normal:
|
|
SetSprite(mNormalSprite2D);
|
|
break;
|
|
case State.Hover:
|
|
SetSprite((hoverSprite2D == null) ? mNormalSprite2D : hoverSprite2D);
|
|
break;
|
|
case State.Pressed:
|
|
SetSprite(pressedSprite2D);
|
|
break;
|
|
case State.Disabled:
|
|
SetSprite(disabledSprite2D);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void SetSprite(string sp)
|
|
{
|
|
if (mSprite != null && !string.IsNullOrEmpty(sp) && mSprite.spriteName != sp)
|
|
{
|
|
mSprite.spriteName = sp;
|
|
if (pixelSnap)
|
|
{
|
|
mSprite.MakePixelPerfect();
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void SetSprite(Sprite sp)
|
|
{
|
|
if (sp != null && mSprite2D != null && mSprite2D.sprite2D != sp)
|
|
{
|
|
mSprite2D.sprite2D = sp;
|
|
if (pixelSnap)
|
|
{
|
|
mSprite2D.MakePixelPerfect();
|
|
}
|
|
}
|
|
}
|
|
}
|