public void initalize(string ID, ESkillType skillType, object ability, object[] data = null)
    {
        this.ID      = ID;
        this.name    = ID;
        this.Type    = skillType;
        this.Ability = ability;

        SkillData skillData = ReadDatabase.Instance.SkillInfo[ID.ToUpper()];

        foreach (string key in skillData.States.Keys)
        {
            ESkillAction state = (ESkillAction)Extensions.GetEnum(ESkillAction.DROP.GetType(), key.ToUpper());
            listState.Add(state, getClassSkill(state));
        }

        //first element
        var enumerator = listState.Keys.GetEnumerator();

        enumerator.MoveNext();

        //set Property for state
        setPropertyState(skillType, data);
        //set Property from database
        setPropertyFromDatabase();

        FSM.Configure(this, listState[enumerator.Current]);
        stateAction = enumerator.Current;

        runResources();
    }
    SkillState getClassSkill(ESkillAction type)
    {
        SkillState s = null;

        switch (type)
        {
        case ESkillAction.ONCE:
            s = new SkillStateOnce();
            break;

        case ESkillAction.DROP:
            s = new SkillStateDrop();
            break;

        case ESkillAction.EXPLOSION:
            s = new SkillStateExplosion();
            break;

        case ESkillAction.TRAP:
            s = new SkillStateTrap();
            break;

        case ESkillAction.FADE:
            s = new SkillStateFade();
            break;

        case ESkillAction.BUFF:
            s = new SkillStateBuff();
            break;

        case ESkillAction.ARMAGGEDDON:
            s = new SkillStateArmaggeddon();
            break;

        case ESkillAction.DESTROY:
            s = new SkillStateDestroy();
            break;
        }
        return(s);
    }
Ejemplo n.º 3
0
    public void changeResources(ESkillAction stateAction)
    {
        if(stateAction == ESkillAction.DESTROY)
        {
            MonoBehaviour.Destroy(controller.gameObject);
            return;
        }

        currentState = stateAction;
        float timeFrame = (float)getValueFromDatabase(EAnimationDataType.TIME_FRAME);
        string resourcePath = getValueFromDatabase(EAnimationDataType.RESOURCE_PATH).ToString().Trim();
        object[] specificLoop = (object[])getValueFromDatabase(EAnimationDataType.SPECIFIC_LOOP);
        EventDelegate callback = null;

        switch (stateAction)
        {
            case ESkillAction.ONCE:
                animationFrames.createAnimation(ESkillAction.ONCE, "Image/Skill/" + resourcePath, timeFrame, false,
                    (bool)specificLoop[0], (int[])specificLoop[1]);
                callback = new EventDelegate(controller.listState[stateAction].goNextState);
                break;
            case ESkillAction.DROP:
                animationFrames.createAnimation(ESkillAction.DROP, "Image/Skill/" + resourcePath, timeFrame, true,
                    (bool)specificLoop[0], (int[])specificLoop[1]);
                break;
            case ESkillAction.TRAP:
                animationFrames.createAnimation(ESkillAction.TRAP, "Image/Skill/" + resourcePath, timeFrame, true,
                    (bool)specificLoop[0], (int[])specificLoop[1]);
                break;
            case ESkillAction.BUFF:
                animationFrames.createAnimation(ESkillAction.BUFF, "Image/Skill/" + resourcePath, timeFrame, true,
                    (bool)specificLoop[0], (int[])specificLoop[1]);
                break;
            case ESkillAction.ARMAGGEDDON:
                animationFrames.createAnimation(ESkillAction.ARMAGGEDDON, "Image/Skill/" + resourcePath, timeFrame, true,
                    (bool)specificLoop[0], (int[])specificLoop[1]);
                break;
            case ESkillAction.EXPLOSION:
                animationFrames.createAnimation(ESkillAction.EXPLOSION, "Image/Explosion/" + resourcePath, timeFrame, true,
                    (bool)specificLoop[0], (int[])specificLoop[1]);
                callback = new EventDelegate(((SkillStateExplosion)controller.listState[ESkillAction.EXPLOSION]).destroy);
                break;
            case ESkillAction.FADE:
                break;
        }

        //set render queue
        //if (stateAction == ESkillAction.EXPLOSION)
        //{
        //    SpriteRenderer render = this.GetComponent<SpriteRenderer>();
        //}
        //else
        //{
        GetComponent<SpriteRenderer>().material.renderQueue = GameConfig.RenderQueueSkill;
        //}

        object result = getValueFromDatabase(EAnimationDataType.EVENT);
        if (result != null)
        {
            object[] events = (object[])result;
            if (events.Length != 0)
            {
                animationFrames.addEvent(events, callback, false);
            }
        }

        if (controller.getCurrentState().hasCollider)
            controller.getCurrentState().initCollider(animationFrames.frameLength, animationFrames.timeFrame);
    }
    SkillState getClassSkill(ESkillAction type)
    {
        SkillState s = null;

        switch (type)
        {
            case ESkillAction.ONCE:
                s = new SkillStateOnce();
                break;
            case ESkillAction.DROP:
                s = new SkillStateDrop();
                break;
            case ESkillAction.EXPLOSION:
                s = new SkillStateExplosion();
                break;
            case ESkillAction.TRAP:
                s = new SkillStateTrap();
                break;
            case ESkillAction.FADE:
                s = new SkillStateFade();
                break;
            case ESkillAction.BUFF:
                s = new SkillStateBuff();
                break;
            case ESkillAction.ARMAGGEDDON:
                s = new SkillStateArmaggeddon();
                break;
            case ESkillAction.DESTROY:
                s = new SkillStateDestroy();
                break;
        }
        return s;
    }
    public void initalize(string ID, ESkillType skillType, object ability, object[] data = null)
    {
        this.ID = ID;
        this.name = ID;
        this.Type = skillType;
        this.Ability = ability;

        SkillData skillData = ReadDatabase.Instance.SkillInfo[ID.ToUpper()];
        foreach (string key in skillData.States.Keys)
        {
            ESkillAction state = (ESkillAction)Extensions.GetEnum(ESkillAction.DROP.GetType(), key.ToUpper());
            listState.Add(state, getClassSkill(state));
        }

        //first element
        var enumerator = listState.Keys.GetEnumerator();
        enumerator.MoveNext();

        //set Property for state
        setPropertyState(skillType, data);
        //set Property from database
        setPropertyFromDatabase();

        FSM.Configure(this, listState[enumerator.Current]);
        stateAction = enumerator.Current;

        runResources();
    }
Ejemplo n.º 6
0
    public void changeResources(ESkillAction stateAction)
    {
        if (stateAction == ESkillAction.DESTROY)
        {
            MonoBehaviour.Destroy(controller.gameObject);
            return;
        }

        currentState = stateAction;
        float  timeFrame    = (float)getValueFromDatabase(EAnimationDataType.TIME_FRAME);
        string resourcePath = getValueFromDatabase(EAnimationDataType.RESOURCE_PATH).ToString().Trim();

        object[]      specificLoop = (object[])getValueFromDatabase(EAnimationDataType.SPECIFIC_LOOP);
        EventDelegate callback     = null;

        switch (stateAction)
        {
        case ESkillAction.ONCE:
            animationFrames.createAnimation(ESkillAction.ONCE, "Image/Skill/" + resourcePath, timeFrame, false,
                                            (bool)specificLoop[0], (int[])specificLoop[1]);
            callback = new EventDelegate(controller.listState[stateAction].goNextState);
            break;

        case ESkillAction.DROP:
            animationFrames.createAnimation(ESkillAction.DROP, "Image/Skill/" + resourcePath, timeFrame, true,
                                            (bool)specificLoop[0], (int[])specificLoop[1]);
            break;

        case ESkillAction.TRAP:
            animationFrames.createAnimation(ESkillAction.TRAP, "Image/Skill/" + resourcePath, timeFrame, true,
                                            (bool)specificLoop[0], (int[])specificLoop[1]);
            break;

        case ESkillAction.BUFF:
            animationFrames.createAnimation(ESkillAction.BUFF, "Image/Skill/" + resourcePath, timeFrame, true,
                                            (bool)specificLoop[0], (int[])specificLoop[1]);
            break;

        case ESkillAction.ARMAGGEDDON:
            animationFrames.createAnimation(ESkillAction.ARMAGGEDDON, "Image/Skill/" + resourcePath, timeFrame, true,
                                            (bool)specificLoop[0], (int[])specificLoop[1]);
            break;

        case ESkillAction.EXPLOSION:
            animationFrames.createAnimation(ESkillAction.EXPLOSION, "Image/Explosion/" + resourcePath, timeFrame, true,
                                            (bool)specificLoop[0], (int[])specificLoop[1]);
            callback = new EventDelegate(((SkillStateExplosion)controller.listState[ESkillAction.EXPLOSION]).destroy);
            break;

        case ESkillAction.FADE:
            break;
        }

        //set render queue
        //if (stateAction == ESkillAction.EXPLOSION)
        //{
        //    SpriteRenderer render = this.GetComponent<SpriteRenderer>();
        //}
        //else
        //{
        GetComponent <SpriteRenderer>().material.renderQueue = GameConfig.RenderQueueSkill;
        //}

        object result = getValueFromDatabase(EAnimationDataType.EVENT);

        if (result != null)
        {
            object[] events = (object[])result;
            if (events.Length != 0)
            {
                animationFrames.addEvent(events, callback, false);
            }
        }

        if (controller.getCurrentState().hasCollider)
        {
            controller.getCurrentState().initCollider(animationFrames.frameLength, animationFrames.timeFrame);
        }
    }