public override Activity Tick(Actor self) { var aircraft = self.Trait <Aircraft>(); if (aircraft.Altitude <= 0) { if (info.Explosion != null) { Combat.DoExplosion(self, info.Explosion, self.CenterLocation, 0); } self.Destroy(); return(null); } if (info.Spins) { spin += acceleration; aircraft.Facing = (aircraft.Facing + spin) % 256; } if (info.Moves) { FlyUtil.Fly(self, aircraft.Altitude); } aircraft.Altitude--; return(this); }
public override Activity Tick(Actor self) { var cruiseAltitude = self.Info.Traits.Get <PlaneInfo>().CruiseAltitude; if (IsCanceled) { return(NextActivity); } var aircraft = self.Trait <Aircraft>(); var desiredFacing = aircraft.Facing + 64; // we can't possibly turn this fast. if (aircraft.Altitude == cruiseAltitude) { aircraft.Facing = Util.TickFacing(aircraft.Facing, desiredFacing, aircraft.ROT); } if (aircraft.Altitude < cruiseAltitude) { ++aircraft.Altitude; } FlyUtil.Fly(self, cruiseAltitude); return(this); }
public override Activity Tick(Actor self) { var cruiseAltitude = self.Info.Traits.Get <PlaneInfo>().CruiseAltitude; if (IsCanceled) { return(NextActivity); } var d = Pos - self.CenterLocation; if (d.LengthSquared < 50) /* close enough */ { return(NextActivity); } var aircraft = self.Trait <Aircraft>(); var desiredFacing = Util.GetFacing(d, aircraft.Facing); if (aircraft.Altitude == cruiseAltitude) { aircraft.Facing = Util.TickFacing(aircraft.Facing, desiredFacing, aircraft.ROT); } if (aircraft.Altitude < cruiseAltitude) { ++aircraft.Altitude; } FlyUtil.Fly(self, cruiseAltitude); return(this); }
public override Activity Tick(Actor self) { var targetAltitude = self.Info.Traits.Get <PlaneInfo>().CruiseAltitude; if (IsCanceled || !self.World.Map.IsInMap(self.Location)) { return(NextActivity); } FlyUtil.Fly(self, targetAltitude); return(this); }
public override Activity Tick(Actor self) { if (IsCanceled) { return(NextActivity); } var targetAltitude = self.Info.Traits.Get <PlaneInfo>().CruiseAltitude; if (remainingTicks-- == 0) { return(NextActivity); } FlyUtil.Fly(self, targetAltitude); return(this); }