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 }
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; }
// ----------------------------------------------------------------------------------- // 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); } }