//private TerminalConnector connector;
        //private int orderNumber = -1;
        public MainWindow()
        {
            InitializeComponent();

            var configurator = new Configurator("Configs/main.xml", this);
            try
            {
                tradeController = configurator.TradeController;

                Task.Run(() => tradeController.Run());
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }
        }
 public TradeControllerTests()
 {
     _tradeController = new TradeController(_tradeRepositoryMock.Object);
 }
 public TradeControllerTests()
 {
     _tradeController = new TradeController(_shareRepositoryMock.Object, _tradeRepositoryMock.Object, _portfolioRepositoryMock.Object);
 }
    public void OnCardClicked()
    {
        // Only visible cards that have more than 1 as their amount can be clicked.

        if (!visible || !enabled)
        {
            return;
        }

        Debug.Log("Card " + unitCode + " clicked!");

        // Construction cards -- Available only if the player is in the build phase.
        if (IsConstructionCard())
        {
            if (inventory.GetPlayer().GetPhase() == GamePlayer.Phase.TRADE_BUILD_IDLE)
            {
                // Select
                Debug.Log("Selecting " + unitCode);
                DisplaySelectedCard();
                inventory.GetPlayer().SetPhase(GamePlayer.Phase.BUILDING);
                inventory.GetPlayer().SetSelectedConstructionCard(this);
            }
            else if (inventory.GetPlayer().GetPhase() == GamePlayer.Phase.BUILDING)
            {
                // If I am the selected card -- deselect. Otherwise, deselect other card and select this card.
                if (inventory.GetPlayer().GetSelectedConstructionCard() == this)
                {
                    // Deselect
                    Debug.Log("Deselecting " + unitCode);
                    DisplayNormalCard();
                    inventory.GetPlayer().SetPhase(GamePlayer.Phase.STOP_BUILDING);
                }
                else
                {
                    Debug.Log("Switching selection to: " + unitCode);
                    DisplaySelectedCard();

                    Card previousSelectedCard = inventory.GetPlayer().GetSelectedConstructionCard();

                    previousSelectedCard.DisplayNormalCard();

                    inventory.GetPlayer().TurnOffIndicators();

                    inventory.GetPlayer().SetSelectedConstructionCard(this);
                }
            }
        }


        // Resource cards -- Clicking on these is possible if the player is currently trading or discarding their hand.

        if (IsResourceCard())
        {
            TradeController   tradeController   = GameObject.Find("TradeController").GetComponent <TradeController>();
            DiscardController discardController = GameObject.Find("DiscardController").GetComponent <DiscardController>();

            // Check if it's in the inventory or in the trade slot.
            if (gameObject.tag == "InventoryCard")
            {
                if (tradeController.IsTrading() && !tradeController.IsYearOfPlenty())
                {
                    // Move 1 stock from the inventory to the local offers slot if the player isn't playing a Year of Plenty card.
                    inventory.TakeFromPlayer(this.unitCode, 1);
                    tradeController.OfferResource(this.unitCode, 1);
                }
                else if (discardController.IsDiscarding())
                {
                    // Move 1 stock from the inventory to the discard slot.
                    inventory.TakeFromPlayer(this.unitCode, 1);
                    discardController.DiscardResource(this.unitCode, 1);
                }
            }
            else if (gameObject.tag == "TradeCard")
            {
                // if it's the remote player card that's being clicked, do not do anything
                if (tradeController.IsLocalCard(this))
                {
                    // Move 1 stock from the offers panel to the inventory.

                    inventory.GiveToPlayer(this.unitCode, 1);
                    tradeController.RetractResourceOffer(this.unitCode, 1);
                }
                else
                {
                    // If the player is trading with the supply, handle the click.
                    if (tradeController.IsSupplyTrading())
                    {
                        tradeController.SupplyCardChosen(this.unitCode, 1);
                    }
                    else if (tradeController.IsYearOfPlenty())
                    {
                        tradeController.YearOfPlentyCardChosen(this.unitCode, 1);
                    }
                }
            }
            else if (gameObject.tag == "DiscardCard")
            {
                // Move 1 stock from the discard panel to the inventory.

                inventory.GiveToPlayer(this.unitCode, 1);
                discardController.RetractResourceDiscard(this.unitCode, 1);
            }
            else if (gameObject.tag == "MonopolyCard")
            {
                // Initialise stealing of this resource type from all the other players.

                discardController.MonopolyCardClicked(this.unitCode);
            }
        }

        // Development cards -- If they're available this turn, prompt the player to confirm whether or not to play them.

        if (IsDevelopmentCard())
        {
            // A victory card cannot be played.
            if (unitCode == Inventory.UnitCode.VICTORY_CARD)
            {
                return;
            }

            // If it is not this player's turn, disable development card usage.
            if (inventory.GetPlayer().IsMyTurn() == false)
            {
                return;
            }

            // If the player is not in the IDLE phase, return.

            if (inventory.GetPlayer().GetPhase() != GamePlayer.Phase.TRADE_BUILD_IDLE)
            {
                return;
            }

            // Show the play development card confirmation panel.
            GameObject.Find("ShopController").GetComponent <ShopController>().PlayDevelopmentCard(this.unitCode);
        }
    }
Beispiel #5
0
 public TradeSave(TradeController tc)
 {
     tradeOrders       = new DictContainer <ItemOrder, bool>(tc.TradeOrders);
     caravansThisMonth = tc.caravansThisMonth;
     timeDelta         = tc.TimeDelta;
 }
 public TradeControllerTests()
 {
     _tradeController = new TradeController(null, _tradeRepositoryMock.Object, null);
 }
Beispiel #7
0
 private void InstantiateManagers()
 {
     conMan = new ConsumptionController();
     proMan = new ProductionController();
     traMan = new TradeController();
 }
 public TradeSave(TradeController tc)
 {
     tradeOrders  = tc.TradeOrders;
     timeDelta    = tc.TimeDelta;
     caravanIndex = tc.CaravanIndex;
 }
        public void Scenario1Test_TestsScenario1AndItsOutcome_VerifiesThroughMarketDataOrderAndTradesResults()
        {
            // Get the context
            IApplicationContext applicationContext = ContextRegistry.GetContext();

            // Get the instance through Spring configuration
            OrderController  orderController  = (OrderController)applicationContext["OrderController"];
            TradeController  tradeController  = (TradeController)applicationContext["TradeController"];
            MarketController marketController = (MarketController)applicationContext["MarketController"];

            orderController.Request = new HttpRequestMessage(HttpMethod.Post, "");
            orderController.Request.Headers.Add("Auth", "123456789");
            tradeController.Request = new HttpRequestMessage(HttpMethod.Post, "");
            tradeController.Request.Headers.Add("Auth", "123456789");
            marketController.Request = new HttpRequestMessage(HttpMethod.Post, "");
            marketController.Request.Headers.Add("Auth", "123456789");
            Scenario1OrderCreation(orderController);

            // ------------------------------- Order Book ------------------------------
            IHttpActionResult orderBookResponse = marketController.GetOrderBook("BTCLTC");

            OkNegotiatedContentResult <object> okOrderBookResponse =
                (OkNegotiatedContentResult <object>)orderBookResponse;
            OrderBookRepresentation representation = okOrderBookResponse.Content as OrderBookRepresentation;
            Tuple <OrderRepresentationList, OrderRepresentationList> orderBook = new Tuple <OrderRepresentationList, OrderRepresentationList>(representation.Bids, representation.Asks);

            // Item1 = Bid Book, Item1[i].Item1 = Volume of 'i' Bid, Item1[i].Item2 = Price of 'i' Bid
            Assert.AreEqual(5, orderBook.Item1.ToList()[0].Volume);
            Assert.AreEqual(250, orderBook.Item1.ToList()[0].Price);
            Assert.AreEqual(2, orderBook.Item1.ToList()[1].Volume);
            Assert.AreEqual(250, orderBook.Item1.ToList()[1].Price);

            // Item2 = Ask Book, Item2[i].Item1 = Volume of Ask at index 'i', Item2[i].Item2 = Price of Ask at index 'i'
            Assert.AreEqual(0, orderBook.Item2.Count());
            // ------------------------------- Order Book ------------------------------
            IHttpActionResult depthResponse = marketController.GetDepth("BTCLTC");

            OkNegotiatedContentResult <object> okDepth
                = (OkNegotiatedContentResult <object>)depthResponse;

            DepthTupleRepresentation depth = okDepth.Content as DepthTupleRepresentation;

            // Item1 = Bid Book, Item1.Item1 = Aggregated Volume, Item1.Item2 = Price, Item1.Item3 = Number of Orders
            Assert.AreEqual(7, depth.BidDepth[0].Volume);
            Assert.AreEqual(250, depth.BidDepth[0].Price);
            Assert.AreEqual(2, depth.BidDepth[0].OrderCount);
            Assert.IsNull(depth.BidDepth[1]);
            Assert.IsNull(depth.BidDepth[2]);
            Assert.IsNull(depth.BidDepth[3]);
            Assert.IsNull(depth.BidDepth[4]);

            // Item2 = Ask Book, Item2.Item1 = Aggregated Volume, Item2.Item2 = Price, Item2.Item3 = Number of Orders
            Assert.IsNull(depth.AskDepth[0]);
            Assert.IsNull(depth.AskDepth[1]);
            Assert.IsNull(depth.AskDepth[2]);
            Assert.IsNull(depth.AskDepth[3]);
            Assert.IsNull(depth.AskDepth[4]);

            //------------------- Open Orders -------------------------
            IHttpActionResult openOrdersResponse = GetOpenOrders(orderController);
            OkNegotiatedContentResult <List <OrderReadModel> > okOpenOrdersResponse = (OkNegotiatedContentResult <List <OrderReadModel> >)openOrdersResponse;
            List <OrderReadModel> openOrders = okOpenOrdersResponse.Content;

            Assert.AreEqual(2, openOrders.Count);
            // First Open Order
            Assert.AreEqual(250, openOrders[1].Price);
            Assert.AreEqual(10, openOrders[1].Volume);
            Assert.AreEqual(5, openOrders[1].VolumeExecuted);
            Assert.AreEqual(5, openOrders[1].OpenQuantity);
            Assert.AreEqual("Limit", openOrders[1].Type);
            Assert.AreEqual("Buy", openOrders[1].Side);
            Assert.AreEqual("PartiallyFilled", openOrders[1].Status);

            // Second Open Order
            Assert.AreEqual(250, openOrders[0].Price);
            Assert.AreEqual(2, openOrders[0].Volume);
            Assert.AreEqual(0, openOrders[0].VolumeExecuted);
            Assert.AreEqual(2, openOrders[0].OpenQuantity);
            Assert.AreEqual("Limit", openOrders[0].Type);
            Assert.AreEqual("Buy", openOrders[0].Side);
            Assert.AreEqual("Accepted", openOrders[0].Status);
            //------------------- Open Orders -------------------------

            //------------------- Closed Orders -------------------------
            IHttpActionResult closedOrdersResponse = GetClosedOrders(orderController);
            OkNegotiatedContentResult <List <OrderReadModel> > okClosedOrdersResponse = (OkNegotiatedContentResult <List <OrderReadModel> >)closedOrdersResponse;
            List <OrderReadModel> closedOrders = okClosedOrdersResponse.Content;

            Assert.AreEqual(252, closedOrders[3].Price);
            Assert.AreEqual(5, closedOrders[3].Volume);
            Assert.AreEqual(5, closedOrders[3].VolumeExecuted);
            Assert.AreEqual(0, closedOrders[3].OpenQuantity);
            Assert.AreEqual("Limit", closedOrders[3].Type);
            Assert.AreEqual("Sell", closedOrders[3].Side);
            Assert.AreEqual("Complete", closedOrders[3].Status);

            Assert.AreEqual(0, closedOrders[2].Price);
            Assert.AreEqual(3, closedOrders[2].Volume);
            Assert.AreEqual(3, closedOrders[2].VolumeExecuted);
            Assert.AreEqual(0, closedOrders[2].OpenQuantity);
            Assert.AreEqual("Market", closedOrders[2].Type);
            Assert.AreEqual("Buy", closedOrders[2].Side);
            Assert.AreEqual("Complete", closedOrders[2].Status);

            Assert.AreEqual(253, closedOrders[1].Price);
            Assert.AreEqual(2, closedOrders[1].Volume);
            Assert.AreEqual(2, closedOrders[1].VolumeExecuted);
            Assert.AreEqual(0, closedOrders[1].OpenQuantity);
            Assert.AreEqual("Limit", closedOrders[1].Type);
            Assert.AreEqual("Buy", closedOrders[1].Side);
            Assert.AreEqual("Complete", closedOrders[1].Status);

            Assert.AreEqual(0, closedOrders[0].Price);
            Assert.AreEqual(5, closedOrders[0].Volume);
            Assert.AreEqual(5, closedOrders[0].VolumeExecuted);
            Assert.AreEqual(0, closedOrders[0].OpenQuantity);
            Assert.AreEqual("Market", closedOrders[0].Type);
            Assert.AreEqual("Sell", closedOrders[0].Side);
            Assert.AreEqual("Complete", closedOrders[0].Status);
            //------------------- Closed Orders -------------------------

            //------------------- Trades -------------------------

            IHttpActionResult tradesResponse = GetTrades(tradeController);
            OkNegotiatedContentResult <object> okTradeResponse = (OkNegotiatedContentResult <object>)tradesResponse;
            IList <object>   tradesintermediateList            = (IList <object>)okTradeResponse.Content;
            IList <object[]> trades = new List <object[]>();

            for (int i = 0; i < tradesintermediateList.Count; i++)
            {
                object[] objects = tradesintermediateList[i] as object[];
                trades.Add(objects);
            }

            // This call return list of object, so we have to explicitly check values within elements
            Assert.AreEqual(252, trades[2][2]); // Price
            Assert.AreEqual(3, trades[2][3]);   // Volume
            Assert.AreEqual("BTCLTC", trades[2][4]);

            Assert.AreEqual(252, trades[1][2]);
            Assert.AreEqual(2, trades[1][3]);
            Assert.AreEqual("BTCLTC", trades[0][4]);

            Assert.AreEqual(250, trades[0][2]);
            Assert.AreEqual(5, trades[0][3]);
            Assert.AreEqual("BTCLTC", trades[0][4]);
            //------------------- Trades -------------------------
        }
        public void GetTradesForTraderBetweenTimeRangeTest_TestsTheMethodThatWillGetAllTradesForACurrencypair_AssertsTheValuesOfTheFetchedTrades()
        {
            // Get the context
            IApplicationContext applicationContext = ContextRegistry.GetContext();
            //Exchange exchange = new Exchange();
            //IEventStore inputEventStore = new RavenNEventStore(Constants.INPUT_EVENT_STORE);
            //IEventStore outputEventStore = new RavenNEventStore(Constants.OUTPUT_EVENT_STORE);
            //Journaler inputJournaler = new Journaler(inputEventStore);
            //Journaler outputJournaler = new Journaler(outputEventStore);
            //InputDisruptorPublisher.InitializeDisruptor(new IEventHandler<InputPayload>[] { exchange, inputJournaler });
            //OutputDisruptor.InitializeDisruptor(new IEventHandler<byte[]>[] { outputJournaler });

            // Get the instance through Spring configuration
            TradeController tradeController = (TradeController)applicationContext["TradeController"];

            tradeController.Request = new HttpRequestMessage(HttpMethod.Post, "");
            tradeController.Request.Headers.Add("Auth", "123456789");

            // Get the instance through Spring configuration
            OrderController orderController = (OrderController)applicationContext["OrderController"];

            orderController.Request = new HttpRequestMessage(HttpMethod.Post, "");
            orderController.Request.Headers.Add("Auth", "123456789");

            ITradeRepository tradeRepository = (ITradeRepository)applicationContext["TradeRepository"];

            ManualResetEvent manualResetEvent = new ManualResetEvent(false);

            orderController.CreateOrder(new CreateOrderParam()
            {
                Pair   = "BTCUSD",
                Price  = 491,
                Volume = 100,
                Side   = "buy",
                Type   = "limit"
            });

            manualResetEvent.Reset();
            manualResetEvent.WaitOne(2000);
            orderController.CreateOrder(new CreateOrderParam()
            {
                Pair   = "BTCUSD",
                Price  = 492,
                Volume = 300,
                Side   = "buy",
                Type   = "limit"
            });

            manualResetEvent.Reset();
            manualResetEvent.WaitOne(2000);

            orderController.CreateOrder(new CreateOrderParam()
            {
                Pair   = "BTCUSD",
                Price  = 493,
                Volume = 1000,
                Side   = "buy",
                Type   = "limit"
            });

            orderController.CreateOrder(new CreateOrderParam()
            {
                Pair   = "BTCUSD",
                Price  = 493,
                Volume = 1000,
                Side   = "sell",
                Type   = "limit"
            });

            manualResetEvent.Reset();
            manualResetEvent.WaitOne(2000);

            orderController.CreateOrder(new CreateOrderParam()
            {
                Pair   = "BTCUSD",
                Price  = 492,
                Volume = 300,
                Side   = "sell",
                Type   = "limit"
            });

            manualResetEvent.Reset();
            manualResetEvent.WaitOne(2000);

            orderController.CreateOrder(new CreateOrderParam()
            {
                Pair   = "BTCUSD",
                Price  = 491,
                Volume = 100,
                Side   = "sell",
                Type   = "limit"
            });

            manualResetEvent.Reset();
            manualResetEvent.WaitOne(4000);
            IHttpActionResult httpActionResult = tradeController.GetTradeHistory(new TradeHistoryParams("2014/05/09", "2014/05/09"));
            OkNegotiatedContentResult <object> okResponseObject = (OkNegotiatedContentResult <object>)httpActionResult;

            IList <object>  objectList     = (IList <object>)okResponseObject.Content;
            List <object[]> newObjectsList = new List <object[]>();

            for (int i = 0; i < objectList.Count; i++)
            {
                object[] objects = objectList[i] as object[];
                newObjectsList.Add(objects);
            }

            Assert.AreEqual(493, newObjectsList[0][2]);
            Assert.AreEqual(1000, newObjectsList[0][3]);

            Assert.AreEqual(492, newObjectsList[1][2]);
            Assert.AreEqual(300, newObjectsList[1][3]);

            Assert.AreEqual(491, newObjectsList[2][2]);
            Assert.AreEqual(100, newObjectsList[2][3]);

            InputDisruptorPublisher.Shutdown();
            OutputDisruptor.ShutDown();

            tradeRepository.RollBack();
        }
        public void GetTradeDetails_SendMatchingOrdersWithDifferentTraders_TradeDetailsShouldGetReceived()
        {
            // Get the context
            IApplicationContext applicationContext = ContextRegistry.GetContext();

            // Get the instance through Spring configuration
            TradeController tradeController = (TradeController)applicationContext["TradeController"];

            tradeController.Request = new HttpRequestMessage(HttpMethod.Post, "");
            tradeController.Request.Headers.Add("Auth", "123456789");

            // Get the instance through Spring configuration
            OrderController orderController = (OrderController)applicationContext["OrderController"];

            orderController.Request = new HttpRequestMessage(HttpMethod.Post, "");
            orderController.Request.Headers.Add("Auth", "123456789");
            ITradeRepository tradeRepository = (ITradeRepository)applicationContext["TradeRepository"];

            ManualResetEvent manualResetEvent = new ManualResetEvent(false);

            orderController.CreateOrder(new CreateOrderParam()
            {
                Pair   = "BTCUSD",
                Price  = 491,
                Volume = 100,
                Side   = "buy",
                Type   = "limit"
            });

            manualResetEvent.Reset();
            manualResetEvent.WaitOne(2000);
            OrderController orderController1 = (OrderController)applicationContext["OrderController"];

            orderController1.Request = new HttpRequestMessage(HttpMethod.Post, "");
            orderController1.Request.Headers.Add("Auth", "55555");
            orderController1.CreateOrder(new CreateOrderParam()
            {
                Pair   = "BTCUSD",
                Price  = 490,
                Volume = 300,
                Side   = "sell",
                Type   = "limit"
            });

            manualResetEvent.Reset();
            manualResetEvent.WaitOne(4000);
            IHttpActionResult httpActionResult = tradeController.GetTradeHistory(new TradeHistoryParams("", ""));
            OkNegotiatedContentResult <object> okResponseObject = (OkNegotiatedContentResult <object>)httpActionResult;

            IList <object> objectList = (IList <object>)okResponseObject.Content;

            object[] details = objectList[0] as object[];
            string   tradeId = details[0] as string;

            //verify trader("123456789") details
            httpActionResult = tradeController.TradeDetails(tradeId);
            OkNegotiatedContentResult <TradeDetailsRepresentation> tradeDetails =
                (OkNegotiatedContentResult <TradeDetailsRepresentation>)httpActionResult;

            Assert.AreEqual(tradeDetails.Content.TradeId, tradeId);
            Assert.AreEqual(tradeDetails.Content.ExecutionPrice, (decimal)details[2]);
            Assert.AreEqual(tradeDetails.Content.Volume, (decimal)details[3]);
            Assert.AreEqual(tradeDetails.Content.Order.Price, 491);
            Assert.AreEqual(tradeDetails.Content.Order.Side, OrderSide.Buy.ToString());
            Assert.AreEqual(tradeDetails.Content.Order.Type, OrderType.Limit.ToString());
            Assert.AreEqual(tradeDetails.Content.Order.Volume, 100);
            Assert.AreEqual(tradeDetails.Content.Order.Status, OrderState.Complete.ToString());

            //verify trader("55555") details
            TradeController tradeController1 = (TradeController)applicationContext["TradeController"];

            tradeController1.Request = new HttpRequestMessage(HttpMethod.Post, "");
            tradeController1.Request.Headers.Add("Auth", "55555");
            httpActionResult = tradeController1.TradeDetails(tradeId);
            OkNegotiatedContentResult <TradeDetailsRepresentation> tradeDetails1 =
                (OkNegotiatedContentResult <TradeDetailsRepresentation>)httpActionResult;

            Assert.AreEqual(tradeDetails1.Content.TradeId, tradeId);
            Assert.AreEqual(tradeDetails1.Content.ExecutionPrice, (decimal)details[2]);
            Assert.AreEqual(tradeDetails1.Content.Volume, (decimal)details[3]);
            Assert.AreEqual(tradeDetails1.Content.Order.Price, 490);
            Assert.AreEqual(tradeDetails1.Content.Order.Side, OrderSide.Sell.ToString());
            Assert.AreEqual(tradeDetails1.Content.Order.Type, OrderType.Limit.ToString());
            Assert.AreEqual(tradeDetails1.Content.Order.Volume, 300);
            Assert.AreEqual(tradeDetails1.Content.Order.Status, OrderState.PartiallyFilled.ToString());

            InputDisruptorPublisher.Shutdown();
            OutputDisruptor.ShutDown();
            tradeRepository.RollBack();
        }
Beispiel #12
0
    // Connectors calls -
    public void OnPlayerFinished(Player sender, int turn, object move)
    {
        // Player <player> has ended their turn on their machine. End it locally as well.

        // Start the turn for the next player only if there's players who haven't yet played it.

        if (turnManager.IsCompletedByAll)
        {
            return;
        }


        Player nextPlayer;

        int prevPlayerPosition = -1;

        for (int i = 0; i < PhotonNetwork.PlayerList.Length; i++)
        {
            if (sender.ActorNumber == PhotonNetwork.PlayerList[i].ActorNumber)
            {
                prevPlayerPosition = i;
                break;
            }
        }

        if (PhotonNetwork.CurrentRoom.PlayerCount > 1)
        {
            if (currentTurn != 2)
            {
                nextPlayer = PhotonNetwork.PlayerList[prevPlayerPosition + 1];
            }
            else
            {
                // LIFO setup.
                nextPlayer = PhotonNetwork.PlayerList[prevPlayerPosition - 1];
            }
        }
        else
        {
            nextPlayer = null;
        }

        if (nextPlayer == null)
        {
            return;
        }

        this.currentPlayer = nextPlayer;
        if (PhotonNetwork.LocalPlayer == nextPlayer)
        {
            currentTurn = turn;

            if (turn == 1)
            {
                ClaimColour();
                myTurn = true;



                GameObject.Find("DiceController").GetComponent <DiceController>().SetDiceOwner(PhotonNetwork.LocalPlayer);
                setUpPhase = true;

                // Turns starts once a colour slot is claimed.
            }
            else if (turn == 2)
            {
                // Init trade.
                tradeController = GameObject.Find("TradeController").GetComponent <TradeController>();
                tradeController.Init(inventory);

                myTurn = true;
                audioSource.Play();
                eventTextController.SetCurrentPlayer(PhotonNetwork.LocalPlayer);
                GameObject.Find("DiceController").GetComponent <DiceController>().SetDiceOwner(PhotonNetwork.LocalPlayer);
            }
            else if (turn == 3)
            {
                setUpPhase   = false;
                currentPhase = Phase.ROLL_DICE;
                myTurn       = true;
                audioSource.Play();
                eventTextController.SetCurrentPlayer(PhotonNetwork.LocalPlayer);
                GameObject.Find("DiceController").GetComponent <DiceController>().SetDiceOwner(PhotonNetwork.LocalPlayer);
            }
            else
            {
                myTurn = true;
                audioSource.Play();
                currentPhase = Phase.ROLL_DICE;
                GameObject.Find("DiceController").GetComponent <DiceController>().SetDiceOwner(PhotonNetwork.LocalPlayer);
                eventTextController.SetCurrentPlayer(PhotonNetwork.LocalPlayer);
            }
        }
    }
Beispiel #13
0
    // Called from TurnManager - Each player gets this called by their local turn manager
    public void OnTurnBegins(int turn)
    {
        Debug.Log("Turn " + turn + " beginning globally.");

        currentTurn = turn;



        if (turn == 1)
        {
            currentPlayer = PhotonNetwork.PlayerList[0];

            setUpPhase = true;
            if (PhotonNetwork.LocalPlayer == currentPlayer)
            {
                // Claim colour slot.
                ClaimColour();

                myTurn = true;


                GameObject.Find("DiceController").GetComponent <DiceController>().SetDiceOwner(PhotonNetwork.LocalPlayer);

                // Turns starts once a colour slot is claimed.
            }
        }
        else if (turn == 2)
        {
            currentPlayer = PhotonNetwork.PlayerList[PhotonNetwork.PlayerList.Length - 1];

            if (PhotonNetwork.LocalPlayer == currentPlayer)
            {
                // Init trade.
                tradeController = GameObject.Find("TradeController").GetComponent <TradeController>();
                tradeController.Init(inventory);

                Debug.Log("In turn2 the player to play is: " + PhotonNetwork.LocalPlayer.ActorNumber + ", name = " + PhotonNetwork.LocalPlayer.NickName);
                myTurn = true;
                audioSource.Play();
                eventTextController.SetCurrentPlayer(PhotonNetwork.LocalPlayer);
                GameObject.Find("DiceController").GetComponent <DiceController>().SetDiceOwner(PhotonNetwork.LocalPlayer);
            }
        }
        else if (turn == 3)
        {
            currentPlayer = PhotonNetwork.PlayerList[0];

            if (PhotonNetwork.LocalPlayer == currentPlayer)
            {
                myTurn = true;
                audioSource.Play();
                setUpPhase   = false;
                currentPhase = Phase.ROLL_DICE;
                eventTextController.SetCurrentPlayer(PhotonNetwork.LocalPlayer);
                GameObject.Find("DiceController").GetComponent <DiceController>().SetDiceOwner(PhotonNetwork.LocalPlayer);
            }
        }
        else
        {
            currentPlayer = PhotonNetwork.PlayerList[0];
            if (PhotonNetwork.LocalPlayer == currentPlayer)
            {
                Debug.Log("In turn" + turn + " the player to play is: " + PhotonNetwork.LocalPlayer.ActorNumber + ", name = " + PhotonNetwork.LocalPlayer.NickName);
                myTurn = true;
                audioSource.Play();
                currentPhase = Phase.ROLL_DICE;
                eventTextController.SetCurrentPlayer(PhotonNetwork.LocalPlayer);
                GameObject.Find("DiceController").GetComponent <DiceController>().SetDiceOwner(PhotonNetwork.LocalPlayer);
            }
        }
    }
Beispiel #14
0
        public TradeControllerTests()
        {
            _tradeController = new TradeController(_shareRepositoryMock.Object, _tradeRepositoryMock.Object, _portfolioRepositoryMock.Object);

            //(IShareRepository shareRepository, ITradeRepository tradeRepository, IPortfolioRepository portfolioRepository)
        }
 public TradeControllerTests()
 {
     _tradeController = new TradeController(_tradeService.Object);
 }
    public void Start()
    {
        // Create GameObject so we can have access to a transform which has a position of "Vector3.zero".
        new GameObject("VisualPath", typeof(VisualPath));
        GameObject go;

        tileSpriteController      = new TileSpriteController(World);
        characterSpriteController = new CharacterSpriteController(World);
        furnitureSpriteController = new FurnitureSpriteController(World);
        utilitySpriteController   = new UtilitySpriteController(World);
        jobSpriteController       = new JobSpriteController(World, furnitureSpriteController, utilitySpriteController);
        inventorySpriteController = new InventorySpriteController(World, inventoryUI);
        shipSpriteController      = new ShipSpriteController(World);

        buildModeController      = new BuildModeController();
        spawnInventoryController = new SpawnInventoryController();
        mouseController          = new MouseController(buildModeController, furnitureSpriteController, utilitySpriteController, circleCursorPrefab);
        questController          = new QuestController();
        cameraController         = new CameraController();
        TradeController          = new TradeController();
        autosaveManager          = new AutosaveManager();

        // Register inputs actions
        KeyboardManager.Instance.RegisterInputAction("DevMode", KeyboardMappedInputType.KeyDown, ChangeDevMode);

        // Hiding Dev Mode spawn inventory controller if devmode is off.
        spawnInventoryController.SetUIVisibility(SettingsKeyHolder.DeveloperMode);

        cameraController.Initialize();

        // Initialising controllers.
        GameObject canvas = GameObject.Find("Canvas");

        go      = Instantiate(Resources.Load("UI/ContextMenu"), canvas.transform.position, canvas.transform.rotation, canvas.transform) as GameObject;
        go.name = "ContextMenu";

        GameObject timeScale = Instantiate(Resources.Load("UI/TimeScale"), GameObject.Find("TopRight").transform, false) as GameObject;

        timeScale.name = "TimeScale";

        GameObject dateTimeDisplay = Instantiate(Resources.Load("UI/DateTimeDisplay"), canvas.transform, false) as GameObject;

        dateTimeDisplay.name = "DateTimeDisplay";

        GameController.Instance.IsModal = false;

        // Settings UI is a 'dialog box' (kinda), so it comes here.
        // Where as DevConsole is a constant menu item (it can appear 'anywhere' so it appears after)
        GameObject settingsMenu = (GameObject)Instantiate(Resources.Load("UI/SettingsMenu/SettingsMenu"));

        if (settingsMenu != null)
        {
            settingsMenu.name = "Settings Menu";
            settingsMenu.transform.SetParent(canvas.transform, false);
            settingsMenu.SetActive(true);
        }

        // This will place it after context menu (and the inventory menu) and settings menu
        dialogBoxManager = GameObject.Find("Dialog Boxes").GetComponent <DialogBoxManager>();
        dialogBoxManager.transform.SetAsLastSibling();

        GameObject devConsole = (GameObject)Instantiate(Resources.Load("UI/Console/DevConsole"));

        if (devConsole != null)
        {
            devConsole.name = "DevConsole-Spawned";
            devConsole.transform.SetParent(canvas.transform, false);
            devConsole.transform.SetAsLastSibling();
            devConsole.SetActive(true);
            DeveloperConsole.DevConsole.Close();
        }
    }
        public void Scenario3Test_TestsScenario3AndItsOutcome_VerifiesThroughMarketDataOrderAndTradesResults()
        {
            // Get the context
            IApplicationContext applicationContext = ContextRegistry.GetContext();

            // Get the instance through Spring configuration
            OrderController  orderController  = (OrderController)applicationContext["OrderController"];
            TradeController  tradeController  = (TradeController)applicationContext["TradeController"];
            MarketController marketController = (MarketController)applicationContext["MarketController"];

            orderController.Request = new HttpRequestMessage(HttpMethod.Post, "");
            orderController.Request.Headers.Add("Auth", "123456789");
            tradeController.Request = new HttpRequestMessage(HttpMethod.Post, "");
            tradeController.Request.Headers.Add("Auth", "123456789");
            marketController.Request = new HttpRequestMessage(HttpMethod.Post, "");
            marketController.Request.Headers.Add("Auth", "123456789");
            Scenario3OrderCreation(orderController);

            // ------------------------------- Order Book ------------------------------
            IHttpActionResult orderBookResponse = marketController.GetOrderBook("BTCLTC");

            OkNegotiatedContentResult <object> okOrderBookResponse =
                (OkNegotiatedContentResult <object>)orderBookResponse;

            OrderBookRepresentation representation = okOrderBookResponse.Content as OrderBookRepresentation;
            Tuple <OrderRepresentationList, OrderRepresentationList> orderBook = new Tuple <OrderRepresentationList, OrderRepresentationList>(representation.Bids, representation.Asks);

            // Item1 = Bid Book, Item1[i].Item1 = Volume of 'i' Bid, Item1[i].Item2 = Price of 'i' Bid
            Assert.AreEqual(0, orderBook.Item1.Count());
            // Item2 = Bid Book, Item2[i].Item1 = Volume of Ask at index 'i', Item2[i].Item2 = Price of Bid at index 'i'
            Assert.AreEqual(0, orderBook.Item2.Count());
            // ------------------------------------------------------------------------

            // --------------------------------- Depth ---------------------------------
            IHttpActionResult depthResponse = marketController.GetDepth("BTCLTC");

            OkNegotiatedContentResult <object> okDepth
                = (OkNegotiatedContentResult <object>)depthResponse;

            DepthTupleRepresentation depth = okDepth.Content as DepthTupleRepresentation;

            // Item1 = Bid Book, Item1.Item1 = Aggregated Volume, Item1.Item2 = Price, Item1.Item3 = Number of Orders
            Assert.IsNull(depth.BidDepth[0]);
            Assert.IsNull(depth.BidDepth[1]);
            Assert.IsNull(depth.BidDepth[2]);
            Assert.IsNull(depth.BidDepth[3]);
            Assert.IsNull(depth.BidDepth[4]);

            // Item2 = Bid Book, Item2.Item1 = Aggregated Volume, Item2.Item2 = Price, Item2.Item3 = Number of Orders
            Assert.IsNull(depth.AskDepth[0]);
            Assert.IsNull(depth.AskDepth[1]);
            Assert.IsNull(depth.AskDepth[2]);
            Assert.IsNull(depth.AskDepth[3]);
            Assert.IsNull(depth.AskDepth[4]);

            // -----------------------------------------------------------------------

            //------------------------- Open Orders ----------------------------------
            IHttpActionResult openOrdersResponse = GetOpenOrders(orderController);
            OkNegotiatedContentResult <List <OrderReadModel> > okOpenOrdersResponse = (OkNegotiatedContentResult <List <OrderReadModel> >)openOrdersResponse;
            List <OrderReadModel> openOrders = okOpenOrdersResponse.Content;

            Assert.AreEqual(0, openOrders.Count);
            //---------------------------------------------------------------------

            //-------------------------- Closed Orders ----------------------------
            IHttpActionResult closedOrdersResponse = GetClosedOrders(orderController);
            OkNegotiatedContentResult <List <OrderReadModel> > okClosedOrdersResponse = (OkNegotiatedContentResult <List <OrderReadModel> >)closedOrdersResponse;
            List <OrderReadModel> closedOrders = okClosedOrdersResponse.Content;

            // Order List comes in descending order, so asserts are placed that way too
            Assert.AreEqual(252, closedOrders[8].Price);
            Assert.AreEqual(5, closedOrders[8].Volume);
            Assert.AreEqual(0, closedOrders[8].VolumeExecuted);
            Assert.AreEqual(5, closedOrders[8].OpenQuantity);
            Assert.AreEqual("Limit", closedOrders[8].Type);
            Assert.AreEqual("Sell", closedOrders[8].Side);
            Assert.AreEqual("Cancelled", closedOrders[8].Status);

            Assert.AreEqual(245, closedOrders[7].Price);
            Assert.AreEqual(8, closedOrders[7].Volume);
            Assert.AreEqual(0, closedOrders[7].VolumeExecuted);
            Assert.AreEqual(8, closedOrders[7].OpenQuantity);
            Assert.AreEqual("Limit", closedOrders[7].Type);
            Assert.AreEqual("Buy", closedOrders[7].Side);
            Assert.AreEqual("Cancelled", closedOrders[7].Status);

            Assert.AreEqual(250, closedOrders[6].Price);
            Assert.AreEqual(7, closedOrders[6].Volume);
            Assert.AreEqual(7, closedOrders[6].VolumeExecuted);
            Assert.AreEqual(0, closedOrders[6].OpenQuantity);
            Assert.AreEqual("Limit", closedOrders[6].Type);
            Assert.AreEqual("Buy", closedOrders[6].Side);
            Assert.AreEqual("Complete", closedOrders[6].Status);

            Assert.AreEqual(250, closedOrders[5].Price);
            Assert.AreEqual(3, closedOrders[5].Volume);
            Assert.AreEqual(2, closedOrders[5].VolumeExecuted);
            Assert.AreEqual(1, closedOrders[5].OpenQuantity);
            Assert.AreEqual("Limit", closedOrders[5].Type);
            Assert.AreEqual("Buy", closedOrders[5].Side);
            Assert.AreEqual("Cancelled", closedOrders[5].Status);

            Assert.AreEqual(253, closedOrders[4].Price);
            Assert.AreEqual(5, closedOrders[4].Volume);
            Assert.AreEqual(0, closedOrders[4].VolumeExecuted);
            Assert.AreEqual(5, closedOrders[4].OpenQuantity);
            Assert.AreEqual("Limit", closedOrders[4].Type);
            Assert.AreEqual("Sell", closedOrders[4].Side);
            Assert.AreEqual("Cancelled", closedOrders[4].Status);

            Assert.AreEqual(240, closedOrders[3].Price);
            Assert.AreEqual(8, closedOrders[3].Volume);
            Assert.AreEqual(0, closedOrders[3].VolumeExecuted);
            Assert.AreEqual(8, closedOrders[3].OpenQuantity);
            Assert.AreEqual("Limit", closedOrders[3].Type);
            Assert.AreEqual("Buy", closedOrders[3].Side);
            Assert.AreEqual("Cancelled", closedOrders[3].Status);

            Assert.AreEqual(245, closedOrders[2].Price);
            Assert.AreEqual(7, closedOrders[2].Volume);
            Assert.AreEqual(0, closedOrders[2].VolumeExecuted);
            Assert.AreEqual(7, closedOrders[2].OpenQuantity);
            Assert.AreEqual("Limit", closedOrders[2].Type);
            Assert.AreEqual("Buy", closedOrders[2].Side);
            Assert.AreEqual("Cancelled", closedOrders[2].Status);

            Assert.AreEqual(247, closedOrders[1].Price);
            Assert.AreEqual(3, closedOrders[1].Volume);
            Assert.AreEqual(0, closedOrders[1].VolumeExecuted);
            Assert.AreEqual(3, closedOrders[1].OpenQuantity);
            Assert.AreEqual("Limit", closedOrders[1].Type);
            Assert.AreEqual("Buy", closedOrders[1].Side);
            Assert.AreEqual("Cancelled", closedOrders[1].Status);

            Assert.AreEqual(0, closedOrders[0].Price);
            Assert.AreEqual(9, closedOrders[0].Volume);
            Assert.AreEqual(9, closedOrders[0].VolumeExecuted);
            Assert.AreEqual(0, closedOrders[0].OpenQuantity);
            Assert.AreEqual("Market", closedOrders[0].Type);
            Assert.AreEqual("Sell", closedOrders[0].Side);
            Assert.AreEqual("Complete", closedOrders[0].Status);
            //------------------------------------------------------------------------

            //------------------- Trades -------------------------

            IHttpActionResult tradesResponse = GetTrades(tradeController);
            OkNegotiatedContentResult <object> okTradeResponse = (OkNegotiatedContentResult <object>)tradesResponse;
            IList <object>   tradesintermediateList            = (IList <object>)okTradeResponse.Content;
            IList <object[]> trades = new List <object[]>();

            for (int i = 0; i < tradesintermediateList.Count; i++)
            {
                object[] objects = tradesintermediateList[i] as object[];
                trades.Add(objects);
            }

            // These trades execute simultaneously, so when queried from the database and sorted as per the time when
            // they were saved in the database, they can be queried out of the order as we expected because they have the
            // same time. So we check if one trade came before the other and place assertions for it then for the other and
            // vice versa
            if ((decimal)trades[1][3] == 7)
            {
                Assert.AreEqual(250, trades[1][2]);      // Price
                Assert.AreEqual(7, trades[1][3]);        // Volume
                Assert.AreEqual("BTCLTC", trades[1][4]); // CurrencyPair
            }
            else if ((decimal)trades[1][3] == 2)
            {
                Assert.AreEqual(250, trades[1][2]);
                Assert.AreEqual(2, trades[1][3]);
                Assert.AreEqual("BTCLTC", trades[1][4]);
            }
            else
            {
                throw new Exception("No assertions could be made on expected trade");
            }

            if ((decimal)trades[0][3] == 7)
            {
                Assert.AreEqual(250, trades[0][2]);      // Price
                Assert.AreEqual(7, trades[0][3]);        // Volume
                Assert.AreEqual("BTCLTC", trades[0][4]); // CurrencyPair
            }
            else if ((decimal)trades[0][3] == 2)
            {
                Assert.AreEqual(250, trades[0][2]);      // Price
                Assert.AreEqual(2, trades[0][3]);        // Volume
                Assert.AreEqual("BTCLTC", trades[0][4]); // CurrencyPair
            }
            else
            {
                throw new Exception("No assertions could be made on expected trade");
            }
            //-----------------------------------------------------------------------
        }
Beispiel #18
0
 public TradeControllerTests() : base()
 {
     _tradeController = new TradeController(_shareRepository, _tradeRepository, _portfolioRepository);
 }
 /// <summary>
 /// Get Trades
 /// </summary>
 /// <param name="tradeController"></param>
 /// <returns></returns>
 private dynamic GetTrades(TradeController tradeController)
 {
     return(tradeController.GetTradeHistory(new TradeHistoryParams("", "")));
 }
Beispiel #20
0
 public void SetUp()
 {
     _tradeService    = new Mock <ITradeService>();
     _tradeController = new TradeController(_tradeService.Object);
 }
        private void InitTradeController(XElement controllerNode, EventBus eventBus, string workingDirectory)
        {
            var updatePeriod = (int)controllerNode.Descendants("UpdatePeriod").Single();
            var serverCooldownPeriod = (int)controllerNode.Descendants("ServerCooldownPeriod").Single();
            var tradeStartTime = (TimeSpan)controllerNode.Descendants("TradeStartTime").Single();

            TradeController = new TradeController(eventBus, Connector, RobotContext, workingDirectory, updatePeriod, serverCooldownPeriod, tradeStartTime);
        }