using System.IO; namespace H2Engine { [System.Serializable] public class Evt_RefreshMonster : Evt { public enum E_OverCondition { None, DeadCount, Time, } public enum E_RefreshType { All, OneByOneTime,// 根据时间刷新 OneByOnePrevDie,// 前一只刷出已死亡 } public MonsterData[] monsters; public E_OverCondition overCondition = E_OverCondition.None; public E_RefreshType refreshType = E_RefreshType.All; /// /// 参数 /// 当使用OverCondition类型为DeadCount的时候为个数 /// 当使用OverCondition类型为Time的时候为时间(毫秒) /// public int conditionParam; /// /// 刷新参数 /// 刷新类型: OneByOneTime, 作为时间(毫秒) /// public int refreshParam; public override void Load(BinaryReader br) { base.Load(br); overCondition = (Evt_RefreshMonster.E_OverCondition)br.ReadByte(); refreshType = (Evt_RefreshMonster.E_RefreshType)br.ReadByte(); refreshParam = br.ReadInt32(); conditionParam = br.ReadInt32(); int _count = br.ReadInt32(); monsters = new MonsterData[_count]; for (int i = 0; i < _count; ++i) { monsters[i] = new MonsterData(); monsters[i].Load(br); } } /* float delay = Time.now float interval int index update if refreshType == all for index = 0; index < monsters.Length; ++index doRefresh(monsters[index]); else if refreshType == onebyoneTime if Time.now - delay > interval doRefresh(monster[index]); index++; delay = Time.now; else if refreshType == onebyoneDie if prevNpc.isDie prevNpc = doRefresh(monster[index]); index++; int deadCount float overTime = conditionParam * 0.001f; float timePast = Time.now over if condition == None return true; else if condition == DeadCount return deadCount > monsters.Length || deadCount > conditionParam; else if condition == Time return Time.now - timePast >= overTime; */ } }