Example #1
0
    private void DoResearch()
    {
        //Set the Target Research
        _clickedButton = EventSystem.current.currentSelectedGameObject;
        string buttonName = _clickedButton.name;
        int    researchId = Int32.Parse(buttonName);

        Research          research          = null;
        CharacterResearch characterResearch = null;

        for (int i = 0; i < _researches.Count; i++)
        {
            if (_researches[i].Id == researchId)
            {
                research = _researches[i];
                break;
            }
        }
        if (research == null)
        {
            throw new Exception("Research is not available ");
        }
        research.Print();
        for (int i = 0; i < _characterResearches.Count; i++)
        {
            if (_characterResearches[i].ResearchId == researchId)
            {
                characterResearch = _characterResearches[i];
                break;
            }
        }
        int nextLevel = characterResearch != null ? characterResearch.Level + 1 : 1;

        //Check criteria
        if (!ResearchUpgradeIsValid(research))
        {
            _messagePanelHandler.ShowMessage("Invalid Research!", MessagePanel.PanelType.Ok);
            return;
        }
        //Process the pay
        var payAmount = research.CalculatePrice(nextLevel);

        if (_characterManager.CharacterSetting.Coin < payAmount)
        {
            _messagePanelHandler.ShowMessage("You don't have enough Coin ! ", MessagePanel.PanelType.Ok);
            return;
        }
        _characterManager.AddCharacterSetting("Coin", -payAmount);
        MakeResearching(research, nextLevel);
        NewResearchInProgress(researchId);
        _messagePanelHandler.ShowMessage(research.Name + " is in progress ! ", MessagePanel.PanelType.Ok);
    }
Example #2
0
    void Start()
    {
        _tooltip = Tooltip.Instance();
        if (Research == null)
        {
            return;
        }

        var images  = GetComponentsInChildren <Image>();
        var texts   = GetComponentsInChildren <TextMeshProUGUI>();
        var buttons = GetComponentsInChildren <Button>();

        images[1].sprite = Research.GetSprite();
        texts[0].text    = "Level " + Level;
        if (Level >= Research.MaxLevel)
        {
            buttons[0].interactable = false;
            texts[1].text           = "MAX";
        }
        else
        {
            texts[1].text = Research.CalculatePrice(Level).ToString();
        }
    }