rimworld-animation-studio/Assets/Scripts/GUI/Cards/StageCard.cs

67 lines
1.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
namespace RimWorldAnimationStudio
{
public class StageCard : MonoBehaviour, IPointerClickHandler
{
public Text stageName;
public InputField stageNameField;
public Image banner;
private int stageID { get { return transform.GetSiblingIndex(); } }
public void Start()
{
EventsManager.onStageIDChanged.AddListener(delegate { Initialize(stageName.text); });
stageNameField.onEndEdit.AddListener(delegate { OnNameChange(); });
}
public void Initialize(string stageName)
{
this.stageName.text = stageName;
if (Workspace.StageID == transform.GetSiblingIndex())
{
banner.gameObject.SetActive(true);
}
else
{
banner.gameObject.SetActive(false);
stageNameField.gameObject.SetActive(false);
}
}
public void OnNameChange()
{
stageName.text = stageNameField.text;
stageNameField.gameObject.SetActive(false);
Workspace.GetCurrentAnimationStage().StageName = stageName.text;
Workspace.RecordEvent("Stage renamed");
}
public void OnMoveStage(int delta)
{
Workspace.animationDef.MoveAnimationStage(stageID, delta);
}
public void OnPointerClick(PointerEventData eventData)
{
if (eventData.clickCount >= 2)
{
stageNameField.text = stageName.text;
stageNameField.gameObject.SetActive(true);
}
if (Workspace.StageID != transform.GetSiblingIndex())
{ Workspace.RecordEvent("Stage selected"); }
Workspace.StageID = transform.GetSiblingIndex();
}
}
}