And another huge code cleanup.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3838 c06c8d41-db1a-0410-9941-cceddc491573
LP5EK64IEM7AHNYQID4GGKOQJQNZLKY4DCCZN47SIUZ6IXAXH5UAC
ZWVXM43CBKDWRFNZ432Z6G6J7DBA2GKRRGCSZQCRQS2M4YX53ETQC
HRAL36C7UUL7V6TFXQ76FZ3VVVFEJYF7YWOP2EXYXP6C27XME2PAC
C4WXQRJTDW53PYFWQ4LOINSCI2IWMIQTH5WDSI7QUP72PKDBYHZAC
DGHHGJ6RCXFF3I53K2DI2FDB3UW2SUZAWWAQ7T6YW6374WOQASUQC
JXAB5WYRDGBLKOBEQJLZKIE7YHQ2ZI6LKWEFSNF2TGAHPNUI3SBQC
HODV46TCH5AGI42Z5JKVDX4VCRVQCNREJUL6W3TUJK6S77SXQNLQC
3SK2OEKJBQUGGYU2PJ7BWBGMKS53K2JH6HKL65AWTFN6JVZRG2PAC
QRPQJ6B37PFCUHKSO2BQ374YUVL2B7ELIL5SNENEG2WWFIYZQTHQC
HBHQQDULNVWISJ75XIL6R6BFEDYRNY22NX3ZTFVNP5ZWJGJSKOEQC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
D5EMJEEIJSSULF236DUM26QHHNDLH7FXAOBHFDAYI65KCKTDTDYQC
5FA5IEAXTMXYS2VUBVDKBKHPKAIOY4GN5SXYJORBYWQIGHVW3FFQC
QON6K747RDVN55UTIJWNGIIGSDS7IHKB24JMHWSIMAQ572D7C3NAC
3GRGONHWIZ7PTTNMJ6CIZEMIKC7N2DTU62BLJ5QG4E7RGA5O2XMAC
ND3T5LCZATC63EVQ6SLI7XXMSUL7XICJDNLH3UCYUDEFWTA3N5MQC
7G4KWTOOBRLHOZZGFGAXGTUCDF3FGSZOXVHUZZ3V2KVWYSFE7EKAC
4SUUJM2DQUEWHDG3UKJUDZABLHFVF2CFUX5GVAWKT7BBBGR2ISTQC
J3M6J3UPL4AUJDXINY7UKH2JZQVQLKGH7AMOKI6L3QI7Y2F33O5QC
DGB7DKTR6OEQEMOOF3MAHDT4PAPKZ54Y33MWYVD7XIOESPFAXHQQC
PBRFKFYILME3A2YLLVGRWJ2C7PCE2GONSINX65P4EG22ZGCW6JWAC
MZLB3Q7G4EC2BR3OFMG55WPHXPFJGQSLWAIHHFJEAEATPUTYR7EAC
IHOKNI4O7EEW4UBMKHP6XOZNEIQSW4AYOT4O3JXUIXNNR553IQAQC
YMC3RKF4Z7DOHZNGG7INC343SXCTWOPK7ISD42I3WA3AZZNVBGIAC
static void tile_draw_grid(int kind, int xx, int yy);
static void clear_tcache();
static void init_tcache();
static void register_tile_mask(int tile, int region, int *cp,
char *ms, bool smalltile = false);
static void tcache_compose_normal(int ix, int *fg, int *bg);
static void _tile_draw_grid(int kind, int xx, int yy);
static void _clear_tcache();
static void _init_tcache();
static void _register_tile_mask(int tile, int region, int *cp,
char *ms, bool smalltile = false);
static void _tcache_compose_normal(int ix, int *fg, int *bg);
if (ImgWidth(TileImg)!= TILE_X * TILE_PER_ROW ||
ImgHeight(TileImg) < TILE_Y*( (TILE_TOTAL + TILE_PER_ROW -1)/TILE_PER_ROW))
if (ImgWidth(TileImg)!= TILE_X * TILE_PER_ROW
|| ImgHeight(TileImg) <
TILE_Y * ((TILE_TOTAL + TILE_PER_ROW -1)/TILE_PER_ROW) )
for(x=0;x<TILE_DAT_XMAX+2;x++){
for(y=0;y<TILE_DAT_YMAX+2;y++){
t1buf[x][y]=0;
t2buf[x][y]=TILE_DNGN_UNSEEN|TILE_FLAG_UNSEEN;
}}
for (x = 0; x < TILE_DAT_XMAX + 2; x++)
{
for (y = 0; y < TILE_DAT_YMAX + 2; y++)
{
t1buf[x][y] = 0;
t2buf[x][y] = TILE_DNGN_UNSEEN|TILE_FLAG_UNSEEN;
}
}
/** overlay a tile onto an exsisting image with transpalency operation */
void register_tile_mask(int tile, int region, int *copy,
char *mask, bool smalltile)
/* overlay a tile onto an exsisting image with transpalency operation */
void _register_tile_mask(int tile, int region, int *copy,
char *mask, bool smalltile)
int sx= region_sx_normal[region];
int sy= region_sy_normal[region];
int wx= region_wx_normal[region];
int wy= region_wy_normal[region];
int ox=0;
int oy=0;
int sx = region_sx_normal[region];
int sy = region_sy_normal[region];
int wx = region_wx_normal[region];
int wy = region_wy_normal[region];
int ox = 0;
int oy = 0;
int ux = wx;
int uy = wy;
for(x=0;x<wx;x+=2){
for(y=0;y<wy;y+=2){
if(! ImgIsTransparentAt(src, x0+sx+x, y0+sy+y))
mask[(y+oy)*ux+(x+ox)]=1;
}}
for (x = 0; x < wx; x += 2)
{
for (y = 0; y < wy; y += 2)
{
if (!ImgIsTransparentAt(src, x0+sx+x, y0+sy+y))
mask[(y+oy) * ux + (x+ox)] = 1;
}
}
for(y=0;y<tile_dngn_y;y++){
for(x=0;x<tile_dngn_x;x++){
tileb[count] = t1buf[x+1][y+1];
count ++;
tileb[count] = t2buf[x+1][y+1];
count ++;
}}
for (y = 0; y < tile_dngn_y; y++)
{
for (x = 0; x < tile_dngn_x; x++)
{
tileb[count++] = t1buf[x+1][y+1];
tileb[count++] = t2buf[x+1][y+1];
}
}
if(tileb[count]==tileb[count+1])
tileb[count]=0;
t1buf[x+1][y+1] = tileb[count];
count ++;
t2buf[x+1][y+1] = tileb[count];
count ++;
if (tileb[count] == tileb[count+1])
tileb[count] = 0;
t1buf[x+1][y+1] = tileb[count++];
t2buf[x+1][y+1] = tileb[count++];
if (parts2[p] && p == TILEP_PART_BOOTS &&
(parts2[p] == TILEP_BOOTS_NAGA_BARDING ||
parts2[p] == TILEP_BOOTS_CENTAUR_BARDING))
if (parts2[p] && p == TILEP_PART_BOOTS
&& (parts2[p] == TILEP_BOOTS_NAGA_BARDING
|| parts2[p] == TILEP_BOOTS_CENTAUR_BARDING))
char tile = parts2[p] == TILEP_BOOTS_NAGA_BARDING ?
TILEP_SHADOW_NAGA_BARDING : TILEP_SHADOW_CENTAUR_BARDING;
tcache_overlay_player(img, 0, 0, TILEP_PART_SHADOW, tile,
TILE_Y, &c);
char tile = (parts2[p] == TILEP_BOOTS_NAGA_BARDING) ?
TILEP_SHADOW_NAGA_BARDING :
TILEP_SHADOW_CENTAUR_BARDING;
tcache_overlay_player(img, 0, 0, TILEP_PART_SHADOW,
tile, TILE_Y, &c);
dolls[i].parts[TILEP_PART_CLOAK] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_BOOTS] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_LEG] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_BODY] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_ARM] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_HAND1] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_HAND2] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_HAIR] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_BEARD] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_HELM] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_CLOAK] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_BOOTS] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_LEG] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_BODY] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_ARM] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_HAND1] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_HAND2] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_HAIR] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_BEARD] = TILEP_SHOW_EQUIP;
dolls[i].parts[TILEP_PART_HELM] = TILEP_SHOW_EQUIP;
undo_dolls[cur_doll].parts[ p_lines[i] ] = dolls[cur_doll].parts[ p_lines[i] ];
dolls[cur_doll].parts[ p_lines[i] ] = copy_doll[ p_lines[i] ];
undo_dolls[cur_doll].parts[ p_lines[i] ]
= dolls[cur_doll].parts[ p_lines[i] ];
dolls[cur_doll].parts[ p_lines[i] ]
= copy_doll[ p_lines[i] ];
dolls[cur_doll].parts[TILEP_PART_CLOAK] =
one_chance_in(2) * ( random2(tilep_parts_total[ TILEP_PART_CLOAK ]) + 1);
dolls[cur_doll].parts[TILEP_PART_BOOTS] =
( random2(tilep_parts_total[ TILEP_PART_BOOTS ] + 1) );
dolls[cur_doll].parts[TILEP_PART_LEG] =
( random2(tilep_parts_total[ TILEP_PART_LEG ] + 1) );
dolls[cur_doll].parts[TILEP_PART_BODY] =
( random2(tilep_parts_total[ TILEP_PART_BODY ] + 1) );
dolls[cur_doll].parts[TILEP_PART_ARM] =
one_chance_in(2) * ( random2(tilep_parts_total[ TILEP_PART_ARM ]) + 1);
dolls[cur_doll].parts[TILEP_PART_HAND1] =
( random2(tilep_parts_total[ TILEP_PART_HAND1 ] + 1) );
dolls[cur_doll].parts[TILEP_PART_HAND2] =
one_chance_in(2) * ( random2(tilep_parts_total[ TILEP_PART_HAND2 ]) + 1);
dolls[cur_doll].parts[TILEP_PART_HAIR] =
( random2(tilep_parts_total[ TILEP_PART_HAIR ] + 1) );
dolls[cur_doll].parts[TILEP_PART_BEARD] =
( (dolls[cur_doll].parts[TILEP_PART_BASE] + 1) % 2) *
one_chance_in(4) * ( random2(tilep_parts_total[ TILEP_PART_BEARD ]) + 1 );
dolls[cur_doll].parts[TILEP_PART_HELM] =
one_chance_in(2) * ( random2(tilep_parts_total[ TILEP_PART_HELM ]) + 1 );
for(i = 2; i < PARTS_ITEMS; i++)
{
dolls[cur_doll].parts[TILEP_PART_CLOAK]
= coinflip() * (random2(tilep_parts_total[ TILEP_PART_CLOAK ]) + 1);
dolls[cur_doll].parts[TILEP_PART_BOOTS]
= random2(tilep_parts_total[ TILEP_PART_BOOTS ] + 1);
dolls[cur_doll].parts[TILEP_PART_LEG]
= random2(tilep_parts_total[ TILEP_PART_LEG ] + 1);
dolls[cur_doll].parts[TILEP_PART_BODY]
= random2(tilep_parts_total[ TILEP_PART_BODY ] + 1);
dolls[cur_doll].parts[TILEP_PART_ARM]
= coinflip() * ( random2(tilep_parts_total[ TILEP_PART_ARM ]) + 1);
dolls[cur_doll].parts[TILEP_PART_HAND1]
= random2(tilep_parts_total[ TILEP_PART_HAND1 ] + 1);
dolls[cur_doll].parts[TILEP_PART_HAND2]
= coinflip() * ( random2(tilep_parts_total[ TILEP_PART_HAND2 ]) + 1);
dolls[cur_doll].parts[TILEP_PART_HAIR]
= random2(tilep_parts_total[ TILEP_PART_HAIR ] + 1);
dolls[cur_doll].parts[TILEP_PART_BEARD]
= ((dolls[cur_doll].parts[TILEP_PART_BASE] + 1) % 2)
* one_chance_in(4)
* ( random2(tilep_parts_total[ TILEP_PART_BEARD ]) + 1 );
dolls[cur_doll].parts[TILEP_PART_HELM]
= coinflip() * ( random2(tilep_parts_total[ TILEP_PART_HELM ]) + 1 );
for (i = 2; i < PARTS_ITEMS; i++)
if (x == TILEP_PART_BODY)
{
int p = 0;
int ac = ghost.ac;
ac *= (5 + (pseudo_rand/11) % 11);
ac /= 10;
if (x == TILEP_PART_BODY)
{
int p = 0;
int ac = ghost.ac;
ac *= (5 + (pseudo_rand/11) % 11);
ac /= 10;
if (ac > 25) p= TILEP_BODY_PLATE_BLACK;
else
if (ac > 20) p= TILEP_BODY_BANDED;
else
if (ac > 15) p= TILEP_BODY_SCALEMAIL;
else
if (ac > 10) p= TILEP_BODY_CHAINMAIL;
else
if (ac > 5 ) p= TILEP_BODY_LEATHER_HEAVY;
else
p= TILEP_BODY_ROBE_BLUE;
if (ac > 25)
p = TILEP_BODY_PLATE_BLACK;
else if (ac > 20)
p = TILEP_BODY_BANDED;
else if (ac > 15)
p = TILEP_BODY_SCALEMAIL;
else if (ac > 10)
p = TILEP_BODY_CHAINMAIL;
else if (ac > 5 )
p = TILEP_BODY_LEATHER_HEAVY;
else
p = TILEP_BODY_ROBE_BLUE;
if (dam>30) p = TILEP_HAND1_GREAT_FRAIL;
else
if (dam>25) p = TILEP_HAND1_GREAT_MACE;
else
if (dam>20) p = TILEP_HAND1_SPIKED_FRAIL;
else
if (dam>15) p = TILEP_HAND1_MORNINGSTAR;
else
if (dam>10) p = TILEP_HAND1_FRAIL;
case SK_MACES_FLAILS:
if (dam > 30)
p = TILEP_HAND1_GREAT_FRAIL;
else if (dam > 25)
p = TILEP_HAND1_GREAT_MACE;
else if (dam > 20)
p = TILEP_HAND1_SPIKED_FRAIL;
else if (dam > 15)
p = TILEP_HAND1_MORNINGSTAR;
else if (dam > 10)
p = TILEP_HAND1_FRAIL;
else if (dam > 5)
p = TILEP_HAND1_MACE;
}
else
if (sk == SK_LONG_BLADES)
{
if (dam>25) p = TILEP_HAND1_GREAT_SWORD_SLANT;
break;
case SK_LONG_BLADES:
if (dam > 25)
p = TILEP_HAND1_GREAT_SWORD_SLANT;
else if (dam > 20)
p = TILEP_HAND1_KATANA_SLANT;
else if (dam > 15)
p = TILEP_HAND1_SCIMITAR;
else if (dam > 10)
p = TILEP_HAND1_LONG_SWORD_SLANT;
}
else
if (sk == SK_AXES)
{
if (dam>30) p = TILEP_HAND1_EXECUTIONERS_AXE;
else
if (dam>20) p = TILEP_HAND1_BATTLEAXE;
else
if (dam>15) p = TILEP_HAND1_BROAD_AXE;
else
if (dam>10) p = TILEP_HAND1_WAR_AXE;
break;
case SK_AXES:
if (dam > 30)
p = TILEP_HAND1_EXECUTIONERS_AXE;
else if (dam > 20)
p = TILEP_HAND1_BATTLEAXE;
else if (dam > 15)
p = TILEP_HAND1_BROAD_AXE;
else if (dam > 10)
p = TILEP_HAND1_WAR_AXE;
}
else
if (sk == SK_POLEARMS)
{
if (dam>30) p = TILEP_HAND1_GLAIVE;
else
if (dam>20) p = TILEP_HAND1_SCYTHE;
else
if (dam>15) p = TILEP_HAND1_HALBERD;
else
if (dam>10) p = TILEP_HAND1_TRIDENT2;
else
if (dam>10) p = TILEP_HAND1_HAMMER;
break;
case SK_POLEARMS:
if (dam > 30)
p = TILEP_HAND1_GLAIVE;
else if (dam > 20)
p = TILEP_HAND1_SCYTHE;
else if (dam > 15)
p = TILEP_HAND1_HALBERD;
else if (dam > 10)
p = TILEP_HAND1_TRIDENT2;
else if (dam > 10)
p = TILEP_HAND1_HAMMER;
int xs = (tidx % TILEP_PER_ROW)*TILE_X +
(idx % nx)*(TILE_X/nx) - ofs_x;
int ys = (tidx / TILEP_PER_ROW)*TILE_Y +
((idx/nx) % ny)*(TILE_Y/ny) - ofs_y;
int xs = (tidx % TILEP_PER_ROW)*TILE_X + (idx % nx) * (TILE_X/nx) - ofs_x;
int ys = (tidx / TILEP_PER_ROW)*TILE_Y
+ ((idx/nx) % ny) * (TILE_Y/ny) - ofs_y;
((iflags[i]&TILEI_FLAG_FLOOR) != 0),
((iflags[i]&TILEI_FLAG_SELECT) != 0),
((iflags[i]&TILEI_FLAG_EQUIP) != 0),
((iflags[i]&TILEI_FLAG_TRIED) != 0),
((iflags[i]&TILEI_FLAG_CURSE) != 0));
((iflags[i]&TILEI_FLAG_FLOOR) != 0),
((iflags[i]&TILEI_FLAG_SELECT) != 0),
((iflags[i]&TILEI_FLAG_EQUIP) != 0),
((iflags[i]&TILEI_FLAG_TRIED) != 0),
((iflags[i]&TILEI_FLAG_CURSE) != 0));
((itemlist_iflag[ix]&TILEI_FLAG_FLOOR) != 0),
((itemlist_iflag[ix]&TILEI_FLAG_SELECT) != 0),
((itemlist_iflag[ix]&TILEI_FLAG_EQUIP) != 0),
((itemlist_iflag[ix]&TILEI_FLAG_TRIED) != 0),
((itemlist_iflag[ix]&TILEI_FLAG_CURSE) != 0)
);
((itemlist_iflag[ix]&TILEI_FLAG_FLOOR) != 0),
((itemlist_iflag[ix]&TILEI_FLAG_SELECT) != 0),
((itemlist_iflag[ix]&TILEI_FLAG_EQUIP) != 0),
((itemlist_iflag[ix]&TILEI_FLAG_TRIED) != 0),
((itemlist_iflag[ix]&TILEI_FLAG_CURSE) != 0));
while ( (fbuf[gcount] != ':') && (fbuf[gcount] != '\n')
&& (ccount<4) && (gcount<48) )
{
ibuf[ccount] = fbuf[gcount];
ccount ++;
gcount ++;
}
while (fbuf[gcount] != ':' && fbuf[gcount] != '\n'
&& ccount < 4 && gcount < 48)
{
ibuf[ccount++] = fbuf[gcount++];
}
idx = tilep_str_to_part(ibuf);
if (p == TILEP_PART_BASE)
{
int p0 = (parts[p]-1) & (0xfe);
if (((1-idx) & 1) == 1) p0++;
parts[p] = p0 + 1;
}
else if (idx == TILEP_SHOW_EQUIP)
parts[p] = TILEP_SHOW_EQUIP;
else if (idx < 0) // no negative value
parts[p] = 0;
else if (idx > tilep_parts_total[p]) // bound it
parts[p] = tilep_parts_total[p];
else
parts[p] = idx;
idx = tilep_str_to_part(ibuf);
if (p == TILEP_PART_BASE)
{
int p0 = (parts[p]-1) & (0xfe);
if (((1-idx) & 1) == 1)
p0++;
parts[p] = p0 + 1;
}
else if (idx == TILEP_SHOW_EQUIP)
parts[p] = TILEP_SHOW_EQUIP;
else if (idx < 0) // no negative value
parts[p] = 0;
else if (idx > tilep_parts_total[p]) // bound it
parts[p] = tilep_parts_total[p];
else
parts[p] = idx;
int p = parts_saved[i];
if (p == TILEP_PART_BASE) // 0:female 1:male
{
sprintf(ptr, "%03d", parts[p]%2);
ptr += 3;
}
else
{
tilep_part_to_str(parts[p], ptr);
ptr += 3;
}
*ptr = ':';
ptr++;
int p = parts_saved[i];
if (p == TILEP_PART_BASE) // 0:female 1:male
{
sprintf(ptr, "%03d", parts[p]%2);
ptr += 3;
}
else
{
tilep_part_to_str(parts[p], ptr);
ptr += 3;
}
*ptr = ':';
ptr++;
case MISC_BOTTLED_EFREET: return TILEP_HAND1_BOTTLE;
case MISC_AIR_ELEMENTAL_FAN: return TILEP_HAND1_FAN;
case MISC_STONE_OF_EARTH_ELEMENTALS: return TILEP_HAND1_STONE;
case MISC_DISC_OF_STORMS: return TILEP_HAND1_DISC;
case MISC_BOTTLED_EFREET: return TILEP_HAND1_BOTTLE;
case MISC_AIR_ELEMENTAL_FAN: return TILEP_HAND1_FAN;
case MISC_STONE_OF_EARTH_ELEMENTALS: return TILEP_HAND1_STONE;
case MISC_DISC_OF_STORMS: return TILEP_HAND1_DISC;
case MISC_LAMP_OF_FIRE: return TILEP_HAND1_LANTERN;
case MISC_LANTERN_OF_SHADOWS: return TILEP_HAND1_BONE_LANTERN;
case MISC_HORN_OF_GERYON: return TILEP_HAND1_HORN;
case MISC_LAMP_OF_FIRE: return TILEP_HAND1_LANTERN;
case MISC_LANTERN_OF_SHADOWS: return TILEP_HAND1_BONE_LANTERN;
case MISC_HORN_OF_GERYON: return TILEP_HAND1_HORN;
case SPWPN_SINGING_SWORD: return TILEP_HAND1_SINGING_SWORD;
case SPWPN_WRATH_OF_TROG: return TILEP_HAND1_AXE_TROG;
case SPWPN_SCYTHE_OF_CURSES: return TILEP_HAND1_FINISHER;
case SPWPN_SINGING_SWORD: return TILEP_HAND1_SINGING_SWORD;
case SPWPN_WRATH_OF_TROG: return TILEP_HAND1_AXE_TROG;
case SPWPN_SCYTHE_OF_CURSES: return TILEP_HAND1_FINISHER;
case SPWPN_GLAIVE_OF_PRUNE: return TILEP_HAND1_GLAIVE_OF_PRUNE;
case SPWPN_SCEPTRE_OF_TORMENT: return TILEP_HAND1_MACE_RUBY;
case SPWPN_GLAIVE_OF_PRUNE: return TILEP_HAND1_GLAIVE_OF_PRUNE;
case SPWPN_SCEPTRE_OF_TORMENT: return TILEP_HAND1_MACE_RUBY;
case SPWPN_SWORD_OF_POWER: break;
case SPWPN_KNIFE_OF_ACCURACY: break;
case SPWPN_STAFF_OF_OLGREB: return TILEP_HAND1_OLGREB;
case SPWPN_VAMPIRES_TOOTH: break;
case SPWPN_STAFF_OF_WUCAD_MU: break;
case SPWPN_STAFF_OF_OLGREB: return TILEP_HAND1_OLGREB;
case SPWPN_SWORD_OF_POWER:
case SPWPN_KNIFE_OF_ACCURACY:
case SPWPN_VAMPIRES_TOOTH:
case SPWPN_STAFF_OF_WUCAD_MU:
break;
// Blunt
case WPN_CLUB: return TILEP_HAND1_CLUB_SLANT;
case WPN_MACE: return TILEP_HAND1_MACE;
case WPN_GREAT_MACE: return TILEP_HAND1_GREAT_MACE;
case WPN_FLAIL: return TILEP_HAND1_FRAIL;
case WPN_SPIKED_FLAIL: return TILEP_HAND1_SPIKED_FRAIL;
case WPN_DIRE_FLAIL: return TILEP_HAND1_GREAT_FRAIL;
case WPN_MORNINGSTAR: return TILEP_HAND1_MORNINGSTAR;
case WPN_EVENINGSTAR: return TILEP_HAND1_EVENINGSTAR;
case WPN_GIANT_CLUB: return TILEP_HAND1_GIANT_CLUB_SLANT;
case WPN_GIANT_SPIKED_CLUB: return TILEP_HAND1_GIANT_CLUB_SPIKE_SLANT;
case WPN_ANCUS: return TILEP_HAND1_MACE;
case WPN_WHIP: return TILEP_HAND1_WHIP;
case WPN_DEMON_WHIP: return TILEP_HAND1_BLACK_WHIP;
// Blunt
case WPN_CLUB: return TILEP_HAND1_CLUB_SLANT;
case WPN_MACE: return TILEP_HAND1_MACE;
case WPN_GREAT_MACE: return TILEP_HAND1_GREAT_MACE;
case WPN_FLAIL: return TILEP_HAND1_FRAIL;
case WPN_SPIKED_FLAIL: return TILEP_HAND1_SPIKED_FRAIL;
case WPN_DIRE_FLAIL: return TILEP_HAND1_GREAT_FRAIL;
case WPN_MORNINGSTAR: return TILEP_HAND1_MORNINGSTAR;
case WPN_EVENINGSTAR: return TILEP_HAND1_EVENINGSTAR;
case WPN_GIANT_CLUB: return TILEP_HAND1_GIANT_CLUB_SLANT;
case WPN_GIANT_SPIKED_CLUB: return TILEP_HAND1_GIANT_CLUB_SPIKE_SLANT;
case WPN_ANCUS: return TILEP_HAND1_MACE;
case WPN_WHIP: return TILEP_HAND1_WHIP;
case WPN_DEMON_WHIP: return TILEP_HAND1_BLACK_WHIP;
// Edge
case WPN_KNIFE: return TILEP_HAND1_DAGGER_SLANT;
case WPN_DAGGER: return TILEP_HAND1_DAGGER_SLANT;
case WPN_SHORT_SWORD: return TILEP_HAND1_SHORT_SWORD_SLANT;
case WPN_LONG_SWORD: return TILEP_HAND1_LONG_SWORD_SLANT;
case WPN_GREAT_SWORD: return TILEP_HAND1_GREAT_SWORD_SLANT;
case WPN_SCIMITAR: return TILEP_HAND1_SCIMITAR;
case WPN_FALCHION: return TILEP_HAND1_FALCHION;
case WPN_SABRE: return TILEP_HAND1_SABRE;
case WPN_DEMON_BLADE: return TILEP_HAND1_SWORD_BLACK;
case WPN_QUICK_BLADE: return TILEP_HAND1_DAGGER;
case WPN_KATANA: return TILEP_HAND1_KATANA_SLANT;
case WPN_DOUBLE_SWORD: return TILEP_HAND1_DOUBLE_SWORD;
case WPN_TRIPLE_SWORD: return TILEP_HAND1_TRIPLE_SWORD;
case WPN_BLESSED_BLADE: return TILEP_HAND1_BLESSED_BLADE;
// Edge
case WPN_KNIFE: return TILEP_HAND1_DAGGER_SLANT;
case WPN_DAGGER: return TILEP_HAND1_DAGGER_SLANT;
case WPN_SHORT_SWORD: return TILEP_HAND1_SHORT_SWORD_SLANT;
case WPN_LONG_SWORD: return TILEP_HAND1_LONG_SWORD_SLANT;
case WPN_GREAT_SWORD: return TILEP_HAND1_GREAT_SWORD_SLANT;
case WPN_SCIMITAR: return TILEP_HAND1_SCIMITAR;
case WPN_FALCHION: return TILEP_HAND1_FALCHION;
case WPN_SABRE: return TILEP_HAND1_SABRE;
case WPN_DEMON_BLADE: return TILEP_HAND1_SWORD_BLACK;
case WPN_QUICK_BLADE: return TILEP_HAND1_DAGGER;
case WPN_KATANA: return TILEP_HAND1_KATANA_SLANT;
case WPN_DOUBLE_SWORD: return TILEP_HAND1_DOUBLE_SWORD;
case WPN_TRIPLE_SWORD: return TILEP_HAND1_TRIPLE_SWORD;
case WPN_BLESSED_BLADE: return TILEP_HAND1_BLESSED_BLADE;
// Axe
case WPN_HAND_AXE: return TILEP_HAND1_HAND_AXE;
case WPN_BATTLEAXE: return TILEP_HAND1_BATTLEAXE;
case WPN_BROAD_AXE: return TILEP_HAND1_BROAD_AXE;
case WPN_WAR_AXE: return TILEP_HAND1_WAR_AXE;
case WPN_EXECUTIONERS_AXE: return TILEP_HAND1_EXECUTIONERS_AXE;
case WPN_BARDICHE: return TILEP_HAND1_GLAIVE3;
// Axe
case WPN_HAND_AXE: return TILEP_HAND1_HAND_AXE;
case WPN_BATTLEAXE: return TILEP_HAND1_BATTLEAXE;
case WPN_BROAD_AXE: return TILEP_HAND1_BROAD_AXE;
case WPN_WAR_AXE: return TILEP_HAND1_WAR_AXE;
case WPN_EXECUTIONERS_AXE: return TILEP_HAND1_EXECUTIONERS_AXE;
case WPN_BARDICHE: return TILEP_HAND1_GLAIVE3;
//Pole
case WPN_SPEAR: return TILEP_HAND1_SPEAR;
case WPN_HALBERD: return TILEP_HAND1_HALBERD;
case WPN_GLAIVE: return TILEP_HAND1_GLAIVE;
case WPN_QUARTERSTAFF: return TILEP_HAND1_QUARTERSTAFF1;
case WPN_SCYTHE: return TILEP_HAND1_SCYTHE;
case WPN_HAMMER: return TILEP_HAND1_HAMMER;
case WPN_DEMON_TRIDENT: return TILEP_HAND1_DEMON_TRIDENT;
case WPN_TRIDENT: return TILEP_HAND1_TRIDENT2;
case WPN_LAJATANG: return TILEP_HAND1_D_GLAIVE;
//Pole
case WPN_SPEAR: return TILEP_HAND1_SPEAR;
case WPN_HALBERD: return TILEP_HAND1_HALBERD;
case WPN_GLAIVE: return TILEP_HAND1_GLAIVE;
case WPN_QUARTERSTAFF: return TILEP_HAND1_QUARTERSTAFF1;
case WPN_SCYTHE: return TILEP_HAND1_SCYTHE;
case WPN_HAMMER: return TILEP_HAND1_HAMMER;
case WPN_DEMON_TRIDENT: return TILEP_HAND1_DEMON_TRIDENT;
case WPN_TRIDENT: return TILEP_HAND1_TRIDENT2;
case WPN_LAJATANG: return TILEP_HAND1_D_GLAIVE;
//Ranged
case WPN_SLING: return TILEP_HAND1_SLING;
case WPN_BOW: return TILEP_HAND1_BOW2;
case WPN_CROSSBOW: return TILEP_HAND1_CROSSBOW;
case WPN_HAND_CROSSBOW: return TILEP_HAND1_CROSSBOW;
case WPN_BLOWGUN: return TILEP_HAND1_BLOWGUN;
case WPN_LONGBOW: return TILEP_HAND1_BOW3;
default: return 0;
//Ranged
case WPN_SLING: return TILEP_HAND1_SLING;
case WPN_BOW: return TILEP_HAND1_BOW2;
case WPN_CROSSBOW: return TILEP_HAND1_CROSSBOW;
case WPN_HAND_CROSSBOW: return TILEP_HAND1_CROSSBOW;
case WPN_BLOWGUN: return TILEP_HAND1_BLOWGUN;
case WPN_LONGBOW: return TILEP_HAND1_BOW3;
default: return 0;
case ARM_LEATHER_ARMOUR: return TILEP_BODY_LEATHER_ARMOUR3;
case ARM_RING_MAIL: return TILEP_BODY_RINGMAIL;
case ARM_CHAIN_MAIL: return TILEP_BODY_CHAINMAIL;
case ARM_SCALE_MAIL: return TILEP_BODY_SCALEMAIL;
case ARM_SPLINT_MAIL: return TILEP_BODY_BANDED;
case ARM_BANDED_MAIL: return TILEP_BODY_BANDED;
case ARM_PLATE_MAIL: return TILEP_BODY_PLATE_BLACK;
case ARM_LEATHER_ARMOUR: return TILEP_BODY_LEATHER_ARMOUR3;
case ARM_RING_MAIL: return TILEP_BODY_RINGMAIL;
case ARM_CHAIN_MAIL: return TILEP_BODY_CHAINMAIL;
case ARM_SCALE_MAIL: return TILEP_BODY_SCALEMAIL;
case ARM_SPLINT_MAIL: return TILEP_BODY_BANDED;
case ARM_BANDED_MAIL: return TILEP_BODY_BANDED;
case ARM_PLATE_MAIL: return TILEP_BODY_PLATE_BLACK;
case ARM_DRAGON_HIDE: return TILEP_BODY_DRAGONSC_GREEN;
case ARM_ICE_DRAGON_HIDE: return TILEP_BODY_DRAGONSC_CYAN;
case ARM_STEAM_DRAGON_HIDE: return TILEP_BODY_DRAGONSC_WHITE;
case ARM_DRAGON_HIDE: return TILEP_BODY_DRAGONSC_GREEN;
case ARM_ICE_DRAGON_HIDE: return TILEP_BODY_DRAGONSC_CYAN;
case ARM_STEAM_DRAGON_HIDE: return TILEP_BODY_DRAGONSC_WHITE;
case ARM_STORM_DRAGON_HIDE: return TILEP_BODY_DRAGONSC_BLUE;
case ARM_GOLD_DRAGON_HIDE: return TILEP_BODY_DRAGONSC_GOLD;
case ARM_SWAMP_DRAGON_HIDE: return TILEP_BODY_DRAGONSC_BROWN;
case ARM_STORM_DRAGON_HIDE: return TILEP_BODY_DRAGONSC_BLUE;
case ARM_GOLD_DRAGON_HIDE: return TILEP_BODY_DRAGONSC_GOLD;
case ARM_SWAMP_DRAGON_HIDE: return TILEP_BODY_DRAGONSC_BROWN;
case ARM_DRAGON_ARMOUR: return TILEP_BODY_DRAGONARM_GREEN;
case ARM_ICE_DRAGON_ARMOUR: return TILEP_BODY_DRAGONARM_CYAN;
case ARM_STEAM_DRAGON_ARMOUR: return TILEP_BODY_DRAGONARM_WHITE;
case ARM_DRAGON_ARMOUR: return TILEP_BODY_DRAGONARM_GREEN;
case ARM_ICE_DRAGON_ARMOUR: return TILEP_BODY_DRAGONARM_CYAN;
case ARM_STEAM_DRAGON_ARMOUR: return TILEP_BODY_DRAGONARM_WHITE;
case ARM_STORM_DRAGON_ARMOUR: return TILEP_BODY_DRAGONARM_BLUE;
case ARM_GOLD_DRAGON_ARMOUR: return TILEP_BODY_DRAGONARM_GOLD;
case ARM_SWAMP_DRAGON_ARMOUR: return TILEP_BODY_DRAGONARM_BROWN;
case ARM_STORM_DRAGON_ARMOUR: return TILEP_BODY_DRAGONARM_BLUE;
case ARM_GOLD_DRAGON_ARMOUR: return TILEP_BODY_DRAGONARM_GOLD;
case ARM_SWAMP_DRAGON_ARMOUR: return TILEP_BODY_DRAGONARM_BROWN;
for(i=0;i<tilep_parts_total[part];i++)
if(strcmp(name, tilep_comment[ tilep_comment_ofs[part]+i])==0)
return i+1;
for (i = 0; i < tilep_parts_total[part]; i++)
{
if (strcmp(name, tilep_comment[ tilep_comment_ofs[part]+i]) == 0)
return i+1;
}
SPECIAL_N = 0,
SPECIAL_NE = 1,
SPECIAL_E = 2,
SPECIAL_SE = 3,
SPECIAL_S = 4,
SPECIAL_SW = 5,
SPECIAL_W = 6,
SPECIAL_NW = 7,
SPECIAL_N = 0,
SPECIAL_NE = 1,
SPECIAL_E = 2,
SPECIAL_SE = 3,
SPECIAL_S = 4,
SPECIAL_SW = 5,
SPECIAL_W = 6,
SPECIAL_NW = 7,
if(TileImg) ImgDestroy(TileImg);
if(PlayerImg) ImgDestroy(PlayerImg);
if(WallImg) ImgDestroy(WallImg);
if(TileIsoImg) ImgDestroy(TileIsoImg);
if (TileImg)
ImgDestroy(TileImg);
if (PlayerImg)
ImgDestroy(PlayerImg);
if (WallImg)
ImgDestroy(WallImg);
if (TileIsoImg)
ImgDestroy(TileIsoImg);
struct prefs *p = &pref_data[i];
int idx = p->dummy_idx;
if (p->type == 'I')
fprintf(fp, "%s:%s=%d\n", pref_mode_name[mode],
p->tagname, dummy_int[mode][idx]);
if (p->type == 'S')
fprintf(fp, "%s:%s=%s\n", pref_mode_name[mode],
p->tagname, dummy_str[mode][idx]);
struct prefs *p = &pref_data[i];
int idx = p->dummy_idx;
if (p->type == 'I')
{
fprintf(fp, "%s:%s=%d\n", pref_mode_name[mode],
p->tagname, dummy_int[mode][idx]);
}
else if (p->type == 'S')
{
fprintf(fp, "%s:%s=%s\n", pref_mode_name[mode],
p->tagname, dummy_str[mode][idx]);
}
bool upd_msg = false;
bool upd_dngn = false;
bool upd_crt = false;
bool upd_map = false;
bool need_resize = false;
int inc = 0;
bool upd_msg = false;
bool upd_dngn = false;
bool upd_crt = false;
bool upd_map = false;
bool need_resize = false;
int inc = 0;
textcolor(WHITE);
cgotoxy (4, 4, GOTO_MSG);
cprintf("j, k, up, down : Select pref");
cgotoxy (4, 5, GOTO_MSG);
cprintf("h, l, left, right : Decrease/Increase");
cgotoxy (4, 6, GOTO_MSG);
cprintf("H, L : Dec/Inc by 10");
need_draw_msg = false;
}
textcolor(WHITE);
cgotoxy (4, 4, GOTO_MSG);
cprintf("j, k, up, down : Select pref");
cgotoxy (4, 5, GOTO_MSG);
cprintf("h, l, left, right : Decrease/Increase");
cgotoxy (4, 6, GOTO_MSG);
cprintf("H, L : Dec/Inc by 10");
need_draw_msg = false;
}
struct prefs *p = &pref_data[i];
cgotoxy(2, i+2, GOTO_STAT);
if (i == cur_pos)
{
textcolor(0xf0);
cprintf(">");
}
else
{
textcolor(LIGHTGREY);
cprintf(" ");
}
if (pref_data[i].type == 'I')
cprintf(" %s: %3d ", p->name, *(int *)p->ptr);
else
cprintf(" %s: %s", p->name, (char *)p->ptr);
}
textcolor(LIGHTGREY);
struct prefs *p = &pref_data[i];
cgotoxy(2, i+2, GOTO_STAT);
if (i == cur_pos)
{
textcolor(0xf0);
cprintf(">");
}
else
{
textcolor(LIGHTGREY);
cprintf(" ");
}
if (pref_data[i].type == 'I')
cprintf(" %s: %3d ", p->name, *(int *)p->ptr);
else
cprintf(" %s: %s", p->name, (char *)p->ptr);
}
textcolor(LIGHTGREY);
cgotoxy(4, MAX_EDIT_PREFS+3, GOTO_STAT);
cprintf("FONT: %s %d",font_name, font_size);
if (UseDosChar)
{
cgotoxy(4, MAX_EDIT_PREFS+4, GOTO_STAT);
cprintf("DOSFONT: %s %d", dos_font_name, dos_font_size);
}
cgotoxy(4, MAX_EDIT_PREFS+3, GOTO_STAT);
cprintf("FONT: %s %d",font_name, font_size);
if (UseDosChar)
{
cgotoxy(4, MAX_EDIT_PREFS+4, GOTO_STAT);
cprintf("DOSFONT: %s %d", dos_font_name, dos_font_size);
}
draw_hgauge(3, 1, 3, GOTO_MSG, msg_x-2, WHITEIF(msg_x));
clear_to_end_of_line();
draw_vgauge(1, 1, 1, GOTO_MSG, msg_y, WHITEIF(msg_y));
need_draw_stat = false;
_draw_hgauge(3, 1, 3, GOTO_MSG, msg_x-2, WHITEIF(msg_x));
clear_to_end_of_line();
_draw_vgauge(1, 1, 1, GOTO_MSG, msg_y, WHITEIF(msg_y));
need_draw_stat = false;
if (key == 0x1b || key == '\r') break;
if (key == 'j' || key == CK_DOWN)
{
cur_pos++;
need_draw_stat = true;
}
if (key == 'k' || key == CK_UP)
{
cur_pos--;
need_draw_stat = true;
}
if (key == CK_LEFT) key = 'h';
if (key == CK_RIGHT) key = 'l';
if (key == 0x1b || key == '\r')
break;
if (key == 'j' || key == CK_DOWN)
{
cur_pos++;
need_draw_stat = true;
}
if (key == 'k' || key == CK_UP)
{
cur_pos--;
need_draw_stat = true;
}
if (key == CK_LEFT)
key = 'h';
if (key == CK_RIGHT)
key = 'l';
switch(key)
{
case 'l': inc=1; break;
case 'L': inc=10; break;
case 'h': inc=-1; break;
case 'H': inc=-10; break;
}
switch(key)
{
case 'l': inc = 1; break;
case 'L': inc = 10; break;
case 'h': inc = -1; break;
case 'H': inc = -10; break;
}
int crt_x_old = crt_x;
int crt_y_old = crt_y;
int map_px_old = map_px;
int msg_x_old = msg_x;
int msg_y_old = msg_y;
int dngn_x_old = dngn_x;
int dngn_y_old = dngn_y;
int crt_x_old = crt_x;
int crt_y_old = crt_y;
int map_px_old = map_px;
int msg_x_old = msg_x;
int msg_y_old = msg_y;
int dngn_x_old = dngn_x;
int dngn_y_old = dngn_y;
if (inc==1) inc=2;
if (inc==-1) inc=-2;
}
int olddat = *dat;
(*dat)+= inc;
if (*dat > p->max) *dat = p->max;
if (*dat < p->min) *dat = p->min;
if (olddat == *dat) continue;
need_resize = true;
}// changed
if (dat == &dngn_x || dat == &dngn_y)
{
if (inc == 1)
inc++;
else if (inc == -1)
inc--;
}
// resize msg?
if (msg_x != msg_x_old || msg_y != msg_y_old)
{
upd_msg = true;
region_msg->resize(msg_x, msg_y);
}
// resize crt?
if (crt_x != crt_x_old || crt_y != crt_y_old)
{
upd_crt = true;
region_crt->resize(crt_x, crt_y);
if (olddat == *dat)
continue;
need_resize = true;
need_draw_stat = need_draw_msg = true;
// crt screen layouts
// resize msg?
if (msg_x != msg_x_old || msg_y != msg_y_old)
{
upd_msg = true;
region_msg->resize(msg_x, msg_y);
}
// resize crt?
if (crt_x != crt_x_old || crt_y != crt_y_old)
{
upd_crt = true;
region_crt->resize(crt_x, crt_y);
}
// resize map?
if (map_px != map_px_old)
{
if (upd_map)
region_map->resize_backbuf();
if (upd_dngn)
{
region_tile -> resize_backbuf();
tile_set_force_redraw_tiles(true);
TileResizeScreen(dngn_x, dngn_y);
}
if (region_item)
region_item->resize_backbuf();
if (region_item2)
region_item2->resize_backbuf();
tile_set_force_redraw_inv(true);
tile_draw_inv(-1, REGION_INV1);
if (upd_map)
region_map->resize_backbuf();
if (upd_dngn)
{
region_tile -> resize_backbuf();
tile_set_force_redraw_tiles(true);
TileResizeScreen(dngn_x, dngn_y);
}
if (region_item)
region_item->resize_backbuf();
if (region_item2)
region_item2->resize_backbuf();
tile_set_force_redraw_inv(true);
tile_draw_inv(-1, REGION_INV1);
region_map->force_redraw = true;
viewwindow(true, true);
region_tile->redraw();
region_item->redraw();
}// need resize
}//while
region_map->force_redraw = true;
viewwindow(true, true);
region_tile->redraw();
region_item->redraw();
} // need resize
} // while-loop