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

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

4. Schiffe und Missionen<br />

37<br />

...<br />

end<br />

...<br />

end<br />

In den jeweiligen cases werden missionsspezifische Aktionen durchgeführt, wie <strong>zum</strong> Beispiel dem Beladen<br />

der Flotte mit Ressourcen, was nur bei Transport und Kolonialisierung passiert. Zusätzlich wird von dort aus<br />

eine Methode aufgerufen, die dafür sorgt, dass ein Job in die Resque eingefügt wird, welcher zu dem Zeitpunkt<br />

ausgeführt werden soll, wenn die Flotte an ihrem Zielplaneten ankommt.<br />

Resque.enqueue_at(time, AttackPlanet, self.id, planet.id)<br />

Bei diesem Job handelt es sich dann um die jeweilige Aktion, die eine Mission darstellt. Beispiel Angriff:<br />

def attack(planet)<br />

if other_user.nil? # unknown planet<br />

... # Return<br />

elsif other_user == self.user # own planet<br />

... # Return<br />

elsif other_user.alliance == self.user.alliance # alliance planet<br />

... # Return<br />

else # enemy<br />

... # Attack<br />

end<br />

end<br />

Generell wird bei Ankunft der Flotte am Zielplaneten erst geschaut, wem der Planet gehört um dann geeignet<br />

zu reagieren. Dabei wird zusätzlich noch ein Report erstellt, welcher dem Spieler im Anschluss eine detaillierte<br />

Übersicht über den Missionsverlauf gibt. Je nach Missionstyp kehren dann die übrig gebliebenen Schiffe wieder<br />

zurück, indem erneut ein Job in die Resque gegeben wird, welcher dafür sorgt, dass die Flotte zu ihrem<br />

Ankunftszeitpunkt mit der Heimatflotte "gemerged" wird (Details zu allen möglichen Kombinationen).<br />

Zusätzlich gibt es die Möglichkeit Missionen abzubrechen. Dazu muss der ursprüngliche Job zunächst gelöscht,<br />

die Flottenattribute neu gesetzt und ein neuer Job für die Rückkehr in die Resque eingefügt werden.<br />

def breakup_mission<br />

if self.mission.id == 2<br />

Resque.remove_delayed(ColonizePlanet, self.id, self.target_planet.id)<br />

...<br />

self.start_planet = self.target_planet<br />

self.target_planet = self.origin_planet<br />

Resque.enqueue_at(self.arrival_time, ReturnToOrigin, self.id)<br />

...<br />

end

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!