public override bool Init(ObjectInitParam param) { if (!base.Init(param)) { return(false); } TrapInitParam trapInit = (TrapInitParam)param; if (!DataManager.TrapTable.ContainsKey(trapInit.trapResID)) { return(false); } mTrapResource = DataManager.TrapTable[trapInit.trapResID] as TrapTableItem; mModelResID = (int)mTrapResource.modelID; mSummonerAttr = trapInit.summonerAttr; // 没有召唤者. if (mSummonerAttr.AttackerID == uint.MaxValue) { mSummonerAttr = new AttackerAttr(this, mSummonerAttr.SkillCommonID, mSummonerAttr.StructMadeByRandEvent); } mTaskManager = new SkillUtilities.TaskManager(null); // 生命时间结束后, 进入倒计时死亡. mTaskManager.AddTask(new SkillUtilities.Task(trapInit.lifeTime, explodeCountBackwards, null)); // 倒计时死亡之后, 再经过爆炸延迟, 开始爆炸. uint explodeTime = uint.MaxValue; // 避免累加时溢出. if (trapInit.lifeTime != uint.MaxValue && mTrapResource.explodeDelay != uint.MaxValue) { explodeTime = trapInit.lifeTime + mTrapResource.explodeDelay; } mTaskManager.AddTask(new SkillUtilities.Task(explodeTime, explode, null)); mTaskManager.Start(); return(true); }
private bool checkTrap() { DataType myName = DataType.DATA_TRAP; IDictionaryEnumerator itr = DataManager.TrapTable.GetEnumerator(); while (itr.MoveNext()) { TrapTableItem item = itr.Value as TrapTableItem; if (!checkParam(item.modelID != uint.MaxValue, myName, item.resID, "模型ID")) { return(false); } if (!checkLink(myName, item.resID, DataType.DATA_MODEL, item.modelID)) { return(false); } if (item.buffID != uint.MaxValue && !checkLink(myName, item.resID, DataType.DATA_SKILL_BUFF, item.buffID)) { return(false); } if (!checkParam(item.explodeDelay != uint.MaxValue, myName, item.resID, "爆炸延迟")) { return(false); } if (item.buffID != uint.MaxValue && !checkParam( !SkillUtilities.IsHarmfulEffect(SkillEffectType.Buff, item.buffID), DataType.DATA_TRAP, item.resID, "出生buff", "不能为trap添加有害的出生buff.")) { return(false); } if (item.delayEffect != uint.MaxValue && !checkLink(myName, item.resID, DataType.DATA_EFFECT, item.delayEffect)) { return(false); } if (!checkParam(item.collideRadius != uint.MaxValue, myName, item.resID, "碰撞检测半径", "无效的碰撞检测半径需要填入0")) { return(false); } if (item.targetSelectionOnExplode != uint.MaxValue && !checkLink(myName, item.resID, DataType.DATA_SKILL_TARGET_SELECTION, item.targetSelectionOnExplode)) { return(false); } if (item.skillEffectOnExplode != uint.MaxValue && !checkLink(myName, item.resID, DataType.DATA_SKILL_EFFECT, item.skillEffectOnExplode)) { return(false); } if (item._3DEffectOnExplode != uint.MaxValue && !checkLink(myName, item.resID, DataType.DATA_EFFECT, item._3DEffectOnExplode)) { return(false); } } // foreach (int key in DataManager.TrapTable.Keys) // { // TrapTableItem item = DataManager.TrapTable[key] as TrapTableItem; // if(!checkParam(item.modelID != uint.MaxValue, myName, key, "模型ID")) // return false; // // if (!checkLink(myName, key, DataType.DATA_MODEL, item.modelID)) // return false; // // if (item.buffID != uint.MaxValue // && !checkLink(myName, key, DataType.DATA_SKILL_BUFF, item.buffID)) // return false; // // if (!checkParam(item.explodeDelay != uint.MaxValue, myName, key, "爆炸延迟")) // return false; // // if (item.buffID != uint.MaxValue // && !checkParam( // !SkillUtilities.IsHarmfulEffect(SkillEffectType.Buff, item.buffID), // DataType.DATA_TRAP, key, "出生buff", "不能为trap添加有害的出生buff.")) // return false; // // if (item.delayEffect != uint.MaxValue && !checkLink(myName, key, DataType.DATA_EFFECT, item.delayEffect)) // return false; // // if (!checkParam(item.collideRadius != uint.MaxValue, myName, key, "碰撞检测半径", "无效的碰撞检测半径需要填入0")) // return false; // // if (item.targetSelectionOnExplode != uint.MaxValue // && !checkLink(myName, key, DataType.DATA_SKILL_TARGET_SELECTION, item.targetSelectionOnExplode)) // return false; // // if (item.skillEffectOnExplode != uint.MaxValue // && !checkLink(myName, key, DataType.DATA_SKILL_EFFECT, item.skillEffectOnExplode)) // return false; // // if (item._3DEffectOnExplode != uint.MaxValue // && !checkLink(myName, key, DataType.DATA_EFFECT, item._3DEffectOnExplode)) // return false; // } return(true); }