Ejemplo n.º 1
0
        /// <summary>
        /// Handle received orders
        /// </summary>
        /// <param name="order"></param>
        public void HandleOrder(IOrderHandler sender, Order order)
        {
            // If null, sender is this object otherwise the order has been redirected
            sender = sender ?? this;

            switch (order)
            {
                #region Forwarded orders

                #region To GameHandler
            case AvatarChangedOrder a:
            case PlayerReadyOrder b:
            case PlayMoveOrder c:
            case UndoRequestOrder d:
            case RedoRequestOrder e:
            case SaveRequestOrder f:
                orderHandler.HandleOrder(sender, order);
                break;

                #endregion

                #region To Matchmaker
            case RegisterRequestOrder castedOrder:
                Name       = !string.IsNullOrEmpty(castedOrder.Name) ? castedOrder.Name : throw new ArgumentException("name can't be null or empty");
                PlayerType = (PlayerType)castedOrder.PlayerType;

                Console.WriteLine("Send registerRequest to matchmaker");
                orderHandler.HandleOrder(this, order);
                break;

            case JoinRequestOrder castedOrder:
                orderHandler.HandleOrder(this, order);
                break;

            case SearchRequestOrder castedOrder:
                orderHandler.HandleOrder(this, order);
                break;

            case LoadRequestOrder castedOrder:
                orderHandler.HandleOrder(this, order);
                break;

                #endregion

                #endregion
            }
        }
Ejemplo n.º 2
0
 public async Task <bool> HandleOrder(Order order)
 {
     if (orderHandlerChain != null)
     {
         await orderHandlerChain.HandleOrder(order);
     }
     return(true);
 }
Ejemplo n.º 3
0
        public void OnNewBatchJob()
        {
            DateTime dateTime        = _refineDB.OwningEntity.Manager.ManagerSubpulses.StarSysDateTime;
            var      newBatchCommand = new RefineOrdersCommand(_factionGuid, _refineDB.OwningEntity.Guid, dateTime, NewJobSelectedItem, NewJobBatchCount, NewJobRepeat);

            _orderHandler.HandleOrder(newBatchCommand);
            Update();
        }
Ejemplo n.º 4
0
        public virtual async Task <Order> HandleOrder(Order order)
        {
            if (_nextHandler != null)
            {
                return(await _nextHandler.HandleOrder(order));
            }

            return(null);
        }
Ejemplo n.º 5
0
        public void SendNewLoadCargoOrder(DateTime currentDatetime)
        {
            var newOrder = new CargoLoadOrder();

            newOrder.CreatedDate             = currentDatetime;
            newOrder.RequestingFactionGuid   = _faction.Guid;
            newOrder.LoadCargoFromEntityGuid = _loadFromEntity.Guid;
            newOrder.EntityCommandingGuid    = _faction.Guid;
            newOrder.ItemToTransfer          = SelectedCargoItem.ID;
            newOrder.TotalAmountToTransfer   = AmountToTransfer;
            _orderHandler.HandleOrder(newOrder);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Empty the list of order received
        /// </summary>
        private void OrderHandler()
        {
            while (true)
            {
                if (orderHandler != null)
                {
                    while (!orderReceived.IsEmpty)
                    {
                        orderReceived.TryDequeue(out Order order);
                        orderHandler.HandleOrder(null, order);
                    }
                }

                Thread.Sleep(50);
            }
        }
Ejemplo n.º 7
0
        public void HandleOrder(IOrderHandler sender, Order orderHandled)
        {
            // If null, sender is this object otherwise the order has been redirected
            sender = sender ?? this;

            if (orderHandler == null)
            {
                Console.Error.WriteLine("WARNING ! - [OthelloPlayerClient.handleOrder] handleOrder should normally be set!");
            }

            switch (orderHandled)
            {
                #region Forwarded orders
            case RegisterSuccessfulOrder order:
                PlayerState = PlayerState.REGISTERED;
                orderHandler.HandleOrder(sender, order);
                break;

            case SaveResponseOrder order:
                orderHandler.HandleOrder(sender, order);
                break;

            case LoadResponseOrder order:
                orderHandler.HandleOrder(sender, order);
                break;

            case JoinResponseOrder order:
                orderHandler.HandleOrder(sender, order);
                break;

            case OpponentFoundOrder order:
                PlayerState = PlayerState.BINDED;
                orderHandler.HandleOrder(sender, order);
                break;

            case GameReadyOrder order:
                PlayerState = PlayerState.LOBBY_CHOICE;
                orderHandler.HandleOrder(sender, order);
                break;

            case GameStartedOrder order:
                PlayerState = Color == Color.Black ? PlayerState.MY_TURN : PlayerState.OPPONENT_TURN;
                orderHandler.HandleOrder(sender, order);
                break;

            case UpdateGameStateOrder order:
                PlayerState = order.GameState.PlayerTurn == (int)this.Color ? PlayerState.MY_TURN : PlayerState.OPPONENT_TURN;
                orderHandler.HandleOrder(sender, order);
                break;

            case GameEndedOrder order:
                PlayerState = PlayerState.GAME_ENDED;
                orderHandler.HandleOrder(sender, order);
                break;

            case OpponentAvatarChangedOrder order:
                orderHandler.HandleOrder(sender, order);
                break;
                #endregion

                #region Properties received by the server
            case AssignColorOrder order:
                Color = (Color)order.Color;
                break;

            case AssignAvatarIDOrder order:
                // DO NOT change the property or it will send an order
                avatarId = order.AvatarID;
                break;
                #endregion

            case Order unknownOrder:
                throw new Exception("Unknown order received !");
            }
        }