Example #1
0
        public virtual void OrderShip(ShipOrder order, bool append = false)
        {
            if (append)
            {
                // Can't append orders after a Patrol/Build!
                if (CurrentOrder != null &&
                    (CurrentOrder is PatrolOrder ||
                     CurrentOrder is BuildOrder ||
                     (Orders.Count > 0 && (Orders.Last() is PatrolOrder || Orders.Last() is BuildOrder))))
                {
                    return;
                }

                // Don't add an order that is already complete (dock replaced)
                if (!order.OrderComplete)
                {
                    Orders.Add(order);
                }
            }
            else
            {
                if (CurrentOrder != null)
                {
                    CurrentOrder.Cancel(this);
                }

                if (!order.OrderComplete)
                {
                    Orders.Clear();
                    CurrentOrder = order;
                }
            }
        }