Exemplo n.º 1
0
        public override bool Tick(Actor self)
        {
            var result = base.Tick(self);

            if (!abortByCancel && shouldCancel)
            {
                shouldCancel = false;
            }

            if (!result)
            {
                return(false);
            }

            if (shouldCancel)
            {
                return(true);
            }

            var tanker = (Tanker)Dockable;

            if (tanker.Current == tanker.Maximum)
            {
                if (!tanker.IsValidPowerStation(tanker.PowerStation))
                {
                    tanker.AssignNearestPowerStation();
                }

                if (tanker.PowerStation == null)
                {
                    return(true);
                }

                DockActor    = tanker.PowerStation;
                Dock         = DockActor.Trait <Dock>();
                DockingState = DockingState.Approaching;
            }
            else
            {
                if (!tanker.IsValidDrillrig(tanker.Drillrig))
                {
                    tanker.AssignNearestDrillrig();
                }

                if (tanker.Drillrig == null)
                {
                    return(true);
                }

                DockActor    = tanker.Drillrig;
                Dock         = DockActor.Trait <Dock>();
                DockingState = DockingState.Approaching;
            }

            return(false);
        }