package fight3D;
import framework.gameMain.Mode;
import framework.gameMain.ModeFreeFall;
import framework.gameMain.ModeOnGround;
import framework.physics.Velocity3D;


public class StateJump extends StateOnce {
	private Velocity3D initialVelocity = new Velocity3D(0.0, 10.0, 0.0);
	
	void setSpeed(double speed) {
		initialVelocity.setY(speed);
	}

	public boolean canChange(State nextState, Mode mode) {
		if(mode instanceof ModeOnGround) {
			if(nextState instanceof StateNormalRight) return true;
			else if(nextState instanceof StateNormalLeft) return true;
		}
		if(mode instanceof ModeFreeFall) {
			//落下中
			if(nextState instanceof StateJumpAttack) return true;
			if(nextState instanceof StateUpperAttack) return true;	// ジャンプした直後は対空攻撃ができる（操作性上の理由）
			if(nextState instanceof StateFlinch) return true;
			if(nextState instanceof StateLeftMove) return true;
			if(nextState instanceof StateRightMove) return true;
			if(nextState instanceof StateGuard) return true;
			if(nextState instanceof StateNormalRight) return true;
			if(nextState instanceof StateNormalLeft) return true;
		}
		return false;
	}
	
	public Velocity3D getInitialVelocity() {
		return initialVelocity;
	}
}
