Esempio n. 1
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);
                }
            }
        }
Esempio n. 2
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>();
            }
        }