예제 #1
0
    public void StartTraining()
    {
        NonRelatedUnitTrainer inanimateMT = (mobTrainer as NonRelatedUnitTrainer);

        if (HUD.EnoughResources(inanimateMT.costArray, resTexts))
        {
            inanimateMT.StartTraining();
        }
    }
예제 #2
0
    private IEnumerator InanimateTrainer()
    {
        plusButton.onClick.AddListener(delegate { StartTraining(); });
        minusButton.onClick.AddListener(delegate { CancelTraining(); });
        NonRelatedUnitTrainer inanimateMT = mobTrainer as NonRelatedUnitTrainer;

        float[] currCostArray = GameManager.DuplicateArray(inanimateMT.costArray);
        int     resCount      = 0;

        for (int i = 0; i < inanimateMT.costArray.Length; i++)
        {
            if (inanimateMT.costArray[i] > 0)
            {
                resTexts[resCount].text    = inanimateMT.costArray[i].ToString("0");
                resImages[resCount].sprite = HUD.speciesResourceSpriteDick[inanimateMT.GetSpecies()][GameManager.resourceTypeArraytoDick[i]];
                resCount++;
            }
        }
        // set res positions
        float resTextWidth  = 0.2f;
        float resImageWidth = 0.1f;

        for (int i = 0; i < inanimateMT.costArray.Length; i++)
        {
            if (i < resCount)
            {
                float totalWidth   = resImageWidth + resTextWidth;
                float resImageMinX = 0.5f - (totalWidth / 2f) - (resCount - 1) * (totalWidth / 2f) + totalWidth * i;
                float resTextMinX  = resImageMinX + resImageWidth;
                resImages[i].gameObject.SetActive(true);
                resImages[i].rectTransform.anchorMin = new Vector2(resImageMinX, resImages[i].rectTransform.anchorMin.y);
                resImages[i].rectTransform.anchorMax = new Vector2(resTextMinX, resImages[i].rectTransform.anchorMax.y);
                resTexts[i].gameObject.SetActive(true);
                resTexts[i].rectTransform.anchorMin = new Vector2(resTextMinX, resTexts[i].rectTransform.anchorMin.y);
                resTexts[i].rectTransform.anchorMax = new Vector2(resTextMinX + resTextWidth, resTexts[i].rectTransform.anchorMax.y);
            }
            else
            {
                resImages[i].gameObject.SetActive(false);
                resTexts[i].gameObject.SetActive(false);
            }
        }
        while (gameObject.activeSelf)
        {
            CheckTrainer();
            for (int i = 0; i < currCostArray.Length; i++)
            {
                if (currCostArray[i] != inanimateMT.costArray[i])
                {
                    resTexts[i].text = inanimateMT.costArray[i].ToString();
                    currCostArray[i] = inanimateMT.costArray[i];
                }
            }
            if (inanimateMT.currentMobCount + inanimateMT.GetTrainingQueueCount() >= inanimateMT.mobTrainerStatsArray[0] && plusButton.gameObject.activeSelf)
            {
                plusButton.gameObject.SetActive(false);
            }
            else if (inanimateMT.currentMobCount + inanimateMT.GetTrainingQueueCount() < inanimateMT.mobTrainerStatsArray[0] && !plusButton.gameObject.activeSelf)
            {
                plusButton.gameObject.SetActive(true);
            }
            if (!mobTrainer.training && minusButton.gameObject.activeSelf)
            {
                minusButton.gameObject.SetActive(false);
            }
            else if (mobTrainer.training && !minusButton.gameObject.activeSelf)
            {
                minusButton.gameObject.SetActive(true);
            }
            yield return(null);
        }
    }