public static ItemSkillTree ConvertToTree(string save, ItemUpdate source) { string[] nodeListSave; string[] nodeDetails; ItemSkillTree tree = new ItemSkillTree(); nodeListSave = save.Split(';'); tree.m_ItemSource = source; string[] a; ItemNode bufferNode; foreach (string nodeSave in nodeListSave) { bufferNode = null; nodeDetails = nodeSave.Split(','); if (nodeDetails.Length != 8) { AnotherRpgMod.Instance.Logger.Warn("Item tree corrupted, reseting tree"); tree = new ItemSkillTree(); tree.Init(source); return(tree); } bufferNode = (ItemNode)ItemNodeAtlas.GetCorrectNode(int.Parse(nodeDetails[0])); a = nodeDetails[6].Split(':'); bufferNode.Init(tree, tree.GetSize, int.Parse(nodeDetails[4]), int.Parse(nodeDetails[5]), new Vector2(int.Parse(a[0]), int.Parse(a[1]))); //Ignore it if there is no neighboor if (nodeDetails[1] != "") { a = nodeDetails[1].Split(':'); foreach (string neightboor in a) { bufferNode.AddNeightboor(int.Parse(neightboor)); } } bufferNode.ForceLockNode(int.Parse(nodeDetails[2])); bufferNode.SetLevel = int.Parse(nodeDetails[3]); if (nodeDetails[7] != "") { bufferNode.LoadValue(nodeDetails[7]); } tree.AddNode(bufferNode); } return(tree); }
public int AddNewRandomNode(int Source, Vector2 position, List <int> IDList, bool Ascend = false) { int ID = IDList.Count; ItemNode Node = (ItemNode)ItemNodeAtlas.GetCorrectNode(IDList[Mathf.RandomInt(0, ID)]); if (!Ascend) { float power = Mathf.Clamp((position.Y / 250) + (Math.Abs(position.X) / 300) + Mathf.Random(-0.35f, 0.35f), 0, 45); int level = 3 + (int)power; int requirement = Mathf.FloorInt(1 + power * 0.75f); Node.Init(this, m_nodeList.Count, level, requirement, position); Node.SetPower(1 + power); if (Source != -1) { Node.AddNeightboor(Source); } m_nodeList.Add(Node); } return(m_nodeList.Count - 1); }
public static ItemSkillTree ConvertToTree(string save, ItemUpdate source, int evoPoint, int AscPoint) { string[] nodeListSave; string[] nodeDetails; ItemSkillTree tree = new ItemSkillTree(); nodeListSave = save.Split(';'); tree.m_ItemSource = source; string[] a; ItemNode bufferNode; foreach (string nodeSave in nodeListSave) { bufferNode = null; nodeDetails = nodeSave.Split('|'); if (nodeDetails.Length != 8) { AnotherRpgMod.Instance.Logger.Error(source.ItemName); AnotherRpgMod.Instance.Logger.Error("Item tree corrupted, reseting tree"); AnotherRpgMod.Instance.Logger.Error(nodeSave); tree = new ItemSkillTree(); tree.MaxEvolutionPoints = evoPoint; tree.MaxAscendPoints = AscPoint; tree.Init(source); tree.Reset(true); tree.EvolutionPoints = tree.MaxEvolutionPoints; tree.AscendPoints = tree.MaxAscendPoints; if (tree.AscendPoints > 0) { tree.ExtendTree(Mathf.Clamp(Mathf.CeilInt(Mathf.Pow(source.baseCap / 3f, 0.95)), 5, 99) * tree.AscendPoints); } return(tree); } bufferNode = (ItemNode)ItemNodeAtlas.GetCorrectNode(int.Parse(nodeDetails[0])); a = nodeDetails[6].Split(':'); bufferNode.Init(tree, tree.GetSize, int.Parse(nodeDetails[4]), int.Parse(nodeDetails[5]), new Vector2(int.Parse(a[0]), int.Parse(a[1]))); //Ignore it if there is no neighboor if (nodeDetails[1] != "") { a = nodeDetails[1].Split(':'); foreach (string neightboor in a) { bufferNode.AddNeightboor(int.Parse(neightboor)); } } bufferNode.ForceLockNode(int.Parse(nodeDetails[2])); bufferNode.SetLevel = int.Parse(nodeDetails[3]); if (nodeDetails[7] != "") { bufferNode.LoadValue(nodeDetails[7]); } tree.AddNode(bufferNode); } return(tree); }