12.01.2014 Aufrufe

Dokumentation zum Massive Multiplayer Online Game - Universität ...

Dokumentation zum Massive Multiplayer Online Game - Universität ...

Dokumentation zum Massive Multiplayer Online Game - Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!