Пример #1
0
        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;
                }
            }
        }