164 lines
5.9 KiB
C#
164 lines
5.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.UI;
|
|
using DG.Tweening;
|
|
namespace Assets.Scripts.UI.Control
|
|
{
|
|
public class PFUIInputField: PFUIComponentBase
|
|
{
|
|
[SerializeField]
|
|
private InputField mInnerInputField;
|
|
private Outline outline;
|
|
private bool isSelected = false;
|
|
|
|
public string Text
|
|
{
|
|
get
|
|
{
|
|
return this.mInnerInputField.text;
|
|
}
|
|
set
|
|
{
|
|
this.mInnerInputField.text = value;
|
|
}
|
|
}
|
|
|
|
string placeHolderText;
|
|
public Action CustomSelect = null, CustomDeSelect = null,CustomEnter = null;
|
|
public void OnSelect(BaseEventData eventData)
|
|
{
|
|
if (this.gameObject.activeInHierarchy == false)
|
|
{
|
|
return;
|
|
}
|
|
if (CustomSelect != null)
|
|
{
|
|
CustomSelect.Invoke();
|
|
}
|
|
isSelected = true;
|
|
//throw new NotImplementedException();
|
|
this.mInnerInputField.OnSelect(eventData);
|
|
//var image = this.transform.GetComponent<Image>();
|
|
// var png = Resources.Load<Sprite>("Images/ipt-1");
|
|
//image.sprite = png;
|
|
var _text = mInnerInputField.transform.Find("Text").GetComponent<Text>();
|
|
if (_text.color!=Color.white)
|
|
{
|
|
Text = "";
|
|
}
|
|
_text.color = Color.white;
|
|
transform.Find("Placeholder").GetComponent<Text>().text = "";
|
|
outline.enabled = true;
|
|
ColorUtility.TryParseHtmlString("#F93086", out Color color);
|
|
|
|
outline.effectColor = color;
|
|
App.isChanged = true;
|
|
}
|
|
|
|
public void OnDeselect(BaseEventData eventData)
|
|
{
|
|
if(this.gameObject.activeInHierarchy == false)
|
|
{
|
|
return;
|
|
}
|
|
if (CustomDeSelect != null)
|
|
{
|
|
CustomDeSelect.Invoke();
|
|
}
|
|
isSelected = false;
|
|
this.mInnerInputField.OnDeselect(eventData);
|
|
transform.Find("Placeholder").GetComponent<Text>().text = App.GetLocalString(placeHolderText);
|
|
//var image = this.transform.GetComponent<Image>();
|
|
//var png1 = Resources.Load<Sprite>("Images/ipt-0");
|
|
//image.sprite = png1;
|
|
outline.enabled = false;
|
|
}
|
|
void OnEnter(BaseEventData eventData)
|
|
{
|
|
if (isSelected)
|
|
{
|
|
return;
|
|
}
|
|
if (CustomEnter != null)
|
|
{
|
|
CustomEnter.Invoke();
|
|
}
|
|
outline.enabled = true;
|
|
ColorUtility.TryParseHtmlString("#6E6E7D", out Color color);
|
|
outline.effectColor = color;
|
|
}
|
|
private void OnExit(BaseEventData eventData)
|
|
{
|
|
if (isSelected)
|
|
{
|
|
return;
|
|
}
|
|
if (CustomDeSelect != null)
|
|
{
|
|
CustomDeSelect.Invoke();
|
|
}
|
|
//outline = this.gameObject.AddComponent<Outline>();
|
|
outline.enabled = false;
|
|
}
|
|
void Awake()
|
|
{
|
|
Material material = null;
|
|
if (material == null)
|
|
{
|
|
material = Instantiate(Resources.Load<Material>("UI/Material/RoundedCornersTextureMaterial"));
|
|
}
|
|
var rect = ((RectTransform)transform).rect;
|
|
material.SetVector(Shader.PropertyToID("_WidthHeightRadius"), new Vector4(rect.width, rect.height, Math.Min(rect.height*0.35f, 50f), 0));
|
|
gameObject.GetComponent<Image>().material = material;
|
|
|
|
outline = this.GetComponent<Outline>();
|
|
if (outline == null)
|
|
{
|
|
outline = this.gameObject.AddComponent<Outline>();
|
|
outline.effectDistance = new Vector2(2, 2);
|
|
outline.enabled = false;
|
|
}
|
|
|
|
//UIManager.AddEvent(this.mInnerInputField.gameObject, EventTriggerType.PointerClick, new UnityAction<BaseEventData>(this.OnSelect));
|
|
UIManager.AddEvent(this.mInnerInputField.gameObject, EventTriggerType.Select, new UnityAction<BaseEventData>(this.OnSelect));
|
|
UIManager.AddEvent(this.mInnerInputField.gameObject, EventTriggerType.Deselect, new UnityAction<BaseEventData>(this.OnDeselect));
|
|
UIManager.AddEvent(this.mInnerInputField.gameObject, EventTriggerType.PointerEnter, new UnityAction<BaseEventData>(this.OnEnter));
|
|
UIManager.AddEvent(this.mInnerInputField.gameObject, EventTriggerType.PointerExit, new UnityAction<BaseEventData>(OnExit));
|
|
placeHolderText = transform.Find("Placeholder").GetComponent<Text>().text;
|
|
}
|
|
|
|
public void SetValidate(bool value)
|
|
{
|
|
if (value)
|
|
{
|
|
outline.enabled = true;
|
|
outline.DOFade(1, 1f).onComplete = () =>
|
|
{
|
|
outline.DOFade(0, 1f);
|
|
};
|
|
outline.effectColor = Utils.HexToColorHtml("#F93086");
|
|
ColorUtility.TryParseHtmlString("#F93086", out Color color);
|
|
//this.mInnerInputField.transform.Find("Text").GetComponent<Text>().color = color;
|
|
}
|
|
else
|
|
{
|
|
this.mInnerInputField.transform.Find("Text").GetComponent<Text>().color = Color.white;
|
|
outline.enabled = false;
|
|
}
|
|
}
|
|
public void SetValidate(string msg)
|
|
{
|
|
this.mInnerInputField.transform.Find("Text").GetComponent<Text>().color = Utils.HexToColorHtml("#F93086");
|
|
Text = msg;
|
|
outline.enabled = true;
|
|
outline.effectColor = Utils.HexToColorHtml("#F93086");
|
|
}
|
|
}
|
|
}
|