Ruby Client: Fehler in den Klassen Turn und Push

Sollten Fehler im Server oder den offiziellen Clients auftauchen, können diese hier gemeldet werden (bitte immer mit möglichst ausführlicher Beschreibung). Auch für Verbesserungsvorschläge am Server ist hier Platz.
wollw
Beiträge: 31
Registriert: Mi 16. Mär 2011, 21:43

Ruby Client: Fehler in den Klassen Turn und Push

Beitragvon wollw » So 12. Mär 2017, 21:10

Die Dokumentation der Klassen Push und Turn impliziert, dass deren Konstruktor mit einem Objekt der Klasse Direction als Argument aufgerufen werden muss.

Aus dem Source-Code von Direction.from_to(from_direction, to_direction) lässt sich aber schließen, dass der Konstruktor der Klasse Turn mit einem Integer aufgerufen wird (aus direction.ord berechnet)

Ruft man den Konstruktor der Klasse Push mit einer Direction auf, so wird ein XML wie folgt erzeugt:

D, [2017-03-12T20:43:54.292052 #5482] DEBUG -- : Sending: <room roomId="0cb3932e-d9f8-4a50-8893-04df5cac489c"><data class="move">
<acceleration acc="2" order="0"/>
<advance distance="2" order="1"/>
<push direction="Direction::DOWN_LEFT [4] -&gt; down_left" order="2"/>
</data>
</room>

Der falsche Wert für das Attribut direction führt zu einer Enlosschleife in der XML-Kommunikation:

D, [2017-03-12T20:43:54.312742 #5482] DEBUG -- : reading
D, [2017-03-12T20:43:54.312844 #5482] DEBUG -- : ended reading
D, [2017-03-12T20:43:54.323535 #5482] DEBUG -- : reading
D, [2017-03-12T20:43:54.323632 #5482] DEBUG -- : ended reading
D, [2017-03-12T20:43:54.333764 #5482] DEBUG -- : reading
D, [2017-03-12T20:43:54.333866 #5482] DEBUG -- : ended reading
D, [2017-03-12T20:43:54.343987 #5482] DEBUG -- : reading
D, [2017-03-12T20:43:54.344084 #5482] DEBUG -- : ended reading
D, ...

Ruft man hingegen den Konstruktor der Klassen Push mit dem Wert direction.key auf wird der XML-Code entsprechend der XML_Doku gebildet:

dir = Direction.get_turn_direction(gamestate.current_player.direction, turn)
move.add_action(Push.new(dir.key))
==>
D, [2017-03-12T21:39:57.452865 #6401] DEBUG -- : Sending: <room roomId="3ea9b74e-cfe4-46bc-91b2-6378c778506a"><data class="move">
<acceleration acc="2" order="0"/>
<advance distance="2" order="1"/>
<push direction="DOWN_LEFT" order="2"/>
</data>
</room>


Pull requests wurden auf Github gesetzt.
Kai Wollweber
Peter-Ustinov-Schule
Eckernförde

SvenK
Beiträge: 114
Registriert: Mo 17. Okt 2011, 08:40

Re: Ruby Client: Fehler in den Klassen Turn und Push

Beitragvon SvenK » Mo 13. Mär 2017, 10:56

Vielen Dank! Die Fehlerbehebungen werden in Version 0.3.4 enthalten sein.