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