Dokumentation zum Massive Multiplayer Online Game - Universität ...
Dokumentation zum Massive Multiplayer Online Game - Universität ...
Dokumentation zum Massive Multiplayer Online Game - Universität ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
4. Schiffe und Missionen<br />
40<br />
Um die Flotte nun abzuschicken müssen die Eingaben zunächst überprüft werden. Dazu drückt der User einen<br />
Button, wodurch ein AJAX-Request abgesetzt wird, der die Eingaben auf dem Server überprüft. Sollte es<br />
Probleme geben scrollt die Seite eigenständig nach oben und es wird eine detaillierte Fehlerangabe ausgegeben.<br />
| Fehlerangabe nach Eingabenprüfung<br />
Per javascript wird dabei, je nach Eingabe, <strong>zum</strong> Beispiel folgender Request abgesetzt:<br />
GET json/check?mission=6&fleet=1&Planet=4&ship-1=5&ship-2=2&ress-ore=20000&ress-crystal=10<br />
Auf dem Server in missions_controller.rb passiert dann folgendes: Eine Methode liest die Parameter des<br />
Requests aus und prüft die Eingaben genau so wie sie später <strong>zum</strong> eigentlichen Bewegen der Flotte verwendet<br />
werden, nur dass jeder einzelne Schritt durch einen begin/rescue Statement oder ähnlicher Fehlerbehandlung<br />
abgesichert ist. Sobald also ein bestimmter Block Fehler aufwirft, wird ein betreffender Hinweis in ein Array<br />
gepackt, welches am Schluss in einem JSON zurückgeschickt wird:<br />
fehler = Array.new<br />
fehler = check_helper(params)<br />
if fehler.empty?<br />
render :json => {"ok" => 1}.to_json<br />
else<br />
render :json => {"ok" => 0, "error" => fehler}.to_json<br />
end<br />
Wenn (direkt oder nach Korrektur der Eingabe) alles in Ordnung ist (also "ok" = 1), wird ein Button freigegeben,<br />
durch den die Form abgeschickt werden kann.<br />
| erstellte Form nach Eingabe<br />
Intern wird beim Absenden der Form erneut geprüft, ob alle Eingaben noch aktuell sind. Sollte es Probleme<br />
geben wird der User auf "Missionen", ansonsten auf "Deine Flotten" geleitet.<br />
Sonstige Details<br />
Da das Ziel war die Seite so zu strukturieren, dass sie fehlerhafte Eingaben verhindert, war bei der<br />
Implementation einiges zu beachten. So soll es <strong>zum</strong> Beispiel möglich sein, dass der User seine Eingaben in<br />
vorherigen Inputfeldern ändern kann und diese dennoch berücksichtigt werden. Es kam von Anfang an nicht<br />
in Frage quasi die komplette Seite in eine HTML-Form zu packen, da die Idee eine dynamische Seite zu<br />
gestalten, dies nicht ermöglicht hätte, <strong>zum</strong>indest nicht so einfach.<br />
Die Lösung war es also an jedem Input per Javascript bzw. jQuery einen Eventhandler an<strong>zum</strong>elden, welcher<br />
bei Aktivierung die jeweilige Eingabe als ein verstecktes Input-Feld in eine Form einträgt, die am Ende<br />
abgeschickt werden kann:<br />
$("#travel").on("click",function () {<br />
...<br />
$("#send").append('');<br />
...<br />
}