Proper remapping on skin change in (almost) all cases. I commit this before breaking everything trying to fix the remaining issue...
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1114 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
f9dc259af5
commit
a2fd796e59
35
buttons.c
35
buttons.c
@ -1014,6 +1014,11 @@ void Draw_one_skin_name(word x, word y, word index, byte highlighted)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SWAP_BYTES(a,b) { byte c=a; a=b; b=c;}
|
||||||
|
#define SWAP_WORDS(a,b) { word c=a; a=b; b=c;}
|
||||||
|
#define SWAP_SHORTS(a,b) { short c=a; a=b; b=c;}
|
||||||
|
#define SWAP_FLOATS(a,b) { float c=a; a=b; b=c;}
|
||||||
|
|
||||||
/// Skin selector window
|
/// Skin selector window
|
||||||
void Button_Skins(void)
|
void Button_Skins(void)
|
||||||
{
|
{
|
||||||
@ -1212,6 +1217,31 @@ void Button_Skins(void)
|
|||||||
Config.Display_image_limits = showlimits;
|
Config.Display_image_limits = showlimits;
|
||||||
Config.Separate_colors = separatecolors;
|
Config.Separate_colors = separatecolors;
|
||||||
|
|
||||||
|
// We loaded a new menu but not changed the palette
|
||||||
|
// So we have to remap FROM MC_ TO Old_ and not the reverse way...
|
||||||
|
SWAP_BYTES(Old_black, MC_Black);
|
||||||
|
SWAP_BYTES(Old_dark, MC_Dark);
|
||||||
|
SWAP_BYTES(Old_light, MC_Light);
|
||||||
|
SWAP_BYTES(Old_white, MC_White);
|
||||||
|
SWAP_BYTES(Old_trans, MC_Trans);
|
||||||
|
Remap_menu_sprites();
|
||||||
|
Old_black = MC_Black;
|
||||||
|
Old_dark = MC_Dark;
|
||||||
|
Old_light = MC_Light;
|
||||||
|
Old_white = MC_White;
|
||||||
|
Old_trans = MC_Trans;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
MC_Black = Old_black;
|
||||||
|
MC_Dark = Old_dark;
|
||||||
|
MC_Light = Old_light;
|
||||||
|
MC_White = Old_white;
|
||||||
|
MC_Trans = Old_trans;
|
||||||
|
|
||||||
|
// TODO : il faudrait aussi restaurer la preview du skin initial, soit ici
|
||||||
|
// soit la prochaine fois qu'on ouvre la fenêtre. Une solution est de
|
||||||
|
// ne pas utiliser une variable globale pour skin_logo mais de la mettre
|
||||||
|
// dans gfx à la place.
|
||||||
}
|
}
|
||||||
|
|
||||||
Close_window();
|
Close_window();
|
||||||
@ -1228,11 +1258,6 @@ void Button_Page(void)
|
|||||||
byte factor_index;
|
byte factor_index;
|
||||||
char Temp_buffer[256];
|
char Temp_buffer[256];
|
||||||
|
|
||||||
#define SWAP_BYTES(a,b) { byte c=a; a=b; b=c;}
|
|
||||||
#define SWAP_WORDS(a,b) { word c=a; a=b; b=c;}
|
|
||||||
#define SWAP_SHORTS(a,b) { short c=a; a=b; b=c;}
|
|
||||||
#define SWAP_FLOATS(a,b) { float c=a; a=b; b=c;}
|
|
||||||
|
|
||||||
Hide_cursor();
|
Hide_cursor();
|
||||||
|
|
||||||
// On dégrossit le travail avec les infos des listes de pages
|
// On dégrossit le travail avec les infos des listes de pages
|
||||||
|
|||||||
16
windows.c
16
windows.c
@ -2543,7 +2543,7 @@ void Remap_screen_after_menu_colors_change(void)
|
|||||||
void Compute_optimal_menu_colors(T_Components * palette)
|
void Compute_optimal_menu_colors(T_Components * palette)
|
||||||
{
|
{
|
||||||
byte table[4];
|
byte table[4];
|
||||||
short i,j,k;
|
short i;
|
||||||
|
|
||||||
|
|
||||||
Old_black =MC_Black;
|
Old_black =MC_Black;
|
||||||
@ -2610,7 +2610,14 @@ void Compute_optimal_menu_colors(T_Components * palette)
|
|||||||
for (MC_Trans=0; ((MC_Trans==MC_Black) || (MC_Trans==MC_Dark) ||
|
for (MC_Trans=0; ((MC_Trans==MC_Black) || (MC_Trans==MC_Dark) ||
|
||||||
(MC_Trans==MC_Light) || (MC_Trans==MC_White)); MC_Trans++);
|
(MC_Trans==MC_Light) || (MC_Trans==MC_White)); MC_Trans++);
|
||||||
|
|
||||||
// Et maintenant, on "remappe" tous les sprites, etc...
|
Remap_menu_sprites();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Remap all menu data when the palette changes or a new skin is loaded
|
||||||
|
void Remap_menu_sprites()
|
||||||
|
{
|
||||||
|
int i, j, k;
|
||||||
|
|
||||||
if ( (MC_Light!=Old_light)
|
if ( (MC_Light!=Old_light)
|
||||||
|| (MC_Dark!=Old_dark)
|
|| (MC_Dark!=Old_dark)
|
||||||
|| (MC_White!=Old_white)
|
|| (MC_White!=Old_white)
|
||||||
@ -2667,6 +2674,11 @@ void Compute_optimal_menu_colors(T_Components * palette)
|
|||||||
for (j=0; j<ICON_SPRITE_HEIGHT; j++)
|
for (j=0; j<ICON_SPRITE_HEIGHT; j++)
|
||||||
for (i=0; i<ICON_SPRITE_WIDTH; i++)
|
for (i=0; i<ICON_SPRITE_WIDTH; i++)
|
||||||
Remap_pixel(&Gfx->Icon_sprite[k][j][i]);
|
Remap_pixel(&Gfx->Icon_sprite[k][j][i]);
|
||||||
|
|
||||||
|
// Skin preview
|
||||||
|
for (j = 0; j < 173; j++)
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
Remap_pixel(&skin_logo[i][j]);
|
||||||
}
|
}
|
||||||
Clear_border(MC_Black);
|
Clear_border(MC_Black);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,6 +39,7 @@ void Hide_cursor(void);
|
|||||||
|
|
||||||
void Remap_screen_after_menu_colors_change(void);
|
void Remap_screen_after_menu_colors_change(void);
|
||||||
void Compute_optimal_menu_colors(T_Components * palette);
|
void Compute_optimal_menu_colors(T_Components * palette);
|
||||||
|
void Remap_menu_sprites();
|
||||||
|
|
||||||
void Position_screen_according_to_zoom(void);
|
void Position_screen_according_to_zoom(void);
|
||||||
void Compute_separator_data(void);
|
void Compute_separator_data(void);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user