海淀天下城电子沙盘单机版
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.

104 lines
3.0 KiB

4 years ago
using AX.MessageSystem;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
[RequireComponent(typeof(CloneGameObjInfo))]
public class ArrowScaleControl : MonoBehaviour {
private DateTime t1;
private DateTime t2;
public long gameObjID;
public CloneObjType gameObjType;
private void Awake()
{
gameObjID = GetComponent<CloneGameObjInfo>().gameObjID;
gameObjType = GetComponent<CloneGameObjInfo>().gameObjType;
MessageDispatcher.AddListener("ArrowSizeChange", ChangeSize);
//MessageDispatcher.AddListener("ReplayEvent", ExecuteEvent);
}
private void OnDestroy()
{
MessageDispatcher.RemoveListener("ArrowSizeChange", ChangeSize);
//MessageDispatcher.RemoveListener("ReplayEvent", ExecuteEvent);
}
protected virtual void OnMouseDown()
{
if (!EventSystem.current.IsPointerOverGameObject())
{
t2 = DateTime.Now;
if (t2 - t1 < new TimeSpan(0, 0, 0, 0, 500))
{
StartCoroutine(OpenAttributePanel());
}
t1 = t2;
}
}
IEnumerator OpenAttributePanel()
{
yield return new WaitForSeconds(0.1f);
ArrowScalePanel.Instance.OpenPanel(this.gameObjID, getCurrentSacle());
}
private float getCurrentSacle()
{
float value = 0;
float ori = 0;
var cloneType = GetComponent<CloneGameObjInfo>().gameObjType;
switch (cloneType)
{
case CloneObjType.AttackLine:
ori = 35;
break;
case CloneObjType.EvacuateLine:
ori = 35;
break;
case CloneObjType.BrokenLine:
ori = 1;
break;
case CloneObjType.BlockLine:
ori = 1;
break;
default:
break;
}
float c = transform.localScale.x;
value = c / ori - 1;
return value;
}
void ChangeSize(IMessage obj)
{
var data = (ArrowSizeData)obj.Data;
if (data.id == this.gameObjID)
{
var cloneType = GetComponent<CloneGameObjInfo>().gameObjType;
float ori = 0;
switch (cloneType)
{
case CloneObjType.AttackLine:
ori = 35;
break;
case CloneObjType.EvacuateLine:
ori = 35;
break;
case CloneObjType.BrokenLine:
ori = 1;
break;
case CloneObjType.BlockLine:
ori = 1;
break;
default:
break;
}
transform.localScale = Vector3.one * ori * (1 + data.value);
}
}
}
[Serializable]
public class RecordArrowSize
{
public long gameObjID;
public float sizeValue;
}