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].graphics

    Devil



  • Jupp das wars danke sehr 🙂 🙂 🙂 🙂 🙂


Anmelden zum Antworten