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; }
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; }
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); }