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

151 lines
4.5 KiB

using AX.MessageSystem;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
//Author:ZCG
//CreatTime:12/15/2017
/// <summary>
/// ÉèÖÃÇøÓò
/// </summary>
public class SetArea : MonoBehaviour
{
public float High { get; private set; }
public string Name { get; private set; }
public Color Color { get; private set; }
private float initHigh;
private string initName;
private Color initColor;
private Vector3 pos;
private MeshRenderer render;
private TextMesh text;
private DateTime t1;
private DateTime t2;
private void Awake()
{
text = transform.Find("info").Find("Name").GetComponent<TextMesh>();
render = GetComponent<MeshRenderer>();
High = 0;
Name = text.text;
Color = render.material.color;
}
private void Start()
{
MessageDispatcher.AddListener("ReplayEvent", ReplayAreaChange);
}
private void OnDestroy()
{
MessageDispatcher.RemoveListener("ReplayEvent", ReplayAreaChange);
}
private void AddRecordArea()
{
if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal)
{
var eventData = new EventData();
eventData.time = RecordManager.Instance.RecordTimer;
eventData.cloneObjType = CloneObjType.SetArea;
eventData.eventType = RecordEventType.SetAreaAttribute;
var data = new RecordSetArea();
SetBaseData(data);
SetSetAreaData(data);
string json = JsonUtility.ToJson(data);
eventData.json = json;
RecordManager.Instance.jsonData.eventDataList.Add(eventData);
}
}
private void ReplayAreaChange(IMessage obj)
{
var eventData = (EventData)obj.Data;
if (eventData.cloneObjType == CloneObjType.SetArea && eventData.eventType == RecordEventType.SetAreaAttribute)
{
var jsonData = JsonUtility.FromJson<RecordSetArea>(eventData.json);
if (jsonData.objectName == gameObject.name)
{
SetColor(jsonData.color);
SetHigh(jsonData.height);
SetName(jsonData.areName);
}
}
}
private void SetBaseData(RecordSetArea data)
{
var msg = gameObject.GetComponent<CloneGameObjInfo>();
data.gameObjType = msg.gameObjType;
data.objectName = gameObject.gameObject.name;
data.buildNum = msg.buildNum;
data.floorNum = msg.floorNum;
data.interlayerNum = msg.interlayerNum;
data.myTransform.setMyPosition(transform.localPosition);
data.myTransform.setMyRotation(transform.localRotation);
data.myTransform.setMyScale(transform.localScale);
data.isActive = gameObject.activeSelf;
if (gameObject.GetComponent<ObjSelectCtrl>())
{
data.IsSelect = gameObject.GetComponent<ObjSelectCtrl>().selected;
}
}
private void SetSetAreaData(RecordSetArea data)
{
data.areName = Name;
data.color = Color;
data.height = High;
}
public void SetHigh(float value)
{
pos = Vector3.zero;
transform.localPosition = new Vector3(pos.x, pos.y + value, pos.z);
High = value;
//AddRecordArea();
}
public void ReplayFrameData(RecordSetArea data)
{
SetName(data.areName);
SetColor(data.color);
SetHigh(data.height);
}
public void SetName(string value)
{
text.text = value;
Name = value;
//AddRecordArea();
}
public void SetColor(Color value)
{
render.material.color = value;
Color = value;
//AddRecordArea();
}
public void Confirm()
{
AddRecordArea();
}
public void Revocation()
{
SetHigh(initHigh);
SetName(initName);
SetColor(initColor);
}
private void OnMouseDown()
{
//Ë«»÷
if (!EventSystem.current.IsPointerOverGameObject())
{
t2 = DateTime.Now;
if (t2 - t1 < new TimeSpan(0, 0, 0, 0, 500))
{
if(SelectedObjs.selectedObj == gameObject)
{
initHigh = High;
initName = Name;
initColor = Color;
UIPlanSetArea.Instance.LoadObjData(gameObject);
}
}
t1 = t2;
}
}
}