示例#1
0
    public CreatureAppendage LoadAppendage(int index)
    {
        CreatureAppendage appendage = new CreatureAppendage();
        CreatureAppendage source    = appendagePrototypes[index];
        CombatAction      act;

        appendage.name                    = source.name;
        appendage.prototypeIndex          = source.prototypeIndex;
        appendage.animationControllerName = source.animationControllerName;
        appendage.animations              = source.animations;


        //create combat action for the limb
        for (int i = 0; i < source.combatActions.Count; i++)
        {
            act                    = new CombatAction();
            act.name               = source.combatActions[i].name;
            act.range              = source.combatActions[i].range;
            act.damage             = source.combatActions[i].damage;
            act.windupDuration     = source.combatActions[i].windupDuration;
            act.attackDuration     = source.combatActions[i].attackDuration;
            act.cooldownDuration   = source.combatActions[i].cooldownDuration;
            act.windupAnimation    = source.combatActions[i].windupAnimation;
            act.attackAnimation    = source.combatActions[i].attackAnimation;
            act.backswingAnimation = source.combatActions[i].backswingAnimation;
            appendage.combatActions.Add(act);
        }
        return(appendage);
    }
示例#2
0
    private void readOrganAppendageNode(XmlProcessor xml)
    {
        string            node;
        CreatureAppendage appendage = new CreatureAppendage();

        //Get Tags
        appendage.name = "default";
        appendage.animationControllerName = "none";

        XmlAttribute attribute = xml.getNextAttribute();

        while (attribute.name != "")
        {
            switch (attribute.name)
            {
            case "name":
                appendage.name = attribute.value;
                break;

            case "animationControllerName":
                appendage.animationControllerName = attribute.value;
                break;
            }
            attribute = xml.getNextAttribute();
        }

        //Get Subnodes
        node = xml.getNextNode();
        while (node != "/OrganAppendageNode")
        {
            switch (node)
            {
            case "AnimationNode":
                appendage.animations.Add(readAnimationNode(xml));
                break;

            case "ActionNode":
                appendage.combatActions.Add(readActionNode(xml));
                break;
            }
            node = xml.getNextNode();
        }
        appendage.prototypeIndex = appendagePrototypes.Count;
        appendagePrototypes.Add(appendage);
    }
示例#3
0
    public void AttachAppendage(CreatureLimb organ, CreatureAppendage appendage)
    {
        GameObject obj;
        Transform  display = organ.root.display;

        obj = Instantiate(Resources.Load <GameObject>("Prefabs/Characters/CreatureDisplayNode"));
        obj.transform.parent = organ.obj.transform;
        obj.GetComponent <SpriteRenderer>().transform.position  = new Vector3(display.transform.position.x + organ.offset.x, display.transform.position.y + organ.offset.y, organ.offset.z);
        obj.GetComponent <Animator>().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController>(appendage.animationControllerName);
        for (int i = 0; i < appendage.combatActions.Count; i++)
        {
            appendage.combatActions[i].limb = organ;
        }
        appendage.obj    = obj;
        appendage.root   = organ.root;
        appendage.offset = organ.appendageOffsets[0];
        organ.appendage  = appendage;
    }