Casting (vielleicht kann mir hier ja jemand helfen ;) )
-
Im Wesentlichen gehts hier ums Casting, ich bekomme das nicht hin, hier das Problem:
Ich arbeite an einem Spiel und meine Vorgehensweise war eigentlich, dass ich beim Start des Spiels alle Bilddateien in den VRAM schaufel, so dass alle Objekte dann darauf zugreifen
können. Es soll ein Strategiespiel werden, und da wäre es ja ziemlich dämlich wenn für jeden Soldaten extra ein "soldier.bmp" geladen werden würde.Die "soldier.bmp" wird also beim Start geladen und die Einheiten besitzen einen Pointer, welcher auf diese Datei zeigt (grob gesagt).
IDirectDrawSurface7 *grass; grass = DDLoadBitmap(lpdd7, "grass.bmp", 0, 0); // Könnte auch eine Figur sonstwas sein class Tile { public: // Wasstehtdrauf unit; IDirectDrawSurface7 **graphics; /* Pointer auf einen IDirectDrawSurface7-Pointer, welcher auf die grass.bmp zeigt */ unsigned int x; unsigned int y; bool walkable; }; Tile map[24][32]; for(int y=1; y<=24; y++) for(int x=1; x<=32; x++) { map[y][x].graphics = &grass; // Klappt soweit !! map[y][x].x = y*32; map[y][x].y = x*32; map[y][x].walkable = true; } // Problem: lpddsbackbuf->BltFast(map[y][x].x,map[y][x].y , &map[0][0].graphics, &viereck, DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT);
Das blitten geht nicht, bei "&map[0][0].graphics" meldet der Compiler:
**
"'BltFast' : Konvertierung des Parameters 3 von 'struct IDirectDrawSurface7 *** ' in 'struct IDirectDrawSurface7 *' nicht moeglich"
**Folgendes klappt auch nicht:
BltFast(map[y][x].x,map[y][x].y , reinterpret_cast<IDirectDrawSurface7*>(&map[0][0].graphics), &viereck, DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT);
Wird compiliert aber dann beendet sich das Programm wenn die Funktion aufgerufen wird. Seht ihr den Fehler?
Ich bin ratlos
-
Versuchmal
*map[0][0].graphics
statt
&map[0][0].graphicsDevil
-
Jupp das wars danke sehr