Example #1
0
    private void showCharacter(Goblin c)
    {
        Open();

        levelUpScreen.Close();

        character = c;

        PlayerController.FollowGoblin = c;

        foreach (var generatedObject in generatedObjects)
        {
            Destroy(generatedObject);
        }
        generatedObjects.Clear();

        Name.text = c.name;
        var lvl = Goblin.GetLevel((int)c.Xp);

        ClassLevelText.text = "Level " + lvl + " " + ClassName(c.ClassType);
        ClassLevelText.GetComponent <OnValueHover>().Class = c.ClassType;
        //ClassLevelText.gameObject.SetActive(!c.WaitingOnClassSelection || !c.Alive());
        //ClassSelectionHolder.SetActive(c.WaitingOnClassSelection && c.Alive());

        levelUpButton.interactable = c.WaitingOnLevelup();

        if (c.WaitingOnLevelup())//LevelUps > 0 || c.WaitingOnClassSelection)
        {
            XpTextEntry.Value.text           = "LVL up";
            XpTextEntry.FillImage.fillAmount = 1;
            levelUpButton.interactable       = true;
        }
        else
        {
            XpTextEntry.Value.text           = c.Xp.ToString("F0") + "\n - \n" + Goblin.LevelCaps[lvl];
            XpTextEntry.FillImage.fillAmount = c.Xp / Goblin.LevelCaps[lvl];
        }
        HealthTextEntry.Value.text           = c.Health + "\n - \n" + c.HEA.GetStatMax();
        HealthTextEntry.FillImage.fillAmount = c.Health / (float)c.HEA.GetStatMax();
        //HealthTextEntry.ValueHover.Stat = c.HEA;
        ClassIcon.sprite = c.Alive() ? GameManager.GetClassImage(c.ClassType): GameManager.GetIconImage(GameManager.Icon.Dead);
        ClassIcon.GetComponent <OnValueHover>().Class = c.ClassType;

        //TODO: update current stats instead replacing
        foreach (var stat in c.Stats.Values)
        {
            var entry = Instantiate(StatEntry, StatEntry.transform.parent);

            var val = stat.GetStatMax();

            entry.Name.text  = stat.Type.ToString();
            entry.Value.text = val.ToString();
            var style = val > 3 ? FontStyles.Bold : FontStyles.Normal;
            var color = val > 3 ? entry.HighStatColor : val < 3 ? entry.LowStatColor : entry.Value.color;
            entry.Value.color    = color;
            entry.Name.fontStyle = entry.Value.fontStyle = style;
            entry.gameObject.SetActive(true);
            entry.ValueHover.Stat = stat;
            generatedObjects.Add(entry.gameObject);
        }

        //TODO: update current stats instead replacing
        foreach (var equipment in c.Equipped.Values.Where(v => v))
        {
            var entry = Instantiate(EquipmentInfo, EquipmentInfo.transform.parent);
            entry.text = equipment.EquipLocation + ": " + equipment.name;
            entry.gameObject.SetActive(true);
            var hover = entry.GetComponent <OnValueHover>();
            if (hover)
            {
                hover.ShowEquipment = true;
                hover.Equipment     = equipment;
            }

            generatedObjects.Add(entry.gameObject);
        }
    }