private IEnumerator AISelectContract()
    {
        List <Contract> availableContracts = new List <Contract>();

        for (int i = 0; i < _contractButtons.Count; i++)
        {
            if (!_contractButtons[i].taken)
            {
                availableContracts.Add(_contractButtons[i].contract);
            }
        }
        if (availableContracts.Count > 1)
        {
            yield return(new WaitForSeconds(Random.Range(2.5f, 3.5f)));
        }
        else
        {
            yield return(new WaitForSeconds(1f));
        }


        Contract c = AIAuctionManager.ChooseContractFromList(availableContracts);

        for (int i = 0; i < _contractButtons.Count; i++)
        {
            if (_contractButtons[i].contract == c)
            {
                _contractButtons[i].GetComponent <Button>().onClick.Invoke();
            }
        }
    }
    // Update is called once per frame
    void Update()
    {
        _timer -= Time.deltaTime;

        _moneyText.text = "Money: " + GameData.Instance.companies[playerID].money;
        _unitsText.text = currentOre + ": " + GameData.Instance.companies[playerID].oreSupplies[currentOre];


        if (!isAI)
        {
            if (Input.GetKeyUp(up) && currentPrice < _max && currentPrice < upperBound)
            {
                currentPrice++;
            }
            if (Input.GetKeyDown(down) && currentPrice > _min && currentPrice > lowerBound)
            {
                currentPrice--;
            }
        }

        else
        {
            //do AI movement!
            if (_timer < 0)
            {
                if (isBuyer)
                {
                    _AItargetPrice = AIAuctionManager.GetBuyPrice(playerID, currentOre);
                }
                else
                {
                    _AItargetPrice = AIAuctionManager.GetSellPrice(playerID, currentOre);
                }

                if (currentPrice > _AItargetPrice)
                {
                    currentPrice--;
                }
                else if (currentPrice < _AItargetPrice)
                {
                    currentPrice++;
                }
            }
        }


        if (_timer < 0)
        {
            _timer = .1f;
        }


        float pricePercent = (currentPrice - (float)_min) / (_max - (float)_min);
        float newY         = Mathf.Lerp(_floor.position.y, _ceiling.position.y, pricePercent);

        _playerObj.transform.position = new Vector3(_playerObj.transform.position.x, newY, 0);
    }
Ejemplo n.º 3
0
    private void Awake()
    {
        while (GameData.Instance.AIs.Count < GameData.Instance.numPlayers)
        {
            //DEFINE AI PERSONALITIES
            GameData.Instance.AIs.Add(AIManager.GetRandomPersonality());
        }

        while (GameData.Instance.playerFloors.Count < GameData.Instance.numPlayers)
        {
            Dictionary <Mine, int> floors = new Dictionary <Mine, int>();
            floors.Add(Mine.IronMine, 0);
            floors.Add(Mine.JellyMine, 0);
            floors.Add(Mine.CoalMine, 0);
            //floors.Add(Mine.Entry, 0);
            GameData.Instance.playerFloors.Add(floors);
        }

        while (GameData.Instance.playerOreSupplies.Count < GameData.Instance.numPlayers)
        {
            Dictionary <TileType, int> ores = new Dictionary <TileType, int>();
            ores.Add(TileType.Iron, 0);
            ores.Add(TileType.Diamond, 0);
            ores.Add(TileType.Food, 0);
            ores.Add(TileType.Coal, 0);
            GameData.Instance.playerOreSupplies.Add(ores);
        }

        while (GameData.Instance.durabilityLevels.Count < GameData.Instance.numPlayers)
        {
            GameData.Instance.durabilityLevels.Add(60);
        }

        while (GameData.Instance.energyLevels.Count < GameData.Instance.numPlayers)
        {
            GameData.Instance.energyLevels.Add(60);
        }

        while (GameData.Instance.coalLevels.Count < GameData.Instance.numPlayers)
        {
            GameData.Instance.coalLevels.Add(60);
        }

        while (GameData.Instance.playerMoney.Count < GameData.Instance.numPlayers)
        {
            GameData.Instance.playerMoney.Add(1000);
        }

        while (GameData.Instance.playerLocalLocations.Count < GameData.Instance.numPlayers)
        {
            GameData.Instance.playerLocalLocations.Add(Vector3.zero);
        }

        while (GameData.Instance.playerMineLocations.Count < GameData.Instance.numPlayers)
        {
            GameData.Instance.playerMineLocations.Add(Mine.Entry);
        }

        while (GameData.Instance.playerElevators.Count < GameData.Instance.numPlayers)
        {
            GameData.Instance.playerElevators.Add(new List <ElevatorData>());
        }

        while (GameData.Instance.gridLocations.Count < GameData.Instance.numPlayers)
        {
            GameData.Instance.gridLocations.Add(Vector3.zero);
        }


        if (!GameData.Instance.setUpComplete)
        {
            GameData.Instance.setUpComplete = true;

            //COMPANY SETUP
            //Note: index 0 is the player
            for (int i = 0; i < GameData.Instance.numAuctionAi + 1; i++)
            {
                Company c = new Company();
                c.personality = AIAuctionManager.GetRandomPersonality();
                c.companyName = (i == 0)? "Lucky Vale Mining" : GameData.Instance.nameData.GetRandomName();
                Debug.Log(c.companyName);

                Dictionary <TileType, int> ores = new Dictionary <TileType, int>();
                ores.Add(TileType.Iron, 40);
                ores.Add(TileType.Diamond, 0);
                ores.Add(TileType.Food, 40);
                ores.Add(TileType.Coal, 40);
                c.oreSupplies = ores;

                c.money  = 1000;
                c.rating = 5;

                c.contract = new Contract();

                GameData.Instance.companies.Add(c);
            }
        }
    }