2017-10-06 3 views
0

Dans mon jeu, le joueur a deux états principaux: STATIQUE et MOUVEMENT.Comment ajouter des sous-états dans une énumération d'états de joueur-LibGdx

Je souhaite ajouter deux états en tant que sous-états de l'état STATIQUE, comme UP et DOWN.

public enum PlayerState { 

    STATIC,MOVING; 

    public boolean isMoving() { 
     return this == MOVING; 
    } 
    public boolean isStatic() { 
     return this == STATIC; 

    } 

}

Comment puis-je ajouter cette sous états dans l'énumération et d'y accéder?

Maintenant, je suis en classe d'y accéder de joueur comme

private NestState state = NestState.STATIC; 

public void moving() { 
    state = NestState.MOVING; 

} 

public void staticState() { 
    state = NestState.STATIC; 

} 

public boolean isStatic() { 

    return state.isStatic(); 
} 

public boolean isMoving() { 

    return state.isMoving(); 
} 

Répondre

2

Je peux voir 2 solutions simples qui vous permettent d'avoir des états et sous états. Le premier serait d'élargir les états que vous avez en ce moment.

public enum PlayerState { 

    STATIC_STILL, STATIC_UP, STATIC_DOWN, MOVING_LEFT, MOVING_RIGHT; 

    public boolean isMoving() { 
     if(this == MOVING_LEFT || 
       this == MOVING_LEFT){ 
      return true; 
     } 
     return false; 
    } 
    public boolean isStatic() { 
     if(this == STATIC_STILL || 
       this == STATIC_UP || 
       this = STATIC_DOWN){ 
      return true; 
     } 
     return false; 
    } 

} 

La deuxième option serait de créer un second ensemble d'états séparés de cette

public enum PlayerSubState { 
    UP,DOWN,LEFT,RIGHT; 
} 

Et votre lecteur aurait à la fois un PlayerState et un PlayerSubState.