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; } } }
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; } } }