#include "item.h" #include "map.h" // displaying avec dépendance /// murs, maisons, routes int get_item_type(int mx,int my) { generic_item* item=get_item(mx,my); if (item==0) return EMPTY; return item->type; } void display_item_etendu(image_t* res,int mx, int my, int sx, int sy) { int type=get_item_type(mx,my); unsigned char val=0x00; // on n'utilise que les 4 premiers bits 0<=val<=15 mais on multiplie nativement par 8 val|=(get_item_type(mx-1,my)==type)<<3; val|=(get_item_type(mx+1,my)==type)<<4; val|=(get_item_type(mx,my-1)==type)<<5; val|=(get_item_type(mx,my+1)==type)<<6; dsubimage(sx,sy,res,val,0,8,8,0); } void display_brouillard(int mx, int my, int sx, int sy) { char val=0x00; // on n'utilise que les 4 premiers bits 0<=val<=15 mais on multiplie nativement par 8 val|=(!get_visibility(mx-1,my))<<3; val|=(!get_visibility(mx+1,my))<<4; val|=(!get_visibility(mx,my-1))<<5; val|=(!get_visibility(mx,my+1))<<6; dsubimage(sx,sy, &img_brouillard, val, 0, 8, 8, DIMAGE_NONE); } void display_water(int mx, int my, int sx, int sy) { char val=0x00; // on n'utilise que les 4 premiers bits 0<=val<=15 mais on multiplie nativement par 8 val|=(WATER==get_terrain(mx-1,my))<<3; val|=(WATER==get_terrain(mx+1,my))<<4; val|=(WATER==get_terrain(mx,my-1))<<5; val|=(WATER==get_terrain(mx,my+1))<<6; dsubimage(sx,sy, &img_water, val, 0, 8, 8, DIMAGE_NONE); } void display_case(int mx, int my, int sx, int sy) { int type=get_item_type(mx,my); switch (type) { case WALL: display_item_etendu(&img_wall,mx,my,sx,sy); return; case HOUSE: display_item_etendu(&img_houses,mx,my,sx,sy); return; default: if (get_terrain(mx,my)==WATER) display_water(mx,my,sx,sy); if (!get_visibility(mx,my)) display_brouillard(mx,my,sx,sy); } }