mergemilitary/Assets/MMOModule/Scripts/MMOCore/MMOAPIRequestManager/MMOAPIRequestManager.cs

46 lines
1.4 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace MMO
{
public class MMOAPIRequestManager : MMOSingleton<MMOAPIRequestManager>
{
private List<MMOAPIRequestUnit> mRequestList = new List<MMOAPIRequestUnit>();
private Dictionary<Type, object> mRespondDataDic = new Dictionary<Type, object>();
public T GetData<T>() where T : MMORespondBase
{
Type tTypeKey = typeof(T);
if (mRespondDataDic.ContainsKey(tTypeKey))
{
return mRespondDataDic[tTypeKey] as T;
}
return null;
}
public void SetData<T>(T pData) where T : MMORespondBase
{
mRespondDataDic[typeof(T)] = pData;
}
public void SendRequest<T, U>(T pRequestData, Action<U> pRespondCallback = null, Action<int> pErrorCallback = null) where T : MMORequestBase
{
MMOAPIRequestUnit tUnit = gameObject.AddComponent<MMOAPIRequestUnit>();
mRequestList.Add(tUnit);
tUnit.DelOver = OnRequestOver;
tUnit.SendRequest(pRequestData, pRespondCallback, pErrorCallback);
}
private void OnRequestOver(MMOAPIRequestUnit pUnit)
{
if (mRequestList.Contains(pUnit))
{
mRequestList.Remove(pUnit);
Destroy(pUnit);
}
}
}
}