Como creo que esta propuesta/consulta es genérica la saco de mi hilo
![Cheerleader :cheer:](./images/smilies/cheer.gif)
Hay veces que quearmos que la zona de juego (cada pantalla) sea de un tamaño menor a la definida en la churrera (sobre todo para juegos en vista "genital"
![Razz :P](./images/smilies/icon_razz.gif)
El caso es que yo he estado modificando del engine lo justo para poder definir cualquier otro tamaño en lugar del 15x10. Probando con otros tamaños me gustaba la combinación 13x9 que a priori no reduce mucho la pantalla pero son 33 tiles menos por cada pantalla que no son nada despreciables
![Muy Feliz :D](./images/smilies/icon_e_biggrin.gif)
La cuestión es que esto me ha llevado a darme cuenta que tanto la utilidad de mapcnv como las rutinas del motor no estan preparadas para los casos donde el mapa sea packed y el ancho*alto de la pantalla sea un número inpar de tiles (13x9=117). El problema de hacer el mapa packed es que cada byte representa 2 tiles esto implica que una pantalla formada por un número impar de tiles compartiría el último byte para el último tile de esa pantalla y el primero de la siguiente; o quizás despreciar el medio byte sobrante. Pero ninguno de los dos casos se contempla en la aplicación mapcnv (a pesar de que si acepta cualquier valor de entrada, aunque ya se que no fué pensada para encontrarse con un garrulo como yo); independientemente también habría que cambiar parte del motor para gestionarlo. Teniendo en cuenta que podemos generar un mapa.h con alguna de estas dos características (yo lo estoy haciendo en php que es lo que tenía más a mano
![Ofuscado :oops:](./images/smilies/icon_redface.gif)
![Pregunta :?:](./images/smilies/icon_question.gif)
El lío de monte Pío esta aqui:$this->bbcode_second_pass_code('', '// Mapa tipo PACKED
if (!(gpit & 1)) {
gpc = *map_pointer ++;
gpd = gpc >> 4;
} else {
gpd = gpc & 15;
}')Pero tengo que decir que me pierdo un poco...más que nada en compresión entre tanto código y tanto nombre de variable (no sólo por el trocito este) al final acabo hacíendome un lio, podriaís decirme que quereis decir con gpit, gpc y gpd (y no me digas que son variables jajaja, lo que me refiero es que representan)... Ej: gpit: "gráfico para individuos tontunos", ya me entendeís (ya tengo una idea pero saber exactamente la nomenclatura me ayudará para otras partes del código. Respecto a este trozo entiendo que compueba si es un número par o impar de tile para tomar el valor alto o bajo del byte apuntado por map_pointer y calcular su valor según su "peso". Por cierto:$this->bbcode_second_pass_code('', 'gpc = *map_pointer ++;')es simplemente que gpc es igual al valor apuntado por map_pointer+1 y map_pointer sale incrementado, ¿no?
En cualquier caso ya me decis que opinais o si los maestros me dicen de alguna aproximación mejor al problema.
Por si alguién se anima también encontré a posteriori (sino se si hay versión más nueva) las fuentes de las utilidades de la churrera en un hilo del foro aquí.
Seguiré a ello cuanto saque un poquito de tiempo y sino al finde que llevo una semana. En cuanto saque algo semi-definitivo pasaré por aquí el engine.h y config.h modificados para tamaños de zona de juego genéricos para testearlo (yo no me fio de mi ni un pelo) y hagais lo que os venga en gana con él.