示例#1
0
        public void Destroy()
        {
            if (ActorType.IsBoomWeapon())
            {
                var data = _invariantAttributeComponent.GetBoomData();

                var list = GetBody().CircleDetection(level.GetEnvirinfointernalBase().GetShipActors().ToBodyList(), data.boomdis);
                foreach (var ibody in list)
                {
                    var actor = level.GetActor(((UserData)ibody.UserData).ActorID) as IShipComponentBaseContainer;
                    if (actor == null)
                    {
                        continue;
                    }
                    ibody.Boom(GetPosition(), data.boomForce);
                    if (actor.GetCamp() == GetCamp())
                    {
                        return;
                    }
                    actor.GetHealthShieldinternalBase().LossBlood(GetWeaponDamage());
                    //Log.Trace("Collider: ID" + actor.GetActorID() + " 受到碰撞当前 血量:" + actor.GetHealthShieldinternalBase().GetHP() + " 护盾:" + actor.GetHealthShieldinternalBase().GetShieldNum());
                }

                //Log.Trace("Collider ID" + ActorID + " Boom Data" + data.boomdis + " " + data.boomForce + " 爆炸目标数" + list.Count);
            }
            SetDeadState(true);
            level.AddEventMessagesToHandlerForward(new DestroyEventMessage(ActorID));
            //Log.Trace("Destroy: 武器销毁" + ActorID + " 类型" + ActorType);
            _weaponEventComponent.Destroy();
        }