Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Función MAP_CopyRects

Iniciado por Acceleration, 31 de Marzo de 2012, 11:34:28 PM

« anterior - próximo »

Acceleration

Hola. Desde luego, lo siento por mi español que puede no ser el mejor. Es que soy portugués. Pero intentaré hacer mi mejor.
Estoy teniendo problemas con la función MAP_CopyRects. 
Uso el siguiente código:

Public Sub StartGame()
    Dim tRegion(0) As GFX_Rect
    Dim tVertice(0) As Vertex
    Dim X As Integer
    Dim Y As Integer
   
    cMap.LoadMap HOENN, 0, 9
    lTileSet = cGFX.MAP_Load("H:\Data\TileSets\Hoenn\tile" & cMap.TileSet1 & "_" & cMap.TileSet2 & ".bmp", 0)

    tRegion(0).Height = 16
    tRegion(0).Width = 16
    tRegion(0).X = 16
    tRegion(0).Y = 16
    tVertice(0).X = 0
    tVertice(0).Y = 0
    tVertice(0).Color = cGFX.ARGB_Set(255, 255, 255, 255)
   
    Debug.Print cGFX.MAP_CopyRects(lTileSet, lMap, tRegion, tVertice)
   
    bRun = True
       
    While bRun
        If cInput.Key_Hit(Key_Escape) = True Then
            bRun = False
            EndGame
        End If
        'cGFX.DRAW_Map lTileSet, 256, 0, 0, 128, 2048
        cGFX.DRAW_Map lMap, 0, 0, 0, 128, 2048
        cGFX.Frame
    Wend
   
End Sub


El problema es que el Debug.Print me sale "False" y se copia el Map lTileSet todo a lMap cuando lo que quiero es que copie un único tile. Es que estoy usando la función de forma errada? Es necesario hacer MAP_Create de lMap primero? Espero que me puedan ayudar.
Saludos.

[EX3]

Hola, Acceleration, gracias por el esfuerzo con el español, voy a intentar ayudarte :)

cGFX.MAP_CopyRects(lTileSet, lMap, tRegion, tVertice)
Aquí estas usando el parámetro lMap pero no encuentro donde lo inicializas. lMap tiene que ser un mapa ya creado en memoria (MAP_Create()) o cargado desde archivo (MAP_Load()). MAP_CopyRects() no crea ningún mapa en memoria como resultado, solo copia región de un mapa en otro.

Saludos...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Acceleration

Hola, EX3. Gracias por la respuesta. Siguiendo tu sugestión he adicionado las líneas:
    lMap = cGFX.MAP_Create(16, 16)
    Debug.Print lMap
    Debug.Print cGFX.MAP_CopyRects(lTileSet, lMap, tRegion, tVertice)


El debug.print de lMap me da un handle pero el debug.print de Map_CopyRects sigue dando un False y no dibuja nada con el DRAW_Map.
Alguna otra sugestión?
Saludos.

[EX3]

Parece que la funcion MAP_CopyRects() y MAP_Create() tiene errores en la versión actual de dx_lib32. A mi tampoco me funciona.

He probado a usar otra opción, he intentado con MAP_AdvCopyRects() y parece que si ha funcionado. Para que MAP_Create() funcione activa el tercer argumento como verdadero. El código debería ser así:

Dim tRegion As GFX_Rect ' MAP_AdvCopyRects ya no usa arrays.

tRegion.Width = 16
tRegion.Height = 16

lMap = cGFX.MAP_Create(16, 16, true)

cGFX.MAP_AdvCopyRects(lTileSet, lMap, tRegion, tRegion) ' En este caso usamos tRegion como región de destino también.


Prueba a ver si te funciona así.

Saludos.
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Hechelion

Te me has  adelantado ex3.

Efectivamente a mi tampoco me va Create_map sin el tercer parámetro y copyrect me devuelve error sin importar lo que haga, por lo cual también pienso que sería un error en la librería.

@Acceleration
Si estás creando un mapa de tiles, tal vez te pueda interesar el siguiente post:
http://www.stratos-ad.com/forums/index.php?topic=12760.0

Acceleration

#5
Cita de: [EX3] en 01 de Abril de 2012, 06:30:30 PM
Parece que la funcion MAP_CopyRects() y MAP_Create() tiene errores en la versión actual de dx_lib32. A mi tampoco me funciona.

He probado a usar otra opción, he intentado con MAP_AdvCopyRects() y parece que si ha funcionado. Para que MAP_Create() funcione activa el tercer argumento como verdadero. El código debería ser así:

Dim tRegion As GFX_Rect ' MAP_AdvCopyRects ya no usa arrays.

tRegion.Width = 16
tRegion.Height = 16

lMap = cGFX.MAP_Create(16, 16, true)

cGFX.MAP_AdvCopyRects(lTileSet, lMap, tRegion, tRegion) ' En este caso usamos tRegion como región de destino también.


Prueba a ver si te funciona así.

Saludos.

Si que funciona.  :) Gracias por la solución. Me has salvado. ;)
Saludos.

Cita de: Hechelion en 01 de Abril de 2012, 07:19:33 PM
Te me has  adelantado ex3.

Efectivamente a mi tampoco me va Create_map sin el tercer parámetro y copyrect me devuelve error sin importar lo que haga, por lo cual también pienso que sería un error en la librería.

@Acceleration
Si estás creando un mapa de tiles, tal vez te pueda interesar el siguiente post:
http://www.stratos-ad.com/forums/index.php?topic=12760.0
Gracias. Pero de la forma que esta programado mi juego, no podré sacar mucho partido de tu class. Pero si no te importa, probablemente aprovecharé algún código como el de la cámara. :P
Saludos.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.