예제 #1
0
        public FireControlComponentBase(IShipComponentBaseContainer container, ILevelActorComponentBaseContainer create, List <Int32> weapons)
        {
            this.container = container;
            this.skills    = new List <ISkillContainer>();
            skillcd        = new List <long>();
            skillInitList  = new List <UserData>();
            this.level     = create;

            foreach (var weapon in weapons)
            {
                level.GetConfigComponentInternalBase().GetActorClone(weapon, out var actor);
                if (actor is ISkillContainer weaponBase)
                {
                    this.skills.Add(weaponBase);
                    this.skillcd.Add(0);
                }
            }
            lastframe = DateTime.Now.Ticks;
        }
예제 #2
0
        public void InitializeFireControl(List <Int32> containers)
        {
            skills  = new List <ISkillContainer>();
            skillcd = new List <long>();
            foreach (var weapon in containers)
            {
                if (weapon == 0)
                {
                    continue;
                }
                level.GetConfigComponentInternalBase().GetActorClone(weapon, out var actor);

                if (actor is IWeaponBaseContainer weaponBase)
                {
                    weaponBase.SetOwnerID(actor.GetActorID());
                    weaponBase.SetCamp(actor.GetCamp());
                    this.skills.Add(weaponBase);
                    skillcd.Add(0);
                }
            }
            lastframe = DateTime.Now.Ticks;
        }
예제 #3
0
        public ActorBase CreateActor(int actortype, int camp, float Vector2_x, float Vector2_y, float angle, ulong Id, bool isPlayer = false, Int32 weapontype_a = 0, Int32 weapontype_b = 0, string name = "", float time = 0)
        {
            ActorBase actor = null;

            //从配置文件中获取Actor
            level.GetConfigComponentInternalBase().GetActorClone(actortype, out actor);

            switch (actortype)
            {
            case ActorTypeBaseDefine.ActorNone:
                //actor = new ActorBase();
                break;

                #region 飞船Actor
            case ActorTypeBaseDefine.ShipActorNone:
            case ActorTypeBaseDefine.EliteShipActorA:
            case ActorTypeBaseDefine.EliteShipActorB:
            case ActorTypeBaseDefine.FighterShipActorA:
            case ActorTypeBaseDefine.FighterShipActorB:
            case ActorTypeBaseDefine.WaspShipActorA:
            case ActorTypeBaseDefine.AnnihilationShipActor:
            case ActorTypeBaseDefine.DroneShipActor:
            case ActorTypeBaseDefine.PlayerShipActor:
                if (actor == null)
                {
                    actor = new ShipActorBase(Id, actortype, level);
                }

                if (isPlayer)
                {
                    var ship = (ShipActorBase)actor;
                    ship.SetActorName(name);
                    ship.CreateAiComponent(null);
                    ship.InitializeFireControl(new List <int>
                    {
                        weapontype_a, weapontype_b
                    });
                }

                break;


                #endregion

                #region 武器Acotr

                #region 默认向前飞型武器
            case ActorTypeBaseDefine.AntiAircraftGunActor:
            case ActorTypeBaseDefine.MachineGunActor:
            case ActorTypeBaseDefine.TorpedoActor:
                #endregion

                #region 跟踪型武器

            case ActorTypeBaseDefine.TrackingMissileActor:

                #endregion



            case ActorTypeBaseDefine.ContinuousLaserActor:
            case ActorTypeBaseDefine.TimeBombActor:
            case ActorTypeBaseDefine.TriggerBombActor:


                break;

            case ActorTypeBaseDefine.PowerLaserActor:
                if (actor != null)
                {
                    if (actor is IWeaponBaseComponentContainer weapon)
                    {
                        weapon.SetWeaponDamage((int)(weapon.GetWeaponDamage() * time));
                    }
                }
                break;
                #endregion
            }
            if (actor != null)
            {
                actor.SetActorId(Id);
                actor.PrepareActor(Vector2_x, Vector2_y, angle);
                actor.SetCamp(camp);
            }
            return(actor);
        }