Ejemplo n.º 1
0
    IEnumerator ManageMove(int _Position)
    {
        if(mYPosition<1)
        {
            StartCoroutine(Die());
        }

        Debug.Log("Position : " + _Position + " " + mYPosition);
        List<LevelElement> lLevelElemenCaseCurrent = new List<LevelElement>();
        foreach(LevelElement lLevelElement in mLevel.mLevelElements)
        {
            if( (lLevelElement.mX == _Position) &&  (lLevelElement.mY == mYPosition))
            {
                lLevelElemenCaseCurrent.Add(lLevelElement);
            }
        }

        List<LevelElement> lLevelElemenCaseUp = new List<LevelElement>();
        foreach(LevelElement lLevelElement in mLevel.mLevelElements)
        {
            if( (lLevelElement.mX == _Position) && (lLevelElement.mY == mYPosition +1))
            {
                lLevelElemenCaseUp.Add(lLevelElement);
            }
        }

        List<LevelElement> lLevelElemenCaseDown = new List<LevelElement>();
        foreach(LevelElement lLevelElement in mLevel.mLevelElements)
        {
            if( (lLevelElement.mX == _Position) && (lLevelElement.mY == mYPosition -1))
            {
                lLevelElemenCaseDown.Add(lLevelElement);
            }
        }

        ComplexElementLevel lComplexElementLevel = new ComplexElementLevel(lLevelElemenCaseCurrent);
        ComplexElementLevel lComplexElementLevelUp = new ComplexElementLevel(lLevelElemenCaseUp);
        ComplexElementLevel lComplexElementLevelDown = new ComplexElementLevel(lLevelElemenCaseDown);

        if(mActionType == ActionType.Nothing && mMoveType == MoveType.Nothing)  // walk
        {
            if( (lComplexElementLevel.spi) || (lComplexElementLevel.vc && !fall) || (lComplexElementLevel.mid && !fall ) || (lComplexElementLevel.GF) )
            {
                Debug.Log(lComplexElementLevel.spi+ " "  +lComplexElementLevel.vc+ " " + lComplexElementLevel.mid+ " "  + lComplexElementLevel.GF);
                StartCoroutine(Die());
                yield break;
            }

            if( (lComplexElementLevelDown.GL ||  (lComplexElementLevelDown.GD && !fall) ) && ! lComplexElementLevelDown.hc)
            {
                Debug.Log ("walk FALL");
                MoveDown(_Position);
                yield break;
            }
            if(fall && (mYPosition>0) && !( lComplexElementLevelDown.GF  || lComplexElementLevelDown.G || lComplexElementLevelDown.GD || lComplexElementLevelDown.GR )	)
            {
                Debug.Log ("walk FALL");
                MoveDown(_Position);
                yield break;
            }

        }
        else if(mActionType == ActionType.Attack && mMoveType == MoveType.Nothing)  // Attack walk
        {
            if( (lComplexElementLevel.spi) || (lComplexElementLevel.mid && !fall) || (lComplexElementLevel.GF) )
            {
                Debug.Log("2");
                StartCoroutine(Die());
                yield break;
            }

            if( lComplexElementLevelDown.GL ||  (lComplexElementLevelDown.GD && !fall) )
            {
                Debug.Log ("walk FALL");
                MoveDown(_Position);
                yield break;
            }
            if(fall && (mYPosition>0) && !( lComplexElementLevelDown.GF  || lComplexElementLevelDown.G || lComplexElementLevelDown.GD || lComplexElementLevelDown.GR )	)
            {
                Debug.Log ("walk FALL");
                MoveDown(_Position);
                yield break;
            }
        }
        else if(mActionType == ActionType.Shield && mMoveType == MoveType.Nothing)  // Shield walk
        {
            if( (lComplexElementLevel.vc && !fall) || (lComplexElementLevel.mid && !fall  ) || (lComplexElementLevel.GF) )
            {
                Debug.Log("3");
                StartCoroutine(Die());
                yield break;
            }

            if(( lComplexElementLevelDown.GL ||  (lComplexElementLevelDown.GD && !fall) ) && ! lComplexElementLevelDown.hc)
            {
                Debug.Log ("walk FALL");
                MoveDown(_Position);
                yield break;
            }
            if(fall && (mYPosition>0) && !( lComplexElementLevelDown.GF  || lComplexElementLevelDown.G || lComplexElementLevelDown.GD || lComplexElementLevelDown.GR )	)
            {
                Debug.Log ("walk FALL");
                MoveDown(_Position);
                yield break;
            }

        }

        else if(mActionType == ActionType.Nothing && mMoveType == MoveType.Jump)  // Jump
        {
            /*if ((lComplexElementLevel.G || lComplexElementLevel.hc) && (lComplexElementLevel.spi) || (lComplexElementLevel.mid && !fall ) )
            {
                Debug.Log("1");
                StartCoroutine(Die());
                yield break;
            }
            */

            if(lComplexElementLevel.GF &&  !fall)
            {
                Debug.Log("2");
                StartCoroutine(Die());
                yield break;
            }

            if(lComplexElementLevel.G || lComplexElementLevel.hc)
            {
                mMoveType = MoveType.Nothing;
                CheckWalk(lComplexElementLevel, lComplexElementLevelDown,_Position);
                yield break;
            }

            if( (!(lComplexElementLevel.G || lComplexElementLevel.hc)) && lComplexElementLevelUp.spi)
            {
                Debug.Log("2");
                StartCoroutine(Die());
                yield break;
            }

            if( (lComplexElementLevel.GR ||  (lComplexElementLevel.GD && !fall)) && !lComplexElementLevel.hc)
            {
                Debug.Log ("JUMP " + lComplexElementLevel.GR + " "+ lComplexElementLevelDown.GD);
                MoveUp();
                yield break;
            }

            if(( lComplexElementLevelDown.GL ) && ! lComplexElementLevelDown.hc)
            {
                Debug.Log ("JUMP1 FALL");
                MoveDown(_Position);
                yield break;
            }

        }
        else if(mActionType == ActionType.Attack && mMoveType == MoveType.Jump)  // Attack Jump
        {
            if(lComplexElementLevel.GF &&  !fall)
            {
                Debug.Log("2");
                StartCoroutine(Die());
                yield break;
            }

            if( (!(lComplexElementLevel.G)) && lComplexElementLevelUp.spi)
            {
                Debug.Log("2");
                StartCoroutine(Die());
                yield break;
            }

            if(lComplexElementLevel.G)
            {
                mMoveType = MoveType.Nothing;
                CheckWalk(lComplexElementLevel,lComplexElementLevelDown,_Position);
                yield break;
            }

            if( (lComplexElementLevel.GR ||(lComplexElementLevel.GD && !fall)) )
            {
                MoveUp();
                yield break;
            }

            if( lComplexElementLevelDown.GL )
            {
                Debug.Log ("JUMP2 FALL");
                MoveDown(_Position);
                yield break;
            }

        }
        else if(mActionType == ActionType.Shield && mMoveType == MoveType.Jump)  // Shield Jump
        {

            if(lComplexElementLevel.GF &&  !fall)
            {
                Debug.Log("2");
                StartCoroutine(Die());
                yield break;
            }

            if(lComplexElementLevel.G || lComplexElementLevel.hc)
            {
                mMoveType = MoveType.Nothing;
                CheckWalk(lComplexElementLevel,lComplexElementLevelDown,_Position);
                yield break;
            }

            if( (lComplexElementLevel.GR ||(lComplexElementLevel.GD && !fall)) && !lComplexElementLevel.hc)
            {
                MoveUp();
                yield break;
            }

            if(( lComplexElementLevelDown.GL ) && !lComplexElementLevelDown.hc)
            {
                Debug.Log ("JUMP3 FALL");
                MoveDown(_Position);
                yield break;
            }
        }

        else if(mActionType == ActionType.Nothing && mMoveType == MoveType.Slide)  // Slide
        {
            if(lComplexElementLevel.spi ||(lComplexElementLevel.low && !fall) || lComplexElementLevel.GF ||   (lComplexElementLevel.vc && !fall))
            {
                StartCoroutine(Die());
                yield break;
            }

            if(( lComplexElementLevelDown.GL || (lComplexElementLevelDown.GD && !fall) ) && ! lComplexElementLevelDown.hc)
            {
                Debug.Log ("Slide FALL");
                MoveDown(_Position);
                yield break;
            }

        }
        else if(mActionType == ActionType.Attack && mMoveType == MoveType.Slide)  // Attack Slide
        {
            if(lComplexElementLevel.spi || (lComplexElementLevel.low && !fall)|| lComplexElementLevel.GF)
            {
                StartCoroutine(Die());
                yield break;
            }

            if( lComplexElementLevelDown.GL ||(lComplexElementLevelDown.GD && !fall) )
            {
                Debug.Log ("Slide FALL");
                MoveDown(_Position);
                yield break;
            }
        }
        else if(mActionType == ActionType.Shield && mMoveType == MoveType.Slide)  // Shield Slide
        {
            if( (lComplexElementLevel.low && !fall) || lComplexElementLevel.GF ||   (lComplexElementLevel.vc && !fall))
            {
                StartCoroutine(Die());
                yield break;
            }

            if(( lComplexElementLevelDown.GL || (lComplexElementLevelDown.GD && !fall)) && ! lComplexElementLevelDown.hc)
            {
                Debug.Log ("Slide FALL");
                MoveDown(_Position);
                yield break;
            }
        }
    }
Ejemplo n.º 2
0
    void CheckWalk(ComplexElementLevel lComplexElementLevel,ComplexElementLevel lComplexElementLevelDown, int _Position)
    {
        Debug.Log ("CheckWalk");
        mAnimation.Stop("Jump");
        mAnimation.gameObject.SampleAnimation(mAnimation["JumpFail"].clip,0);
        mAnimation.Play("JumpFail");

        if(mActionType == ActionType.Nothing && mMoveType == MoveType.Nothing)  // walk
        {
            if( (lComplexElementLevel.spi) || (lComplexElementLevel.vc && !fall) || (lComplexElementLevel.mid && !fall ) || (lComplexElementLevel.GF) )
            {
                Debug.Log(lComplexElementLevel.spi+ " "  +lComplexElementLevel.vc+ " " + lComplexElementLevel.mid+ " "  + lComplexElementLevel.GF);
                StartCoroutine(Die());
                return;
            }

            if(( lComplexElementLevelDown.GL ||  (lComplexElementLevelDown.GD && !fall)  ||lComplexElementLevelDown.vid) && ! lComplexElementLevelDown.hc)
            {
                Debug.Log ("walk FALL");
                MoveDown(_Position);
                return;
            }
        }
        else if(mActionType == ActionType.Attack && mMoveType == MoveType.Nothing)  // Attack walk
        {
            if( (lComplexElementLevel.spi) || (lComplexElementLevel.mid && !fall) || (lComplexElementLevel.GF) )
            {
                Debug.Log("2");
                StartCoroutine(Die());
                return;
            }

            if( lComplexElementLevelDown.GL ||  (lComplexElementLevelDown.GD && !fall) )
            {
                Debug.Log ("walk FALL");
                MoveDown(_Position);
                return;
            }

        }
        else if(mActionType == ActionType.Shield && mMoveType == MoveType.Nothing)  // Shield walk
        {
            if( (lComplexElementLevel.vc && !fall) || (lComplexElementLevel.mid && !fall  ) || (lComplexElementLevel.GF) )
            {
                Debug.Log("3");
                StartCoroutine(Die());
                return;
            }

            if(( lComplexElementLevelDown.GL ||  (lComplexElementLevelDown.GD && !fall) ) && ! lComplexElementLevelDown.hc)
            {
                Debug.Log ("walk FALL");
                MoveDown(_Position);
                return;
            }
        }
    }