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.
110 lines
3.0 KiB
110 lines
3.0 KiB
4 years ago
|
using System;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.UI;
|
||
|
|
||
|
public enum MovingDefenseMode { none, hide, CannotClick }
|
||
|
public class UIMoveManager : MonoBehaviour
|
||
|
{
|
||
|
public RectTransform MovePanel;
|
||
|
public Button MoveOut;
|
||
|
public Button MoveIn;
|
||
|
public MoveDir MoveOutDirction;
|
||
|
public MoveDir MoveInDirction;
|
||
|
public float MoveTime;
|
||
|
public float Offset;
|
||
|
public MovingDefenseMode DefenseMode;
|
||
|
private UIMove UIMoving;
|
||
|
private float timmer;
|
||
|
bool click = false;
|
||
|
bool MoveOver;
|
||
|
void Start()
|
||
|
{
|
||
|
MoveOut.onClick.AddListener(MoveOut_Click);
|
||
|
MoveIn.onClick.AddListener(MoveIn_Click);
|
||
|
SetMoving();
|
||
|
}
|
||
|
public void SetMoving()
|
||
|
{
|
||
|
if (!MovePanel.GetComponent<UIMove>())
|
||
|
{
|
||
|
UIMoving = MovePanel.gameObject.AddComponent<UIMove>();
|
||
|
UIMoving.SetPos();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
UIMoving = MovePanel.gameObject.GetComponent<UIMove>();
|
||
|
}
|
||
|
}
|
||
|
public void MoveIn_Click()
|
||
|
{
|
||
|
UIMoving.AnchorMove(MovePanel, MoveTime, MoveInDirction, Offset);
|
||
|
switch (DefenseMode)
|
||
|
{
|
||
|
case MovingDefenseMode.hide:
|
||
|
MoveIn.gameObject.SetActive(false);
|
||
|
MoveOut.gameObject.SetActive(true);
|
||
|
break;
|
||
|
case MovingDefenseMode.CannotClick:
|
||
|
click = true;
|
||
|
MoveIn.GetComponent<Button>().interactable = false;
|
||
|
StartCoroutine(WaitForMoveIn(MoveTime));
|
||
|
break;
|
||
|
default: break;
|
||
|
}
|
||
|
}
|
||
|
IEnumerator WaitForMoveIn(float time)
|
||
|
{
|
||
|
yield return new WaitForSeconds(time);
|
||
|
if (MoveOver)
|
||
|
{
|
||
|
MoveIn.GetComponent<Button>().interactable = true;
|
||
|
MoveIn.gameObject.SetActive(false);
|
||
|
MoveOut.gameObject.SetActive(true);
|
||
|
}
|
||
|
}
|
||
|
public void MoveOut_Click()
|
||
|
{
|
||
|
UIMoving.AnchorMove(MovePanel, MoveTime, MoveOutDirction, Offset);
|
||
|
switch (DefenseMode)
|
||
|
{
|
||
|
case MovingDefenseMode.hide:
|
||
|
MoveIn.gameObject.SetActive(true);
|
||
|
MoveOut.gameObject.SetActive(false);
|
||
|
break;
|
||
|
case MovingDefenseMode.CannotClick:
|
||
|
click = true;
|
||
|
MoveOut.GetComponent<Button>().interactable = false;
|
||
|
StartCoroutine(WaitForMoveOut(MoveTime));
|
||
|
break;
|
||
|
default: break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
IEnumerator WaitForMoveOut(float time)
|
||
|
{
|
||
|
yield return new WaitForSeconds(time);
|
||
|
if (MoveOver)
|
||
|
{
|
||
|
MoveOut.GetComponent<Button>().interactable = true;
|
||
|
MoveIn.gameObject.SetActive(true);
|
||
|
MoveOut.gameObject.SetActive(false);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Update()
|
||
|
{
|
||
|
if (click)
|
||
|
{
|
||
|
timmer += Time.deltaTime;
|
||
|
if (timmer >= MoveTime)
|
||
|
{
|
||
|
MoveOver = true;
|
||
|
timmer = 0;
|
||
|
click = false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|