public WithCargoHatchAnimation(ActorInitializer init, WithCargoHatchAnimationInfo info) { this.info = info; self = init.Self; facing = self.Trait <IFacing>(); body = init.Self.TraitsImplementing <WithSpriteBody>().Single(w => w.Info.Name == info.Body); }
public DeconstructSellable(ActorInitializer init, DeconstructSellableInfo info) : base(info) { this.info = info; developerMode = init.Self.Owner.PlayerActor.Trait <DeveloperMode>(); wsb = init.Self.Trait <WithSpriteBody>(); }
public ConyardChronoReturn(ActorInitializer init, ConyardChronoReturnInfo info) { this.info = info; self = init.Self; health = self.Trait <Health>(); wsb = self.TraitsImplementing <WithSpriteBody>().Single(w => w.Info.Name == info.Body); faction = init.Contains <FactionInit>() ? init.Get <FactionInit, string>() : self.Owner.Faction.InternalName; if (init.Contains <ChronoshiftReturnInit>()) { returnTicks = init.Get <ChronoshiftReturnInit, int>(); } if (init.Contains <ChronoshiftDurationInit>()) { duration = init.Get <ChronoshiftDurationInit, int>(); } if (init.Contains <ChronoshiftOriginInit>()) { origin = init.Get <ChronoshiftOriginInit, CPos>(); } if (init.Contains <ChronoshiftChronosphereInit>()) { chronosphere = init.Get <ChronoshiftChronosphereInit, Actor>(); } }
public ConyardChronoReturn(ActorInitializer init, ConyardChronoReturnInfo info) { this.info = info; self = init.Self; health = self.Trait <Health>(); wsb = self.TraitsImplementing <WithSpriteBody>().Single(w => w.Info.Name == info.Body); faction = init.GetValue <FactionInit, string>(self.Owner.Faction.InternalName); var returnInit = init.GetOrDefault <ChronoshiftReturnInit>(); if (returnInit != null) { returnTicks = returnInit.Ticks; duration = returnInit.Duration; origin = returnInit.Origin; // Defer to the end of tick as the lazy value may reference an actor that hasn't been created yet if (returnInit.Chronosphere != null) { init.World.AddFrameEndTask(w => chronosphere = returnInit.Chronosphere.Actor(init.World).Value); } } }
public TechBunker(ActorInitializer init, TechBunkerInfo info) { this.info = info; wsb = init.Self.Trait <WithSpriteBody>(); timer = 0; state = TechBunkerState.ClosedLocked; var rs = init.Self.Trait <RenderSprites>(); if (info.SequenceLocked != null) { var overlay = new Animation(init.World, rs.GetImage(init.Self), () => state != TechBunkerState.ClosedLocked); overlay.PlayRepeating(RenderSprites.NormalizeSequence(overlay, init.Self.GetDamageState(), info.SequenceLocked)); var anim = new AnimationWithOffset(overlay, () => WVec.Zero, () => state != TechBunkerState.ClosedLocked, p => RenderUtils.ZOffsetFromCenter(init.Self, p, 1)); rs.Add(anim); } if (info.SequenceUnlocked != null) { var overlay = new Animation(init.World, rs.GetImage(init.Self), () => state != TechBunkerState.ClosedUnlocked); overlay.PlayRepeating(RenderSprites.NormalizeSequence(overlay, init.Self.GetDamageState(), info.SequenceUnlocked)); var anim = new AnimationWithOffset(overlay, () => WVec.Zero, () => state != TechBunkerState.ClosedUnlocked, p => RenderUtils.ZOffsetFromCenter(init.Self, p, 1)); rs.Add(anim); } }
public WithAttackAnimation(ActorInitializer init, WithAttackAnimationInfo info) : base(info) { attack = init.Self.Trait <AttackBase>(); armament = init.Self.TraitsImplementing <Armament>().Single(a => a.Info.Name == Info.Armament); wsb = init.Self.TraitsImplementing <WithSpriteBody>().First(w => w.Info.Name == Info.Body); noAimOrReloadAnim = string.IsNullOrEmpty(Info.AimSequence) && string.IsNullOrEmpty(Info.ReloadPrefix); }
public WithLandingCraftAnimation(ActorInitializer init, WithLandingCraftAnimationInfo info) { this.info = info; self = init.Self; cargo = self.Trait <Cargo>(); move = self.Trait <IMove>(); wsb = init.Self.TraitsImplementing <WithSpriteBody>().Single(w => w.Info.Name == info.Body); }
public AttackPopupTurreted(ActorInitializer init, AttackPopupTurretedInfo info) : base(init.Self, info) { this.info = info; turret = turrets.FirstOrDefault(); wsb = init.Self.TraitsImplementing <WithSpriteBody>().Single(w => w.Info.Name == info.Body); skippedMakeAnimation = init.Contains <SkipMakeAnimsInit>(); }
public TechBunker(ActorInitializer init, TechBunkerInfo info) { this.info = info; wsb = init.Self.Trait <WithSpriteBody>(); AddAnimation(init.Self, info.SequenceLocked, () => state != TechBunkerState.ClosedLocked); AddAnimation(init.Self, info.SequenceUnlocked, () => state == TechBunkerState.ClosedLocked); }
public WithLandingCraftAnimation(ActorInitializer init, WithLandingCraftAnimationInfo info) { this.info = info; self = init.Self; cargo = self.Trait <Cargo>(); move = self.Trait <IMove>(); wsb = init.Self.Trait <WithSpriteBody>(); }
public Sandworm(Actor self, SandwormInfo info) : base(self, info) { Info = info; mobile = self.Trait <Mobile>(); withSpriteBody = self.Trait <WithSpriteBody>(); attackTrait = self.Trait <AttackBase>(); manager = self.World.WorldActor.Trait <WormManager>(); }
public SelfConstructing(ActorInitializer init, SelfConstructingInfo info) { Info = info; wsb = init.Self.Trait <WithSpriteBody>(); if (token == Actor.InvalidConditionToken) { token = init.Self.GrantCondition(info.Condition); } }
public SelfConstructing(ActorInitializer init, SelfConstructingInfo info) : base(init, info) { this.info = info; wsb = init.Self.Trait <WithSpriteBody>(); conditionManager = init.Self.Trait <ConditionManager>(); if (!string.IsNullOrEmpty(this.info.Condition) && token == ConditionManager.InvalidConditionToken) { token = conditionManager.GrantCondition(init.Self, this.info.Condition); } spawnType = init.Contains <PlaceBuildingInit>() ? SpawnType.PlaceBuilding : init.Contains <SpawnedByMapInit>() ? SpawnType.Other : SpawnType.Deploy; }
public TechBunker(ActorInitializer init, TechBunkerInfo info) : base(init, info) { this.info = info; withSpriteBody = init.Self.Trait <WithSpriteBody>(); renderSprites = init.Self.Trait <RenderSprites>(); contains = init.Self.World.WorldActor.Trait <TechBunkerContains>(); usage = init.Self.World.WorldActor.Trait <TechBunkerUsage>(); uses = init.Self.World.WorldActor.Trait <TechBunkerUses>(); AddAnimation(init.Self, info.SequenceLocked, () => State != TechBunkerState.ClosedLocked); AddAnimation(init.Self, info.SequenceUnlocked, () => State == TechBunkerState.ClosedLocked); }
public SwallowActor(Actor self, Target target, WeaponInfo weapon) { this.target = target; this.weapon = weapon; sandworm = self.Trait <Sandworm>(); positionable = self.Trait <Mobile>(); swallow = self.Trait <AttackSwallow>(); withSpriteBody = self.Trait <WithSpriteBody>(); radarPings = self.World.WorldActor.TraitOrDefault <RadarPings>(); countdown = swallow.Info.AttackTime; withSpriteBody.DefaultAnimation.ReplaceAnim(sandworm.Info.BurrowedSequence); stance = AttackState.Burrowed; location = target.Actor.Location; }
public SwallowActor(Actor self, Target target, WeaponInfo weapon) { this.target = target; this.weapon = weapon; sandworm = self.Trait<Sandworm>(); positionable = self.Trait<Mobile>(); swallow = self.Trait<AttackSwallow>(); withSpriteBody = self.Trait<WithSpriteBody>(); radarPings = self.World.WorldActor.TraitOrDefault<RadarPings>(); countdown = swallow.Info.AttackTime; withSpriteBody.DefaultAnimation.ReplaceAnim(sandworm.Info.BurrowedSequence); stance = AttackState.Burrowed; location = target.Actor.Location; }
public PreyActivity(Actor self, Actor dockact, bool facingDock, Dock d) { info = self.Info.TraitInfo <AcolytePreyInfo>(); wsb = self.Trait <WithSpriteBody>(); dockactor = dockact; lockfacing = facingDock; playanim = true; _d = d; ticks = self.Info.TraitInfo <AcolytePreyInfo>().leechinterval; resLayer = self.World.WorldActor.Trait <ResourceLayer>(); externalCondition = dockact.TraitsImplementing <ExternalCondition>() .FirstOrDefault(t => t.Info.Condition == self.Info.TraitInfo <AcolytePreyInfo>().GrantsCondition&& t.CanGrantCondition(dockactor, self)); }
public PreyBuildActivity(Actor self, Actor dockact, bool facingDock, Dock d) { info = self.Info.TraitInfo <AcolytePreyBuildInfo>(); wsb = self.Trait <WithSpriteBody>(); dockactor = dockact; lockfacing = facingDock; playanim = true; this.d = d; ticks = self.Info.TraitInfo <AcolytePreyBuildInfo>().Buildinterval; undeadBuilder = dockactor.TraitsImplementing <UndeadBuilder>().FirstOrDefault(); conditionManager = self.Trait <ConditionManager>(); token = ConditionManager.InvalidConditionToken; condtion = self.Info.TraitInfo <AcolytePreyBuildInfo>().SelfEnabledCondition; pr = self.Owner.PlayerActor.Trait <PlayerResources>(); }
public BunkerCargo(ActorInitializer init, BunkerCargoInfo info) { self = init.Self; Info = info; Unloading = false; checkTerrainType = info.UnloadTerrainTypes.Count > 0; wsb = self.TraitOrDefault <WithSpriteBody>(); bunkerState = BunkerState.NonBunkered; if (init.Contains <RuntimeCargoInit>()) { cargo = new Stack <Actor>(init.Get <RuntimeCargoInit, Actor[]>()); totalWeight = cargo.Sum(c => GetWeight(c)); } else if (init.Contains <CargoInit>()) { foreach (var u in init.Get <CargoInit, string[]>()) { var unit = self.World.CreateActor(false, u.ToLowerInvariant(), new TypeDictionary { new OwnerInit(self.Owner) }); cargo.Push(unit); } totalWeight = cargo.Sum(c => GetWeight(c)); } else { foreach (var u in info.InitialUnits) { var unit = self.World.CreateActor(false, u.ToLowerInvariant(), new TypeDictionary { new OwnerInit(self.Owner) }); cargo.Push(unit); } totalWeight = cargo.Sum(c => GetWeight(c)); } facing = Exts.Lazy(self.TraitOrDefault <IFacing>); }
public PreyActivity(Actor self, Actor dockact, bool facingDock, Dock d) { info = self.Info.TraitInfo <AcolytePreyInfo>(); wsb = self.Trait <WithSpriteBody>(); dockactor = dockact; lockfacing = facingDock; playanim = true; this.d = d; ticks = self.Info.TraitInfo <AcolytePreyInfo>().Leechinterval; resLayer = self.World.WorldActor.Trait <ResourceLayer>(); conditionManager = self.Trait <ConditionManager>(); token = ConditionManager.InvalidConditionToken; condtion = self.Info.TraitInfo <AcolytePreyInfo>().SelfEnabledCondition; resourceTypesPreres = self.Info.TraitInfo <AcolytePreyInfo>().ResourceTypesPreres; resourceExtraTimes = self.Info.TraitInfo <AcolytePreyInfo>().ResourceExtraTimes; }
public SelfConstructing(ActorInitializer init, SelfConstructingInfo info) : base(init, info) { Info = info; wsb = init.Self.Trait <WithSpriteBody>(); if (!string.IsNullOrEmpty(Info.Condition) && token == Actor.InvalidConditionToken) { token = init.Self.GrantCondition(Info.Condition); } spawnType = init.Contains <PlaceBuildingInit>(null) ? SpawnType.PlaceBuilding : init.Contains <SpawnedByMapInit>() ? SpawnType.Other : SpawnType.Deploy; for (Steps = 0; ; Steps++) { if (!wsb.DefaultAnimation.HasSequence(Info.Sequence.Substring(0, Info.Sequence.Length - 1) + Steps)) { break; } } }
public TechBunker(ActorInitializer init, TechBunkerInfo info) : base(init, info) { this.info = info; this.withSpriteBody = init.Self.TraitOrDefault <WithSpriteBody>(); this.renderSprites = init.Self.TraitOrDefault <RenderSprites>(); this.contains = init.Self.World.WorldActor.TraitOrDefault <TechBunkerContains>(); this.usage = init.Self.World.WorldActor.TraitOrDefault <TechBunkerUsage>(); this.uses = init.Self.World.WorldActor.TraitOrDefault <TechBunkerUses>(); if (info.SequenceLocked != null) { this.AddAnimation(init.Self, info.SequenceLocked, () => this.State != TechBunkerState.ClosedLocked); } if (info.SequenceUnlocked != null) { this.AddAnimation(init.Self, info.SequenceUnlocked, () => this.State == TechBunkerState.ClosedLocked); } }
public WithTeslaChargeAnimation(ActorInitializer init, WithTeslaChargeAnimationInfo info) { this.info = info; wsb = init.Self.TraitsImplementing <WithSpriteBody>().Single(w => w.Info.Name == info.Body); }
public WithDeliveryAnimation(Actor self, WithDeliveryAnimationInfo info) { wsb = self.Trait <WithSpriteBody>(); this.info = info; }
public SpriteHarvesterDockSequence(Actor self, Actor refinery, int dockAngle, bool isDragRequired, WVec dragOffset, int dragLength) : base(self, refinery, dockAngle, isDragRequired, dragOffset, dragLength) { wsb = self.Trait <WithSpriteBody>(); wda = self.Info.TraitInfo <WithDockingAnimationInfo>(); }
public WithAimAttackAnimation(ActorInitializer init, WithAimAttackAnimationInfo info) { this.info = info; this.wsb = init.Self.TraitOrDefault<WithSpriteBody>(); }
public Living(ActorInitializer init, LivingInfo info) { this.info = info; mobile = init.Self.Trait <Mobile>(); wsb = init.Self.Trait <WithSpriteBody>(); }
public WithFlyAnimation(ActorInitializer init, WithFlyAnimationInfo info) : base(info) { wsb = init.Self.TraitsImplementing <WithSpriteBody>().Single(w => w.Info.Name == Info.Body); }
public SpriteHarvesterDockSequence(Actor self, Actor refinery, int dockAngle, bool isDragRequired, WVec dragOffset, int dragLength) : base(self, refinery, dockAngle, isDragRequired, dragOffset, dragLength) { wsb = self.Trait<WithSpriteBody>(); wda = self.Info.TraitInfo<WithDockingAnimationInfo>(); }
public OffsetsArmament(Actor self, OffsetsArmamentInfo info) : base(self, info) { this.info = info; wsb = self.Trait <WithSpriteBody>(); }
public WithOffsetsSpriteTurret(Actor self, WithSpriteTurretInfo info) : base(self, info) { wsb = self.Trait <WithSpriteBody>(); }
public WithSpawnsShrapnelAnimation(Actor self, WithSpawnsShrapnelAnimationInfo info) : base(info) { wsb = self.TraitsImplementing <WithSpriteBody>().Single(w => w.Info.Name == Info.Body); }