Fabrikemthoden mit unterschiedlich vielen Parametern

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

M0rgenstern

Betreff: Fabrikemthoden mit unterschiedlich vielen Parametern

BeitragSo, Mai 27, 2012 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,

Ich habe eine Frage zu folgender Problemstellung, für die ich aber ein wenig ausholen muss:
Ich bin gerade dabei einen Mapeditor zu schreiben. Und momentan mache ich mir Gedanken darüber, wie ich die Maps laden/speichern soll.
Denn: Auf jeder Karte kann es verschiedene Gegenstände geben. Jedoch möchte ich nicht, dass die Karte alle Gegenstände (also Spielobjekte) kennen muss, um sie abzuspeichern oder zu laden. Ums einfach zu machen: Stellt euch die Objekte wie die Items vor, die man bei The Binding of Isaac aufsammeln kann und sonst halt alles auf der Karte womit man interagieren kann (also auch Steine) (für die, dies nicht kennen: http://www.youtube.com/watch?v=BiZ6mMlOF7c).
Das heißt, ich habe viele Objekte, die eigentlich komplett unterschiedlich sind.

Deshalb habe ich mir folgendes Gedacht:
Ich gebe jedem Objekttype eine ID und speichere in der Karte nur die ID. Dann kann ich beim laden der Karte einfach eine Fabrikmethode aufrufen, die das entsprechende Objekt anhand der ID erstellt.
Jetzt ergibt sich jedoch folgendes Problem:
Wenn ich mehr Informationen zu einem Objekt speichern will, zum Beispiel weil ich es nicht mit den Standardeinstellungen erstellen möchte sondern auf eine andere Weise, wie übergebe ich dann der Fabrikmethode die entsprechenden Parameter? Denn je nach Objekt könnten das ja mehr oder weniger Parameter sein. Nur weiß halt erst die Fabrikmethode, welche Parameter sie braucht.
Kann mir bitte jemanden nen Denkanstoß geben?
Ein ähnliches Problem habe ich nämlich auch mit den Gegnern.

Wäre super, wenn jemand einen Ansatz hätte.

Lg, M0rgenstern

Xeres

Moderator

BeitragSo, Mai 27, 2012 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Die ID gibt dir den richtigen Objekt-Type? Ich reiche den offenen Stream an die Lade-Funktion des Types und der ließt so viele Daten aus, wie er braucht. Mit einer zusätzlichen Schaltervariable sollten auch Standardwerte problemlos gehen.
Wie es mit einer Fabrikmethode aussieht, wüsste ich so auf Anhieb nicht.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

jsp

BeitragSo, Mai 27, 2012 23:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab für etwas ähnliches eine TList genommen (Parser Factory). Jeder Paramter ist Object in der Liste.
Man übergibt immer nur eine Liste und das aufgerufene Object weiss wie die Parameter in der Liste zuzuordnen sind.
Logic Gui Professional a Gui Designer for MaxGui

M0rgenstern

BeitragMo, Mai 28, 2012 0:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach.
Verdammt.
Vielen Dank euch beiden.
Xeres' Beitrag war die Lösung. Mit der ID bestimme ich das zu ladende Objekt und reiche einfach den Stream weiter. Dann entscheidet das Objekt anhand von den Daten im Stream, was es laden muss.

Vielen Dank.
Sone einfache Lösung -.-

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group