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

74 lines
2.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
namespace RimWorldAnimationStudio
{
public class StageCard : MonoBehaviour, IPointerClickHandler
{
private Text stageName;
private InputField stageNameField;
private Image banner;
public void OnNameChange()
{
stageName.text = stageNameField.text;
stageNameField.gameObject.SetActive(false);
Workspace.animationDef.animationStages[Workspace.stageID].stageName = stageName.text;
Workspace.Instance.RecordEvent("Stage renamed");
}
public void OnMoveStage(int delta)
{
if (StageCardManager.Instance.MoveAnimationStage(transform.GetSiblingIndex(), delta))
{
int siblingCount = transform.parent.childCount;
int index = Mathf.Clamp(transform.GetSiblingIndex() + delta, 0, siblingCount - 1);
transform.SetSiblingIndex(index);
}
}
public void Initialize(string stageName)
{
this.stageName = transform.Find("StageName").GetComponent<Text>();
this.stageNameField = transform.Find("StageNameField").GetComponent<InputField>();
this.banner = transform.Find("Banner").GetComponent<Image>();
this.stageName.text = stageName;
}
public void Update()
{
if (Workspace.stageID == transform.GetSiblingIndex())
{ banner.gameObject.SetActive(true); }
else
{
banner.gameObject.SetActive(false);
stageNameField.gameObject.SetActive(false);
}
}
public void OnPointerClick(PointerEventData eventData)
{
if (eventData.clickCount >= 2)
{
stageNameField.text = stageName.text;
stageNameField.gameObject.SetActive(true);
}
if (Workspace.stageID != transform.GetSiblingIndex())
{
AnimationController.Instance.stageTick = 1;
Workspace.Instance.RecordEvent("Stage selected");
}
Workspace.stageID = transform.GetSiblingIndex();
}
}
}