public void SendButtonState(ulong actorid, int skilltype, int skillcontrol) { //TODO 技能控制 0 按下 1抬起 if (skillcontrol == 0) { switch (skilltype) { //发射型武器 case ActorTypeBaseDefine.AntiAircraftGunActor: case ActorTypeBaseDefine.MachineGunActor: case ActorTypeBaseDefine.TorpedoActor: case ActorTypeBaseDefine.TrackingMissileActor: //持续激光 case ActorTypeBaseDefine.ContinuousLaserActor: //炸弹 case ActorTypeBaseDefine.TimeBombActor: Fire(skilltype); break; case ActorTypeBaseDefine.PowerLaserActor: firetime = DateTime.Now.Ticks; //Log.Trace("SendButtonState 按钮按下" + firetime); break; case ActorTypeBaseDefine.TriggerBombActor: //var bomblist = skillInitList.Where(o => o.ActorType == ActorTypeBaseDefine.TriggerBombActor); List <UserData> bomblist = new List <UserData>(); //找到已生成集合中所有触发炸弹的User信息 for (var j = 0; j < skillInitList.Count; j++) { if (skillInitList[j].ActorType == ActorTypeBaseDefine.TriggerBombActor) { //Log.Trace("SendButtonState: 已找到触发炸弹" + skillInitList[j].ActorID + " 类型" + skillInitList[j].ActorType); //判断该已生成列表中的对象是否已经在世界中了 if (level.ContainsID(skillInitList[j].ActorID)) { bomblist.Add(skillInitList[j]); } } } //如果有触发炸弹则销毁 if (bomblist.Count() > 0) { Destroy(bomblist); } else { Fire(skilltype); } break; } } else if (skillcontrol == 1) { switch (skilltype) { //发射型武器 case ActorTypeBaseDefine.AntiAircraftGunActor: case ActorTypeBaseDefine.MachineGunActor: case ActorTypeBaseDefine.TorpedoActor: case ActorTypeBaseDefine.TrackingMissileActor: //炸弹 case ActorTypeBaseDefine.TimeBombActor: //TODO 触发式炸弹单独完成一个状态 case ActorTypeBaseDefine.TriggerBombActor: break; //持续激光 case ActorTypeBaseDefine.ContinuousLaserActor: Destroy(skilltype); break; case ActorTypeBaseDefine.PowerLaserActor: var now = DateTime.Now.Ticks; Log.Trace("SendButtonState: 按钮抬起" + now); firetime = now - firetime; Log.Trace("SendButtonState: ticks delay" + firetime); firetime = firetime > 1.5 * 1e7 ? (long)(1.5 * 1e7) : firetime; Log.Trace("SendButtonState: ticks delay 矫正" + firetime); firepro = (float)(firetime / (1.5 * 1e7)); Log.Trace("SendButtonState: fire pro" + firepro); Fire(skilltype); firetime = 0; break; } } }