fix many warnings (hope everything will work)

This commit is contained in:
Ondřej Novák 2025-01-27 11:26:51 +01:00
parent cddb569580
commit 858c4384e8
57 changed files with 911 additions and 807 deletions

View file

@ -4,6 +4,13 @@ project(skeldal)
# Najít SDL2 knihovnu
find_package(SDL2 REQUIRED)
if (MSVC)
add_compile_options(/W4 /EHsc /DNOMINMAX)
set(STANDARD_LIBRARIES "")
else()
add_compile_options(-Wall -Wextra -Werror -Wno-unused-parameter -Wno-unused-value)
set(STANDARD_LIBRARIES "pthread")
endif()
include_directories(platform libs)

View file

@ -155,7 +155,7 @@ static char check_for_layer(int layer)
return 0;
}
void ukaz_vsechny_texty_v_mape()
void ukaz_vsechny_texty_v_mape(void)
{
int x,y,d,i,cn;
char *c;
@ -172,7 +172,7 @@ void ukaz_vsechny_texty_v_mape()
x=x-map_xr;
y=y-map_yr;
x+=320;y+=197;
if (d==cur_depth)
if (d==cur_depth) {
if (testclip(x,y))
{
int h;char *d,e;
@ -185,7 +185,7 @@ void ukaz_vsechny_texty_v_mape()
position(x,y);outtext(c);
*d=e;
}
else if(x<8 && x+text_width(c)>10 && y>16 && y<376)
else if(x<8 && (x+text_width(c)>10) && y>16 && y<376)
{
char cd[2]=" ";
while (x<10 && *c)
@ -195,13 +195,14 @@ void ukaz_vsechny_texty_v_mape()
position(x,y);outtext(c);
}
}
}
}
}
void psani_poznamek_event(EVENT_MSG *msg,void **data)
{
static int x,y;
static char text[255],index;
static int x,y, index;
static char text[255];
static char *save;
static void *save_pic=NULL;
@ -515,8 +516,8 @@ void draw_automap(int xr,int yr)
{
int i,k,x,y,xp,yp;
int depth;
TSTENA *q;
word *s;
// TSTENA *q;
//word *s;
update_mysky();
schovej_mysku();
@ -535,8 +536,8 @@ void draw_automap(int xr,int yr)
{
x=(map_coord[i].x*8+xr*8);
y=(map_coord[i].y*8+yr*8);
q=map_sides+(i*4);
s=map_sectors[i].step_next;
// q=map_sides+(i*4);
// s=map_sectors[i].step_next;
x-=xp;y-=yp;
if (y>=-178 && y<170 && x>=-312 && x<310)
{
@ -550,9 +551,10 @@ void draw_automap(int xr,int yr)
for(j=0;j<POCET_POSTAV;j++)
{
if (postavy[j].used)
if (postavy[j].sektor==i)
if (postavy[j].sektor==i) {
if (postavy[j].groupnum==cur_group) break;
else l=j;
l=j;
}
}
if (j==POCET_POSTAV) j=l;
if (j!=-1)
@ -596,7 +598,7 @@ void disable_all_map(void)
}
void unwire_automap()
void unwire_automap(void)
{
send_message(E_DONE,E_KEYBOARD,map_keyboard);
send_message(E_DONE,E_AUTOMAP_REDRAW,map_keyboard);
@ -683,7 +685,7 @@ static char mob_not_invis(int sector)
return 1;
}
void draw_medium_map()
void draw_medium_map(void)
{
int xr, yr;
int xp, yp;
@ -721,8 +723,9 @@ void draw_medium_map()
{
int u=-1,z=-1;
for(k=0;k<POCET_POSTAV;k++)
if (postavy[k].sektor==i)
if (postavy[k].sektor==i) {
if (postavy[k].groupnum==cur_group) z=k;else u=k;
}
if (z!=-1) u=z;
if (u!=-1)
{
@ -753,7 +756,7 @@ char map_menu_glob_map(int id,int xa,int ya,int xr,int yr)
}
static void wire_glob_map_control()
static void wire_glob_map_control(void)
{
set_select_mode(0);
schovej_mysku();
@ -849,14 +852,14 @@ T_CLK_MAP clk_kniha[]=
};
void unwire_kniha()
void unwire_kniha(void)
{
hold_timer(TM_FAST_TIMER,0);
GlobEvent(MAGLOB_AFTERBOOK,viewsector,viewdir);
}
void wire_kniha()
void wire_kniha(void)
{
int xa;
if (!GlobEvent(MAGLOB_BEFOREBOOK,viewsector,viewdir))
@ -935,7 +938,7 @@ char map_target_select(int id,int xa,int ya,int xr,int yr)
}
int select_teleport_target()
int select_teleport_target(void)
{
*otevri_zavoru=1;
unwire_proc();

View file

@ -82,7 +82,7 @@ static int showruneitem=0;
char dirs[10];
uint8_t dirs[10];
word minimap[VIEW3D_Z+1][VIEW3D_X*2+1];
@ -468,11 +468,13 @@ static void MaskPutPicture(int x, int y, char mask, word color, char blend, void
if (blend) color=color & 0xF7DE;
for (y=0;y<info[1];y++,pos+=scr_linelen2,data+=info[0])
for (x=0;x<info[0];x++)
if (data[x]==mask)
if (blend)
if (data[x]==mask) {
if (blend) {
pos[x]=((pos[x] & 0xF7DE)+color)>>1;
else
} else {
pos[x]=color;
}
}
}
@ -643,11 +645,11 @@ int fc_num(int anim_counter,int sector,char floor)
}
int enter_tab[VIEW3D_Z+1][VIEW3D_X*2+1]=
{4,3,3,3,3,3,3,3,4,
4,3,3,2,3,2,3,3,4,
4,3,3,2,4,2,3,3,4,
4,3,1,1,4,1,1,3,4,
4,1,1,1,4,1,1,1,4};
{{4,3,3,3,3,3,3,3,4},
{4,3,3,2,3,2,3,3,4},
{4,3,3,2,4,2,3,3,4},
{4,3,1,1,4,1,1,3,4},
{4,1,1,1,4,1,1,1,4}};
@ -708,7 +710,7 @@ void create_minimap(int sector, int smer)
crt_minimap_itr(sector,smer,VIEW3D_X,0,1);
}
static const float Inv2=0.5;
static const float Snapper=3<<22;
static __inline int toInt( float fval )
@ -812,65 +814,109 @@ void draw_vyklenek(int celx,int cely,int sector,int dir)
}
static int draw_basic_sector(int celx,int cely,int sector)
{
TSTENA *w,*q;
int obl;
static int draw_basic_sector(int celx, int cely, int sector) {
TSTENA *w, *q;
int obl;
w=&map_sides[sector*4];
q=&w[dirs[1]];
obl=GET_OBLOUK(q);
if (cely<VIEW3D_Z)
{
if (q->flags & SD_LEFT_ARC && obl)
show_cel2(celx,cely,ablock(num_ofsets[OBL_NUM]+obl),0,0,1);
if (q->flags & SD_RIGHT_ARC && q->oblouk & 0x0f)
show_cel2(celx,cely,ablock(num_ofsets[OBL2_NUM]+obl),0,0,2);
if (q->flags & SD_PRIM_VIS && q->prim)
show_cel2(celx,cely,ablock(num_ofsets[MAIN_NUM]+q->prim+(q->prim_anim>>4)),0,0,1+(q->oblouk & SD_POSITION));
if (q->flags & SD_SEC_VIS && q->sec)
if (q->side_tag & SD_SHIFTUP)
{
if (cely!=0)
show_cel2(celx,cely-1,ablock(num_ofsets[MAIN_NUM]+q->sec+(q->sec_anim>>4)),0,0,1);
}
else
show_cel2(celx,cely,ablock(num_ofsets[MAIN_NUM]+q->sec+(q->sec_anim>>4)),q->xsec<<1,q->ysec<<1,0);
if (q->oblouk & 0x10)
draw_vyklenek(celx,cely,sector,dirs[1]);
}
if (celx<=0)
{
q=&w[dirs[0]];
if (left_shiftup)
show_cel(celx,cely,ablock(num_ofsets[LEFT_NUM]+left_shiftup),0,0,2),left_shiftup=0;
if (q->flags & SD_PRIM_VIS && q->prim)
show_cel(-celx,cely,ablock(num_ofsets[LEFT_NUM]+q->prim+(q->prim_anim>>4)),0,0,2+(q->oblouk & SD_POSITION));
if (q->flags & SD_SEC_VIS && q->sec)
if (q->side_tag & SD_SHIFTUP)
if (celx!=0) left_shiftup=q->sec+(q->sec_anim>>4);else left_shiftup=0;
else if (q->flags & SD_SPEC)
show_cel(celx,cely,ablock(num_ofsets[LEFT_NUM]+q->sec+(q->sec_anim>>4)),0,0,2);
else
show_cel(celx,cely,ablock(num_ofsets[LEFT_NUM]+q->sec+(q->sec_anim>>4)),q->xsec<<1,q->ysec<<1,0);
}
if (celx>=0)
{
q=&w[dirs[2]];
if (right_shiftup)
show_cel(celx,cely,ablock(num_ofsets[RIGHT_NUM]+right_shiftup),0,0,3),right_shiftup=0;
if (q->flags & SD_PRIM_VIS && q->prim)
show_cel(celx,cely,ablock(num_ofsets[RIGHT_NUM]+q->prim+(q->prim_anim>>4)),0,0,3+(q->oblouk & SD_POSITION));
if (q->flags & SD_SEC_VIS && q->sec)
if (q->side_tag & SD_SHIFTUP)
if (celx!=0) right_shiftup=q->sec+(q->sec_anim>>4);else right_shiftup=0;
else if (q->flags & SD_SPEC)
show_cel(celx,cely,ablock(num_ofsets[RIGHT_NUM]+q->sec+(q->sec_anim>>4)),0,0,3);
else
show_cel(celx,cely,ablock(num_ofsets[RIGHT_NUM]+q->sec+(q->sec_anim>>4)),500-(q->xsec<<1),q->ysec<<1,1);
}
return 0;
}
w = &map_sides[sector * 4];
q = &w[dirs[1]];
obl = GET_OBLOUK(q);
if (cely < VIEW3D_Z) {
if (q->flags & SD_LEFT_ARC && obl)
show_cel2(celx, cely, ablock(num_ofsets[OBL_NUM] + obl), 0, 0, 1);
if (q->flags & SD_RIGHT_ARC && q->oblouk & 0x0f)
show_cel2(celx, cely, ablock(num_ofsets[OBL2_NUM] + obl), 0, 0, 2);
if (q->flags & SD_PRIM_VIS && q->prim)
show_cel2(celx, cely,
ablock(
num_ofsets[MAIN_NUM] + q->prim
+ (q->prim_anim >> 4)), 0, 0,
1 + (q->oblouk & SD_POSITION));
if (q->flags & SD_SEC_VIS && q->sec) {
if (q->side_tag & SD_SHIFTUP) {
if (cely != 0) {
show_cel2(celx, cely - 1,
ablock(
num_ofsets[MAIN_NUM] + q->sec
+ (q->sec_anim >> 4)), 0, 0, 1);
}
} else {
show_cel2(celx, cely,
ablock(
num_ofsets[MAIN_NUM] + q->sec
+ (q->sec_anim >> 4)), q->xsec << 1,
q->ysec << 1, 0);
}
}
if (q->oblouk & 0x10)
draw_vyklenek(celx, cely, sector, dirs[1]);
}
if (celx <= 0) {
q = &w[dirs[0]];
if (left_shiftup)
show_cel(celx, cely, ablock(num_ofsets[LEFT_NUM] + left_shiftup), 0,
0, 2), left_shiftup = 0;
if (q->flags & SD_PRIM_VIS && q->prim)
show_cel(-celx, cely,
ablock(
num_ofsets[LEFT_NUM] + q->prim
+ (q->prim_anim >> 4)), 0, 0,
2 + (q->oblouk & SD_POSITION));
if (q->flags & SD_SEC_VIS && q->sec) {
if (q->side_tag & SD_SHIFTUP) {
if (celx != 0) {
left_shiftup = q->sec + (q->sec_anim >> 4);
} else {
left_shiftup = 0;
}
} else if (q->flags & SD_SPEC) {
show_cel(celx, cely,
ablock(
num_ofsets[LEFT_NUM] + q->sec
+ (q->sec_anim >> 4)), 0, 0, 2);
} else {
show_cel(celx, cely,
ablock(
num_ofsets[LEFT_NUM] + q->sec
+ (q->sec_anim >> 4)), q->xsec << 1,
q->ysec << 1, 0);
}
}
}
if (celx >= 0) {
q = &w[dirs[2]];
if (right_shiftup)
show_cel(celx, cely, ablock(num_ofsets[RIGHT_NUM] + right_shiftup),
0, 0, 3), right_shiftup = 0;
if (q->flags & SD_PRIM_VIS && q->prim)
show_cel(celx, cely,
ablock(
num_ofsets[RIGHT_NUM] + q->prim
+ (q->prim_anim >> 4)), 0, 0,
3 + (q->oblouk & SD_POSITION));
if (q->flags & SD_SEC_VIS && q->sec) {
if (q->side_tag & SD_SHIFTUP) {
if (celx != 0)
right_shiftup = q->sec + (q->sec_anim >> 4);
else
right_shiftup = 0;
} else if (q->flags & SD_SPEC) {
show_cel(celx, cely,
ablock(
num_ofsets[RIGHT_NUM] + q->sec
+ (q->sec_anim >> 4)), 0, 0, 3);
} else {
show_cel(celx, cely,
ablock(
num_ofsets[RIGHT_NUM] + q->sec
+ (q->sec_anim >> 4)),
500 - (q->xsec << 1), q->ysec << 1, 1);
}
}
}
return 0;
}
static int draw_lodku(int celx,int cely)
{
@ -917,7 +963,7 @@ void draw_players(int sector,int dir,int celx,int cely)
if (pp==1 && freep[f] & 1)
{pp=f+1&3;freep[pp]=freep[f];freep[f]=0;}
for(i=0;i<5;i++)
if ((j=freep[d=p_place_table[0][i]])!=0)
if ((j=freep[d=p_place_table[0][i]])!=0) {
if (postavy[j-1].lives)
{
set_font(H_FLITT5,barvy_skupin[postavy[j-1].groupnum]);
@ -925,6 +971,7 @@ void draw_players(int sector,int dir,int celx,int cely)
}
else
draw_player(ablock(H_KOSTRA),celx,cely,p_positions_x[d],p_positions_y[d]-32,HUMAN_ADJUST,NULL);
}
}
@ -959,11 +1006,12 @@ int draw_sloup_sector(int celx,int cely,int sector)
show_cel(celx,cely,ablock(num_ofsets[RIGHT_NUM]+q->prim+(q->prim_anim>>4)),0,0,3+(q->oblouk & SD_POSITION));
}
q=&w[dirs[1]];
if (q->flags & SD_SEC_VIS && q->sec && cely!=0)
if (q->flags & SD_SEC_VIS && q->sec && cely!=0) {
if (q->flags & SD_SPEC)
show_cel2(celx,cely-1,ablock(num_ofsets[MAIN_NUM]+q->sec+(q->sec_anim>>4)),0,0,2);
else
show_cel2(celx,cely-1,ablock(num_ofsets[MAIN_NUM]+q->sec+(q->sec_anim>>4)),(q->xsec<<1)+celx*(points[0][0][cely].x-points[0][0][cely-1].x)/2,q->ysec<<1,0);
}
return 0;
}
@ -1026,18 +1074,22 @@ void back_clear(int celx,int color)
}
}
static char set_blind(void)
{
int i;
static char set_blind(void) {
int i;
if (battle && postavy[select_player].sektor==viewsector) if (postavy[select_player].vlastnosti[VLS_KOUZLA] & SPL_BLIND) return 1;else return 0;
for(i=0;i<POCET_POSTAV;i++)
{
THUMAN *p=postavy+i;
if (p->sektor==viewsector && !(p->vlastnosti[VLS_KOUZLA] & SPL_BLIND)) return 0;
}
return 1;
}
if (battle && postavy[select_player].sektor == viewsector) {
if (postavy[select_player].vlastnosti[VLS_KOUZLA] & SPL_BLIND)
return 1;
else
return 0;
}
for (i = 0; i < POCET_POSTAV; i++) {
THUMAN *p = postavy + i;
if (p->sektor == viewsector && !(p->vlastnosti[VLS_KOUZLA] & SPL_BLIND))
return 0;
}
return 1;
}
extern char folow_mode;
@ -1076,7 +1128,7 @@ skp: add edi,2h
}
}
*/
/*
static void trace_for_bgr(int dir)
{
int s,i;
@ -1112,7 +1164,7 @@ static void trace_for_bgr(int dir)
olddist=bgr_distance;
olddir=dir;
}
*/
void render_scene(int sector, int smer)
{

View file

@ -97,9 +97,9 @@ static T_VLASTS rohy[9]=
#define DIFF_RAND(x,y) ((x)+rnd((y)-(x)+1))
#define MAX_RACES 5
static char women[MAX_XICHTS]={0,0,0,0,1,1,1,1};
static char poradi[MAX_XICHTS]={0,2,3,4,1,5,6,7};
static char disable[MAX_XICHTS];
static uint8_t women[MAX_XICHTS]={0,0,0,0,1,1,1,1};
static uint8_t poradi[MAX_XICHTS]={0,2,3,4,1,5,6,7};
static uint8_t disable[MAX_XICHTS];
static int cur_edited=0;
static int cur_angle=90;
static int cur_polomer=0;
@ -303,7 +303,7 @@ static void zobraz_perlu(void)
scr=sss;
for(xxs=0;xxs<xs;xxs++)
if (!*p) scr++,p++;else
if (*p<128) *scr++=b[*p++];else
if (*p<128) *scr++=b[(uint8_t)*p++];else
{
*scr=(*scr & RGB555(30,30,30))>>1;
scr++;p++;
@ -325,13 +325,13 @@ static void vypocet_vlastnosti(int angle,T_VLASTS *vls)
{
T_VLASTS *low,*hi;
div_t rm;
int p,test;
int p;
rm=div(angle,45);
p=rm.quot;
low=rohy+p;p++;if (p>=8) p=0;
hi=rohy+p;
test=CALC_DIFF(8,12,44);
// CALC_DIFF(8,12,44);
vls->sill=CALC_DIFF(low->sill,hi->sill,rm.rem);
vls->silh=CALC_DIFF(low->silh,hi->silh,rm.rem);
vls->smgl=CALC_DIFF(low->smgl,hi->smgl,rm.rem);
@ -475,13 +475,14 @@ static char vol_vlastnosti(int id,int xa,int ya,int xr,int yr)
cancel=1;
return 0;
}
if (ms_last_event.event_type & 0x2)
if (ms_last_event.event_type & 0x2) {
if (xa<pod_perlou_x || ya<pod_perlou_y || xa>pod_perlou_x+pod_perlou[0] || ya>pod_perlou_y+pod_perlou[1] )
{
cancel=1;
return 0;
}
else cancel=0;
}
if (cancel) return 0;
xr=xa-PERLA_STRED_X;
yr=-(ya-PERLA_STRED_Y);
@ -629,7 +630,7 @@ void generuj_postavu(THUMAN *h)
//postava je vygenerovana
}
static void redraw_page3(char)
static void redraw_page3(char _)
{
update_mysky();
schovej_mysku();
@ -645,7 +646,7 @@ static void redraw_page3(char)
}
static void redraw_svitek(char)
static void redraw_svitek(char _)
{
if (postavy[cur_edited].bonus==0)
{
@ -770,7 +771,7 @@ static void enter_reaction(EVENT_MSG *msg,void **unused)
}
}
static void enter_reaction2(EVENT_MSG *msg,void **)
static void enter_reaction2(EVENT_MSG *msg,void **_)
{
int c = va_arg(msg->data, int);
if (msg->msg==E_KEYBOARD && c==13 && !shut_downing_text && ~b_disables & 0x3)

View file

@ -53,7 +53,8 @@ char clk_touch_vyk(int sector,int side,int xr,int yr)
{
if (picked_item==NULL)
{
for(i=0;v->items[i];i++);if (!i) return 0;
for(i=0;v->items[i];i++);
if (!i) return 0;
i--;
picked_item=NewArr(short,2);
picked_item[0]=v->items[i];picked_item[1]=0;
@ -67,7 +68,8 @@ char clk_touch_vyk(int sector,int side,int xr,int yr)
{
int fc;
word *w;
for(i=0;v->items[i];i++);if (i==8)
for(i=0;v->items[i];i++);
if (i==8)
{
bott_disp_text(texty[36]);
return 1;
@ -92,7 +94,7 @@ char clk_touch_vyk(int sector,int side,int xr,int yr)
char clk_touch(int id,int xa,int ya,int xr,int yr)
{
int x1,y1,x2,y2;
int x1=0,y1=0,x2=0,y2=0;
word *p;
int ext=0;
@ -107,7 +109,10 @@ char clk_touch(int id,int xa,int ya,int xr,int yr)
ya=320-(map_sides[id].ysec<<1);
p=(word *)ablock(map_sides[id].sec+num_ofsets[MAIN_NUM]);
x1=*p++;y1=*p++;
x2=xa+x1/2;y2=ya+y1/2;y1=y2-y1;x1=x2-x1;
x2=xa+x1/2;
y2=ya+y1/2;
y1=y2-y1;
x1=x2-x1;
x1+=MIDDLE_X-points[0][1][1].x;
x2+=MIDDLE_X-points[0][1][1].x;
y1+=MIDDLE_Y+points[0][1][1].y;
@ -122,6 +127,7 @@ char clk_touch(int id,int xa,int ya,int xr,int yr)
y2=MIDDLE_Y+points[0][0][1].y;
ext=((map_sides[id].flags & SD_THING_IMPS) && !(map_sides[id].oblouk & SD_ITPUSH));
}
else return 0;
if (x1<=xr && xr<=x2 && y1<=yr && yr<=y2)
{
a_touch(viewsector,viewdir);

View file

@ -1,5 +1,5 @@
void *LoadDefaultFont();
void *LoadDefaultFont(void);

View file

@ -561,7 +561,7 @@ static void nahodne(int vls,int omz,char check)
int i,l,m;
memset(chk,0,sizeof(chk));
if (!check) for(i=0;i<SAVE_POSTS;i++) if (sn_nums[i]<POCET_POSTAV) chk[sn_nums[i]]|=1;
if (!check) for(i=0;i<SAVE_POSTS;i++) if (sn_nums[i]<POCET_POSTAV) chk[(uint8_t)sn_nums[i]]|=1;
for(i=0;i<POCET_POSTAV;i++) if (postavy[i].sektor!=viewsector || !postavy[i].lives || !postavy[i].used) chk[i]|=2;
m=0;l=-1;
for(i=0;i<POCET_POSTAV;i++)
@ -672,7 +672,7 @@ static void remove_all_cases();
static void dialog_cont()
{
save_jump=vol_n[vyb_volba];
save_jump=vol_n[(uint8_t)vyb_volba];
remove_all_cases();
echo(" ");
his_line=get_last_his_line();
@ -684,7 +684,7 @@ static void dialog_cont()
static void key_check(EVENT_MSG *msg,void **unused)
{
char c,d;
char d;
unused;
if (msg->msg==E_KEYBOARD)
@ -785,7 +785,7 @@ static void add_case(int num,char *text)
{
char *a;
int xs,ys;
vol_n[pocet_voleb]=num;
vol_n[(uint8_t)pocet_voleb]=num;
if (pocet_voleb>MAX_VOLEB) {error("POZOR! Je priliz mnoho voleb");pocet_voleb=MAX_VOLEB;}
a=alloca(strlen(text)+2);
set_font(H_FBOLD,RGB555(0,30,0));
@ -807,9 +807,17 @@ static void remove_all_cases()
int cf,i;
pocet_voleb=0;
cf=str_count(history);
for(i=end_text_line;i<cf;i++) if (history[i]!=NULL)
if (history[i][0]-48!=vyb_volba) str_replace(&history,i,NULL);else
history[i][0]='M';else break;
for (i = end_text_line; i < cf; i++) {
if (history[i] != NULL) {
if (history[i][0] - 48 != vyb_volba) {
str_replace(&history, i, NULL);
} else {
history[i][0] = 'M';
}
} else {
break;
}
}
str_delfreelines(&history);
vyb_volba=0;
}
@ -1226,7 +1234,7 @@ void do_dialog()
if (game_extras & EX_AUTOOPENBOOK) autoopenaction=1;
break;
case 150:set_nvisited(Get_short());break;
case 151:iff=rnd(100)<=Get_short();break;
case 151:iff=rnd(100)<=(unsigned int)Get_short();break;
case 152:iff=q_item(Get_short(),viewsector)!=NULL;break;
case 153:create_item(Get_short());break;
case 154:destroy_item(Get_short());break;
@ -1323,7 +1331,7 @@ static void create_back_pic()
void call_dialog(int entr,int mob)
{
int i;
void (*old_wire_proc)()=wire_proc;
// void (*old_wire_proc)()=wire_proc;
curcolor=0;
create_back_pic();
bar32(0,SCREEN_OFFLINE,639,SCREEN_OFFLINE+359);

View file

@ -78,7 +78,7 @@ void save_dump(const uint16_t *screen_addr,
for (y = height; y > 0; y--) {
const uint16_t *scr = screen_addr;
a = scr + (y - 1) * linelen;
for (x = 0; x < width; x++) {
for (x = 0; (unsigned int)x < width; x++) {
i = a[x];
b = (i & 0x1f) << 3;
g = (i & 0x7ff) >> 3;

View file

@ -142,10 +142,10 @@ int load_enemy_paths(TMPFILE_RD *f)
return 0;
}
static void mob_reload(EVENT_MSG *msg,void **){
static void mob_reload(EVENT_MSG *msg,void **_){
static int counter=0;
if (msg->msg = E_KOUZLO_KOLO)
if (msg->msg == E_KOUZLO_KOLO) {
{
if (insleep) return;
if (counter++==10)
@ -188,7 +188,7 @@ static void mob_reload(EVENT_MSG *msg,void **){
}
}
}
}
void init_mobs()
{
@ -333,14 +333,21 @@ static char seber_predmet(TMOB *m)
return 0;
}
static void mob_sound_event(TMOB *m,int event)
{
if (m->sounds[event] && m->vlajky & MOB_LIVE && ~m->vlastnosti[VLS_KOUZLA] & SPL_STONED)
if (event==MBS_WALK)
play_sample_at_sector(m->cislo_vzoru+16*6+event+monster_block,viewsector,m->sector,m-mobs+256,(m->vlajky & MOB_SAMPLE_LOOP)!=0);
else
play_sample_at_sector(m->cislo_vzoru+16*6+event+monster_block,viewsector,m->sector,0,0);
}
static void mob_sound_event(TMOB *m, int event) {
if (m->sounds[event] && m->vlajky & MOB_LIVE
&& ~m->vlastnosti[VLS_KOUZLA] & SPL_STONED) {
if (event == MBS_WALK) {
play_sample_at_sector(
m->cislo_vzoru + 16 * 6 + event + monster_block, viewsector,
m->sector, m - mobs + 256,
(m->vlajky & MOB_SAMPLE_LOOP) != 0);
} else {
play_sample_at_sector(
m->cislo_vzoru + 16 * 6 + event + monster_block, viewsector,
m->sector, 0, 0);
}
}
}
void load_enemies(short *data,int size,int *grptr,TMOB *template,int32_t tsize)
{
@ -426,7 +433,7 @@ int mob_pocet_vychodu(int sector,int dir)
if (map_sides[(sect<<2)+dir].flags & SD_MONST_IMPS) return 1;
sect=map_sectors[sect].step_next[dir];
if (map_coord[sect].flags & MC_PLAYER && ~passable && MOB_PASSABLE) return 2;
if ((map_coord[sect].flags & MC_PLAYER) && (~passable & MOB_PASSABLE)) return 2;
i=mob_map[sect];
if (i==0) return 0;
if (alone & MOB_BIG) return 1;
@ -485,9 +492,9 @@ char je_mozne_videt(int sector1,int sector2,int flag)
ly--;
}
else return 0;
if (x!=xs)
if (x!=xs) {
if ((map_sides[(s<<2)+3].flags & flag)!=(unsigned)flag) s=map_sectors[s].step_next[3];
else return 0;
} else return 0;
}
}
else
@ -510,9 +517,9 @@ char je_mozne_videt(int sector1,int sector2,int flag)
ly--;
}
else return 0;
if (x!=xs)
if (x!=xs) {
if ((map_sides[(s<<2)+1].flags & flag)!=(unsigned)flag) s=map_sectors[s].step_next[1];
else return 0;
} else return 0;
}
}
return s==sector2;
@ -604,11 +611,13 @@ void stop_mob(TMOB *p)
p->mode=MBA_NONE;
num1=mob_map[p->sector];
if (num1) q=&mobs[num1-MOB_START];else q=p;
if (p==q)
if (p->next)
if (p==q) {
if (p->next) {
q=mobs+p->next-MOB_START;
else
} else {
q=NULL;
}
}
if (p->stay_strategy & MOB_BIG)
{
p->headx=128;
@ -651,14 +660,16 @@ void stop_mob(TMOB *p)
switch (p->dir)
{
case 0:
case 2:if (q->headx==128)
case 2:if (q->headx==128) {
if (p->headx<128) q->headx=128+MOB_DIST;else q->headx=128-MOB_DIST;
}
p->headx=-q->headx;
p->heady=mob_batt_y[p->dir];
break;
case 1:
case 3:if (q->heady==128)
case 3:if (q->heady==128) {
if (p->heady<128) q->heady=128+MOB_DIST;else q->heady=128-MOB_DIST;
}
p->heady=-q->heady;
p->headx=mob_batt_x[p->dir];break;
}
@ -781,16 +792,15 @@ static int jdi_po_ceste(int old,TMOB *p)
void rozhodni_o_smeru(TMOB *p)
{
int sect,dir,r,v,lv,c,alone,oldwalk,passable;
int sect,dir,r,v,c,alone,oldwalk,passable;
int vdir=-1;
alone=p->stay_strategy & MOB_BIG;
passable=p->vlajky & MOB_PASSABLE;
sect=p->sector;
dir=p->dir;
lv=p->walk_data;
if (mob_paths[p-mobs]!=NULL) c=jdi_po_ceste(-1,p);else c=-1;
if (c!=-1)
if (c!=-1) {
if (!mob_check_next_sector(sect,c,alone,passable))
{
p->headx=mob_go_x[c];
@ -802,6 +812,7 @@ void rozhodni_o_smeru(TMOB *p)
{
if (mob_path_ptr[p-mobs]-mob_paths[p-mobs]>1) mob_path_ptr[p-mobs]-=2;
}
}
if (p->vlajky & MOB_IN_BATTLE)
{
stop_mob(p);
@ -896,8 +907,9 @@ int get_view(TMOB *p,int dirmob,int action,int curdir)
xs=p->headx-p->locx;
ys=p->heady-p->locy;
if (!(game_extras & EX_WALKDIAGONAL) || p->stay_strategy & MOB_BIG)
if (ys!=0 && xs!=0)
if (ys!=0 && xs!=0) {
if (p->dir==1 || p->dir==3) xs=0;else ys=0;
}
if (xs) dirmob=(xs<0)?3:1;
if (ys) dirmob=(ys<0)?0:2;
pos=(2+dirmob-curdir)&0x3;
@ -1144,18 +1156,19 @@ void mob_check(int num,TMOB *p)
sect=p->sector;
q=p->stay_strategy & MOB_BIG;
z=p->vlajky & MOB_PASSABLE;
if (p->locy<64)
if (p->locy<64) {
if (mob_check_next_sector(sect,0,q,z)) otoc_moba(p);
else mob_step_next(num,sect,0,&p->locy);
else if (p->locx>191)
} else if (p->locx>191) {
if (mob_check_next_sector(sect,1,q,z)) otoc_moba(p);
else mob_step_next(num,sect,1,&p->locx);
else if (p->locy>191)
} else if (p->locy>191) {
if (mob_check_next_sector(sect,2,q,z)) otoc_moba(p);
else mob_step_next(num,sect,2,&p->locy);
else if (p->locx<64)
} else if (p->locx<64) {
if (mob_check_next_sector(sect,3,q,z)) otoc_moba(p);
else mob_step_next(num,sect,3,&p->locx);
}
if (battle && p->mode!=MBA_FLEE)
{
mob_sound_event(p,MBS_WALK);
@ -1225,6 +1238,7 @@ static int drop_inventory(TMOB *p)
}
push_item(p->sector,pl,c);
}
return 0;
}
@ -1551,9 +1565,9 @@ void mobs_live(int num)
ys=p->heady-p->locy;
if (!(game_extras & EX_WALKDIAGONAL) || p->stay_strategy & MOB_BIG)
{
if (ys!=0 && xs!=0)
if (ys!=0 && xs!=0) {
if (p->dir==1 || p->dir==3) xs=0;else ys=0;
}
}}
if (xs>spd) xs=spd;
else if (xs<-spd) xs=-spd;
if (ys>spd) ys=spd;
@ -1605,8 +1619,8 @@ void calc_mobs()
for(i=0;i<MAX_MOBS;i++) if (mobs[i].vlajky & MOB_LIVE) mobs_live(i);
if (folow_mode)
{
viewsector=mobs[folow_mob].sector;
viewdir=mobs[folow_mob].dir;
viewsector=mobs[(uint8_t)folow_mob].sector;
viewdir=mobs[(uint8_t)folow_mob].dir;
}
}
@ -1650,12 +1664,19 @@ void check_all_mobs_battle() //kontroluje zda je nekdo v battle
int q_kolik_je_potvor(int sector)
{
if (mob_map[sector])
if (mobs[mob_map[sector]-MOB_START].next) return 2;
else if (mobs[mob_map[sector]-MOB_START].stay_strategy & MOB_BIG) return 2;
else return 1;
return 0;
}
if (mob_map[sector]) {
if (mobs[mob_map[sector] - MOB_START].next) {
return 2;
}
else if (mobs[mob_map[sector] - MOB_START].stay_strategy & MOB_BIG) {
return 2;
}
else {
return 1;
}
}
return 0;
}
void najdi_cestu(word start,word konec,int flag,word **cesta, int iamcnt)
{
@ -1670,7 +1691,7 @@ void najdi_cestu(word start,word konec,int flag,word **cesta, int iamcnt)
ok_flags[start>>3]|=1<<(start & 0x7);
for(*stk_free++=start;stk_free!=stk_cur;stk_cur++)
{
char i;word s,d=0xFFFF,ss;
uint8_t i;word s,d=0xFFFF,ss;
s=(ss=Lo(*stk_cur))<<2;
for(i=0;i<4;i++) if (!(map_sides[s+i].flags & flag))
{
@ -1741,7 +1762,7 @@ void sirit_zvuk(word start)
ok_flags[start>>3]|=1<<(start & 0x7);
for(*stk_free++=start;stk_free!=stk_cur;stk_cur++)
{
char i;word s,d,ss;
uint8_t i;word s,d,ss;
s=(ss=Lo(*stk_cur))<<2;
for(i=0;i<4;i++) if (!(map_sides[s+i].flags & SD_SOUND_IMPS))
{
@ -1895,13 +1916,13 @@ char akce_moba_zac(TMOB *m)
if (p->used && p->lives && p->sektor==sect)
{
if ((m->vlajky & MOB_CASTING && get_spell_track(m->casting))|| m->stay_strategy & MOB_ROGUE)
if (((m->vlajky & MOB_CASTING) && get_spell_track(m->casting))|| m->stay_strategy & MOB_ROGUE)
{stop_all_mobs_on_sector(m->sector);smeruj_moba(m,0);}
else stop_mob(m);
viewsector=sect;
viewdir=m->dir+2 &3;
m->csektor=sect;
if (m->vlajky & MOB_CASTING && rnd(100)<=m->vlastnosti[VLS_SMAGIE]) m->mode=MBA_SPELL;else m->mode=MBA_ATTACK;
if ((m->vlajky & MOB_CASTING)&& rnd(100)<=(unsigned int)m->vlastnosti[VLS_SMAGIE]) m->mode=MBA_SPELL;else m->mode=MBA_ATTACK;
bott_draw(1);
return 0;
}
@ -1927,7 +1948,7 @@ char akce_moba_zac(TMOB *m)
sect=m->sector;
i=q_vidis_postavu(m->sector,m->dir,m,&j,1);
h=postavy+i;
if (i>-1)
if (i>-1) {
if (((m->vlajky & MOB_CASTING && get_spell_track(m->casting))|| m->stay_strategy & MOB_ROGUE) &&
(map_coord[m->sector].x==map_coord[h->sektor].x || map_coord[m->sector].y==map_coord[h->sektor].y)
&& track_mob(m->sector,m->dir))
@ -1960,6 +1981,7 @@ char akce_moba_zac(TMOB *m)
else
return 1;
}
}
rozhodni_o_smeru(m);
if (m->dir & 1)m->headx=mob_go_x[m->dir];else m->heady=mob_go_y[m->dir];
// m->headx=mob_go_x[m->dir];

View file

@ -102,12 +102,7 @@ void (*turn)(int32_t lbuf,void *src1,void *src2,int size1);
word *GetBuffer2nd();
word *background;
char debug=0,nosides=0,nofloors=0,drwsit=0,show_names=0,show_lives=0;
static int32_t old_timer;
static void wait_timer()
{
sleep_ms(10);
}
/*void zooming1(void *source,int32_t target,word *background,void *xlat,int32_t xysize)
{
@ -118,7 +113,7 @@ static void wait_timer()
zooming_dx(source,GetScreenAdr()+target,background+3,xlat,xysize);
showview(0,0,0,0);
}
/*
/ *
void zooming2(void *source,int32_t target,word *background,void *xlat,int32_t xysize)
{
word *lbuffer=LockDirectScreen();
@ -135,7 +130,7 @@ void zooming3(void *source,int32_t target,word *background,void *xlat,int32_t xy
source;target;background;xlat;xysize;
}
/*void zooming4(void *source,int32_t target,word *background,void *xlat,int32_t xysize)
/ *void zooming4(void *source,int32_t target,word *background,void *xlat,int32_t xysize)
{
word *lbuffer=LockDirectScreen();
wait_timer();
@ -144,8 +139,8 @@ void zooming3(void *source,int32_t target,word *background,void *xlat,int32_t xy
else
zooming32b(source,(void *)(target*2),background+3,xlat,xysize);
UnlockDirectScreen();
}*/
/*
}* /
/ *
void zooming5(void *source,int32_t target,word *background,void *xlat,int32_t xysize)
{
wait_timer();
@ -165,7 +160,7 @@ void zooming6(void *source,int32_t target,word *background,void *xlat,int32_t xy
zooming_dx(source,lbuffer+(target),background+3,xlat,xysize);
UnlockDirectScreen();
}
/*
/ *
void zooming7(void *source,int32_t target,word *background,void *xlat,int32_t xysize)
{
wait_timer();
@ -214,7 +209,7 @@ void turn6(int32_t lbuf,void *src1,void *src2,int size1)
scroll_support_dx((lbuf)+lbuffer,src1,src2,size1,xlatmem);
UnlockDirectScreen();
}
/*
/ *
void turn7(int32_t lbuf,void *src1,void *src2,int size1)
{
wait_timer();
@ -371,6 +366,9 @@ void create_tables(void)
{
xl=+points[x-strd-1][0][0].x;xr=+points[x-strd][0][0].x;
}
else {
continue;
}
y1=(VIEW_SIZE_Y-y)-MIDDLE_Y;
xl=xl*(y1+1)/points[0][0][0].y+MIDDLE_X;
xr=xr*(y1+1)/points[0][0][0].y+MIDDLE_X;
@ -402,6 +400,9 @@ void create_tables(void)
{
xl=+points[x-strd-1][1][0].x;xr=+points[x-strd][1][0].x;
}
else {
continue;
}
xl=xl*(y1-2)/points[0][1][0].y+MIDDLE_X;
xr=xr*(y1-2)/points[0][1][0].y+MIDDLE_X;
if (xl<0) xl=0;if (xr<0) xr=0;
@ -520,7 +521,7 @@ static void turn_left_right(char right)
int maxtime=5*rot_phases;
int curtime;
float phase;
int last=90;
do
{
@ -1107,10 +1108,21 @@ void draw_placed_texture(short *txtr,int celx,int cely,int posx,int posy,int pos
}
else clipl=0;
clipr=640-x;
if (clipr>0)
if (turn) enemy_draw_mirror(txtr,GetBuffer2nd()+x+(y+SCREEN_OFFLINE)*scr_linelen2,6+512*cely+(secnd_shade?SHADE_STEPS*512:0),last_scale,y,(clipr<<16)+clipl);
else enemy_draw(txtr,GetBuffer2nd()+x+(y+SCREEN_OFFLINE)*scr_linelen2,6+512*cely+(secnd_shade?SHADE_STEPS*512:0),last_scale,y,(clipr<<16)+clipl);
}
if (clipr > 0) {
if (turn) {
enemy_draw_mirror(txtr,
GetBuffer2nd() + x + (y + SCREEN_OFFLINE) * scr_linelen2,
6 + 512 * cely + (secnd_shade ? SHADE_STEPS * 512 : 0),
last_scale, y, (clipr << 16) + clipl);
}else {
enemy_draw(txtr,
GetBuffer2nd() + x + (y + SCREEN_OFFLINE) * scr_linelen2,
6 + 512 * cely + (secnd_shade ? SHADE_STEPS * 512 : 0),
last_scale, y, (clipr << 16) + clipl);
}
}
}
/*void draw_placed_texture(short *txtr,int celx,int cely,int posx,int posy,int posz,char turn)
{
@ -1208,7 +1220,7 @@ void draw_enemy(DRW_ENEMY *drw)
int x,y,lx,sd;
int clipl,clipr;
int posx,posy,cely;
short *ys,yss,*xs,xss;
short *xs,xss;
int grcel;
int32_t scr_linelen2 = GetScreenPitch();
@ -1239,8 +1251,6 @@ void draw_enemy(DRW_ENEMY *drw)
xs=(short *)drw->txtr;
xss=*xs*last_scale/320;
if (xss>640) return;
ys=(short *)drw->txtr+1;
yss=*ys*last_scale/320;
lx=x;
grcel=cely;
if (posy>64) grcel++;
@ -1254,25 +1264,34 @@ void draw_enemy(DRW_ENEMY *drw)
}
else clipl=0;
clipr=rclip-x;
if (clipr>0)
if (drw->mirror)enemy_draw_mirror_transp(drw->txtr,GetBuffer2nd()+x+(y+SCREEN_OFFLINE)*scr_linelen2,drw->palette+grcel+(secnd_shade?SHADE_STEPS:0),last_scale,y+1,(clipr<<16)+clipl);
else enemy_draw_transp(drw->txtr,GetBuffer2nd()+x+(y+SCREEN_OFFLINE)*scr_linelen2,drw->palette+grcel+(secnd_shade?SHADE_STEPS:0),last_scale,y+1,(clipr<<16)+clipl);
if (show_lives)
{
char s[25];
RedirectScreenBufferSecond();
sprintf(s,"%d",drw->num);
sd=text_width(s)/2;
if (lx-sd>0 && lx+sd<639)
{
int ly=y+SCREEN_OFFLINE-last_scale*5/6;
trans_bar(lx-sd-5,ly-10,sd*2+10,10,0);
set_aligned_position(lx,ly,1,2,s);outtext(s);
if (clipr > 0) {
if (drw->mirror) {
enemy_draw_mirror_transp(drw->txtr,
GetBuffer2nd() + x + (y + SCREEN_OFFLINE) * scr_linelen2,
drw->palette + grcel + (secnd_shade ? SHADE_STEPS : 0),
last_scale, y + 1, (clipr << 16) + clipl);
} else {
enemy_draw_transp(drw->txtr,
GetBuffer2nd() + x + (y + SCREEN_OFFLINE) * scr_linelen2,
drw->palette + grcel + (secnd_shade ? SHADE_STEPS : 0),
last_scale, y + 1, (clipr << 16) + clipl);
}
RestoreScreen();
}
}
}
if (show_lives) {
char s[25];
RedirectScreenBufferSecond();
sprintf(s, "%d", drw->num);
sd = text_width(s) / 2;
if (lx - sd > 0 && lx + sd < 639) {
int ly = y + SCREEN_OFFLINE - last_scale * 5 / 6;
trans_bar(lx - sd - 5, ly - 10, sd * 2 + 10, 10, 0);
set_aligned_position(lx, ly, 1, 2, s);
outtext(s);
}
RestoreScreen();
}
}
void draw_player(short *txtr,int celx,int cely,int posx,int posy,int adjust,char *name)
{
@ -1311,11 +1330,10 @@ void draw_player(short *txtr,int celx,int cely,int posx,int posy,int adjust,char
void draw_spectxtr(short *txtr,int celx,int cely,int xpos)
{
int x,y,lx,clipl,clipr;
int x,y,clipl,clipr;
int32_t scr_linelen2 = GetScreenPitch();
map_pos(celx,cely,64,64,0,&x,&y);
lx=x;
x-=(((*txtr>>1)+xpos)*last_scale*2)/320;
if (x<0)
{
@ -1331,7 +1349,7 @@ void draw_spectxtr(short *txtr,int celx,int cely,int xpos)
void draw_item2(int celx,int cely,int xpos,int ypos,void *txtr,int index)
{
int x,y,xs,ys,ysc,abc,asc,clipl,clipr;
int x,y,xs,ys,abc,asc,clipl,clipr;
static int indextab[][2]={{0,0},{0,1},{1,0},{-1,0},{1,2},{-1,1},{-2,1},{2,1}};
int32_t scr_linelen2 = GetScreenPitch();
@ -1342,7 +1360,6 @@ void draw_item2(int celx,int cely,int xpos,int ypos,void *txtr,int index)
y=points[abc][0][cely+1].y;
xs=showtabs.x_table[0][cely].max_x;
ys=showtabs.y_table[cely+1].vert_size;
ysc=showtabs.y_table[cely].vert_size;
xpos+=indextab[7-index][0];
ypos+=indextab[7-index][1];
xpos-=*(word *)txtr/2;

View file

@ -32,8 +32,8 @@ void draw_floor_ceil(int celx,int cely,char f_c,void *txtr);
void show_cel2(int celx,int cely,void *stena,int xofs,int yofs,char rev);
//zobrazi primou stenu ktera lezi pred nebo napravo od pozorovatele
void show_cel(int celx,int cely,void *stena,int xofs,int yofs,char rev);
void turn_left();
void turn_right();
void turn_left(void);
void turn_right(void);
void zooming_backward(word *background);
void zooming_forward(word *background);
void OutBuffer2nd(void);
@ -41,7 +41,7 @@ void CopyBuffer2nd(void);
void report_mode(int);
void draw_item(int celx,int cely,int posx,int posy,short *pic,int index);
void draw_item2(int celx,int cely,int xpos,int ypos,void *texture,int index);
//void textmode_effekt();
//void textmode_effekt(void);
//#pragma aux textmode_effekt modify[eax ebx ecx edx edi];

View file

@ -579,7 +579,7 @@ void enemy_draw(void *src,void *trg,int shade,int scale,int maxspace,int clip)
int xtable[800];
int ytable[1200];
int xcount;
int ycount;
word pcx = picinfo[0];
word pcy = picinfo[1];
unsigned char *picdata = (unsigned char *)src + pic_start;
@ -606,7 +606,6 @@ void enemy_draw(void *src,void *trg,int shade,int scale,int maxspace,int clip)
}
sp--;
}
ycount = w - ytable;
*w++=-1;
//ytable je hotova - obsahuje ofsety v obrazku pro kazdou radku a na konci je -1
}
@ -767,7 +766,6 @@ void enemy_draw_transp(void *src,void *trg,void *shade,int scale,int maxspace,in
int xtable[800];
int ytable[1200];
int xcount;
int ycount;
word pcx = picinfo[0];
word pcy = picinfo[1];
word type = picinfo[2];
@ -795,7 +793,6 @@ void enemy_draw_transp(void *src,void *trg,void *shade,int scale,int maxspace,in
}
sp--;
}
ycount = w - ytable;
*w++=-1;
//ytable je hotova - obsahuje ofsety v obrazku pro kazdou radku a na konci je -1
}
@ -958,7 +955,6 @@ void enemy_draw_mirror_transp(void *src,void *trg,void *shade,int scale,int maxs
int xtable[800];
int ytable[1200];
int xcount;
int ycount;
word pcx = picinfo[0];
word pcy = picinfo[1];
word type = picinfo[2];
@ -986,7 +982,6 @@ void enemy_draw_mirror_transp(void *src,void *trg,void *shade,int scale,int maxs
}
sp--;
}
ycount = w - ytable;
*w++=-1;
//ytable je hotova - obsahuje ofsety v obrazku pro kazdou radku a na konci je -1
}
@ -1147,7 +1142,6 @@ void enemy_draw_mirror(void *src,void *trg,int shade,int scale,int maxspace,int
int xtable[800];
int ytable[1200];
int xcount;
int ycount;
word pcx = picinfo[0];
word pcy = picinfo[1];
unsigned char *picdata = (unsigned char *)src + pic_start;
@ -1174,7 +1168,6 @@ void enemy_draw_mirror(void *src,void *trg,int shade,int scale,int maxspace,int
}
sp--;
}
ycount = w - ytable;
*w++=-1;
//ytable je hotova - obsahuje ofsety v obrazku pro kazdou radku a na konci je -1
}

View file

@ -13,4 +13,4 @@
#define EX_AUTOSHOWRUNE 4096
#define EX_WALKDIAGONAL 8192
extern int game_extras;
extern int game_extras;

View file

@ -74,22 +74,9 @@ typedef struct s_save
int game_flags;
}S_SAVE;
#define ZAKLAD_CRC 0xC005
static int get_list_count();
static word vypocet_crc(char *data,int32_t delka)
{
uint32_t l=0;
do
{
l=(l<<8)|(delka>0?*data++:0);delka--;
l=(l<<8)|(delka>0?*data++:0);delka--;
l%=ZAKLAD_CRC;
}
while(delka>-1);
return l & 0xffff;
}
static int unable_open_temp(char *c)
{
char d[]="Unable to open the file : ",*e;
@ -349,7 +336,7 @@ int load_all_fly(TMPFILE_RD *fsta)
int save_map_state() //uklada stav mapy pro savegame (neuklada aktualni pozici);
{
char sta[200];
char *bf;
char *bf = NULL;
TMPFILE_WR *fsta;
int i;
int32_t siz;
@ -429,7 +416,7 @@ int save_map_state() //uklada stav mapy pro savegame (neuklada aktualni pozici);
int load_map_state() //obnovuje stav mapy; nutno volat po zavolani load_map;
{
char sta[200];
char *bf;
char *bf = NULL;
TMPFILE_RD *fsta;
int i;
int32_t siz;
@ -538,11 +525,9 @@ _inline unsigned char rotate(unsigned char c)
*/
int pack_status_file(FILE *f,const char *status_name)
{
int stt;
char rcheck=0;
uint32_t fsz;
char *buffer,*c,*fullnam;
word crc;
char *buffer,*c;
unsigned char name_len;
SEND_LOG("(SAVELOAD) Packing status file '%s'",status_name,0);
@ -562,12 +547,11 @@ int pack_status_file(FILE *f,const char *status_name)
fsz+=extra;
rcheck=(fwrite(buffer,1,fsz,f)!=(unsigned)fsz);
free(buffer);
return 0;
return rcheck;
}
int unpack_status_file(FILE *f)
{
int stt;
char rcheck=0;
uint32_t fsz;
char *buffer;
@ -612,7 +596,6 @@ int unpack_all_status(FILE *f)
int save_basic_info()
{
TMPFILE_WR *f;
char *c;
S_SAVE s;
short *p;
int i;
@ -670,7 +653,6 @@ int save_basic_info()
int load_basic_info()
{
TMPFILE_RD *f;
char *c;
S_SAVE s;
int i;
char res=0;
@ -1107,7 +1089,7 @@ char updown_scroll(int id,int xa,int ya,int xr,int yr);
static char updown_noinst=0;
static void updown_scroll_hold(EVENT_MSG *msg,void **)
static void updown_scroll_hold(EVENT_MSG *msg,void **_)
{
if (msg->msg == E_MOUSE)
{
@ -1375,7 +1357,7 @@ T_CLK_MAP clk_save[]=
{-1,0,0,639,479,close_saveload,9,H_MS_DEFAULT},
};
static void saveload_keyboard(EVENT_MSG *msg,void **)
static void saveload_keyboard(EVENT_MSG *msg,void **_)
{
if (msg->msg == E_KEYBOARD)
{
@ -1460,8 +1442,7 @@ void close_story_file()
static int load_map_state_partial(char *level_fname,int mapsize) //obnovuje stav mapy; castecne
{
char sta[200];
char *bf;
char *bf = NULL;
TMPFILE_RD *fsta;
int i;
int32_t siz;

View file

@ -539,8 +539,8 @@ extern int end_ptr; //ukazatel na uplny konec tabulky registraci
extern short **map_items; //ukazatel na mapu predmetu
extern int default_ms_cursor; //cislo zakladniho mysiho kurzoru
extern void *cur_xlat; //aktualni tabulka pro 256 barev
extern void (*unwire_proc)(); //procedura zajistujici odpojeni prave ukoncovane interakce
extern void (*wire_proc)(); //procedura zajistujici pripojeni drive ukoncene interakce
extern void (*unwire_proc)(void); //procedura zajistujici odpojeni prave ukoncovane interakce
extern void (*wire_proc)(void); //procedura zajistujici pripojeni drive ukoncene interakce
extern char cur_mode; //cislo aktualni interakce
extern word minimap[VIEW3D_Z+1][VIEW3D_X*2+1]; //minimalizovana mapa s informacemi pro sestaveni vyhledu
extern char norefresh; //vypina refresh obrazovky
@ -551,8 +551,8 @@ extern char gamespeed; //rychlost hry
extern char gamespeedbattle; //akcelerace rychlosti pro bitvy
extern int num_ofsets[]; //tabulka offsetu pro steny
extern int back_color; //cislo barvy pozadi
extern char cur_group; //cislo aktualni skupiny
extern char group_select; //1 = prave byla sestavena nova skupina
extern uint8_t cur_group; //cislo aktualni skupiny
extern uint8_t group_select; //1 = prave byla sestavena nova skupina
extern unsigned short barvy_skupin[POCET_POSTAV+1]; //cisla barev skupin
extern char battle; //jednicka znaci ze bezi bitva
extern char battle_mode; //rezim bitvy 0=programovani
@ -619,8 +619,8 @@ int set_video(int mode);
void *game_keyboard(EVENT_MSG *msg,void **usr);
void calc_animations(void);
int load_map(char *filename);
void other_draw();
void refresh_scene();
void other_draw(void);
void refresh_scene(void);
void pcx_fade_decomp(void **p,int32_t *s);
void pcx_15bit_decomp(void **p,int32_t *s);
void pcx_15bit_autofade(void **p,int32_t *s);
@ -630,19 +630,19 @@ void hi_8bit_correct(void **p,int32_t *s);
void pcx_8bit_nopal(void **p,int32_t *s);
void set_background(void **p,int32_t *s);
void wav_load(void **p,int32_t *s);
void wire_main_functs();
void wire_main_functs(void);
void ukaz_kompas(char mode);
void *timming(EVENT_MSG *msg,void **data);
void do_timer();
void do_timer(void);
void hold_timer(int id,char hld);
THE_TIMER *add_to_timer(int id,int delay,int maxcall,void *proc);
void delete_from_timer(int id);
THE_TIMER *find_timer(int id);
void objekty_mimo();
void objekty_mimo(void);
void mouse_set_cursor(int cursor);
void set_font(int font,int c1,...);
void bott_draw(char);
void bott_draw_proc();
void bott_draw_proc(void **p,int32_t *s);
THE_TIMER *add_to_timer(int id,int delay,int maxcall,void *proc);
void mouse_set_default(int cursor);
void create_frame(int x,int y,int xs,int ys,char clear);
@ -651,19 +651,19 @@ void save_dump(const uint16_t *screen_addr,
unsigned int height,
unsigned int linelen);
void bott_disp_text(const char *);
void bott_text_forever();
void bott_text_forever(void);
char chod_s_postavama(char sekupit);
void hide_ms_at(int line); //schova mysku ktera je nad line
int cislovka(int i);
void wire_kniha();
void wire_kniha(void);
void purge_temps(char z); //z=1 vymaze i swapsoubor
void destroy_player_map(); //je nutne volat pred presunem postav
void build_player_map(); //je nutne volat po presunem postav
void destroy_player_map(void); //je nutne volat pred presunem postav
void build_player_map(void); //je nutne volat po presunem postav
int postavy_propadnout(int sector);
void postavy_teleport_effect(int sector,int dir,int postava,char eff);
void reg_grafiku_postav();
void reg_grafiku_postav(void);
void play_movie_seq(char *s,int y);
void check_postavy_teleport(); //je-li viewsector=teleport pak presune postavy
void check_postavy_teleport(void); //je-li viewsector=teleport pak presune postavy
//builder
#define MAIN_NUM 0
@ -702,7 +702,7 @@ void add_spectxtr(word sector,word fhandle,word count,word repeat,integer xpos);
void calc_spectxtrs(void);
void init_spectxtrs(void);
void play_fx(int x,int y);
void draw_fx();
void draw_fx(void);
void play_fx_at(int where);
void draw_blood(char mode,int mob_dostal,int mob_dostal_pocet);
//kresli krev. mode=1 nasaveni, mode=0 kresleni, pri mode=0 se parametry ignoruji
@ -728,19 +728,19 @@ void delay_action(int action_numb,int sector,int direct,int flags,int nosend,int
int32_t load_section(FILE *f,void **section, int *sct_type,int32_t *sect_size);
void prepare_graphics(int *ofs,char *names,int32_t size,void *decomp,int class);
void show_automap(char full);
void draw_medium_map();
void draw_medium_map(void);
void anim_sipky(int h,int mode);
void redraw_scene();
void calc_game();
void do_delay_actions();
void redraw_scene(void);
void calc_game(void);
void do_delay_actions(void);
void real_krok(EVENT_MSG *msg,void **data);
void sort_groups();
void sort_groups(void);
void recheck_button(int sector,char auto_action);
void start_dialog(int entr,int mob);
void show_money();
void show_money(void);
void chveni(int i);
void render_scene(int,int);
void bott_draw_fletna();
void bott_draw_fletna(void);
void bott_disp_rune(char rune, int item);
extern char noarrows;
void display_ver(int x,int y,int ax,int ay);
@ -882,7 +882,7 @@ typedef struct titem
short user_value; //146 uzivatelska hodnota
short keynum; //148 cislo klice
short polohy[2][2]; //156 souradnice poloh pro zobrazeni v inv
char typ_zbrane; //160 Typ zbrane
uint8_t typ_zbrane; //160 Typ zbrane
char unused;
short sound; //cislo zvuku
short v_letu[16]; //192
@ -908,9 +908,9 @@ typedef struct thuman
{
char used; //1 kdyz je pozice pouzita
char spell; //1 kdyz postava ma na sobe aspon 1 kouzlo.
char groupnum; //cislo skupiny 0-6
signed char xicht; //cislo obliceje 0-5
char direction; //smer otoceni
uint8_t groupnum; //cislo skupiny 0-6
int8_t xicht; //cislo obliceje 0-5
uint8_t direction; //smer otoceni
short sektor; //sektor postaveni
short vlastnosti[VLS_MAX]; //mapa aktualnich vlastnosti po korekcich
short bonus_zbrani[TPW_MAX]; //bonusy za zbrane
@ -954,19 +954,19 @@ extern int face_arr[IT_FACES];
char pick_item_(int id,int xa,int ya,int xr,int yr);
void wire_inv_mode(THUMAN *select);
void init_inventory(void);
void init_items();
void init_items(void);
void push_item(int sect,int pos,short *picked_item);
void pop_item(int sect,int pos,int mask,short **picked_item);
int count_items_inside(short *place);
int count_items_total(short *place);
char put_item_to_inv(THUMAN *p,short *picked_items); //funkce vklada predmet(y) do batohu postavy
void pick_set_cursor(); //nastavuje kurzor podle vlozeneho predmetu;
void calc_fly();
void pick_set_cursor(void); //nastavuje kurzor podle vlozeneho predmetu;
void calc_fly(void);
void zmen_skupinu(THUMAN *p);
void add_to_group(int num);
void group_all(void);
void build_items_called(void **p,int32_t *s);
void real_regeneration(); //regenerace postav behem hry v realu (pouze kondice a mana)
void real_regeneration(void); //regenerace postav behem hry v realu (pouze kondice a mana)
char sleep_regenerace(THUMAN *p); //regenerace postav behem spani
char check_jidlo_voda(THUMAN *p);
void prepocitat_postavu(THUMAN *human_selected);
@ -1015,9 +1015,9 @@ typedef struct tshop
void enter_shop(int shopid);
void load_shops(void);
void reroll_all_shops();
char save_shops();
char load_saved_shops();
void reroll_all_shops(void);
char save_shops(void);
char load_saved_shops(void);
//macros
@ -1146,10 +1146,10 @@ typedef struct tma_gen
typedef struct tma_sound
{
char action,flags,eflags; //3
char bit16;
char volume; //5
char soundid; //6
uint8_t action,flags,eflags; //3
uint8_t bit16;
uint8_t volume; //5
uint8_t soundid; //6
unsigned short freq; //8
int32_t start_loop,end_loop,offset;//20
char filename[12]; //32
@ -1158,26 +1158,26 @@ typedef struct tma_sound
typedef struct tma_text
{
char action,flags,eflags,pflags;
uint8_t action,flags,eflags,pflags;
int32_t textindex;
}TMA_TEXT;
typedef struct tma_send_action
{
char action,flags,eflags,change_bits;
uint8_t action,flags,eflags,change_bits;
unsigned short sector,side,s_action;
char delay;
}TMA_SEND_ACTION;
typedef struct tma_fireball
{
char action,flags,eflags;
uint8_t action,flags,eflags;
short xpos,ypos,zpos,speed,item;
}TMA_FIREBALL;
typedef struct tma_loadlev
{
char action,flags,eflags;
uint8_t action,flags,eflags;
short start_pos;
char dir;
char name[13];
@ -1187,13 +1187,13 @@ typedef struct tma_loadlev
typedef struct tma_dropitm
{
char action,flags,eflags;
uint8_t action,flags,eflags;
short item;
}TMA_DROPITM;
typedef struct tma_codelock
{
char action,flags,eflags;
uint8_t action,flags,eflags;
char znak;
char string[8];
char codenum;
@ -1201,19 +1201,19 @@ typedef struct tma_codelock
typedef struct tma_cancelaction
{
char action,flags,eflags,pflags;
uint8_t action,flags,eflags,pflags;
short sector,dir;
}TMA_ACTN;
typedef struct tma_swapsectors
{
char action,flags,eflags,pflags;
uint8_t action,flags,eflags,pflags;
short sector1,sector2;
}TMA_SWAPS;
typedef struct tma_wound
{
char action,flags,eflags,pflags;
uint8_t action,flags,eflags,pflags;
short minor,major;
}TMA_WOUND;
@ -1221,26 +1221,26 @@ typedef struct tma_wound
typedef struct tma_lock
{
char action,flags,eflags;
uint8_t action,flags,eflags;
short key_id;
short thieflevel;
}TMA_LOCK;
typedef struct tma_two_parms
{
char action,flags,eflags;
uint8_t action,flags,eflags;
short parm1,parm2;
}TMA_TWOP;
typedef struct tma_create_unique
{
char action,flags,eflags;
uint8_t action,flags,eflags;
TITEM item;
}TMA_UNIQUE;
typedef struct tma_globe
{
char action,flags,eflags,event; //event - MAGLOB_XXXX
uint8_t action,flags,eflags,event; //event - MAGLOB_XXXX
unsigned short sector; //sektor of action target, when event occured
unsigned char side; //side of action target, when event occured
unsigned char cancel; //1 - cancel event
@ -1341,20 +1341,20 @@ system jistotu ze vsechny pripadne kopie fly jsou znicene a neukazuji
ji mohl uvolnit
*/
LETICI_VEC *create_fly(); //vytvari fly - optimalizuje tim ze hleda nevyuzity fly nosice, a teprve pokud neuspeje alokuje novy prostor.
LETICI_VEC *create_fly(void); //vytvari fly - optimalizuje tim ze hleda nevyuzity fly nosice, a teprve pokud neuspeje alokuje novy prostor.
void draw_fly_items(int celx,int cely,int sector,int side);
void add_fly(LETICI_VEC *p);
void build_fly_map();
void destroy_fly_map();
void build_fly_map(void);
void destroy_fly_map(void);
void stop_fly(LETICI_VEC *p,char zvuk);
//gamesaver
void leave_current_map();
int save_map_state(); //uklada stav mapy pro savegame (neuklada aktualni pozici);
int load_map_state(); //obnovuje stav mapy; nutno volat po zavolani load_map;
void restore_current_map(); //pouze obnovuje ulozeny stav aktualni mapy
void leave_current_map(void);
int save_map_state(void); //uklada stav mapy pro savegame (neuklada aktualni pozici);
int load_map_state(void); //obnovuje stav mapy; nutno volat po zavolani load_map;
void restore_current_map(void); //pouze obnovuje ulozeny stav aktualni mapy
int load_game(int slotnum);
int save_game(int slotnum,char *gamename);
void wire_save_load(char save);
@ -1367,10 +1367,10 @@ int load_map_automap(char *mapfile);
//setup
char q_runsetup(char *);
void user_setup();
void setup_dialoge();
void user_setup(void);
void setup_dialoge(void);
char game_setup(int id,int xa,int ya,int xr,int yr);
void GamePause();
void GamePause(void);
typedef struct ctl3d CTL3D;
void show_textured_button(int x,int y,int xs,int ys,int texture,CTL3D *border3d);
@ -1379,29 +1379,29 @@ void show_textured_button(int x,int y,int xs,int ys,int texture,CTL3D *border3d)
extern short sample_volume; //hlastitost samplu
extern char **sound_table;
void init_tracks();
void init_tracks(void);
void recalc_volumes(int sector,int side);
void play_effekt(int x,int y,int xd,int yd,int side,int sided,TMA_SOUND *p);
void create_playlist(char *playlist);
const char *get_next_music_from_playlist();
const char *get_next_music_from_playlist(void);
const char * end_of_song_callback(void *ctx);
void purge_playlist();
void restore_sound_names();
void purge_playlist(void);
void restore_sound_names(void);
void play_sample_at_sector(int sample,int sector1,int sector2,int track, char loop);
void play_sample_at_channel(int sample,int channel,int vol);
void stop_track(int track);
char test_playing(int track);
void stop_track_free(int track);
void mute_all_tracks(char all);
void kill_all_sounds();
void kill_all_sounds(void);
void create_sound_table(char *template,int32_t size);
void create_sound_table_old();
void create_sound_table_old(void);
void start_play_flute(char );
void stop_play_flute();
void stop_play_flute(void);
void pc_speak_play_sample(char *sample,int size,char step,int freq);
char enable_sound(char enbl);
void wire_main_functs();
void unwire_main_functs();
void wire_main_functs(void);
void unwire_main_functs(void);
//enemy
#define MOBS_INV 16
@ -1480,23 +1480,23 @@ extern TMOB mobs[MAX_MOBS];
extern char *mob_map;
void draw_mob(int num,int curdir,int celx,int cely,char shiftup);
void calc_mobs();
void calc_mobs(void);
void najdi_cestu(word start,word konec,int flag,word **cesta, int aimbig);
void sirit_zvuk(word start);
void check_all_mobs();
void build_all_players();
void init_mobs();
void refresh_mob_map();
void check_all_mobs(void);
void build_all_players(void);
void init_mobs(void);
void refresh_mob_map(void);
char akce_moba_zac(TMOB *m);
void mob_animuj(); //animuje prave bojovou akci potvor na sektoru
void mob_animuj(void); //animuje prave bojovou akci potvor na sektoru
void sleep_enemy(char regen);
int vyber_potvoru(int sect,int dir,int *z);
void mob_hit(TMOB *mm,int dostal);
int mob_alter(int sect);
void check_all_mobs_battle(); //kontroluje zda je nekdo v battle
void check_all_mobs_battle(void); //kontroluje zda je nekdo v battle
void manashield_check(short *vls,short *lives,short *mana,int dostal);
char track_mob(int sect,int dir);//trackuje pritomnost potvory v urcitem smeru
void stop_all_mobs();
void stop_all_mobs(void);
int utok_na_sektor(THUMAN *p,TMOB *m,int chaos,int bonus);
int vyber_potvoru(int sect,int dir,int *chaos); //vybere potvoru ze sektoru a smeru. Vraci take pocet potvor v promenne *chaos
void load_enemies(short *data,int size,int *grptr,TMOB *template,int32_t tsize);
@ -1504,7 +1504,7 @@ char mob_test_na_bitvu(TMOB *p); //nastavi p->vlajky|MOB_INBATTLE pokud potvora
void send_mob_to(int m,word *path);
void save_enemy_paths(TMPFILE_WR *f);
int load_enemy_paths(TMPFILE_RD *f);
void regen_all_mobs();
void regen_all_mobs(void);
//souboje
@ -1521,26 +1521,26 @@ extern char running_battle;
void zacni_souboj(TMOB *p,int delka,short sector);
char q_zacit_souboj(TMOB *p,int d,short sector);
void stop_mob(TMOB *p);
void start_battle();
void start_battle(void);
int vypocet_zasahu(short *utocnik,short *obrance, int chaos,int zbran,int bonusplus);
void rozhodni_o_smeru(TMOB *p);
void krok_moba(TMOB *p);
void pomala_regenerace_postavy(THUMAN *p);
char zasah_veci(int sector,TFLY *fl);
void vymaz_zasahy(THE_TIMER *q);
char check_end_game();
void wire_end_game();
void auto_group();
char check_end_game(void);
void wire_end_game(void);
void auto_group(void);
void wire_fly_casting(int i);
void konec_kola();
void konec_kola(void);
void send_experience(TMOB *p,int dostal);
void send_weapon_skill(int druh);
void check_player_new_level(THUMAN *p);
void poloz_vsechny_predmety();
void poloz_vsechny_predmety(void);
char player_check_death(THUMAN *p, char afterround); //pokud je battle, nezabije postavu, ale az po skonceni kola (afterround==1)
char player_hit(THUMAN *p,int zraneni,char manashield);
void enforce_start_battle();
void pozdrz_akci();
void enforce_start_battle(void);
void pozdrz_akci(void);
void uprav_podle_kondice(THUMAN *p,int *chaos); //upravi parametr chaos podle kondice pro obranu
THUMAN *isplayer(int sector,THUMAN *h,char death);
/* Vraci nasledujiciho hrace na sektoru. Pokud je h==NULL vraci prvniho.
@ -1556,7 +1556,7 @@ TMOB *ismonster(int sector,TMOB *m);
/* Vraci dalsi nestvuru na sektoru, pokud je m==NULL vraci prvni.
Pokud je vysledek NULL neni nestvura na sektoru*/
void correct_level();
void correct_level(void);
@ -1570,7 +1570,7 @@ extern char spell_cast; //0=neni rezim vyberu kouzla;
#define isdemon(p) ((p)->stare_vls[VLS_KOUZLA] & SPL_DEMON)
void kouzla_init();
void kouzla_init(void);
void test_play(int handle);
void cast(int num,THUMAN *p,int owner,char backfire);
int add_spell(int num,int cil,int owner,char noanim);
@ -1581,22 +1581,23 @@ int get_spell_mana(int num);
int get_spell_um(int num);
char ask_who(int num);
void display_spell_in_icone(int handle,int xicht);
void reinit_kouzla_full();
void reinit_kouzla_full(void);
char get_rune_enable(THUMAN *p,int strnum);
void remove_all_mob_spells();
void remove_all_mob_spells(void);
int save_spells(TMPFILE_WR *f);
int load_spells(TMPFILE_RD *f);
char get_spell_track(int num);
void mob_cast(int num,TMOB *m,int mob_num);
void thing_cast(int num,int postava,int sector,TMOB *victim,char noanim);//vyvolavaji veci
void area_cast(int num,int sector,int owner,char noanim);
int select_teleport_target();
int select_teleport_target(void);
char get_spell_teleport(int num);
void spell_throw(int cil,int what); //to je procedura ktera umoznuje potvoram strilet
void play_big_mgif_animation(int block);
void unaffect_demon(int cil); //ukonci demona pri jeho smrti
char *get_rune_name(int strnum);
void spell_sound(char *name);
void spell_teleport(int cil,int owner, int teleport_target);
//interface
@ -1609,6 +1610,7 @@ void spell_sound(char *name);
#define S_WINPOS_XS 320
#define S_WINPOS_YS 300
typedef struct objrec OBJREC;
typedef struct enc_file
{
FILE *f;
@ -1617,13 +1619,13 @@ typedef struct enc_file
void add_window(int x,int y,int xs,int ys,int texture,int border,int txtx,int txty);
int message(int butts,char def,char canc,char *keys,...);
void type_text(); //event procedura (parms: X,Y,TEXT,MAX_SPACE,MAX_CHARS);
void type_text(EVENT_MSG *msg,void **data); //event procedura (parms: X,Y,TEXT,MAX_SPACE,MAX_CHARS);
void type_text_v2(va_list args);//char *text_buffer,int x,int y,int max_size,int max_chars,int font,int color,void (*exit_proc)(char));
void zalamovani(char *source,char *target,int maxxs,int *xs,int *ys);
void col_load(void **data,int32_t *size);
void open_story_file();
void open_story_file(void);
void write_story_text(char *text);
void close_story_file();
void close_story_file(void);
char labyrinth_find_path(word start,word konec,int flag,char (*proc)(word),word **cesta);
//tato procedura je obecne hledani cesty. Start - startovni cislo sektoru
//Konec - cilove cislo sektoru
@ -1631,27 +1633,28 @@ char labyrinth_find_path(word start,word konec,int flag,char (*proc)(word),word
//proc - je procedura volana pro kazdy sektor
//cesta - je ukazatel na ukazatel na vyslednou cestu
//pokud je cesta=NULL pak vraci pouze zda cesta existuje ci nikoliv
void radio_butts_gr();
void start_check(); //testuje stav pocitace a rozhodne zda lze program spustit
void radio_butts_gr(OBJREC *o);
void start_check(void); //testuje stav pocitace a rozhodne zda lze program spustit
void check_number_1phase(char *exename); //check serial number! Task!//
void animate_checkbox(int first_id,int last_id,int step);
void fletna_pridej_notu(char note);
void check_fletna();
char fletna_get_buffer_pos();
void check_global_fletna();
void fletna_glob_add_note(char note);
void check_fletna(THE_TIMER *t);
char fletna_get_buffer_pos(void);
void check_global_fletna(THE_TIMER *t);
void fletna_glob_add_note(uint8_t note);
char *find_map_path(char *filename); //vyhledava jmeno mapy v alternativnich cestach.
//Vysledny retezec je nutne uvolnit (free) !
char *enc_open(char *filename); //dekoduje a otevira TXT soubor (ENC)
TMPFILE_RD *enc_open(char *filename); //dekoduje a otevira TXT soubor (ENC)
void enc_close(TMPFILE_RD *fil);
int load_string_list_ex(char ***list,char *filename);
int smlouvat_nakup(int cena,int ponuka,int posledni,int puvod,int pocet);
int smlouvat_prodej(int cena,int ponuka,int posledni,int puvod,int pocet);
int smlouvat(int cena,int puvod,int pocet,int money,char mode);
void disable_intro();
void disable_intro(void);
void show_jrc_logo(char *filename);
@ -1667,15 +1670,15 @@ char test_flag(int flag); //vraci stav vlajky;
//generator
char enter_generator();
char enter_generator(void);
//kniha
#define add_to_book(odst) add_text_to_book(texty_knihy,odst)
void add_text_to_book(char *filename,int odst);
void write_book(int page);
int count_pages();
void save_book();
void load_book();
int count_pages(void);
void save_book(void);
void load_book(void);
void prekodovat(char *c);
@ -1684,14 +1687,16 @@ int enter_menu(char open); //task!
void titles(va_list args); //task!
void run_titles(va_list args); //task!
void effect_show(va_list args); //effektni zobrazeni // task!
void konec_hry();
void konec_hry(void);
//globmap
void wire_global_map();
void wire_global_map(void);
void wire_automap_file(char *mapfile);
char set_select_mode(char mode);
void macro_load_another_map(TMA_LOADLEV *);
void PodporaStitu(THUMAN *h, short *vlastnosti);
typedef struct _tag_globalEventDef

View file

@ -41,7 +41,7 @@ typedef struct index_def
}INDEX_DEF;
static INDEX_DEF *index_tab=NULL;
static char last_index=1;
static uint8_t last_index=1;
static int usemap;
@ -446,7 +446,7 @@ static int find_leave_place(int sector)
return found_place;
}
int macro_load_another_map();
static int select_mode = 0;
@ -496,7 +496,7 @@ static char *fly_text;
static int fly_x,fly_y,fly_xs,fly_ys;
static void *fly_background;
void global_map_point(EVENT_MSG *msg,void **)
void global_map_point(EVENT_MSG *msg,void **_)
{
MS_EVENT *ms;

View file

@ -30,7 +30,6 @@
#define MES_MAXSIZE 500
#define CHECK_BOX_ANIM 6
static char *error_hack="....Source compiled.";
static char shadow_enabled=1;
word color_topbar[7]={0,RGB555(22,14,4),RGB555(24,16,6),RGB555(25,17,7)};
@ -301,14 +300,15 @@ int message(int butts,char def,char canc,char *keys,...)
void type_text(EVENT_MSG *msg,void **data)
{
static int x,y;
static char text[255],index;
static char text[255];
static uint8_t index;
static char *source;
static int max_size,max_chars;
data;
if (msg->msg==E_INIT)
{
int *p;
// int *p;
char *c;
set_font(H_FBOLD,RGB555(31,31,31));
@ -387,7 +387,8 @@ void type_text_v2(va_list args)
type_text_exit_proc exit_proc=va_arg(args,type_text_exit_proc);
int xs,ys,tw;
char *text,pos,len;
char *text;
uint8_t pos,len;
char wait_loop=1,ok=0,edit=0;
short *back_pic;
int i;
@ -533,7 +534,7 @@ char labyrinth_find_path(word start,word konec,int flag,char (*proc)(word),word
ok_flags[start>>3]|=1<<(start & 0x7);
for(*stk_free++=start;stk_free!=stk_cur;stk_cur++)
{
char i;word s,d,ss;
uint8_t i;word s,d,ss;
s=(ss=Lo(*stk_cur))<<2;
for(i=0;i<4;i++) if (!(map_sides[s+i].flags & flag))
{
@ -1154,7 +1155,7 @@ void skeldal_soupak(OBJREC *o)
static char fletna_str[13];
static char pos=0;
static uint8_t pos=0;
// C C# D D# E F F# G G# A A# B C
// A B C D E F G H I J K L M
@ -1248,7 +1249,7 @@ char fletna_get_buffer_pos()
static char globFletnaStr[256]="";
static char globNotes[][3]={"C","C#","D","D#","E","F","F#","G","G#","A","A#","H","C"};
void fletna_glob_add_note(char note)
void fletna_glob_add_note(uint8_t note)
{
if (strlen(globFletnaStr)<250) strcat(globFletnaStr,globNotes[note]);
}
@ -1335,85 +1336,52 @@ static char *load_file_to_string(FILE *f, int *size) {
return c;
}
char *enc_open(char *filename)
TMPFILE_RD *enc_open(char *filename)
{
FILE *f,*g;
char *c,*d,*enc,*temp;
int i,j,last=0;
FILE *f;
char *c,*enc;
int last=0;
int size;
char *encdata;
f=fopen(filename,"r");
if (f!=NULL) {
char *c = load_file_to_string(f, &size);
encdata = load_file_to_string(f, &size);
fclose(f);
return c;
}
} else {
enc=alloca(strlen(filename)+5);
strcpy(enc,filename);
c=strrchr(enc,'.');
if (c==NULL) c=strchr(enc,0);
strcpy(c,".ENC");
f=fopen(enc,"rb");
if (f==NULL) return NULL;
char *encdata = load_file_to_string(f, &size);
fclose(f);
enc=alloca(strlen(filename)+5);
strcpy(enc,filename);
c=strrchr(enc,'.');
if (c==NULL) c=strchr(enc,0);
strcpy(c,".ENC");
f=fopen(enc,"rb");
if (f==NULL) return NULL;
encdata = load_file_to_string(f, &size);
fclose(f);
}
for (int i = 0; i < size; ++i) {
last = (last + encdata[i]) & 0xFF;
encdata[i] = last;
}
return encdata;
temp_storage_store("__enc_temp", encdata, size);
return temp_storage_open("__enc_temp");
}
void enc_close(ENCFILE *fil)
void enc_close(TMPFILE_RD *fil)
{
fclose(fil->f);
if (fil->to_delete!=NULL) remove(fil->to_delete);
free(fil->to_delete);
fil->f=NULL;
fil->to_delete=NULL;
temp_storage_close_rd(fil);
temp_storage_delete("__enc_temp");
}
int load_string_list_ex(TSTR_LIST *list,char *filename)
{
char *data = enc_open(filename);
if (data == NULL) return -1;
if (*list==NULL) *list=create_list(256);
char *d = data;
do {
while (*d && isspace(d)) ++d;
if (!*d) break;
if (*d && *d == ';') {
while (*d && *d != '\n') ++d;
} else {
int idx = 0;
int m = 1;
if (*d == '-') {m = -1;++d;}
while (*d >= '0' && *d <='9') {
idx = idx*10+(*d-'0');
++d;
}
if (idx == -1) break;
while (*d && isspace(d)) ++d;
char *b = d;
while (*d && *d != '\n' && *d != '\r') ++d;
if (*d) {*d = 0;++d;}
str_replace(list, idx, b);
}
} while (1);
free(data);
}
/*
char c[1024],*p;
int i,j,lin=0;
FILE *f;
ENCFILE fl;
TMPFILE_RD *f;
f=enc_open(filename,&fl);
f=enc_open(filename);
if (*list==NULL) *list=create_list(256);
if (f==NULL) return -1;
do
@ -1421,44 +1389,43 @@ int load_string_list_ex(TSTR_LIST *list,char *filename)
lin++;
do
{
j=fgetc(f);
if (j==';') while ((j=fgetc(f))!='\n' && j!=EOF);
j=temp_storage_getc(f);
if (j==';') while ((j=temp_storage_getc(f))!='\n' && j!=EOF);
if (j=='\n') lin++;
}
while (j=='\n');
ungetc(j,f);
j=fscanf(f,"%d",&i);
temp_storage_ungetc(f);
j=temp_storage_scanf(f,"%d",&i);
if (j==EOF)
{
enc_close(&fl);
enc_close(f);
return -2;
}
if (j!=1)
{
enc_close(&fl);
enc_close(f);
return lin;
}
if (i==-1) break;
while ((j=fgetc(f))<33 && j!=EOF);
if (j!=EOF) ungetc(j,f);
if (fgets(c,1022,f)==NULL)
while ((j=temp_storage_getc(f))<33 && j!=EOF);
if (j!=EOF) temp_storage_ungetc(f);
if (temp_storage_gets(c,1022,f)==NULL)
{
enc_close(&fl);
enc_close(f);
return lin;
}
p=strchr(c,'\n');if (p!=NULL) *p=0;
for(p=c;*p;p++) *p=*p=='|'?'\n':*p;
if (str_replace(list,i,c)==NULL)
{
enc_close(&fl);
enc_close(f);
return -3;
}
}
while (1);
enc_close(&fl);
enc_close(f);
return 0;
}
*/
//------------------------------------------------------------
int smlouvat_nakup(int cena,int ponuka,int posledni,int puvod,int pocet)

View file

@ -159,7 +159,7 @@ static void items_15to16_correct(void **p,int32_t *s)
void load_items()
{
char *name;
FILE *f;THANDLE_DATA *h;
FILE *f;
int sect,i,hs;
int32_t size;
void *p;
@ -167,15 +167,15 @@ void load_items()
f=NULL;i=0;
ikon_libs=hl_ptr;
free(glob_items);
do
{
char name[200];
sprintf(name,IT_LIB_NAME,i++);
if (test_file_exist(SR_ITEMS,name))
h=def_handle(hl_ptr++,name,items_15to16_correct,SR_ITEMS);
else break;
}
while (1);
do {
char name[200];
sprintf(name, IT_LIB_NAME, i++);
if (test_file_exist(SR_ITEMS, name)) {
def_handle(hl_ptr++, name, items_15to16_correct, SR_ITEMS);
} else {
break;
}
} while (1);
name=find_map_path(ITEM_FILE);
f=fopen(name,"rb");free(name);
if (f==NULL)
@ -666,7 +666,7 @@ char pick_item_(int id,int xa,int ya,int xr,int yr)
{
int curinside=count_items_inside(picked_item);
int nosnost=(glob_items[*picked_item-1].nosnost);
short *batoh=(word *)getmem(nosnost*2+20);
short *batoh=(short *)getmem(nosnost*2+20);
short *cur=batoh;
memcpy(cur,picked_item,(curinside+1)*2);
cur+=curinside;
@ -1115,7 +1115,7 @@ void init_inventory(void)
void display_items_in_inv(THUMAN *h)
{
int i,x,y,xr,yr,it;
int i,x,xr,yr,it;
short *p;
put_picture(266,TOP_OFS,ablock(H_IDESKA));
@ -1123,7 +1123,7 @@ void display_items_in_inv(THUMAN *h)
p[1]=INV_YS*((h->inv_size-1)/6)+58;
put_picture(INV_X,INV_Y,p);
xr=INV_X;x=0;
yr=INV_Y;y=0;
yr=INV_Y;
for(i=0;i<h->inv_size;i++)
{
if ((it=h->inv[i])!=0)
@ -1368,10 +1368,8 @@ static int calc_value(int parm,int lenght)
void inv_display_vlastnosti()
{
char b;
int i;
unsigned int i;
b=human_selected->bonus!=0;
put_picture(INV_DESK,TOP_OFS,ablock(H_SVITEK));
for(i=0;i<sizeof(script)/sizeof(struct t_inv_script);i++)
{
@ -2064,7 +2062,7 @@ char human_click(int id,int xa,int ya,int xr,int yr)
xr;yr;id;
if (battle && (battle_mode!=MD_PREZBROJIT || select_player!=human_selected-postavy) || human_selected->vlastnosti[VLS_KOUZLA] & SPL_STONED) return 0;
if ((battle && ((battle_mode!=MD_PREZBROJIT) || (select_player!=human_selected-postavy))) || (human_selected->vlastnosti[VLS_KOUZLA] & SPL_STONED)) return 0;
if (isdemon(human_selected)) return 0;
if (picked_item!=NULL)
if (muze_nosit(*picked_item))
@ -2442,7 +2440,7 @@ static void rebuild_shops(void)
void load_shops(void)
{
char *c;
int *d;
if (!test_file_exist(SR_MAP,SHOP_NAME))
{
@ -2451,7 +2449,7 @@ void load_shops(void)
return;
}
shop_hacek=afile(SHOP_NAME,SR_MAP,&shop_hacek_size);
d=shop_hacek;c=shop_hacek;
d=shop_hacek;
max_shops=*d;
if (!max_shops)
{
@ -2887,7 +2885,7 @@ char shop_change_player(int id, int xa, int ya,int xr,int yr)
i=group_sort[i];
p=&postavy[i];
if (p->used && p->sektor==viewsector)
if (p->used && p->sektor==viewsector) {
if (ms_last_event.event_type & 0x2)
{
int j=select_player;
@ -2915,6 +2913,7 @@ char shop_change_player(int id, int xa, int ya,int xr,int yr)
}
else if (picked_item==NULL) _exit_shop(id,xa,ya,xr,yr);
}
return 1;
}
return 0;
@ -2972,7 +2971,6 @@ void reroll_all_shops()
char save_shops()
{
TMPFILE_WR *f;
char *c;
int res=0;
SEND_LOG("(SHOP) Saving shops...",0,0);
@ -2990,7 +2988,6 @@ char save_shops()
char load_saved_shops()
{
TMPFILE_RD *f;
char *c;
int res=0;
int i=0,j=0;

View file

@ -552,22 +552,16 @@ static void seek_section(TMPFILE_RD *txt,int sect_number)
void add_text_to_book(char *filename,int odst)
{
char *txt;
TMPFILE_RD *fl;
set_font(H_FKNIHA,NOSHADOW(0));
if (all_text==NULL) all_text=create_list(256);
txt=enc_open(filename);
if (txt==NULL) return;
const char *bookenc = "__bookenc";
temp_storage_store(bookenc, txt, strlen(txt));
fl = temp_storage_open(bookenc);
fl=enc_open(filename);
if (fl==NULL) return;
seek_section(fl,odst);
read_text(fl);
next_line(1000);
free(txt);
temp_storage_close_rd(fl);
temp_storage_delete(bookenc);
enc_close(fl);
}
static char *displ_picture(char *c)
@ -688,7 +682,6 @@ int count_pages()
void save_book()
{
char *c;
TMPFILE_WR *f;
int i,ss;
char *tx;
@ -708,8 +701,6 @@ void save_book()
void load_book()
{
char *c;
TMPFILE_RD *f;
if (all_text!=NULL) release_list(all_text);
all_text=NULL;

View file

@ -538,7 +538,7 @@ char hod_na_uspech(int cil,TKOUZLO *k)
cil=-cil-1;
p=mobs[cil].vlastnosti+VLS_OHEN;
}
else if(cil>0)
else
{
cil--;
p=postavy[cil].vlastnosti+VLS_OHEN;
@ -698,7 +698,7 @@ static void spell_demon(int num,TKOUZLO *spl,int cil,int demon)
void spell_hit(int cil,int min,int max,int owner)
{
if (cil)
if (cil) {
if (cil<0)
{
TMOB *m;
@ -708,7 +708,7 @@ void spell_hit(int cil,int min,int max,int owner)
vybrana_zbran=-1;
mob_hit(m,min+rnd(max-min));
}
else if(cil>0)
else
{
THUMAN *h;
int vysl;
@ -726,11 +726,12 @@ void spell_hit(int cil,int min,int max,int owner)
bott_draw(0);
}
}
}
void spell_hit_zivel(int cil,int min,int max,int owner,int zivel)
{
int ochrana;
if (cil)
if (cil) {
if (cil<0)
{
TMOB *m;
@ -741,7 +742,7 @@ void spell_hit_zivel(int cil,int min,int max,int owner,int zivel)
vybrana_zbran=-1;
mob_hit(m,(min+rnd(max-min))*ochrana/100);
}
else if(cil>0)
else
{
THUMAN *h;
@ -752,6 +753,7 @@ void spell_hit_zivel(int cil,int min,int max,int owner,int zivel)
bott_draw(0);
}
}
}
void set_flag(int num,int cil,int flag,int what)
@ -893,13 +895,22 @@ void spell_teleport(int cil,int owner, int teleport_target)
{
int sektor;
int dir;
int um;
int um = 255;
if (cil>0) {sektor=postavy[cil-1].sektor;dir=postavy[cil-1].direction;}
else if (cil<0) {sektor=mobs[-cil-1].sector;dir=mobs[-cil-1].dir;}
if (owner>=0) um=postavy[owner].vlastnosti[VLS_SMAGIE];
teleport_target=calculatePhaseDoor(sektor,dir,um);
}
if (cil > 0) {
sektor = postavy[cil - 1].sektor;
dir = postavy[cil - 1].direction;
} else if (cil < 0) {
sektor = mobs[-cil - 1].sector;
dir = mobs[-cil - 1].dir;
} else {
return ;
}
if (owner >= 0) {
um = postavy[owner].vlastnosti[VLS_SMAGIE];
}
teleport_target = calculatePhaseDoor(sektor, dir, um);
}
if (map_coord[teleport_target].flags & MC_NOSUMMON)
{
if (owner>=0) bott_disp_text(texty[88]);
@ -955,7 +966,6 @@ void spell_teleport_sector(int cil,int owner)
destroy_player_map();
if (stricmp(TelepLocation.map,level_fname)!=0)
{
int sector=postavy[cil].sektor;
int i;
if (cil!=owner) return;
@ -1001,7 +1011,7 @@ void spell_teleport_sector(int cil,int owner)
};
{
int newx=x+TelepLocation.loc_x*stpx+TelepLocation.loc_y*diffx;
int newy=y+TelepLocation.loc_x*stpx+TelepLocation.loc_y*diffy;
int newy=y+TelepLocation.loc_x*stpy+TelepLocation.loc_y*diffy;
int i;
int dist;
int nearest=0;
@ -1040,7 +1050,7 @@ void spell_teleport_sector(int cil,int owner)
static void spell_summon(int cil)
{
short sector,i,rn,rno,slc;
char stdir,p;
int stdir,p;
if (cil>0) sector=postavy[cil-1].sektor;
if (cil<0) sector=mobs[-cil-1].sector;
@ -1120,7 +1130,7 @@ static void spell_vahy_osudu(int zivel,char povaha)
for(i=0,h=postavy;i<POCET_POSTAV;i++,h++) if (h->used && h->lives)
{
int obr=mgochrana(h->vlastnosti[VLS_OHEN+zivel]);
if (!povaha || rnd(100)<=obr)
if (!povaha || (int)rnd(100)<=obr)
{
h->lives=min;
display_spell_in_icone(H_SPELLDEF,1<<i);
@ -1130,7 +1140,7 @@ static void spell_vahy_osudu(int zivel,char povaha)
if (m->vlajky & MOB_LIVE && m->vlajky & MOB_IN_BATTLE && m->lives<min)
{
int obr=mgochrana(m->vlastnosti[VLS_OHEN+zivel]);
if (!povaha || rnd(100)<=obr)
if (!povaha || (int)rnd(100)<=obr)
m->lives=min;
}
bott_draw(1);
@ -1425,8 +1435,8 @@ void call_spell(int i)
case S_throw_item:z=GET_WORD(c);spell_throw(p->cil,z);break;
case S_create_item:z=GET_WORD(c);spell_create(p->cil,z);break;
case S_create_weapon:z=GET_WORD(c);spell_create_weapon(p->cil,z);break;
case S_animace:if (p->owner>=0 && !p->traceon)spell_anim(c);c=strchr(c,0);c++;break;
case S_zvuk:if (p->owner>=0 && !p->traceon)spell_sound(c);c=strchr(c,0);c++;break;
case S_animace:if (p->owner>=0 && !p->traceon)spell_anim((char *)c);c=(unsigned char *)strchr((char *)c,0);c++;break;
case S_zvuk:if (p->owner>=0 && !p->traceon)spell_sound((char *)c);c=(unsigned char *)strchr((char *)c,0);c++;break;
case S_wait:p->wait=GET_WORD(c);if (p->owner>=0) ext=1;break;
case 0xff:spell_end(i,p->cil,p->owner);return;
case S_pvls:parm2=GET_WORD(c);twins|=2;
@ -1447,14 +1457,14 @@ void call_spell(int i)
TelepLocation.loc_x=0;
TelepLocation.loc_y=0;
break;
case S_location_map: TelepLocation.map=c;c=strchr(c,0);c++;break;
case S_location_map: TelepLocation.map=(char *)c;c=(unsigned char *)strchr((char *)c,0);c++;break;
case S_location_dir: parm1=GET_WORD(c);TelepLocation.dir=parm1;break;
case S_location_x: TelepLocation.loc_x=GET_WORD(c);TelepLocation.map=0;break;
case S_location_y: TelepLocation.loc_y=GET_WORD(c);TelepLocation.map=0;break;
default:
{
char *d="Chyba v popisu kouzel: Program narazil na neznamou instrukci %d (%02X) pri zpracovani kouzla s cislem %d. Kouzlo bylo ukon<6F>eno";
c=alloca(strlen(d)+20);
char *c=alloca(strlen(d)+20);
sprintf(c,d,*(c-1),*(c-1),p->num);
bott_disp_text(c);
spell_end(i,p->cil,p->owner);
@ -1609,7 +1619,7 @@ static char get_valid_sector(word sector)
void cast(int num,THUMAN *p,int owner, char backfire)
{
int i,um,cil,num2;
int um,cil,num2;
TKOUZLO *k;
if (num>511)
@ -1680,8 +1690,9 @@ void cast(int num,THUMAN *p,int owner, char backfire)
if (!GlobEvent(MAGLOB_BEFOREMAGIC,p->sektor,p->direction)) return;
if (!GlobEvents(MAGLOB_ONSPELLID1,MAGLOB_ONSPELLID9,p->sektor,p->direction,num2)) return;
if (cil && (k->cil==C_postava || k->cil==C_mrtva_postava || k->cil==C_postava_jinde)) i=add_spell(num2,cil,owner,0);
else
if (cil && (k->cil==C_postava || k->cil==C_mrtva_postava || k->cil==C_postava_jinde)) {
add_spell(num2,cil,owner,0);
} else
{
if (k->cil==C_policko) if (add_group_spell(num2,p->sektor,owner,C_policko,0)) goto end;
if (k->cil==C_kouzelnik) add_spell(num2,p-postavy+1,owner,0);
@ -1944,7 +1955,7 @@ void unaffect_demon(int cil)
{
int i;
TKOUZLO *spl;
char a;
cil++;
@ -1956,12 +1967,12 @@ void unaffect_demon(int cil)
if (spell_table[i]->wait)
{
spell_table[i]->wait=0;call_spell(i);
a=1;
}
if (spell_table[i]->cil>0)
{
spell_table[i]->delay=0;call_spell(i);
a=1;
}
}
}

View file

@ -101,11 +101,13 @@ void macro_sound(TMA_SOUND *p,int psect,int pdir,int sect,int dir)
{
char up=4;
if (sound_side_flags & SD_PRIM_FORV) up=2;
if (~(p->bit16) & up)
if (psect)
if (~(p->bit16) & up) {
if (psect) {
play_effekt(map_coord[sect].x,map_coord[sect].y,map_coord[psect].x,map_coord[psect].y,dir,pdir,p);
else
} else {
play_effekt(0,0,0,0,-1,-1,p);
}
}
}
void macro_send_act(TMA_SEND_ACTION *p)
@ -127,8 +129,9 @@ void macro_load_another_map(TMA_LOADLEV *z)
}
if (!GlobEvent(MAGLOB_LEAVEMAP,viewsector,viewdir)) return;
for(i=0;i<POCET_POSTAV;i++)
if (postavy[i].groupnum)
if (postavy[i].groupnum) {
if (i!=j)memcpy(&postavy[j++],&postavy[i],sizeof(postavy[i]));else j++;
}
if (j<POCET_POSTAV) memset(&postavy[j],0,sizeof(THUMAN)*(POCET_POSTAV-j));
loadlevel=*z;
send_message(E_CLOSE_MAP);
@ -156,7 +159,7 @@ static void macro_create_item(short item)
}
static char decode_lock(char znak,char *string,char codenum)
static char decode_lock(char znak,char *string,uint8_t codenum)
{
char *memory;
char *endm;
@ -223,7 +226,7 @@ char if_lock(int side,int key_id,int level,TMA_LOCK *lk)
h=postavy+j;
if (level==0) level=100;
if (level>=min)
if (rnd(100)<=level-min)
if ((int)rnd(100)<=level-min)
{
sprintf(s,texty[158+h->female],h->jmeno);
bott_disp_text(s);
@ -577,6 +580,7 @@ static int ma_play_anim(char *filename,char cls)
cancel_pass=0;
play_movie_seq(a,cls?60:SCREEN_OFFLINE);
wire_main_functs();
return 0;
}
static char ma_control_mob_control(word sector)
@ -608,7 +612,6 @@ static void ma_drop_money(int sect,int side,TMULTI_ACTION *q)
void macro_change_music(int textindex)
{
char *trackdef=level_texts[textindex];
char *nextTrack;
create_playlist(trackdef);
change_music(get_next_music_from_playlist());
@ -742,13 +745,12 @@ void call_macro_ex(int side,int flags, int runatside)
SEND_LOG("(MULTIACTIONS) End: Side %.1f Call %X",(float)(runatside/4)+((float)(runatside & 3)/10),flags);
}
static char lock_saved=255;
static char lock_empty=254;
char save_codelocks(TMPFILE_WR *fsta)
{
temp_storage_write(codelock_memory,sizeof(codelock_memory)*1,fsta);
return 0;
}

View file

@ -143,7 +143,7 @@ static void nahraj_rozdilovy_pcx(void **pp,int32_t *s)
org=(char *)origin+6+512;
pos=(char *)vysl+6+512;
paltab=(word *)vysl+3;
rozdily(org,pos,hicolor+3,paltab,siz);
rozdily((uint8_t *)org,(uint8_t *)pos,hicolor+3,paltab,siz);
free(vysl);
*pp=hicolor;
*s=siz*2+12;
@ -232,7 +232,7 @@ static void zobraz_podle_masky(char barva,char anim)
data=ablock(H_MENU_ANIM+anim);
xs=data[0];
ys=data[1];
zobraz_podle_masky_asm(barva,obr,data+3,maska+6+512,xs,ys,scr_linelen2);
zobraz_podle_masky_asm(barva,obr,data+3,(uint8_t *)maska+6+512,xs,ys,scr_linelen2);
aunlock(H_MENU_MASK);
}
@ -330,8 +330,8 @@ static void klavesnice(EVENT_MSG *msg,void **unused)
int enter_menu(char open)
{
char c;
char *d;
uint8_t c;
init_menu_entries();
add_task(2048,preload_anim);
load_ok=0;
@ -596,7 +596,7 @@ void konec_hry()
{
int task_id;
int timer;
char *d;
schovej_mysku();
curcolor=0;

View file

@ -52,7 +52,7 @@ char pass_zavora=0;
char map_with_password=0;
MAPGLOBAL mglob={
"","","","",0,0,0,1
{"","","",""},0,0,0,1,0,"",0,0,0
};
TSTENA *map_sides;
TSECTOR *map_sectors;
@ -68,8 +68,8 @@ char sekceid[]="<BLOCK>";
char datapath;
D_ACTION *d_action={NULL};
int end_ptr;
char cur_group=1;
char group_select=1;
uint8_t cur_group=1;
uint8_t group_select=1;
char cancel_pass=0;
char break_sleep=0;
char enable_sort=0;
@ -296,7 +296,7 @@ int load_map(char *filename)
case A_MAPGLOB:
num_ofsets[BACK_NUM]=ofsts;
memset(&mglob,0,sizeof(mglob));
memcpy(&mglob,temp,MIN(size,sizeof(mglob)));
memcpy(&mglob,temp,MIN((int)size,(int)sizeof(mglob)));
free(temp);
for(r=0;r<4;r++)
def_handle(ofsts++,mglob.back_fnames[r],pcx_fade_decomp,SR_GRAFIKA);
@ -586,7 +586,7 @@ void calc_fly()
for(p=letici_veci;p!=NULL;p=q)
{
p->xpos+=p->speed;
if (p->flags & FLY_BURNT)
if (p->flags & FLY_BURNT) {
if (p->flags & FLY_UNUSED)
{
short ds[2];
@ -609,6 +609,7 @@ void calc_fly()
q=p->next;
continue;
}
}
q=p->next;
if (!(p->flags & FLY_NEHMOTNA))
{
@ -1073,13 +1074,13 @@ void check_players_place(char mode)
if (sect>=mapsize) continue;
switch (map_sectors[sect].sector_type)
{
case S_ACID:if (!levitat)
case S_ACID:if (!levitat) {
if (h->lives>3) {h->lives-=3;bott_draw(0);}
else
} else
player_hit(h,3+7*mode,0);
break;
case S_VIR:
if (!levitat)
if (!levitat) {
if (mode==0 && vir_zavora==0)
{
int i,smer;
@ -1091,7 +1092,7 @@ void check_players_place(char mode)
vir_zavora=0;
cancel_pass=1;
}
else
} else
break;
case S_LAVA: if (!levitat)
{
@ -1102,10 +1103,10 @@ void check_players_place(char mode)
else
{
if (h->lives>3) {h->lives-=3;bott_draw(0);}
else
player_hit(h,3+7*mode,0);
else player_hit(h,3+7*mode,0);
}
break;
case S_SSMRT:
u1=(h->lives);
@ -1113,8 +1114,9 @@ void check_players_place(char mode)
bott_draw(0);
break;
case S_VODA:
if (!levitat)
if (!levitat) {
akce_voda(h,mode);break;
}
case S_DIRA:if (!pass_zavora) postavy_propadnout(sect);break;
case S_LODKA:if (lodka!=1 && mode)
{
@ -1152,8 +1154,9 @@ void calc_game()
call_dialog(start_dialog_number,start_dialog_mob);
}
check_players_place(0);
if ((d=check_end_game())!=0)
if ((d=check_end_game())!=0) {
if (d==1) wire_end_game();else mrtva_skupina();
}
if (battle && cur_mode!=MD_INBATTLE)
{
start_battle();
@ -1321,8 +1324,6 @@ char chod_s_postavama(char sekupit)
{
if (postavy[i].groupnum==cur_group)
{
int wh;
int wf;
lastsec=postavy[i].sektor;
postavy[i].sektor=viewsector;
postavy[i].direction=viewdir;
@ -1385,12 +1386,12 @@ void shift_zoom(char smer)
switch (smer & 3)
{
case 0:if (lodka)zooming_forward(ablock(H_LODKA));
else
zooming_forward(ablock(H_BGR_BUFF));break;
else zooming_forward(ablock(H_BGR_BUFF));
break;
case 1:turn_left();break;
case 2:if (lodka)zooming_backward(ablock(H_LODKA));
else
zooming_backward(ablock(H_BGR_BUFF));break;
else zooming_backward(ablock(H_BGR_BUFF));
break;
case 3:turn_right();break;
}
hold_timer(TM_BACK_MUSIC,0);
@ -1556,7 +1557,8 @@ static char test_can_walk(int grp)
void step_zoom(char smer)
{
char nopass,drs;
char nopass;
uint8_t drs;
int sid,nsect,sect;
char can_go=1;
@ -1599,9 +1601,10 @@ void step_zoom(char smer)
}
mob_map[nsect]=0;
}
else if (mob_map[nsect] && !nopass)
else if (mob_map[nsect] && !nopass) {
if (!battle){ if (!mob_alter(nsect)) return; }
else return;
}
if (map_sectors[nsect].sector_type==S_LODKA)
{
int i;
@ -1733,14 +1736,15 @@ int check_path(word **path,word tosect)
{
if (map_sectors[*n].sector_type!=S_DIRA && ISTELEPORTSECT(*n))
{
for(i=0;i<4 && map_sectors[*p].step_next[i]!=*n;i++)
for(i=0;i<4 && map_sectors[*p].step_next[i]!=*n;i++) {
if (i==4)
{
ss=*p;
free(*path);*path=NULL;
return ss;
}
if (!map_sides[(*p<<2)+i].flags & SD_PLAY_IMPS) ok=1;
}
if (!(map_sides[(*p<<2)+i].flags & SD_PLAY_IMPS)) ok=1;
}
if (!ok)
{
@ -1768,7 +1772,8 @@ static unsigned int get_path_len(const word *w) {
void recall()
{
int tosect;
unsigned int max,i,j;
unsigned int max,i;
int j;
word *paths[POCET_POSTAV];
for(i=0;i<POCET_POSTAV;i++)
@ -1884,7 +1889,7 @@ void sleep_players(va_list args)
void *game_keyboard(EVENT_MSG *msg,void **usr)
{
char c;
uint8_t c;
usr;
if (pass_zavora) return NULL;

View file

@ -63,7 +63,7 @@ static void change_zoom()
int id=o_aktual->id;
int i;
for(i=30;i<60;i+=10) c_set_value(0,i,f_get_value(0,i) & ~1 | (i==id));
for(i=30;i<60;i+=10) c_set_value(0,i,(f_get_value(0,i) & ~1) | (i==id));
zoom_speed((id-30)/10);
}
@ -72,13 +72,13 @@ static void change_turn()
int id=o_aktual->id;
int i;
for(i=60;i<90;i+=10) c_set_value(0,i,f_get_value(0,i) & ~1 | (i==id));
for(i=60;i<90;i+=10) c_set_value(0,i,(f_get_value(0,i) & ~1) | (i==id));
turn_speed((id-60)/10);
}
static void unwire_setup();
static void setup_keyboard(EVENT_MSG *msg,void **)
static void setup_keyboard(EVENT_MSG *msg,void **_)
{
if (msg->msg == E_KEYBOARD)
{
@ -184,10 +184,10 @@ void new_setup()
}
}
for(i=0;i<sizeof(textc)/sizeof(int);i++)
for(i=0;i<(int)(sizeof(textc)/sizeof(int));i++)
define(-1,textxp[i],textyp[i]-1,1,1,0,label,texty[textc[i]]);
for(i=0;i<sizeof(effects)/sizeof(int);i++)
for(i=0;i<(int)(sizeof(effects)/sizeof(int));i++)
if (check_snd_effect(effects[i]))
{
define(200+i*10,50+i*60,30,30,200,0,skeldal_soupak,effects[i]==SND_MUSIC?127:255);c_default(get_snd_effect(effects[i]));

View file

@ -86,7 +86,7 @@ int autoopendata=0;
void *cur_xlat;
void redraw_desktop_call();
void redraw_desktop_call(void);
TMA_LOADLEV loadlevel;
@ -112,8 +112,8 @@ int game_extras=0;
char default_map[20]="LESPRED.MAP";
THUMAN postavy[POCET_POSTAV],postavy_save[POCET_POSTAV];
void (*unwire_proc)();
void (*wire_proc)();
void (*unwire_proc)(void);
void (*wire_proc)(void);
char cur_mode,battle_mode;
static int init_music_vol=127;
static int init_gfx_vol=255;
@ -352,7 +352,7 @@ int set_video(int mode)
return er;
}
void purge_temps(char) {
void purge_temps(char _) {
temp_storage_clear();
}
@ -462,7 +462,7 @@ void set_background(void **p,int32_t *s)
pal=data+3+bgr_distance*256;
pic=(char *)data+PIC_FADE_PAL_SIZE;
do
*ptr++=pal[*pic++] | BGSWITCHBIT;
*ptr++=pal[(uint8_t)*pic++] | BGSWITCHBIT;
while (--counter);
}
@ -537,9 +537,9 @@ void set_font(int font,int c1,...)
memcpy(f_default,charcolors,sizeof(charcolors));
}
void music_init()
void music_init(void)
{
char *path;
// char *path;
/* if (sound_detection)
{
SEND_LOG("(SOUND) SOUND_DETECT Detecting sound card",0,0);
@ -552,12 +552,12 @@ void music_init()
start_mixing();
set_snd_effect(SND_GFX,init_gfx_vol);
set_snd_effect(SND_MUSIC,init_music_vol);
path=plugins_path;
// path=plugins_path;
SEND_LOG("(SOUND) SOUND_DONE Sound Engine should work now",0,0);
}
void clrscr()
void clrscr(void)
{
}
@ -566,7 +566,7 @@ void clrscr()
void back_music()
void back_music(void)
{
mix_back_sound(0);
}
@ -578,7 +578,7 @@ void back_music()
return &anim_idle;
}*/
/*void timer_error()
/*void timer_error(void)
{
puts("\x7");
}
@ -600,7 +600,7 @@ void *timming(EVENT_MSG *msg,void **data)
{
p=q->next;
// if (p!=NULL && p->zero!=0) timer_error();
if (!(--q->counter))
if (!(--q->counter)) {
if (q->zavora && i==(j-1))
{
q->zavora=0;
@ -625,8 +625,10 @@ void *timming(EVENT_MSG *msg,void **data)
//else
// q->counter=1;
}
else
else {
q->counter=1;
}
}
if (q->next!=p && q!=p)
{
THE_TIMER *z;
@ -712,7 +714,7 @@ THE_TIMER *add_to_timer(int id,int delay,int maxcall,void *proc)
return q;
}
static void kill_timer()
static void kill_timer(void)
{
THE_TIMER *t;
@ -742,7 +744,7 @@ void *user_timer(EVENT_MSG *msg,void **usr)
return &user_timer;
}
void do_timer()
void do_timer(void)
{
EVENT_MSG msg;
char x;
@ -775,7 +777,7 @@ int cislovka(int i)
return 2;
}
void register_basic_data()
void register_basic_data(void)
{
int i,s;
TDREGISTERS *p;
@ -802,7 +804,7 @@ void register_basic_data()
}
}
void reg_grafiku_postav()
void reg_grafiku_postav(void)
{
int i;
char xname[16];
@ -823,7 +825,7 @@ void reg_grafiku_postav()
}
}
void cti_texty()
void cti_texty(void)
{
char path[80];int err;
texty=(TSTR_LIST)create_list(4);
@ -859,7 +861,7 @@ void global_kbd(EVENT_MSG *msg,void **usr)
return;
}
void add_game_window()
void add_game_window(void)
{
WINDOW *p;
CTL3D *c;
@ -894,7 +896,7 @@ void error_exception(EVENT_MSG *msg,void **unused)
}
}
void swap_error_exception()
void swap_error_exception(void)
{
closemode();
SEND_LOG("(ERROR) Disk is full ...",0,0);
@ -976,7 +978,7 @@ SEND_LOG("(INIT) Setting random seed.",0,0);
SEND_LOG("(INIT) Creating 256 color palette.",0,0);
cur_xlat=create_special_palette();
SEND_LOG("(INIT) Init message system - event handler",0,0);
init_events(100);
init_events();
SEND_LOG("(INIT) Setting videomode.",0,0);
verr=set_video(vmode);
if (verr)
@ -1045,7 +1047,7 @@ SEND_LOG("(INIT) Loading shops.",0,0);
}
void wire_main_functs();
void unwire_main_functs()
void unwire_main_functs(void)
{
SEND_LOG("(SYS) Wire main functions",0,0);
delete_from_timer(TM_FLY);
@ -1059,7 +1061,7 @@ void unwire_main_functs()
}
void wire_main_functs()
void wire_main_functs(void)
{
SEND_LOG("(SYS) unWire main functions",0,0);
add_to_timer(TM_SCENE,gamespeed,-1,refresh_scene);
@ -1076,7 +1078,7 @@ void wire_main_functs()
}
void init_game()
void init_game(void)
{
SEND_LOG("(INIT) Inventory.",0,0);
init_inventory();
@ -1116,9 +1118,10 @@ extern char running_battle;
load_shops();
send_message(E_CLOSE_MAP);
}
return 0;
}
void enter_game()
void enter_game(void)
{
int end;
init_spectxtrs();
@ -1264,7 +1267,7 @@ static void configure(char *filename)
SEND_LOG("(GAME) Done config.",0,0);
}
static int update_config()
static int update_config(void)
{
SEND_LOG("(GAME) Updating config. file '%s'",CONFIG_NAME,NULL);
add_field_num(&cur_config,sinit[1].heslo,zoom_speed(-1));
@ -1275,9 +1278,10 @@ static int update_config()
add_field_num(&cur_config,sinit[13].heslo,autosave_enabled);
save_config(cur_config,CONFIG_NAME);
SEND_LOG("(GAME) Config. file was saved",0,0);
return 0;
}
void help()
void help(void)
{
printf("Pouziti:\n\n S <filename.MAP> <start_sector>\n\n"
"<filename.MAP> jmeno mapy\n"
@ -1512,14 +1516,14 @@ static void new_game(int argc, char *argv[])
game_big_circle(enforce);
}
static void undef_menu()
static void undef_menu(void)
{
int i;
for(i=0;i<255;i++) undef_handle(0x8000+i);
}
static void load_error_report(EVENT_MSG *msg,void **)
static void load_error_report(EVENT_MSG *msg,void **_)
{
if (msg->msg == E_IDLE)
{
@ -1529,7 +1533,7 @@ static void load_error_report(EVENT_MSG *msg,void **)
}
}
static void wire_load_saved()
static void wire_load_saved(void)
{
send_message(E_CLOSE_MAP,-1);
}
@ -1626,7 +1630,7 @@ static void start_from_mapedit(va_list args)
exit_wait=1;
}
void disable_intro()
void disable_intro(void)
{
add_field_num(&cur_config,sinit[12].heslo,1);
update_config();
@ -1634,7 +1638,7 @@ void disable_intro()
void main(int argc,char *argv[])
int main(int argc,char *argv[])
{
char *c,rm;
@ -1702,13 +1706,14 @@ void main(int argc,char *argv[])
escape();
update_config();
closemode();
return 0;
}
#include "version.h"
int GetExeVersion()
int GetExeVersion(void)
{
return VERSIONNUM;
}

View file

@ -60,7 +60,7 @@ void init_tracks()
memset(locks,0,sizeof(locks));
}
static char last_beep_lev;
/*void pcspeak_uroven(char value,int time);
#pragma aux pcspeak_uroven parm[bh][ecx]=\
@ -198,11 +198,8 @@ int calcul_volume(int chan,int x,int y,int side,int volume)
void wav_load(void **p,int32_t *s)
{
char *sr;
int32_t *d;
char *c;
char *tg;
void *tgr;
size_t siz;
struct t_wave x[3];
sr=*p;
@ -219,7 +216,6 @@ void wav_load(void **p,int32_t *s)
read_chunk(sr,tg);
free(*p);
*p=tgr;
siz=*s;
*s+=sizeof(struct t_wave)+4;
/* if (x[0].freq!=x[0].bps)
{
@ -250,7 +246,6 @@ void play_effekt(int x,int y,int xd,int yd,int side,int sided,TMA_SOUND *p)
int chan;
int blockid;
SND_INFO *track;
THANDLE_DATA *z;
char *s;
if (!sound_enabled) return;
@ -277,7 +272,7 @@ void play_effekt(int x,int y,int xd,int yd,int side,int sided,TMA_SOUND *p)
blockid=find_handle(p->filename,wav_load);
if (blockid==-1)
{
z=def_handle(end_ptr,p->filename,wav_load,SR_ZVUKY);
def_handle(end_ptr,p->filename,wav_load,SR_ZVUKY);
blockid=end_ptr++;
if (level_preload) apreload(blockid);
}
@ -340,7 +335,7 @@ void restore_sound_names()
void recalc_volumes(int sector,int side)
{
int i;
int newx,newy,layer;
int newx,newy;//,layer;
if (sector>=mapsize) return;
@ -348,7 +343,7 @@ void recalc_volumes(int sector,int side)
SEND_LOG("(SOUND) %s","Recalculating volumes",0);
newx=map_coord[sector].x;
newy=map_coord[sector].y;
layer=map_coord[sector].layer;
// layer=map_coord[sector].layer;
for(i=0;i<CHANNELS;i++)
if (chan_state[i]>=0 && playings[i].side>=0)
{
@ -382,7 +377,7 @@ void create_playlist(char *playlist)
if (cur_playlist!=NULL) release_list(cur_playlist);
cur_playlist=NULL;
if (playlist==NULL) return;
if (playlist=="") return;
if (!playlist[0]) return;
c=playlist;
while (*c && *c==32) c++;
sscanf(c,"%s",mode);
@ -395,7 +390,7 @@ void create_playlist(char *playlist)
if (shift) c+=strlen(mode);else play_list_mode=PL_RANDOM;
while (*c && *c==32) c++;
playlist=c;
if (playlist=="") return;
if (!playlist[0]) return;
for (c=playlist;c!=NULL;c=strchr(c+1,' ')) i++;
playlist_size=i-1;
cur_playlist=create_list(i);

View file

@ -117,7 +117,7 @@ void unwire_programming();
void wire_jadro_souboje();
void unwire_jadro_souboje();
char sel_zivel=0;
uint8_t sel_zivel=0;
static char prekvapeni=0;
char powers[3]={0,1,2};
HUM_ACTION *magic_data;
@ -266,12 +266,13 @@ void poloz_vsechny_predmety()
{
int i;
for(i=0;i<POCET_POSTAV && picked_item!=NULL;i++) //polozeni pripadne drzene veci v mysi.
for(i=0;i<POCET_POSTAV && picked_item!=NULL;i++) {//polozeni pripadne drzene veci v mysi.
if (postavy[i].used && postavy[i].sektor==viewsector && put_item_to_inv(&postavy[i],picked_item))
{
free(picked_item);
picked_item=NULL;
}
}
if (picked_item!=NULL)
{
push_item(viewsector,viewdir,picked_item);
@ -345,7 +346,7 @@ int vypocet_zasahu(short *utocnik,short *obrance, int chaos,int zbran,int bonus
zv=obrance[VLS_OHEN+utocnik[VLS_MGZIVEL]];
zv=mgochrana(zv);
mutok=zv*mutok/100;
if (rnd(obrance[VLS_OHEN+utocnik[VLS_MGZIVEL]]/2)>mutok) mutok=0;
if ((int)rnd(obrance[VLS_OHEN+utocnik[VLS_MGZIVEL]]/2)>mutok) mutok=0;
dmzhit=mutok;
zasah=utok-obrana;
}
@ -645,7 +646,7 @@ T_CLK_MAP clk_end_game[]=
};
void end_game_end_phase(EVENT_MSG *msg,void **)
void end_game_end_phase(EVENT_MSG *msg,void **_)
{
static int wait=0;
if (msg->msg == E_TIMER) {
@ -1065,7 +1066,7 @@ void pouzij_zbran(THUMAN *p,int ruka)
anim_mirror=ruka==0;
prejdi_na_pohled(p);
if (itm) play_weapon_anim(it->weapon_attack,it->hitpos);
if (utok_na_sektor(p,m,chaos,bonus)>0 && itm && rnd(100)+1<it->magie)
if (utok_na_sektor(p,m,chaos,bonus)>0 && itm && (int)rnd(100)+1<it->magie)
thing_cast(it->spell,p-postavy,p->sektor,m,1);
}
}
@ -1101,7 +1102,7 @@ static char StrachPostavy(THUMAN *p)
{
word *cesta;
int i;
int ln;
int wf=weigth_defect(p)+1;
prejdi_na_pohled(p);
@ -1109,7 +1110,7 @@ static char StrachPostavy(THUMAN *p)
for(select_player=0;select_player<6;select_player++) if (postavy+select_player==p) break;
bott_draw(0);
labyrinth_find_path(p->sektor,65535,SD_PLAY_IMPS,valid_sectors,NULL);
ln=labyrinth_find_path(p->sektor,last_sector,SD_PLAY_IMPS,valid_sectors,&cesta);
labyrinth_find_path(p->sektor,last_sector,SD_PLAY_IMPS,valid_sectors,&cesta);
if (cesta[0]==0) {free(cesta);return 0;}
for (i=0;i<6 && cesta[i] && p->kondice ;i++)
{
@ -1423,7 +1424,7 @@ char ask_who_proc(int id,int xa,int ya,int xr,int yr)
p=&postavy[i];
c=p->sektor!=viewsector;
if (p->used)
if ((!far_play && !c || !death_play && c) && death_play==(p->lives==0))
if (((!far_play && !c) || (!death_play && c)) && death_play==(p->lives==0))
{
if (get_spell_teleport(magic_data->data1))
if ((magic_data->data2=select_teleport_target())==0)
@ -1495,9 +1496,10 @@ char runes_mask(int id,int xa,int ya,int xr,int yr)
d=ablock(H_RUNEMASK);
c=((char *)d)+6+512+xr+yr*d[0];
cc=*c-6;
if (*c)
if (*c<6 && ms_last_event.event_type & 0x2) sel_zivel=*c-1;
else if (runes[sel_zivel] & (1<<cc))
if (*c) {
if (*c<6 && ms_last_event.event_type & 0x2) {
sel_zivel=*c-1;
} else if (runes[sel_zivel] & (1<<cc))
{
int x=(sel_zivel*7+(cc))*3;
if (ms_last_event.event_type & 0x2)
@ -1516,6 +1518,7 @@ char runes_mask(int id,int xa,int ya,int xr,int yr)
rune_name=get_rune_name(x);
}
}
}
if (cc<0) rune_name=NULL;
free(runebar);runebar=NULL;
display_rune_bar();
@ -1785,20 +1788,26 @@ static void zahajit_kolo(char prekvapeni)
sect=map_sectors[sect].step_next[dir];
if (numplayers(sect,0)>2) break;
m1=mob_map[sect]-1;if (m1>=0) m2=mobs[m1].next-1;else m2=-1;
if ((m1>=0 && mobs[m1].vlajky & MOB_IN_BATTLE) || (m2>=0 && mobs[m2].vlajky & MOB_IN_BATTLE))
if (lnear) monster=1;else monster_far=1;
if ((m1 >= 0 && (mobs[m1].vlajky & MOB_IN_BATTLE))
|| (m2 >= 0 && (mobs[m2].vlajky & MOB_IN_BATTLE))) {
if (lnear) {
monster = 1;
} else {
monster_far = 1;
}
}
lnear=0;counter--;if(!counter) break;
}
w1=p->wearing[PO_RUKA_L];w2=p->wearing[PO_RUKA_R];
if (w1) dw1=glob_items[w1-1].druh;else dw1=-1;
if (w2) dw2=glob_items[w2-1].druh;else dw2=-1;
w=0;
if (dw1==TYP_STRELNA && p->sipy || dw1==TYP_VRHACI) w|=1;
if (dw2==TYP_STRELNA && p->sipy || dw2==TYP_VRHACI) w|=2;
if ((dw1==TYP_STRELNA && p->sipy) || dw1==TYP_VRHACI) w|=1;
if ((dw2==TYP_STRELNA && p->sipy) || dw2==TYP_VRHACI) w|=2;
if (w==0) w=select_weapon(p,0);
else if (w==3) w=select_weapon(p,0),monster|=monster_far;
else w--,monster|=monster_far;
if (p->used && !p->programovano && p->lives)
if (p->used && !p->programovano && p->lives) {
if (prekvapeni || !p->actions || !autoattack || !monster)
{
p->programovano++;p->zvolene_akce->action=AC_STAND;
@ -1813,6 +1822,7 @@ static void zahajit_kolo(char prekvapeni)
p->programovano=(char)p->actions;
}
}
}
rozhodni_o_poradi();
unwire_proc();
wire_jadro_souboje();
@ -1910,7 +1920,7 @@ void souboje_turn(char smer)
void programming_keyboard(EVENT_MSG *msg,void **unused)
{
char c;
uint8_t c;
unused;
if (msg->msg==E_KEYBOARD)
@ -2074,32 +2084,47 @@ char zasah_veci(int sector,TFLY *fl)
{
if (mob_map[sector] && fl->owner>=0)
{
if (fl->owner>=0) select_player=fl->owner-1;
if (it->druh!=TYP_VRHACI) return 1;
if (it->magie) area_cast(it->spell,sector,fl->owner,1);
mob1=mob_map[sector]-MOB_START;m1=&mobs[mob1];
mob2=m1->next-MOB_START;
if (mob2>=0)
{
m2=&mobs[mob2];
if (m2->vlajky & MOB_PASSABLE) m2=NULL;//pruchozi nestvury nemaji affekt na hozenou vec
}
else m2=NULL;
if (m1->vlajky & MOB_PASSABLE) if (m2!=NULL) m1=m2;else return 0;
if (m2==NULL)
{
mob_hit(m1,vypocet_zasahu(it->zmeny,m1->vlastnosti,1,fl->damage,fl->hit_bonus));
m1->dir=fl->smer+2&3;
if (fl->owner >= 0)
select_player = fl->owner - 1;
if (it->druh != TYP_VRHACI)
return 1;
if (it->magie)
area_cast(it->spell, sector, fl->owner, 1);
mob1 = mob_map[sector] - MOB_START;
m1 = &mobs[mob1];
mob2 = m1->next - MOB_START;
if (mob2 >= 0) {
m2 = &mobs[mob2];
if (m2->vlajky & MOB_PASSABLE) {
m2 = NULL; //pruchozi nestvury nemaji affekt na hozenou vec
}
} else {
m2 = NULL;
}
if (m1->vlajky & MOB_PASSABLE) {
if (m2 != NULL) {
m1 = m2;
} else {
return 0;
}
}
if (m2 == NULL) {
mob_hit(m1,
vypocet_zasahu(it->zmeny, m1->vlastnosti, 1, fl->damage,
fl->hit_bonus));
m1->dir = fl->smer + 2 & 3;
} else {
mob_hit(m1,
vypocet_zasahu(it->zmeny, m1->vlastnosti, 2, fl->damage,
fl->hit_bonus));
mob_hit(m2,
vypocet_zasahu(it->zmeny, m1->vlastnosti, 2, fl->damage,
fl->hit_bonus));
m1->dir = fl->smer + 2 & 3;
m2->dir = fl->smer + 2 & 3;
}
return 1;
}
else
{
mob_hit(m1,vypocet_zasahu(it->zmeny,m1->vlastnosti,2,fl->damage,fl->hit_bonus));
mob_hit(m2,vypocet_zasahu(it->zmeny,m1->vlastnosti,2,fl->damage,fl->hit_bonus));
m1->dir=fl->smer+2&3;
m2->dir=fl->smer+2&3;
}
return 1;
}
else if (map_coord[sector].flags & MC_PLAYER && (fl->owner<=0 || pocet_zivych(sector)>2))
{
int kolik,i,c=0;
@ -2314,7 +2339,7 @@ void send_weapon_skill(int druh)
char player_check_death(THUMAN *p, char afterround)
{
p->used&=~0x80;
if (p->lives<=0 && p->groupnum)
if (p->lives<=0 && p->groupnum) {
if (!battle || afterround)
{
int mp;
@ -2356,6 +2381,7 @@ char player_check_death(THUMAN *p, char afterround)
if (p->lives<0) p->lives=0;
p->used|=0x80;
}
}
if (p->lives>p->vlastnosti[VLS_MAXHIT]) p->lives=p->vlastnosti[VLS_MAXHIT];
return 0;
}

View file

@ -41,7 +41,7 @@ MAP_PROC(map_test)
return 1;
}
void spell_teleport();
MAP_PROC(map_teleport)
{
side=0;event;
@ -49,9 +49,9 @@ MAP_PROC(map_teleport)
if (mob_map[sector]!=0)
{
int i;
spell_teleport(-mob_map[sector],-1);
spell_teleport(-mob_map[sector],-1,-1);
if ((i=mobs[mob_map[sector]-1].next)!=0)
spell_teleport(-i,-1);
spell_teleport(-i,-1,-1);
side=1;
}
if (map_coord[sector].flags & MC_DPLAYER)
@ -222,7 +222,7 @@ static void show_liane(THE_TIMER *t)
*/
static const float Inv2=0.5;
static const float Snapper=3<<22;
static __inline int toInt(float fval)
@ -317,7 +317,7 @@ MAP_PROC(map_liana)
MAP_PROC(map_identify)
{
int x,y,yp,xp,ys,yss;
int x,y,yp,xp,ys;
int i,cnt;char s[100];
TITEM *it;
TSTR_LIST ls;
@ -354,19 +354,17 @@ MAP_PROC(map_identify)
do
{
x=320-ID_XS/2;
y=y=240-ys/2;
y=240-ys/2;
create_frame(x,y,ID_XS,ys,1);
xp=x+5;yp=y+5;ys=ID_YS-10;
set_font(H_FBOLD,NOSHADOW(0));
yss=ys;
while(i<cnt)
{
position(xp,yp);outtext(ls[i]);
yp+=10;yss-=10;
yp+=10;
i++;
}
showview(0,0,0,0);
getchar();
wire_proc();
}
while (i<cnt);
@ -389,7 +387,7 @@ static int get_dangerous_place(int sector)
MOB_PROC(mob_open_door)
{
if (event==SMPR_WALK)
if (event==SMPR_WALK) {
if (m->user_data<128 || m->user_data>192)
{
int sector=m->sector;
@ -427,6 +425,7 @@ MOB_PROC(mob_open_door)
}
return m->user_data<144;
}
}
return 0;
}
@ -683,7 +682,7 @@ static t_map_proc sp_map_table[]=
char call_mob_event(int event_number,int event_type,TMOB *m)
{
if (!event_number) return 0;
if (event_number>=SP_MOB_TAB_SIZE)
if (event_number>=(int)SP_MOB_TAB_SIZE)
event_error("Nestv<EFBFBD>ra pou<6F><75>va neplatnou specproc.",event_number);
cur_event_number=event_number;
return sp_mob_table[event_number](event_type,m);
@ -692,7 +691,7 @@ char call_mob_event(int event_number,int event_type,TMOB *m)
char call_item_event(int event_number,int event_type,short *ptr,THUMAN *p)
{
if (!event_number) return 0;
if (event_number>=SP_ITEM_TAB_SIZE)
if (event_number>=(int)SP_ITEM_TAB_SIZE)
event_error("<EFBFBD><EFBFBD>slo ud<75>losti u v<>ci je neplatn<74>. Specproc nen<65> definov<6F>na.",event_number);
cur_event_number=event_number;
return sp_item_table[event_number](event_type,ptr,p);
@ -701,7 +700,7 @@ char call_item_event(int event_number,int event_type,short *ptr,THUMAN *p)
char call_map_event(int event_number,int sector,int side,int value,int event)
{
if (!event_number) return 0;
if (event_number>=SP_MAP_TAB_SIZE)
if (event_number>=(int)SP_MAP_TAB_SIZE)
event_error("Neplatn<EFBFBD> <20><>slo ud<75>losti na st<73>n<EFBFBD>. Specproc s t<>mto <20><>slem nen<65> definov<6F>na.",event_number);
cur_event_number=event_number;
return sp_map_table[event_number](sector,side,value,event);

View file

@ -111,6 +111,18 @@ int temp_storage_getc(TMPFILE_RD *f) {
return r;
}
char *temp_storage_gets(char *buff, size_t sz, TMPFILE_RD *f) {
auto &d =f->_data;
auto pos = d.find('\n');
if (pos > d.size()) pos = d.size();
if (pos == 0) return NULL;
if (pos > sz - 1) pos = sz - 1;
temp_storage_read(buff, pos, f);
buff[pos] = 0;
return buff;
}
void temp_storage_internal_begin_scanf(TMPFILE_RD *f, const char *format, ...) {
if (f->_data.empty()) {
f->scan_ret = -1;

View file

@ -9,7 +9,7 @@ int32_t temp_storage_retrieve(const char *name, void *data, int32_t size);
void temp_storage_list(void (*callback)(const char *, void *), void *context);
void temp_storage_clear();
void temp_storage_clear(void);
typedef struct _temp_storage_file_rd TMPFILE_RD;
typedef struct _temp_storage_file_wr TMPFILE_WR;
@ -21,6 +21,7 @@ void temp_storage_delete(const char *name);
void temp_storage_close_rd(TMPFILE_RD *f);
void temp_storage_close_wr(TMPFILE_WR *f);
int temp_storage_getc(TMPFILE_RD *f);
char *temp_storage_gets(char *buff, size_t sz, TMPFILE_RD *f);
void temp_storage_ungetc(TMPFILE_RD *f);
void temp_storage_write(const void *data, uint32_t size, TMPFILE_WR *f);
uint32_t temp_storage_read(void *data, uint32_t size, TMPFILE_RD *f);

View file

@ -1 +1 @@
void install_wizard();
void install_wizard(void);

View file

@ -13,6 +13,7 @@
#include "bgraph.h"
#include "gui.h"
#include "basicobj.h"
#include <stdarg.h>
#define MEMTEXT "Pam<61>t: "
@ -233,7 +234,7 @@ void draw_status_line(char *c)
p=strchr(c,'\0');
*(--p)='\0';
if (p=c) break;
if (p==c) break;
}
position(5,y);outtext(c);
ukaz_mysku();
@ -263,7 +264,7 @@ void status_line(EVENT_MSG *msg, T_EVENT_ROOT **user_data) {
static char st_line[256], oldline[256] = { "\0" };
static char recurse = 1;
if (msg->msg == E_INIT)
if (msg->msg == E_INIT) {
if (recurse) {
T_EVENT_ROOT *p;
recurse = 0;
@ -274,8 +275,10 @@ void status_line(EVENT_MSG *msg, T_EVENT_ROOT **user_data) {
draw_status_line(NULL);
recurse = 1;
return;
} else
} else {
return;
}
}
msg->msg = va_arg(msg->data, int);
if (msg->msg == E_REDRAW) {
@ -364,23 +367,21 @@ void win_label_move(EVENT_MSG *msg,OBJREC *o)
static int drawed=0;
o;
if (msg->msg==E_INIT) return;
if (msg->msg==E_TIMER)
{
send_message(E_TIMER);
if (!drawed)
if (!moved)
{
drawed=1;
redraw_desktop();
moved=0;
}
else
{
drawed=0;
moved=0;
}
}
if (msg->msg == E_INIT)
return;
if (msg->msg == E_TIMER) {
send_message(E_TIMER);
if (!drawed) {
if (!moved) {
drawed = 1;
redraw_desktop();
moved = 0;
} else {
drawed = 0;
moved = 0;
}
}
}
if (msg->msg==E_MOUSE)
{
ms=get_mouse(msg);
@ -447,7 +448,7 @@ void check_box_draw(int x1,int y1, int x2, int y2,OBJREC *o)
{
int x3;
x1+=1;y1+=1;x2-=1;y2-=1;
x1+=1;y1+=1;/*x2-=1*/;y2-=1;
x3=x1+(y2-y1);
draw_border(x1,y1,x3-x1,y2-y1,def_border(4,curcolor));
bar32(x1,y1,x3,y2);
@ -710,18 +711,21 @@ void input_line_draw(int x1,int y1, int x2, int y2, OBJREC *o)
void input_line_event(EVENT_MSG *msg,OBJREC *o)
{
static int cursor=0;
int *len,*start,slen;
int len;
int *start;
int slen;
char *c;
static char *save;
static char clear_kontext;
input_line_state *st = o->userptr;
len = st->len;
start=&st->start;
c=(char *)o->data;
slen=strlen(c);
switch (msg->msg)
{
case E_GET_FOCUS:cursor=0;save=(char *)getmem(*len+1);
case E_GET_FOCUS:cursor=0;save=(char *)getmem(len+1);
strcpy(save,c);clear_kontext=1;break;
case E_LOST_FOCUS:cursor=0;*start=0;free(save);redraw_object(o);break;
case E_CURSOR_TICK:
@ -789,7 +793,7 @@ void input_line_event(EVENT_MSG *msg,OBJREC *o)
case 0:break;
case 13:break;
case 27:strcpy(c,save);slen=strlen(c);if (cursor>slen) cursor=slen;break;
default:if (key>=' ') if (slen<*len || clear_kontext)
default:if (key>=' ') if (slen<len || clear_kontext)
{
int i;
@ -895,13 +899,15 @@ void scroll_button_event(EVENT_MSG *msg,OBJREC *o)
}
}
}
if (msg->msg==E_TIMER && *(char *)o->data )
if (ms_last_event.tl1) set_change();
else if (!ms_last_event.tl2)
if (msg->msg==E_TIMER && *(char *)o->data ) {
if (ms_last_event.tl1) {
set_change();
} else if (!ms_last_event.tl2)
{
*(char *)o->data=0;
redraw_object(o);
}
}
if (msg->msg==E_GET_FOCUS || msg->msg==E_LOST_FOCUS)
{
@ -1258,7 +1264,7 @@ void resizer_event(EVENT_MSG *msg,OBJREC *o)
o;
if (msg->msg==E_INIT) return;
if (msg->msg==E_TIMER && !drawed)
if (msg->msg==E_TIMER && !drawed) {
if (!moved)
{
drawed=1;
@ -1270,6 +1276,7 @@ void resizer_event(EVENT_MSG *msg,OBJREC *o)
drawed=0;
moved=0;
}
}
if (msg->msg==E_MOUSE)
{
ms=get_mouse(msg);

View file

@ -29,7 +29,7 @@ void label(OBJREC *o);
void mid_label(OBJREC *o);
void scroll_bar_v(OBJREC *o);
void scroll_button(OBJREC *o);
void scroll_support();
void scroll_support(void);
void scroll_bar_h(OBJREC *o);
void button2(OBJREC *o);
void resizer(OBJREC *o);

View file

@ -3,15 +3,15 @@
word *GetScreenAdr();
word *GetBuffer2nd();
int32_t GetScreenPitch();
int32_t GetBuffer2ndPitch();
int32_t GetScreenSizeBytes();
word *GetScreenAdr(void);
word *GetBuffer2nd(void);
int32_t GetScreenPitch(void);
int32_t GetBuffer2ndPitch(void);
int32_t GetScreenSizeBytes(void);
void RedirectScreen(word *newaddr);
void RestoreScreen();
void RedirectScreenBufferSecond();
void RestoreScreen(void);
void RedirectScreenBufferSecond(void);
extern word curcolor,charcolors[7];
@ -99,35 +99,35 @@ void showview256(word x,word y,word xs,word ys);
void showview_lo(word x,word y,word xs,word ys);
void outtext(char *text);
int initmode_dx(char inwindow, char zoom, char monitor, int refresh);
int initmode32();
int initmode32b();
int initmode32(void);
int initmode32b(void);
int initmode256(void *paletefile);
int initmode256b(void *paletefile);
int initmode_lo(void *paletefile);
int initmode16(void *paletefile);
int initmode64(void *paletefile);
int initmode64b(void *paletefile);
void *create_hixlat();
void closemode();
void *create_hixlat(void);
void closemode(void);
void line32(word x1,word y1, word x2, word y2);
void position(word x,word y);
void outtext(char *text);
void show_ms_cursor(integer x,integer y);
void *register_ms_cursor(void *cursor);
void move_ms_cursor(integer newx,integer newy,char nodraw);
void hide_ms_cursor();
void hide_ms_cursor(void);
int text_height(char *text);
int text_width(char *text);
void set_aligned_position(int x,int y,char alignx, char aligny,char *text);
void wait_retrace();
void pal_optimize();
void wait_retrace(void);
void pal_optimize(void);
void rectangle(int x1,int y1,int x2,int y2,int color);
word *mapvesaadr1(word *a);
void *create_special_palette();
void *create_special_palette2();
void *create_blw_palette16();
void *create_special_palette(void);
void *create_special_palette2(void);
void *create_blw_palette16(void);
void rel_position_x(word x);
int init_empty_mode();
int init_empty_mode(void);
void put_8bit_clipped(void *src,void *trg,int startline,int velx,int vely);
//#pragma aux put_8bit_clipped parm [ESI][EDI][EAX][EBX][EDX] modify [ECX];

View file

@ -715,8 +715,8 @@ void *create_blw_palette16()
char *c;
int i,j,k;
void *z;
char pal_colors[]={0,1,2,3,4,5,20,7,56,57,58,59,60,61,62,63};
char carnat[]={0,1,3,2,4,5,7,6,12,13,15,14,8,9,11,10};
uint8_t pal_colors[]={0,1,2,3,4,5,20,7,56,57,58,59,60,61,62,63};
uint8_t carnat[]={0,1,3,2,4,5,7,6,12,13,15,14,8,9,11,10};
z=c=getmem(3*256+2*32768);
for(i=0;i<16;i++)

View file

@ -352,7 +352,7 @@ void put_picture(word x,word y,void *p)
if (mode==8 || mode==264)
{
word *table=data;
char *cdata=(char *)(data+(mode==264?10*256:256));
uint8_t *cdata=(uint8_t *)(data+(mode==264?10*256:256));
int i;
int j;
@ -367,7 +367,7 @@ void put_picture(word x,word y,void *p)
else if (mode==512 )
{
word *table=data;
char *cdata=(char *)(data+256);
uint8_t *cdata=(uint8_t *)(data+256);
int i;
int j;
@ -414,8 +414,6 @@ void put_image(word *image,word *target,int start_line,int sizex,int sizey)
int32_t scr_linelen2 = GetScreenPitch();
word *esi = image;
word *edi = target;
int eax = start_line;
int ebx = sizex;
int edx = sizey;
int ecx = esi[0];
esi = esi + 3 + start_line * ecx;
@ -718,7 +716,6 @@ void put_picture2picture(word *source,word *target,int xp,int yp)
word src_cx = srchdr[0];
word trg_cx = trghdr[0];
word src_cy = srchdr[1];
word trg_cy = trghdr[1];
word y;
unsigned char *srcimagedata = (unsigned char *)source+pic_start;

View file

@ -9,12 +9,12 @@
extern MS_EVENT ms_last_event;
short init_mysky();
short done_mysky();
void ukaz_mysku();
void schovej_mysku();
void zobraz_mysku();
short init_mysky(void);
short done_mysky(void);
void ukaz_mysku(void);
void schovej_mysku(void);
void zobraz_mysku(void);
void set_ms_finger(int x,int y);
void update_mysky(void);
char je_myska_zobrazena();
char je_myska_zobrazena(void);
#endif

View file

@ -56,7 +56,7 @@ char *cz_key_tabs[]={cz_table_1,cz_table_2,cz_table_3};
void keyboard(EVENT_MSG *msg,void *user_data)
{
int i;
static char cz_mode=0;
static uint8_t cz_mode=0;
char c,d;
msg;user_data;

View file

@ -19,5 +19,5 @@ extern TMS_BASIC_INFO ms_basic_info;
int lock_region (void *address, unsigned length);
void keyboard(EVENT_MSG *msg,void *user_data);
char ms_get_keycount();
char ms_get_keycount(void);
#endif

View file

@ -15,7 +15,6 @@
#include <signal.h>
#include <assert.h>
static jmp_buf jmpenv;
#define find_event_msg(where,what,res) \
{\
@ -285,7 +284,6 @@ static int call_proc(EVENT_MSG *msg, void *ctx) {
T_EVENT_POINT *install_event(T_EVENT_ROOT **tree,int32_t ev_num,EV_PROC proc,void *procdata,char end)
//instaluje novou udalost;
{
EVENT_MSG x;
void *user=NULL;
T_EVENT_POINT *p;
call_proc_context ctx = {proc, &user};
@ -299,7 +297,6 @@ T_EVENT_POINT *install_event(T_EVENT_ROOT **tree,int32_t ev_num,EV_PROC proc,voi
void deinstall_event(T_EVENT_ROOT **tree,int32_t ev_num,EV_PROC proc,void *procdata)
//deinstaluje udalost;
{
EVENT_MSG x;
T_EVENT_ROOT *r;
T_EVENT_POINT *p;
@ -317,9 +314,7 @@ void deinstall_event(T_EVENT_ROOT **tree,int32_t ev_num,EV_PROC proc,void *procd
void tree_basics(T_EVENT_ROOT **ev_tree,EVENT_MSG *msg)
{
char *p;
void (*q)();
EVENT_MSG tg;
if (msg->msg==E_ADD || msg->msg==E_ADDEND)
{
@ -394,6 +389,7 @@ int send_message_to(int (*cb)(EVENT_MSG *, void *), void *ctx, int message, ...)
va_start(x.data, message);
int r = cb(&x, ctx);
va_end(x.data);
return r;
}
static void send_message_to_tree(EVENT_MSG *x) {
@ -430,7 +426,7 @@ void timer(EVENT_MSG *msg)
}
}
void tasker(EVENT_MSG *msg,void **)
void tasker(EVENT_MSG *msg,void **_)
{

View file

@ -99,7 +99,7 @@ extern char *otevri_zavoru;
//extern int curtask;
//extern char *task_info;
void init_events();
void init_events(void);
// inicalizuje zakladni strom udalosto
void send_message(int message,...);
@ -121,8 +121,8 @@ static __inline void shift_message(EVENT_MSG *msg) {
msg->msg = va_arg(msg->data, int);
}
void do_events();
void escape();
void do_events(void);
void escape(void);
#include <legacy_coroutines.h>
/*

View file

@ -36,7 +36,7 @@ void empty1(OBJREC *o)
o;
}
void empty2_p(OBJREC *o, va_list)
void empty2_p(OBJREC *o, va_list _)
{
o;
}
@ -328,7 +328,7 @@ void add_to_idlist(OBJREC *o)
void define(int id,int x,int y,int xs,int ys,char align,void (*initproc)(OBJREC *),...)
{
OBJREC *o;
int32_t *p;
o=(OBJREC *)getmem(sizeof(OBJREC));
o->x=x;o->y=y;o->xs=xs;o->ys=ys;
@ -341,8 +341,8 @@ void define(int id,int x,int y,int xs,int ys,char align,void (*initproc)(OBJREC
o->autoresizey=0;
o->on_event=empty;
o->on_enter=empty;
o->on_exit=empty1;
o->on_change=empty3;
o->on_exit=empty;
o->on_change=empty;
o->enabled=1;
o->draw_error=0;
o->color=waktual->color;memcpy(o->f_color,f_default,sizeof(f_default));
@ -873,10 +873,11 @@ void set_enable(int win_id,int obj_id,int condition)
condition=(condition!=0);
if ((o=find_object_desktop(win_id,obj_id,&w))==NULL) return;
if (o==o_aktual)
if (o==o_aktual) {
if (send_lost()) return;
else
} else {
o_aktual=NULL;
}
if (o->enabled!=condition)
{
o->enabled=condition;
@ -892,7 +893,7 @@ void close_current()
void background_runner(EVENT_MSG *msg,void **prog)
{
void (*p)();
char i=1;
if (msg->msg==E_INIT)
{
@ -906,7 +907,7 @@ void background_runner(EVENT_MSG *msg,void **prog)
}
p=*prog;
p();
i=0;
msg->msg=-2;
}

View file

@ -76,9 +76,9 @@ typedef struct objrec
void (*call_event)(EVENT_MSG *msg, struct objrec *);
void (*call_done)(struct objrec *);
void (*on_event)(EVENT_MSG *msg, struct objrec *);
void (*on_enter)();
void (*on_exit)();
void (*on_change)();
void (*on_enter)(void);
void (*on_exit)(void);
void (*on_change)(void);
char draw_error; //1 znamena ze objekt zpusobil chybu a nebude vykreslovan
struct objrec *next;
}OBJREC;
@ -134,22 +134,22 @@ int32_t desktop_add_window(WINDOW *w);
void select_window(int32_t id);
WINDOW *find_window(int32_t id);
void redraw_object(OBJREC *o);
void redraw_window();
void redraw_window(void);
void define(int id,int x,int y,int xs,int ys,char align,void (*initproc)(OBJREC *),...);
CTL3D *border(word light,word shadow, word bsize, word btype);
void property(CTL3D *ctl,word *font,FC_TABLE *fcolor,word color);
FC_TABLE *flat_color(word color);
void aktivate_window(MS_EVENT *ms);
void redraw_desktop();
void redraw_desktop(void);
void close_window(WINDOW *w);
void close_current();
void close_current(void);
void check_window(WINDOW *w);
void install_gui(void);
void uninstall_gui(void);
void on_control_change(void (*proc)());
void on_control_enter(void (*proc)());
void on_control_exit(void (*proc)());
void on_control_event(void (*proc)());
void on_control_change(void (*proc)(void));
void on_control_enter(void (*proc)(void));
void on_control_exit(void (*proc)(void));
void on_control_event(void (*proc)(EVENT_MSG *, struct objrec *));
void terminate_gui(void);
void set_change(void);
void set_value(int win_id,int obj_id,void *value);
@ -158,11 +158,11 @@ void c_set_value(int win_id,int obj_id,int cnst);
void c_default(int cnst);
int f_get_value(int win_id,int obj_id);
void get_value(int win_id,int obj_id,void *buff);
void cancel_event();
void cancel_event(void);
OBJREC *find_object(WINDOW *w,int id);
void set_window_modal(void);
void set_enable(int win_id,int obj_id,int condition);
void run_background(void (*p)());
void run_background(void (*p)(void));
void disable_bar(int x,int y,int xs,int ys,word color);
void movesize_win(WINDOW *w, int newx,int newy, int newxs, int newys);
void goto_control(int obj_id);

View file

@ -1,2 +1,2 @@
#include <string.h>
#include <malloc.h>
#include <malloc.h>

View file

@ -96,7 +96,8 @@ void *getmem(int32_t size)
void *load_file(char *filename)
{
FILE *f;
int32_t size,*p;
int32_t *p;
size_t size;
if (mman_action!=NULL) mman_action(MMA_READ);
SEND_LOG("(LOAD) Loading file '%s'",filename,0);
@ -268,7 +269,6 @@ THANDLE_DATA *get_handle(int handle)
void heap_error(size_t size) //heap system
{
int i,j;
char swaped=0;
uint32_t maxcounter=0;
THANDLE_DATA *sh;
char repeat=0,did=0;
@ -290,7 +290,7 @@ void heap_error(size_t size) //heap system
h=((THANDLE_DATA *)_handles[i]+j);
c=bk_global_counter-h->counter;
if (h->status==BK_PRESENT && ~h->flags & BK_LOCKED)
if (h->status==BK_PRESENT && ~h->flags & BK_LOCKED) {
if (last_free!=NULL)
{
d=(char *)h->blockdata-last_free;
@ -304,6 +304,7 @@ void heap_error(size_t size) //heap system
num=i*BK_MINOR_HANDLES+j;
}
}
}
}
if (lastblock==sh)
{
@ -324,7 +325,6 @@ void heap_error(size_t size) //heap system
{
free(sh->blockdata);
sh->status=BK_SWAPED;
swaped=1;
}
}
else
@ -373,7 +373,7 @@ THANDLE_DATA *zneplatnit_block(int handle)
return h;
}
void init_manager(char *filename,char */*swap is not supported*/) // filename= Jmeno datoveho souboru nebo NULL pak
void init_manager(char *filename,char *swap_is_not_supported) // filename= Jmeno datoveho souboru nebo NULL pak
// se pouzije DOS
// swp je cesta do TEMP adresare
{
@ -537,7 +537,8 @@ void *ablock(int handle)
if (h->src_file[0]!=0)
{
if (mman_action!=NULL) mman_action(MMA_READ);
strcpy(c,mman_pathlist[h->path]);strcat(c,h->src_file);
strcpy(c,mman_pathlist[h->path]);
strcat(c,h->src_file);
c[strlen(mman_pathlist[h->path])+12]='\0';
p=load_file(c);
s=last_load_size;
@ -668,12 +669,12 @@ int apreload_sort(const void *val1,const void *val2)
void apreload_start(void (*percent)(int cur,int max))
{
word *p;
short *p;
int i;
int c,z;
swap_status=0;
p=NewArr(word,max_sign);
p=NewArr(short,max_sign);
for(i=0;i<max_sign;i++) p[i]=i;
qsort(p,max_sign,sizeof(word),apreload_sort);
for(i=0,c=0;i<max_sign;i++) if (apr_sign[p[i]]==0x7f7f7f7f)p[i]=-1;else c++;
@ -733,7 +734,7 @@ void close_manager()
//------------------------------------------------------------
/*static void block()
{
/* static MEMINFO inf;
static MEMINFO inf;
void *c;
static counter=0;
@ -801,7 +802,7 @@ void display_status()
void *grealloc(void *p,int32_t size)
{
void *q;
int32_t scop;
if (!size)
{

View file

@ -30,7 +30,7 @@ typedef struct thandle_data
int32_t seekpos; //16
void *blockdata; //20
char flags; //21
char path; //22
uint8_t path; //22
short status;
void (*loadproc)(void **data,int32_t *size);//28
unsigned short lockcount; //32
@ -61,7 +61,7 @@ typedef handle_list *handle_groups[BK_MAJOR_HANDLES];
extern char **mman_pathlist; //tento pointer musi byt naplnen ukazatelem na tabulku cest
extern void (*mem_error)(size_t); //pokud neni NULL je tato funkce volana vzdy kdyz dojde pamet a system si s tim nevi rady
extern void (*swap_error)();
extern void (*swap_error)(void);
extern int memman_handle; //cislo handle naposled zpracovavaneho prikazem ablock
extern char mman_patch; //jednicka zapina moznost pouziti patchu
void *getmem(int32_t size); //alokace pameti pres memman. alokovat pomoci malloc lze ale hrozi nebezpeci ze vrati NULL
@ -75,8 +75,8 @@ void aunlock(int handle); //odmyka blok
void aswap(int handle); //zapina swapovani pro blok
void aunswap(int handle); //vypina swapovani pro blok
void apreload(int handle); //zapina preloading pro blok (preloading proved pomoci ablock)
//void free(); //free
void close_manager(); //uzavre manager a uvolni veskerou pamet
//void free(void); //free
void close_manager(void); //uzavre manager a uvolni veskerou pamet
void undef_handle(int handle); //uvolni hadle k dalsimu pouziti
THANDLE_DATA *zneplatnit_block(int handle); //zneplatni data bloku
THANDLE_DATA *get_handle(int handle); //vraci informace o rukojeti
@ -105,17 +105,17 @@ FILE *afiletemp(char *filename, int group);
extern void (*mman_action)(int action); //udalost volajici se pri akci mmanagera.
void display_status(); //zobrazi na display status memmanageru
void display_status(void); //zobrazi na display status memmanageru
#ifdef LOGFILE
char *get_time_str();
int q_current_task();
char *get_time_str(void);
int q_current_task(void);
#define OPEN_LOG(log) memcpy(stderr,fopen(log,"w"),sizeof(FILE));
#define SEND_LOG(format,parm1,parm2) fprintf(stderr,"%-2d %s "format"\n",q_current_task(),get_time_str(),parm1,parm2),fflush(stderr)
#define CLOSE_LOG() fclose(logfile);
#define SEND_LOG(format,parm1,parm2) fprintf(stderr,"%-2d %s "format"\n",q_current_task(void),get_time_str(void),parm1,parm2),fflush(stderr)
#define CLOSE_LOG(void) fclose(logfile);
#else
#define OPEN_LOG(log)
#define SEND_LOG(format,parm1,parm2)
#define CLOSE_LOG()
#define CLOSE_LOG(void)
#endif
#endif

View file

@ -30,7 +30,7 @@ static int nextgroup;
static int bitsize,init_bitsize;
char old_value=0;
void do_clear_code()
void do_clear_code(void)
{
int i;
@ -45,7 +45,7 @@ void do_clear_code()
}
}
void reinit_lzw()
void reinit_lzw(void)
{
do_clear_code();
}
@ -63,7 +63,7 @@ void init_lzw_compressor(int dic_size)
}
void done_lzw_compressor()
void done_lzw_compressor(void)
{
free(compress_dic);
compress_dic=NULL;
@ -90,7 +90,7 @@ void *open_mgif(void *mgif) //vraci ukazatel na prvni frame
return c;
}
void close_mgif() //dealokuje buffery pro prehravani
void close_mgif(void) //dealokuje buffery pro prehravani
{
done_lzw_compressor();
free(lzw_buffer);
@ -180,8 +180,8 @@ int fast_expand_code(DOUBLE_S *compress_dic, int code,uint8_t **target, uint8_t
*old_value = w;
**target = out;
(*target)++;
return code;
}
return out;
/*
_asm
{
@ -237,16 +237,16 @@ void lzw_decode(void *source,char *target)
//int group,chr;
int old_first;
register int mask=0xff;
uint8_t old_value;
for(i=0;i<LZW_MAX_CODES;i++) compress_dic[i].first=0;
clear:
uint8_t old_value=0;
old_value=0;
nextgroup=free_code;
bitsize=init_bitsize;
mask=(1<<bitsize)-1;
code=input_code(source,&bitpos,bitsize,mask);
uint8_t *t = target;
uint8_t *t = (uint8_t *)target;
old_first=fast_expand_code(compress_dic,code,&t,&old_value);
old=code;
while ((code=input_code(source,&bitpos,bitsize,mask))!=end_code)

View file

@ -36,5 +36,5 @@ typedef struct mgif_header
void mgif_install_proc(MGIF_PROC proc);
void *open_mgif(void *mgif); //vraci ukazatel na prvni frame
void *mgif_play(void *mgif); //dekoduje a zobrazi frame
void close_mgif(); //dealokuje buffery pro prehravani
void close_mgif(void); //dealokuje buffery pro prehravani
#endif

View file

@ -42,12 +42,12 @@ void decomprimate_line_hi(char *src,unsigned short *trg,unsigned short *paleta,i
{
int i,j;
i=(*src++) & 0x3f;
for (j=0;j<i;j++) *trg++=paleta[*src];
for (j=0;j<i;j++) *trg++=paleta[(uint8_t)*src];
src++;
linelen-=i-1;
}
else
*trg++=paleta[*src++];
*trg++=paleta[(uint8_t)*src++];
}
*srcstep=src-srcsave;
}

View file

@ -91,13 +91,12 @@ static int set_line_back(TSTR_LIST ls,int line)
void string_list_draw(int x1,int y1,int x2,int y2,OBJREC *o)
{
STRING_LIST_DATA *p;
int xs,ys,y;
int y;
char savech[]=" ";
int znh,i,j,max;
TSTR_LIST ls;
int savcolor=curcolor;
xs=x2-x1;ys=y2-y1;
p=o->userptr;
ls=p->list;
bar32(x1,y1,x2,y2);
@ -182,7 +181,7 @@ void string_list_event(EVENT_MSG *msg,OBJREC *o)
i=get_to_topline(ls,p->topline,NULL);
ms=get_mouse(msg);
curfont=o->font;
if (ms->tl1 && clicked || ms->event_type & 0x2)
if ((ms->tl1 && clicked) || (ms->event_type & 0x2))
{
if (ls)
do

View file

@ -9,10 +9,11 @@
TSTR_LIST create_list(int count)
{
TSTR_LIST p;int i,j;
TSTR_LIST p;
int i;
size_t *s=(size_t *)malloc(count*sizeof(*p)+sizeof(size_t));
if (p==NULL) return NULL;
if (s==NULL) return NULL;
*s = count;
p = (TSTR_LIST)(s+1);
for(i=0;i<count;i++) p[i]=NULL;
@ -28,8 +29,7 @@ int find_ptr(TSTR_LIST source,void *_ptr,int _size)
const char *str_replace(TSTR_LIST *list,int line,const char *text)
{
int count,i,j;
TSTR_LIST p;
int count;
char *c;
count=str_count(*list);
@ -61,7 +61,7 @@ const char *str_replace(TSTR_LIST *list,int line,const char *text)
int str_add(TSTR_LIST *list,const char *text)
{
int count,i;
TSTR_LIST p;
count=str_count(*list);
i=find_ptr(*list,NULL,count);
@ -72,7 +72,7 @@ int str_add(TSTR_LIST *list,const char *text)
const char *str_insline(TSTR_LIST *list,int before,const char *text)
{
int i,count,punkt;
TSTR_LIST p;
count=str_count(*list);
punkt=find_ptr(*list,NULL,count);
@ -90,7 +90,6 @@ void str_remove(TSTR_LIST *list,int line)
void str_delfreelines(TSTR_LIST *list)
{
int count,i,j;
TSTR_LIST p;
count=str_count(*list);
j=0;
@ -101,7 +100,7 @@ void str_delfreelines(TSTR_LIST *list)
int str_count(TSTR_LIST p)
{
int count;
if (p==NULL) return 0;
return *((size_t *)p-1);

View file

@ -23,17 +23,17 @@ extern int bvolume;
int sound_detect(int *dev,int *port,int *dma, int *irq);
void set_mixing_device(int mix_dev,int mix_freq,...);
char start_mixing();
void stop_mixing();
char start_mixing(void);
void stop_mixing(void);
void play_sample(int channel,void *sample,int32_t size,int32_t lstart,int32_t sfreq,int type);
void set_channel_volume(int channel,int left,int right);
void set_end_of_song_callback(const char * (*cb)(void *), void *ctx);
void fade_music();
void fade_music(void);
int mix_back_sound(int synchro);
int open_backsound(char *filename);
void change_music(const char *filename);
int get_timer_value();
int get_timer_value(void);
char *device_name(int device);
void force_music_volume(int volume);

View file

@ -14,7 +14,7 @@ extern "C" {
typedef void (*TaskerFunctionName)(va_list);
//void tasker(EVENT_MSG *msg,void **data);
//int create_task();
//int create_task(void);
///start new task
/**
* @param stack stack size - ignored by some platforms
@ -29,7 +29,7 @@ int add_task(int stack,TaskerFunctionName fcname,...);
///terminate task
/**
* request to terminate given task. The task can check this flag by
* task_quitmsg()
* task_quitmsg(void)
*/
void term_task(int id_num);
@ -52,13 +52,13 @@ void task_sleep_for(unsigned int time_ms);
*/
EVENT_MSG *task_wait_event(int32_t event_number);
///returns count of tasks
int q_any_task();
int q_any_task(void);
///returns 1 if terminate is requested
char task_quitmsg();
char task_quitmsg(void);
//char task_quitmsg_by_id(int id);
char q_is_mastertask();
char q_is_mastertask(void);
///returns id of current task
int q_current_task();
int q_current_task(void);
#ifdef __cplusplus

View file

@ -1,2 +1,2 @@
#include <string.h>
#include <malloc.h>
#include <malloc.h>

View file

@ -25,17 +25,17 @@ uint32_t _bios_keybrd(int mode);
#define RGB888(r,g,b) ((unsigned short)((((r)<<8)&0xF800) | (((g)<<3) & 0x7C0) | ((b)>>3)))
#define RGB555(r,g,b) ((unsigned short)(((r)<<11) | ((g)<<6) | (b)))
#pragma warning (disable : 4244 4761 4133)
void *map_file_to_memory(const char *name, size_t *sz);
void unmap_file(void *ptr, size_t sz);
void ShareCPU();
void ShareCPU(void);
void SetWheelMapping(char up, char down);
char get_control_key_state();
char get_shift_key_state();
char get_control_key_state(void);
char get_shift_key_state(void);
void display_error(const char *text);
int stricmp(const char *a, const char *b);
@ -44,7 +44,7 @@ int stricmp(const char *a, const char *b);
void strupr(char *c);
const char * int2ascii(int i, char *c, int radix);
uint32_t get_game_tick_count();
uint32_t get_game_tick_count(void);
void sleep_ms(uint32_t);
#ifdef __cplusplus

View file

@ -7,15 +7,15 @@
extern "C" {
#endif
uint16_t *GetScreenAdr();
uint16_t *GetBuffer2nd();
int32_t GetScreenPitch();
int32_t GetBuffer2ndPitch();
int32_t GetScreenSizeBytes();
uint16_t *GetScreenAdr(void);
uint16_t *GetBuffer2nd(void);
int32_t GetScreenPitch(void);
int32_t GetBuffer2ndPitch(void);
int32_t GetScreenSizeBytes(void);
void RedirectScreen(uint16_t *newaddr);
void RestoreScreen();
void RedirectScreenBufferSecond();
void RestoreScreen(void);
void RedirectScreenBufferSecond(void);
//inicializuje a otevira rezim 640x480x16b v DX - otevre okno, pripravi vse pro beh hry
@ -23,7 +23,7 @@ void RedirectScreenBufferSecond();
char DXInit64(char inwindow,int zoom,int monitor, int refresh);
//uzavre rezim grafiky
void DXCloseMode();
void DXCloseMode(void);
//void DXCopyRects32(unsigned short x,unsigned short y,unsigned short xs,unsigned short ys);
void DXCopyRects64(unsigned short x,unsigned short y,unsigned short xs,unsigned short ys);
@ -44,8 +44,8 @@ void setvesa_displaystart(int x,int y);
void DxSetInitResolution(int x, int y);
int DxGetResX();
int DxGetResY();
int DxGetResX(void);
int DxGetResY(void);
void DXMouseTransform(unsigned short *x, unsigned short *y);

View file

@ -147,8 +147,6 @@ void SDLContext::pool_events() {
ms_event.x = (int16_t)(640*normalizedX);
ms_event.y = (int16_t)(480*normalizedY);
} else if (e.type == SDL_MOUSEBUTTONDOWN || e.type == SDL_MOUSEBUTTONUP) {
int mouseX = e.button.x;
int mouseY = e.button.y;
int button = e.button.button;
int up = e.type == SDL_MOUSEBUTTONUP?1:0;
ms_event.event = 1;