@startuml Geometry Dash - Diagramme d'etats du joueur

start

:avancer;

repeat
  partition "en l'air" {
    if (Le joueur percute un obstacle ?) then (Oui)
      :Le joueur meurt;
      stop
    endif
  }

  partition "Forme" {
    switch (Forme)
      case (Forme fusée)
        :Mode fusée;
      case (Forme roue)
        :Mode roue;
      case (Forme sens inversé)
        :Mode sens inversé;
      case (Forme gravité inversée)
        :Mode gravité inversée;
    endswitch
    if (Le joueur percute un obstacle ?) then (Oui)
      :Le joueur meurt;
      stop
    endif
  }

  partition "Activer un bonus" {
    switch (Type de bonus)
      case (Temps ralenti)
        :Activer ralentissement du temps;
        :Temps ralenti : 3 secondes;
        if (Le joueur percute un obstacle ?) then (Oui)
          :Le joueur meurt;
          stop
        endif
      case (Annulation d'obstacle)
        :Supprimer tous les obstacles;
        :Durée : 3 secondes;
    endswitch
  }

  partition "Menu de Pause" {
    if (Le joueur clique sur reprendre?) then (Oui)
        :Le niveau reprend correctement;
    else (le joueur clique sur quitter)
        stop
    endif
  }
while (Le joueur n'a pas fini le niveau)

stop

@enduml
