Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 public DeconstructSellable(ActorInitializer init, DeconstructSellableInfo info)
     : base(info)
 {
     this.info     = info;
     developerMode = init.Self.Owner.PlayerActor.Trait <DeveloperMode>();
     wsb           = init.Self.Trait <WithSpriteBody>();
 }
Exemplo n.º 3
0
        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>();
            }
        }
Exemplo n.º 4
0
        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);
                }
            }
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
 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);
 }
Exemplo n.º 8
0
 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>();
 }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
 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>();
 }
Exemplo n.º 11
0
 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>();
 }
Exemplo n.º 12
0
        public SelfConstructing(ActorInitializer init, SelfConstructingInfo info)
        {
            Info = info;
            wsb  = init.Self.Trait <WithSpriteBody>();

            if (token == Actor.InvalidConditionToken)
            {
                token = init.Self.GrantCondition(info.Condition);
            }
        }
Exemplo n.º 13
0
        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;
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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;
        }
Exemplo n.º 16
0
		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;
		}
Exemplo n.º 17
0
        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));
        }
Exemplo n.º 18
0
        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>();
        }
Exemplo n.º 19
0
        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>);
        }
Exemplo n.º 20
0
        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;
        }
Exemplo n.º 21
0
        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;
                }
            }
        }
Exemplo n.º 22
0
        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);
            }
        }
Exemplo n.º 23
0
 public WithTeslaChargeAnimation(ActorInitializer init, WithTeslaChargeAnimationInfo info)
 {
     this.info = info;
     wsb       = init.Self.TraitsImplementing <WithSpriteBody>().Single(w => w.Info.Name == info.Body);
 }
Exemplo n.º 24
0
        public WithDeliveryAnimation(Actor self, WithDeliveryAnimationInfo info)
        {
            wsb = self.Trait <WithSpriteBody>();

            this.info = info;
        }
Exemplo n.º 25
0
 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>();
 }
Exemplo n.º 26
0
 public WithAimAttackAnimation(ActorInitializer init, WithAimAttackAnimationInfo info)
 {
     this.info = info;
     this.wsb = init.Self.TraitOrDefault<WithSpriteBody>();
 }
Exemplo n.º 27
0
 public Living(ActorInitializer init, LivingInfo info)
 {
     this.info = info;
     mobile    = init.Self.Trait <Mobile>();
     wsb       = init.Self.Trait <WithSpriteBody>();
 }
Exemplo n.º 28
0
 public WithFlyAnimation(ActorInitializer init, WithFlyAnimationInfo info)
     : base(info)
 {
     wsb = init.Self.TraitsImplementing <WithSpriteBody>().Single(w => w.Info.Name == Info.Body);
 }
Exemplo n.º 29
0
 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>();
 }
Exemplo n.º 30
0
 public OffsetsArmament(Actor self, OffsetsArmamentInfo info)
     : base(self, info)
 {
     this.info = info;
     wsb       = self.Trait <WithSpriteBody>();
 }
Exemplo n.º 31
0
 public WithOffsetsSpriteTurret(Actor self, WithSpriteTurretInfo info)
     : base(self, info)
 {
     wsb = self.Trait <WithSpriteBody>();
 }
Exemplo n.º 32
0
 public WithSpawnsShrapnelAnimation(Actor self, WithSpawnsShrapnelAnimationInfo info)
     : base(info)
 {
     wsb = self.TraitsImplementing <WithSpriteBody>().Single(w => w.Info.Name == Info.Body);
 }