using AX.MessageSystem;
using AX.NetworkSystem;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObjDelete : MonoBehaviour
{

    // Use this for initialization
    void Start()
    {
        MessageDispatcher.AddListener("ReplayEvent", ReplayEventDelete);
    }



    // Update is called once per frame
    void Update()
    {

    }

    void OnEnable()
    {
        MessageDispatcher.AddListener("DELETE_COMMAND", ObjDeleted);
    }

    void OnDisable()
    {
        MessageDispatcher.RemoveListener("DELETE_COMMAND", ObjDeleted);
    }

    void OnDestroy()
    {
        MessageDispatcher.RemoveListener("DELETE_COMMAND", ObjDeleted);
        MessageDispatcher.RemoveListener("ReplayEvent", ReplayEventDelete);
    }

    protected virtual void ObjDeleted(IMessage obj)
    {
        if (SelectedObjs.selectedObj == gameObject)
        {
            ResourceLoadWindow.Instance.LoadTipWindow("确定删除物体?", () =>
            {
                MessageDispatcher.SendMessage("DeleteObj", gameObject);
                EntitiesManager.Instance.DeleteObj(gameObject);
                AddRecordEventDelete();
            }, null);
        }
    }
    public void AddRecordEventDelete()
    {
        if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal)
        {
            var eventData = new EventData();
            eventData.time = RecordManager.Instance.RecordTimer;
            eventData.cloneObjType = GetComponent<BaseGameObjInfo>().gameObjType;
            eventData.eventType = RecordEventType.Delete;
            string json = gameObject.name;
            eventData.json = json;
            RecordManager.Instance.jsonData.eventDataList.Add(eventData);
        }
    }
    private void ReplayEventDelete(IMessage data)
    {
        var eventData = (EventData)data.Data;
        if (eventData.json == gameObject.name && eventData.eventType == RecordEventType.Delete)
        {
            EntitiesManager.Instance.DeleteObj(gameObject);
        }
    }
}