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>();
        }
Esempio n. 2
0
        public WithUndeadBuilderOverlay(Actor self, WithUndeadBuilderOverlayInfo info)
            : base(info)
        {
            var rs   = self.Trait <RenderSprites>();
            var body = self.Trait <BodyOrientation>();

            uBuilder = self.TraitsImplementing <UndeadBuilder>().FirstOrDefault();

            buildComplete = !self.Info.HasTraitInfo <BuildingInfo>(); // always render instantly for units

            overlay = new Animation(self.World, rs.GetImage(self), () => IsTraitPaused || !buildComplete);
            overlay.PlayFetchIndex(info.Sequence, () => anomationframe);

            anim = new AnimationWithOffset(overlay,
                                           () => body.LocalToWorld(info.Offset.Rotate(body.QuantizeOrientation(self, self.Orientation))),
                                           () => IsTraitDisabled || !buildComplete,
                                           p => RenderUtils.ZOffsetFromCenter(self, p, 1));

            rs.Add(anim, info.Palette, info.IsPlayerPalette);

            animationlength = anim.Animation.CurrentSequence.Length;
        }