saimazoom escribió:
Quiero tener un atributo en la localidad que indique el gráfico actual en función del momento del día y del estado de la pantalla. Lo puedo hacer llevando flags dedicados a cada localidad pero es un poco rollo.
Pues practicamente te vale con "fusilar" el de atributos de localidad, solo que te vale con un array:
Código:
//LIB loc_graphics.jsp
// This library implements attributes for locations, just like the object attributes
locsGraphic = [];
var old_locgrf_h_saveGame = h_saveGame;
h_saveGame = function(savegame_object)
{
savegame_object.locsGraphic = locsGraphic.slice();
old_locgrf_h_saveGame(savegame_object);
return savegame_object;
}
var old_locgrf_h_restoreGame = h_restoreGame;
h_restoreGame = function(savegame_object)
{
locsGraphic = savegame_object.locsGraphic.slice();
old_locgrf_h_restoreGame(savegame_object);
}
Con eso ya tendrías una variable entera para cada localidad que puedes cambiar, ahora solo te falta, como en la librería de atributos, añadir unos condactos que la asignen o la lean. Por ejemplo
un
GETLOCGR locno flagno (mete en el flag flagno en la localidad locno, que básicamente sería un
setFlag(flagno, locsGraphic[locno]) y un
SETLOCGR locno value que sería un
locsGraphic[locno]=value.
Así puedes hacer:
Código:
GETLOCGR @38 fAux
PICTURE @fAux
O si quieres estar mas cómodo, te haces directamente un condacto "PICTUREGR locno" que te haga esos dos pasos de un tirón.
También puede que quieras hacer que por defecto el gráfico de una localidad sea el de igual número para lo cual en la librería original te basta con poner detrás del locsGraphic = []; esto
Código:
for(var i=0;i<256;i++) locsGraphic[i] = i+256;
El 256 es porque txtpaws le suma 256 al valor interno de los gráficos creados con "#define grf", que supongo que sería lo que usas porque "#define pic" hace que el gráfico salga directamente al estar ligado a localidad.