74 lines
2.1 KiB
C#
74 lines
2.1 KiB
C#
|
|
/*
|
|||
|
|
********************************************************************************
|
|||
|
|
*Copyright(C),coolae.net
|
|||
|
|
*Author: chenbin
|
|||
|
|
*Version: 2.0
|
|||
|
|
*Date: 2017-01-09
|
|||
|
|
*Description: 管理代理回调,目的是为了先把回调根据某个k管理起来,然后调用时方便取得
|
|||
|
|
*Others:
|
|||
|
|
*History:
|
|||
|
|
*********************************************************************************
|
|||
|
|
*/
|
|||
|
|
using UnityEngine;
|
|||
|
|
using System.Collections;
|
|||
|
|
|
|||
|
|
namespace Coolape
|
|||
|
|
{
|
|||
|
|
public class CLDelegate
|
|||
|
|
{
|
|||
|
|
public Hashtable delegateInfro = new Hashtable ();
|
|||
|
|
|
|||
|
|
public void add (string key, object callback, object orgs)
|
|||
|
|
{
|
|||
|
|
ArrayList list = MapEx.getList (delegateInfro, key);
|
|||
|
|
if (list == null) {
|
|||
|
|
list = ObjPool.listPool.borrowObject();
|
|||
|
|
}
|
|||
|
|
NewList infor = ObjPool.listPool.borrowObject();
|
|||
|
|
infor.Add (callback);
|
|||
|
|
infor.Add (orgs);
|
|||
|
|
list.Add (infor);
|
|||
|
|
delegateInfro [key] = list;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void remove(string key, object callback) {
|
|||
|
|
ArrayList list = MapEx.getList(delegateInfro, key);
|
|||
|
|
if (list == null)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
NewList cell = null;
|
|||
|
|
while(list.Count > 0) {
|
|||
|
|
cell = (list[list.Count - 1]) as NewList;
|
|||
|
|
if(cell[0] == null || cell[0].Equals(callback)) {
|
|||
|
|
ObjPool.listPool.returnObject(cell);
|
|||
|
|
list.RemoveAt(list.Count - 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void removeDelegates (string key)
|
|||
|
|
{
|
|||
|
|
if (delegateInfro [key] != null) {
|
|||
|
|
NewList list = (delegateInfro[key]) as NewList;
|
|||
|
|
if (list != null)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < list.Count; i++)
|
|||
|
|
{
|
|||
|
|
ObjPool.listPool.returnObject(list[i] as NewList);
|
|||
|
|
}
|
|||
|
|
list.Clear();
|
|||
|
|
ObjPool.listPool.returnObject(list);
|
|||
|
|
list = null;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
delegateInfro.Remove (key);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ArrayList getDelegates (string key)
|
|||
|
|
{
|
|||
|
|
return MapEx.getList (delegateInfro, key);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|