void av_colorChange(var id, PANEL* pnl){
var min_x, min_y, max_x, max_y;
BMAP* bmp;
switch(id){
case 1: //color pallette
min_x = pnl.pos_x + 6;
min_y = pnl.pos_y + 42;
max_x = pnl.pos_x + 6 + bmap_width(bmp_avColorPallette);
max_y = pnl.pos_y + 42 + bmap_height(bmp_avColorPallette);
bmp = bmp_avColorPallette;
break;
case 2: //skin pallette
min_x = pnl.pos_x + 6;
min_y = pnl.pos_y + 130;
max_x = pnl.pos_x + 6 + bmap_width(bmp_avSkinPallette);
max_y = pnl.pos_y + 130 + bmap_height(bmp_avSkinPallette);
bmp = bmp_avSkinPallette;
break;
case 3: //pattern color pallette
min_x = pnl.pos_x + 6;
min_y = pnl.pos_y + 322;
max_x = pnl.pos_x + 6 + bmap_width(bmp_avColorPallette);
max_y = pnl.pos_y + 322 + bmap_height(bmp_avColorPallette);
bmp = bmp_avColorPallette;
break;
}
var format = bmap_lock(bmp, 0), pixel;
VECTOR vec_temp;
while(mouse_left){
if((mouse_pos.x >= min_x) && (mouse_pos.x < max_x)){
if((mouse_pos.y >= min_y) && (mouse_pos.y < max_y)){
pixel = pixel_for_bmap(bmp, mouse_pos.x - min_x, mouse_pos.y - min_y);
}
}
pixel_to_vec(vec_temp, NULL, format, pixel);
vec_temp.x /= 256;
vec_temp.y /= 256;
vec_temp.z /= 256;
switch(id){
case 1: case 2:
vec_set(var_avArea[0], vector(vec_temp.z, vec_temp.y, vec_temp.x));
break;
case 3:
vec_set(var_avPattern[0], vector(vec_temp.z, vec_temp.y, vec_temp.x));
break;
}
wait(1);
}
bmap_unlock(bmp);
}