public void CheckReduceMpUsageReducesMpUsage() { var ability = new AttackAbility { baseMpUsage = 40, mpUsage = 40, attributes = new List <AbilityAttribute>(), damage = 1f, dotDamage = 0f, dotTime = 0f, element = Element.bashing, isRanged = true, level = 1, points = 70f, radius = 0, xp = 0 }; var skillTreeNode = new AbilitySkillTreeNode(ability, new List <AbilitySkillTreeNode>()); skillTreeNode.effects.Add(new SoulGemEnhancement { type = "reduceMpUsage", effect = -5 }); skillTreeNode.Activate(); Assert.Less(ability.mpUsage, 40); Assert.Less(ability.baseMpUsage, 40); }
public AbilitySkillTree(Ability ability) { int layers = RNG.Int(2, 4); int baseNodeCount = RNG.Int(2, 4); nodesByLayer.Add(new List <AbilitySkillTreeNode>()); var allNodes = new List <AbilitySkillTreeNode>(); for (int i = 0; i < baseNodeCount; i++) { var newNode = new AbilitySkillTreeNode(ability, allNodes); allNodes.Add(newNode); baseNodes.Add(newNode); newNode.clickable = true; nodesByLayer[0].Add(newNode); } int layerCounter = 1; while (layerCounter < layers) { int nodeCount = RNG.Int(2, 4); nodesByLayer.Add(new List <AbilitySkillTreeNode>()); for (int i = 0; i < nodeCount; i++) { var newNode = new AbilitySkillTreeNode(ability, allNodes); allNodes.Add(newNode); var parentNumber = RNG.Int(0, nodesByLayer[layerCounter - 1].Count); var parent = nodesByLayer[layerCounter - 1][parentNumber]; parent.children.Add(newNode); nodesByLayer[layerCounter].Add(newNode); } layerCounter++; } CleanUpNodeList(); }
private void DrawLinesForNode(AbilitySkillTreeNode parent, AbilitySkillTreeNode node) { DrawLine(parent, node); foreach (var child in node.children) { DrawLinesForNode(node, child); } }
private void ReconstructNode(AbilitySkillTree ast, AbilitySkillTreeNode node, int depth) { if (ast.nodesByLayer.Count < depth + 1) { ast.nodesByLayer.Add(new List <AbilitySkillTreeNode>()); } ast.nodesByLayer[depth].Add(node); foreach (var child in node.children) { ReconstructNode(ast, child, depth + 1); } }
private void AddNodeData(AbilitySkillTreeNode node, int level) { if (nodesByLayer.Count <= level) { nodesByLayer.Add(new List <AbilitySkillTreeNode>()); } nodesByLayer[level].Add(node); foreach (var subnode in node.children) { AddNodeData(subnode, level + 1); } }
public AbilitySkillTreeNode ConvertTo() { var obj = new AbilitySkillTreeNode { active = active, clickable = clickable }; foreach (var child in children) { obj.children.Add(child.ConvertTo()); } foreach (var effect in effects) { obj.effects.Add(effect.ConvertTo()); } return(obj); }
public static SavedSkillTreeNode ConvertFrom(AbilitySkillTreeNode node) { var sstn = new SavedSkillTreeNode() { clickable = node.clickable, active = node.active }; foreach (var child in node.children) { sstn.children.Add(ConvertFrom(child)); } foreach (var effect in node.effects) { sstn.effects.Add(SavedSoulGemEnhancement.ConvertFrom(effect)); } return(sstn); }
private void DrawLine(AbilitySkillTreeNode parent, AbilitySkillTreeNode child) { var lineObj = Instantiate(linePrefab); lineObj.transform.SetParent(transform); var uiLine = lineObj.GetComponent <UILine>(); var rectTransform = lineObj.GetComponent <RectTransform>(); rectTransform.anchoredPosition = GetComponent <RectTransform>().anchoredPosition; rectTransform.anchorMin = new Vector2(0, 0); rectTransform.anchorMax = new Vector2(1, 1); rectTransform.pivot = new Vector2(0.5f, 0.5f); rectTransform.sizeDelta = GetComponent <RectTransform>().rect.size; rectTransform.localScale = new Vector2(0.5f, 0.5f); var sizeX = 1000 - this.rectTransform.offsetMin.x - this.rectTransform.offsetMax.x; var sizeY = 1000 - this.rectTransform.offsetMin.y - this.rectTransform.offsetMax.y; var x1 = (parent.position.x * sizeX / width) - this.rectTransform.offsetMin.x; var x2 = (child.position.x * sizeX / width) - this.rectTransform.offsetMin.x; var y1 = (parent.position.y * sizeY / height) - this.rectTransform.offsetMin.y; var y2 = (child.position.y * sizeY / height) - this.rectTransform.offsetMin.y; uiLine.Initialize((int)sizeX, (int)sizeY, (int)x1, (int)y1, (int)x2, (int)y2); }
public void Initialize(AbilitySkillTreeNode node) { enhancements = node.effects; this.node = node; initStatus = 1; }