void Awake()
 {
     variables      = GameObject.FindObjectOfType(typeof(Variables)) as Variables;
     shareHolder    = GameObject.FindObjectOfType(typeof(ShareHolder)) as ShareHolder;
     lastTradesList = GameObject.FindObjectOfType(typeof(LastTradesList)) as LastTradesList;
     buyOrder       = GameObject.FindObjectOfType(typeof(BuyOrder)) as BuyOrder;
     sellOrder      = GameObject.FindObjectOfType(typeof(SellOrder)) as SellOrder;
 }
    public void Exchange(float EP, float EA, float EF, bool matchFound, string buyUser, string sellUser, bool whoIsMaker)
    {
        if (matchFound == true)
        {
            if (buyOrder.buyOrders[0].Amount >= sellOrder.sellOrders[0].Amount)
            {
                EA = sellOrder.sellOrders[0].Amount;
                EF = sellOrder.sellOrders[0].Amount * EP;
            }
            else
            {
                EA = buyOrder.buyOrders[0].Amount;
                EF = buyOrder.buyOrders[0].Amount * EP;
            }
            shareHolder.ShareHolders();
            //Now that Price, Amount and Funds variables for this transaction have been calculated, let's make the transaction!
            int buyerIndex  = shareHolder.GetIndexOfUser(buyUser);
            int sellerIndex = shareHolder.GetIndexOfUser(sellUser);

            shareHolder.ShareholdersList[buyerIndex].Shares          += EA * variables.Fee;      //Updates the buyer assets in ShareHolderList
            shareHolder.ShareholdersList[buyerIndex].AvailableShares += EA * variables.Fee;
            shareHolder.ShareholdersList[buyerIndex].Funds           -= EF;

            shareHolder.ShareholdersList[sellerIndex].Shares         -= EA;     //Updates the seller assets in ShareHolderList
            shareHolder.ShareholdersList[sellerIndex].Funds          += EF * variables.Fee;
            shareHolder.ShareholdersList[sellerIndex].AvailableFunds += EF * variables.Fee;

            variables.Balance        += EF * (1 - variables.Fee);
            variables.DividendsShare += EA * (1 - variables.Fee);

            buyOrder.buyOrders[0].Amount -= EA;
            buyOrder.buyOrders[0].Funds  -= EF;

            sellOrder.sellOrders[0].Amount -= EA;
            sellOrder.sellOrders[0].Funds  -= EF;

            var order = new LastTradesList(buyOrder.buyOrders[0].Username, EA, EF, EP);
            lastTradesList.lastTradesList.Add(order);

            variables.lastPrice      = lastTradesList.lastTradesList[0].Price;
            variables.totalValuation = variables.totalShares * variables.lastPrice;

            matchFound = false;

            DeleteNullOrder();
            buyOrder.DisplayBuyList();
            sellOrder.DisplaySellList();
            shareHolder.ShareHolders(); //Actualizar la lista de accionistas
            CheckMatch();               //Checks for another match
        }
    }
    public void Start()
    {
        if (lastTradesList == null)
        {
            lastTradesList = new List <LastTradesList>();
            for (int i = 0; i <= 9; i++)
            {
                var order = new LastTradesList("System", 0, 0, 0);
                lastTradesList.Add(order);
            }
        }
        var order1 = new LastTradesList("System", 0, 0, 0);

        lastTradesList.Add(order1);
        InvokeRepeating("DisplayLastTradesList", 1, 1);
    }
Esempio n. 4
0
 void Start()
 {
     SetPriceText();
     SetAmountText();
     SetLoanFundsText();
     Hour           = 0;
     Day            = 1;
     buyOrder       = GameObject.FindObjectOfType(typeof(BuyOrder)) as BuyOrder; //Funciona!!!!! Sirve para poder llamar funciones de otros scripts
     sellOrder      = GameObject.FindObjectOfType(typeof(SellOrder)) as SellOrder;
     loanController = GameObject.FindObjectOfType(typeof(LoanController)) as LoanController;
     shareHolder    = GameObject.FindObjectOfType(typeof(ShareHolder)) as ShareHolder;
     lastTradesList = GameObject.FindObjectOfType(typeof(LastTradesList)) as LastTradesList;
     matchEngine    = GameObject.FindObjectOfType(typeof(MatchEngine)) as MatchEngine;
     InvokeRepeating("DistributeBalance", 1, 1);
     InvokeRepeating("GetData", 5, 5);
     InvokeRepeating("SetMarketData", 1, 1);
     InvokeRepeating("GetTime", 1, 1);
     InvokeRepeating("TimeContador", 0.1f, 0.1f);
 }