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.
5. Spieler, Allianzen und Nachrichten<br />
83<br />
self.destroy #action done<br />
elsif<br />
[...]<br />
end<br />
end<br />
Controller<br />
Nutzer dürfen den Request Controller nur ansteuern, wenn sie als gültiger Nutzer in Devise authentifizert sind:<br />
before_filter :authenticate_user!<br />
Im Controller existieren zwei Methoden: create und reaction. Diese sind über das HTTP-Verb Post unter den<br />
Adressen /requests und /requests/reaction erreichbar. Nach der Implementierung dieser 2 Methoden ist uns<br />
aufgefallen, dass wir den Controller mit weiteren Kontrollstrukturen versehen müssen. So sollte beispielsweise<br />
kein Nutzer in eine Allianz eingeladen werden können, der bereits zu einer anderen Allianz gehört. Des Weiteren<br />
sollte man auch keine Freundschaftsanfrage an Nutzer schicken können, die bereits in der Freundesliste des<br />
Senders existieren. Die beiden Methoden create und reaction akzeptieren nur die Aktionen, die tatsächlich<br />
im System eingepflegt sind und beachten die soeben beschrieben Umstände.<br />
create ist für die Erstellung von Requests zuständig. Diese Methode validiert die vom Browser übertragenen<br />
Parameter, ermittelt den Empfänger, erstellt bei Validität den Request und pflegt alle nötigen Parameter ein.<br />
Danach wird auf dem Requestmodel die oben beschrieben Methode decide_notify() aufgerufen.<br />
reaction verarbeitet Antworten auf existierende Requests. Die Methode bekommt den zu einem Request<br />
gehörigen SHA1-Hash vom Browser übermittelt. Des Weiteren wird vom Browser der Parameter 'answer'<br />
übermittelt, der entweder 'no' oder 'yes' als Zustand haben kann. Nachdem überprüft wurde, ob der<br />
anzusprechende Request existiert und der Nutzer, der eine Browseranfrage an diese Methode gesendet hat,<br />
berechtigt ist, auf diesen Request zu antworten, wird je nach Antwort entweder direkt das Requestobjekt zerstört<br />
oder aber die zugehörige Aktion auf dem Model ausgeführt.<br />
Nach Abhandlung einer dieser beiden Methoden wird der Nutzer auf die Startseite zurückgeleitet und über<br />
eine Notiz über Erfolg oder Misserfolg der entsprechenden Browseranfrage informiert.<br />
View<br />
Aufgrund unserer Modellierung auf Applikationsebene wurde keine konkrete View für Requests gebraucht. Wir<br />
mussten lediglich in den Views, in denen das Requestsystem greifen soll, die Zieladressen der Buttons und<br />
dessen Parameter auf den Request Controller umleiten. Bei unserer Gruppe war von den Änderungen die View<br />
der Allianzbearbeitung <strong>zum</strong> Einladen von Nutzern und die Freundesliste betroffen. Des Weiteren haben wir die<br />
Routen auf die Ursprünglich für diese Aufgaben vorgesehenen Controller entfernt.<br />
| Abb.6: Einladedialog in der Allianzbearbeitung