Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
    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();
    }
Exemplo n.º 3
0
 private void DrawLinesForNode(AbilitySkillTreeNode parent, AbilitySkillTreeNode node)
 {
     DrawLine(parent, node);
     foreach (var child in node.children)
     {
         DrawLinesForNode(node, child);
     }
 }
Exemplo n.º 4
0
 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);
     }
 }
Exemplo n.º 5
0
 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);
     }
 }
Exemplo n.º 6
0
    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);
    }
Exemplo n.º 7
0
    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);
    }
Exemplo n.º 8
0
    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;
 }