Example #1
0
    private void Populate()
    {
        Character currentCharacter = SelectedCharacter();

        if (currentCharacter == null)
        {
            WindowTitle.text = "No Character Selected";
            return;
        }
        if (edit)
        {
            WindowTitle.text = "Edit " + currentCharacter.Name;
        }
        else
        {
            WindowTitle.text = "View " + currentCharacter.Name;
        }
        Name.text       = currentCharacter.Name;
        MaxHP.text      = currentCharacter.MaxHP.ToString();
        Speed.text      = currentCharacter.Speed.ToString();
        Experience.text = currentCharacter.Experience.ToString();

        if (!edit)
        {
            Name.interactable       = false;
            MaxHP.interactable      = false;
            Speed.interactable      = false;
            Experience.interactable = false;
            Abilities.interactable  = false;
            Skills.interactable     = false;
            Modifiers.interactable  = false;
        }
        else
        {
            Name.interactable       = true;
            MaxHP.interactable      = true;
            Speed.interactable      = true;
            Experience.interactable = true;
            Abilities.interactable  = true;
            Skills.interactable     = true;
            Modifiers.interactable  = true;
        }

        if (Abilities == null)
        {
            return;
        }
        string[] abilities = currentCharacter.GetAbilities();
        foreach (string ability in abilities)
        {
            InputRow instance = Abilities.AddRow();
            instance.RowElements[0].GetComponent <Text>().text       = ability;
            instance.RowElements[1].GetComponent <InputField>().text =
                currentCharacter.GetAbilityBase(ability).ToString();
            instance.RowElements[2].GetComponent <Toggle>().isOn =
                currentCharacter.HasProficiency(ability);
            if (!edit)
            {
                instance.RowElements[1].GetComponent <InputField>().interactable = false;
                instance.RowElements[2].GetComponent <Toggle>().interactable     = false;
                instance.interactable = false;
            }
        }

        if (Skills == null)
        {
            return;
        }
        string[] skills = currentCharacter.GetSkills();
        foreach (string skill in skills)
        {
            InputRow instance = Skills.AddRow();
            instance.RowElements[0].GetComponent <Text>().text       = skill;
            instance.RowElements[1].GetComponent <InputField>().text =
                currentCharacter.GetSkillType(skill);
            instance.RowElements[2].GetComponent <Toggle>().isOn =
                currentCharacter.HasProficiency(skill);
            if (!edit)
            {
                instance.RowElements[1].GetComponent <InputField>().interactable = false;
                instance.RowElements[2].GetComponent <Toggle>().interactable     = false;
                instance.interactable = false;
            }
        }

        if (Modifiers == null)
        {
            return;
        }
        string[] modifierTypes = currentCharacter.Modifiers.GetTypes();
        foreach (string type in modifierTypes)
        {
            foreach (Modifier mod in currentCharacter.Modifiers.Get(type))
            {
                InputRow instance = Modifiers.AddRow();
                instance.RowElements[0].GetComponent <InputField>().SetTextWithoutNotify(mod.Name);
                instance.RowElements[1].GetComponent <InputField>().SetTextWithoutNotify(mod.Type);
                instance.RowElements[2].GetComponent <Toggle>().isOn = mod.Active;
                instance.RowElements[3].GetComponent <InputField>().SetTextWithoutNotify(mod.Expr);
                instance.RowElements[4].GetComponent <InputField>().SetTextWithoutNotify(mod.Condition);
                if (!edit)
                {
                    instance.RowElements[0].GetComponent <InputField>().interactable = false;
                    instance.RowElements[1].GetComponent <InputField>().interactable = false;
                    instance.RowElements[2].GetComponent <Toggle>().interactable     = false;
                    instance.RowElements[3].GetComponent <InputField>().interactable = false;
                    instance.RowElements[4].GetComponent <InputField>().interactable = false;
                    instance.interactable = false;
                }
            }
        }
    }