/************************************************************************** ... **************************************************************************/ static void refresh_happiness_bitmap(HBITMAP bmp, struct city *pcity, enum citizen_feeling index) { enum citizen_category citizens[MAX_CITY_SIZE]; RECT rc; int i; int num_citizens = get_city_citizen_types(pcity, index, citizens); int pix_width = HAPPINESS_PIX_WIDTH * tileset_small_sprite_width(tileset); int offset = MIN(tileset_small_sprite_width(tileset), pix_width / num_citizens); /* int true_pix_width = (num_citizens - 1) * offset + tileset_small_sprite_width(tileset); */ HDC hdc = CreateCompatibleDC(NULL); HBITMAP old=SelectObject(hdc,bmp); rc.left=0; rc.top=0; rc.right=pix_width; rc.bottom=tileset_small_sprite_height(tileset); FillRect(hdc,&rc,(HBRUSH)GetClassLong(root_window,GCL_HBRBACKGROUND)); for (i = 0; i < num_citizens; i++) { draw_sprite(get_citizen_sprite(tileset, citizens[i], i, pcity), hdc, i * offset, 0); } SelectObject(hdc,old); DeleteDC(hdc); }
/************************************************************************** ... **************************************************************************/ Pixmap get_citizen_pixmap(enum citizen_category type, int cnum, struct city *pcity) { return get_citizen_sprite(tileset, type, cnum, pcity)->pixmap; }