dudas con scroll

Started by Soviet, February 09, 2014, 03:02:53 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Soviet

Hola a todos!!
tengo un par de dudas respecto al scroll que se suele usar en los juegos de rol, estaría muy agradecido que me iluminaran en ese aspecto.
1.- es posible hacer "zoom" en un scroll? por ejemplo como cuando en comandos le hacías zoom al mapa?
2.- si hago que un scroll se repita en mosaico vertical y horizontal, es posible hacer que solamente el scroll original se vea y los demás no?, porque por ejemplo me gustaría hacer que en este scroll el protagonista siempre se vea en el centro de la pantalla.
Espero puedan ayudarme... Gracias!!

Saludos!!

laghengar

#1
En el 1, para hacerlo tendrás que crearte un proceso cuyo sprite se modifique dinámicamente copiando los píxeles a los que se les hace zoom.

            Otra opción es poner el mismo scroll con el zoom y colocarle una region() para que solo se vea esa parte que le haces zoom, maneja los parámetros [ <INT destination fileID >, <INT destination graphID > ]       
                      para ayudarte con ello. Puede que la primera sea la mejor opción, pero es más complicada de hacer.

Para el 2 ya me he perdido, no se que quieres decir.
          NT Start_scroll ( <INT scrollnumber> ,  <INT fileID> , <INT graphID> , <INT backgroundgraphID> , <INT regionnumber> , <INT lockindicator> , [ <INT destination fileID >, <INT destination graphID > ] )
          Esta función supongo que ya la conoces. El parámetro lockindicator no solo maneja el ciclo vertical y horizontal del scroll principal, también maneja el ciclo del fondo.
          Por otro lado, si quieres que tu protagonista esté siempre en el centro de la pantalla, estando este situado en un scroll, tienes que colocar la id del proceso del protagonista como valor de la variable camera
                      dentro de la estructura del scroll en el que se encuentra.

                      Sí el proceso protagonista está en el scroll 1.
                                 scroll[1].camera=_idProcesoProtagonista;
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

Soviet

Quote from: laghengar on February 09, 2014, 01:07:18 PM
En el 1, para hacerlo tendrás que crearte un proceso cuyo sprite se modifique dinámicamente copiando los píxeles a los que se les hace zoom.

            Otra opción es poner el mismo scroll con el zoom y colocarle una region() para que solo se vea esa parte que le haces zoom, maneja los parámetros [ <INT destination fileID >, <INT destination graphID > ]       
                      para ayudarte con ello. Puede que la primera sea la mejor opción, pero es más complicada de hacer.

Para el 2 ya me he perdido, no se que quieres decir.
          NT Start_scroll ( <INT scrollnumber> ,  <INT fileID> , <INT graphID> , <INT backgroundgraphID> , <INT regionnumber> , <INT lockindicator> , [ <INT destination fileID >, <INT destination graphID > ] )
          Esta función supongo que ya la conoces. El parámetro lockindicator no solo maneja el ciclo vertical y horizontal del scroll principal, también maneja el ciclo del fondo.
          Por otro lado, si quieres que tu protagonista esté siempre en el centro de la pantalla, estando este situado en un scroll, tienes que colocar la id del proceso del protagonista como valor de la variable camera
                      dentro de la estructura del scroll en el que se encuentra.

                      Sí el proceso protagonista está en el scroll 1.
                                 scroll[1].camera=_idProcesoProtagonista;
En efecto, respecto al primer punto, la segunda opcion me parece mas asequible...

respecto al segundo punto ya hice eso de poner al protagonista que sea el proceso que estara al centro en el scroll, sin embargo al llegar al limite del scroll el protagonista deja de estar en el centro de la pantalla para llegar al limite del scroll en si, y no quiero que eso suceda, de ahi mi idea de hacer que el scroll se repita tanto horizontal como verticalmente y del mismo modo no quiero que se vean los scroll repetidos, que se vean negros o algo asi....

veré si me resulta lo del primer punto, gracias por la ayuda laghengar!!

laghengar

Ah ok, ahora si te entendí. Pues supongo que llegarás a la misma conclusión que yo, añadirle al scroll un borde lo suficientemente grande que te permita seguir manteniendo al personaje en el centro. Me parece feo, pero no se me ocurre otra cosa.
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

Soviet

Quote from: laghengar on February 10, 2014, 10:37:21 AM
Ah ok, ahora si te entendí. Pues supongo que llegarás a la misma conclusión que yo, añadirle al scroll un borde lo suficientemente grande que te permita seguir manteniendo al personaje en el centro. Me parece feo, pero no se me ocurre otra cosa.
lo estuve probando y la verdad es que no me parece que quede tan feo, es cosa de saber darle estética a los limites del scroll pienso yo, de todas formas gracias por la ayuda!!

Erkosone

1 - con el sistema destination, mirate por el foro, yo no lo he usado en bennu pero recuerdo que funcionaba bien.
2 - en vez de mover al personaje mueve al scroll, simplemente es eso, el personaje en pantalla sin movimiento y el "supuesto movimiento del personaje" lo aplicas al scroll y listos ;)

Soviet

Quote from: Erkosone on February 11, 2014, 05:43:16 PM
1 - con el sistema destination, mirate por el foro, yo no lo he usado en bennu pero recuerdo que funcionaba bien.
2 - en vez de mover al personaje mueve al scroll, simplemente es eso, el personaje en pantalla sin movimiento y el "supuesto movimiento del personaje" lo aplicas al scroll y listos ;)
echare un vistazo a lo de destination a ver que tal
respecto a lo segundo, es una buena idea lo q acabas de comentar, a ver si en estos dias lo pruebo, Gracias Erkosone!!

Drumpi

Pues yo me he perdido ¿qué es eso del destination? ¿Es lo de pintar el scroll sobre un mapa?
Y lo segundo, si el scroll es cíclico (flags 1+2+4+8, si la memoria no me falla), el proceso "target" jamás se irá a los bordes del scroll porque símplemente no existen bordes.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Soviet

Quote from: Drumpi on February 16, 2014, 03:07:23 AM
Pues yo me he perdido ¿qué es eso del destination? ¿Es lo de pintar el scroll sobre un mapa?
Y lo segundo, si el scroll es cíclico (flags 1+2+4+8, si la memoria no me falla), el proceso "target" jamás se irá a los bordes del scroll porque símplemente no existen bordes.
al final no encontre neda de destination y quede en las mismas que tu o no supe buscar bien...
respecto a lo del scroll ciclico, lo considere, pero tambien puedo colocarle unos bordes negros mas o menos difumado, de modo que no se vea tan mal y que quepan dentro de las colisiones, lo he probado asi y me va de fabula.

Drumpi

Hombre, sé que existe una versión de START_SCROLL que le das dos parámetros extra (file y graph) y te pinta sobre un gráfico, que si se lo asignas a un proceso, te permite reescalarlo (variable local size, sizex o sizey), girarlo (angle), transparentarlo (flags=4 o variable local alpha), espejarlo (flags).
Es la forma más sencilla de tener zoom, pero usa muchos recursos (o sea, que no se puede usar en consolas portátiles, en PC no hay problema).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

laghengar

Quote from: Drumpi on February 16, 2014, 04:12:16 AM
Hombre, sé que existe una versión de START_SCROLL que le das dos parámetros extra (file y graph) y te pinta sobre un gráfico, que si se lo asignas a un proceso, te permite reescalarlo (variable local size, sizex o sizey), girarlo (angle), transparentarlo (flags=4 o variable local alpha), espejarlo (flags).
Es la forma más sencilla de tener zoom, pero usa muchos recursos (o sea, que no se puede usar en consolas portátiles, en PC no hay problema).

Yo pienso que lo de destination es eso mismo, ya que en la definición de la wiki viene tal que así:

INT Start_scroll ( <INT scrollnumber> ,  <INT fileID> , <INT graphID> , <INT backgroundgraphID> , <INT regionnumber> , <INT lockindicator> , [ <INT destination fileID >, <INT destination graphID > ] )
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O