예제 #1
0
    public void CharacterLoad_UCE_Traits(Player player)
    {
#if _MYSQL
        var table = ExecuteReaderMySql("SELECT name FROM character_UCE_traits WHERE `character`=@character", new MySqlParameter("@character", player.name));
#elif _SQLITE
        var table = connection.Query <character_UCE_traits>("SELECT name FROM character_UCE_traits WHERE character = ?", player.name);
#endif
        foreach (var row in table)
        {
            UCE_TraitTemplate tmpl = UCE_TraitTemplate.dict[(row.name).GetStableHashCode()];
            player.UCE_Traits.Add(new UCE_Trait(tmpl));
        }
    }
    private void CharacterLoad_UCE_Traits(Player player)
    {
#if _SERVER
#if _MYSQL
        var table = ExecuteReaderMySql("SELECT name FROM character_UCE_traits WHERE `character`=@character", new MySqlParameter("@character", player.name));
#elif _SQLITE
        var table = connection.Query <character_UCE_traits>("SELECT name FROM character_UCE_traits WHERE character=?", player.name);
#endif
        foreach (var row in table)
        {
#if _MYSQL
            UCE_TraitTemplate tmpl = UCE_TraitTemplate.dict[((string)row[0]).GetDeterministicHashCode()];
            player.UCE_Traits.Add(new UCE_Trait(tmpl));
#elif _SQLITE
            UCE_TraitTemplate tmpl = UCE_TraitTemplate.dict[row.name.GetDeterministicHashCode()];
            player.UCE_Traits.Add(new UCE_Trait(tmpl));
#endif
        }
#endif
    }
예제 #3
0
    public string            name;                                              // name used to reference the database entry (cant save template directly // because synclist only support simple types)

    // constructors
    public UCE_Trait(UCE_TraitTemplate template)
    {
        name = template.name;
    }
예제 #4
0
    // -----------------------------------------------------------------------------------
    // Update
    // -----------------------------------------------------------------------------------
    private void Update()
    {
        if (gameObject.activeSelf && parentPanel.gameObject.activeSelf)
        {
            Player player = parentPanel.currentPlayer;
            if (!player)
            {
                return;
            }

            // -----

            traitPointsText.text = traitPoints.ToString() + "/" + player.UCE_TraitPoints.ToString();

            // ----- update trait list

            UIUtils.BalancePrefabs(slotPrefab.gameObject, traitPool.Count, content);

            for (int i = 0; i < traitPool.Count; ++i)
            {
                int icopy = i;

                UCE_UI_TraitSlot  slot = content.GetChild(icopy).GetComponent <UCE_UI_TraitSlot>();
                UCE_TraitTemplate tmpl = traitPool[icopy];

                bool bAllowed = true;

                // -- can afford
                if (traitPoints < tmpl.traitCost)
                {
                    bAllowed = false;
                }

                // -- not unique, not taken?
                if (currentTraits.Any(x => x.uniqueGroup == tmpl.uniqueGroup))
                {
                    bAllowed = false;
                }

                // -- not limited by class?
                if (tmpl.allowedClasses.Length > 0 && !tmpl.allowedClasses.Any(x => x == player.gameObject))
                {
                    bAllowed = false;
                }

                // -- enable/disable button add/remove trait
                if (currentTraits.Any(x => x == tmpl))
                {
                    slot.button.interactable = true;
                }
                else
                {
                    slot.button.interactable = bAllowed;
                }

                // -- trait exists already?
                if (currentTraits.Any(x => x == tmpl))
                {
                    slot.image.color = Color.black;
                }
                else
                {
                    slot.image.color = Color.white;
                }

                // -- set/unset trait per click
                slot.button.onClick.SetListener(() =>
                {
                    if (currentTraits.Any(x => x == tmpl))
                    {
                        currentTraits.Remove(tmpl);
                        traitPoints += tmpl.traitCost;
                    }
                    else
                    {
                        currentTraits.Add(tmpl);
                        traitPoints -= tmpl.traitCost;
                    }
                });

                slot.image.sprite    = tmpl.image;
                slot.tooltip.enabled = true;
                slot.tooltip.text    = tmpl.ToolTip();
            }
        }
        else
        {
            gameObject.SetActive(false);
        }
    }