Ich denke mal mein Problem ist sehr grundlegend, bitte in die richtige Richtung schubsen =)
Momentan arbeite ich an einem Leveleditor, das erstellte Level ist sinnigerweise eine Klasse. Bisher hab ich dieses Level immer in der WinMain Funktion erstellt, das sah dann ca so aus
|
C-/C++-Quelltext
|
1
2
3
|
// Wir haben Spaß und erschaffen ein Level
Level myLevel(hInst);
myLevel.openFile("dialog");
|
(Die Übergabe der Instanz ist schwachfug, war aber bisher noch nicht dazu gekommen das zu ändern.)
Das man mit dieser Methode nicht wirklich einen Blumentopf gewinnen kann leuchte ein denk ich mal, es gibt eben immer nur ein Level. Nun will ich also mehrere Level paralel "offen" haben können. Die Erstellung eines neuen Levels funktioniert über einen Dialog mit eigener Nachrichtenfunktion. Bisher habe ich auch hier das einzig verfügbare Level sozusagen immer wieder neu geladen. Sieht dann etwa so aus
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
|
// Wir holen die Größe des Levels
SendDlgItemMessageW(hDlg, ID::NEWLEVEL_EDITSIZE, WM_GETTEXT, 511, (LPARAM)cBuffer);
tempLevel.iSize = _wtoi(cBuffer);
tempLevel.sArea = "default";
tempLevel.sName = "dialog";
Global::getInst()->getLevel()->openNew(tempLevel);
EndDialog(hDlg, 0);
return (true);
|
tempLevel ist dabei eine Struktur, tut aber, denke ich mal, nichts zur Sache.
Soweit also mein vorheriges Vorgehen. Diese Methode geht natürlich in die Binsen wenn ich nicht schon ein Level vorher initialisiere. Nun will ich dem Nutzer aber die Möglichkeit geben zwischen verschiedenen Leveln zu wechseln und möchte dabei nicht immer wieder ein einziges Level neu laden.
Wie das geht? Ich steh wie ein Ochs vorm Berg ... Wenn ich was wichtiges vergessen hab bitte sagen, ich freue mich über jeden konstruktiven Beitrag.