game folder "just" compiles (not link)

This commit is contained in:
Ondřej Novák 2025-01-25 13:08:41 +01:00
parent 13d3908273
commit 1b0f7fe0c2
135 changed files with 2161 additions and 2336 deletions

6
.gitignore vendored
View file

@ -4,4 +4,8 @@
.svn .svn
_UpgradeReport_Files _UpgradeReport_Files
/Bin /Bin
/Debug /Debug
/build
/.cproject
/.project
/.settings

1
.settings/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/language.settings.xml

6
CMakeLists.txt Normal file
View file

@ -0,0 +1,6 @@
cmake_minimum_required(VERSION 3.28)
project(skeldal)
include_directories(platform libs)
add_compile_options(-funsigned-char)
add_subdirectory(game)

View file

@ -1,81 +0,0 @@
#include <skeldal_win.h>
#include <stdio.h>
#include <bgraph.h>
#include <dos.h>
#include <memman.h>
#include <debug.h>
static int latest_version(char *wild,int numpos)
{
WIN32_FIND_DATA ff;
HANDLE rc;
int i=0,j=-1;
char *p;
rc=FindFirstFile(wild,&ff);
if (rc!=INVALID_HANDLE_VALUE)
do
{
p=ff.cFileName+numpos;
sscanf(p,"%d",&i);
if (i>j) j=i;
}
while (FindNextFile(rc,&ff));
FindClose(rc);
return j;
}
void save_dump()
{
static dump_counter=-1;
FILE *f;
int i,r,g,b,x,y;
word *a;
char c[20];
if (dump_counter==-1)
{
dump_counter=latest_version("DUMP*.BMP",4);
SEND_LOG("(DUMP) Dump counter sets to %d",dump_counter,0);
}
sprintf(c,"DUMP%04d.BMP",++dump_counter);
SEND_LOG("(DUMP) Saving screen shot named '%s'",c,0);
f=fopen(c,"wb");
fputc('B',f);fputc('M',f);
i=DxGetResX()*DxGetResY()*3+0x36;
fwrite(&i,1,4,f);i=0;
fwrite(&i,1,4,f);
i=0x36;
fwrite(&i,1,4,f);
i=0x28;
fwrite(&i,1,4,f);
i=DxGetResX();
fwrite(&i,1,4,f);
i=DxGetResY();
fwrite(&i,1,4,f);
i=1;
fwrite(&i,1,2,f);
i=24;
fwrite(&i,1,2,f);
i=0;
fwrite(&i,1,4,f);
i=DxGetResX()*DxGetResY()*3;
fwrite(&i,1,4,f);
for(i=4,r=0;i>0;i--) fwrite(&r,1,4,f);
for(y=DxGetResY();y>0;y--)
{
word *scr=GetScreenAdr();
a=scr+(y-1)*scr_linelen2;
for(x=0;x<DxGetResX();x++)
{
i=a[x];
b=(i & 0x1f)<<3;
g=(i & 0x7ff)>>3;
r=i>>8;
i=((r*256)+g)*256+b;
fwrite(&i,1,3,f);
}
}
fclose(f);
}

View file

@ -169,10 +169,10 @@ static void cpy_error_proc(int event,char *name)
switch(event) switch(event)
{ {
case CPERR_OPEN:hlaska="Nemohu otev©¡t soubor :";break; case CPERR_OPEN:hlaska="Nemohu otev<EFBFBD><EFBFBD>t soubor :";break;
case CPERR_READ:hlaska="Nastala chyba p©i ‡ten¡ z CD. Vyjmˆte CD, o‡istˆte jej a opˆt ho vlote do mechaniky";break; case CPERR_READ:hlaska="Nastala chyba p<EFBFBD>i <20>ten<65> z CD. Vyjm<6A>te CD, o<>ist<73>te jej a op<6F>t ho vlo<6C>te do mechaniky";break;
case CPERR_WRITE:hlaska="Nastala chyba p©i zapisu na disk. Mon  u je pln˜. Soubor:";break; case CPERR_WRITE:hlaska="Nastala chyba p<EFBFBD>i zapisu na disk. Mo<4D>n<EFBFBD> u<> je pln<6C>. Soubor:";break;
default:hlaska="Nastala nezn ma chyba. "; default:hlaska="Nastala nezn<EFBFBD>ma chyba. ";
} }
text=alloca(strlen(hlaska)+strlen(name)+10); text=alloca(strlen(hlaska)+strlen(name)+10);
strcpy(text,hlaska); strcpy(text,hlaska);
@ -187,7 +187,7 @@ static void cpy_error_proc(int event,char *name)
static void stop_copy() static void stop_copy()
{ {
if (msg_box("Konec instalace?",'\x2',"Hra je¨tˆ nen¡ kompletnˆ nainstalov na. Opravdu chce¨ ukon‡it instal tora?","Ano","Ne",NULL)==1) if (msg_box("Konec instalace?",'\x2',"Hra je<EFBFBD>t<EFBFBD> nen<65> kompletn<74> nainstalov<6F>na. Opravdu chce<63> ukon<6F>it instal<61>tora?","Ano","Ne",NULL)==1)
{ {
close_ini(); close_ini();
shutdown(); shutdown();
@ -197,7 +197,7 @@ static void stop_copy()
static void stop_setup() static void stop_setup()
{ {
if (msg_box("Konec?",'\x2',"Tato volba ukon‡¡ SETUP bez uloen¡ zmˆn. Opravdu chce¨ ukon‡it program?","Ano","Ne",NULL)==1) if (msg_box("Konec?",'\x2',"Tato volba ukon<EFBFBD><EFBFBD> SETUP bez ulo<6C>en<65> zm<7A>n. Opravdu chce<63> ukon<6F>it program?","Ano","Ne",NULL)==1)
{ {
shutdown(); shutdown();
home_path(target_path); home_path(target_path);
@ -208,10 +208,10 @@ static void stop_setup()
static void display_progress(void) static void display_progress(void)
{ {
def_dialoge(312,380,310,75,"Kop¡ruj¡ se soubory...",3); def_dialoge(312,380,310,75,"Kop<EFBFBD>ruj<EFBFBD> se soubory...",3);
define(10,10,27,290,15,0,done_bar,100); define(10,10,27,290,15,0,done_bar,100);
property(bbutt,NULL,flat_color(0x1e0),WINCOLOR); property(bbutt,NULL,flat_color(0x1e0),WINCOLOR);
define(30,5,5,80,15,2,button,"P©eru¨it");on_change(stop_copy); define(30,5,5,80,15,2,button,"P<EFBFBD>eru<EFBFBD>it");on_control_change(stop_copy);
property(def_border(1,0),&font6x9,flat_color(0),BUTTONCOLOR); property(def_border(1,0),&font6x9,flat_color(0),BUTTONCOLOR);
define(20,5,10,200,12,3,input_line,2048);set_default(""); define(20,5,10,200,12,3,input_line,2048);set_default("");
property(NULL,&font6x9,flat_color(0),WINCOLOR); property(NULL,&font6x9,flat_color(0),WINCOLOR);
@ -303,9 +303,9 @@ static void open_handbook(char *file)
if (find_window(win_handbook)!=NULL) close_window(find_window(win_handbook)); if (find_window(win_handbook)!=NULL) close_window(find_window(win_handbook));
if (handbook!=NULL) release_list(handbook); if (handbook!=NULL) release_list(handbook);
handbook=read_text(file); handbook=read_text(file);
win_handbook=def_dialoge(54,54,450,350,"P©¡ru‡ka",2); win_handbook=def_dialoge(54,54,450,350,"P<EFBFBD><EFBFBD>ru<EFBFBD>ka",2);
def_listbox(9,5,25,420,290,handbook,0,WINCOLOR);property(def_border(0,WINCOLOR),&font6x9,NULL,WINCOLOR); def_listbox(9,5,25,420,290,handbook,0,WINCOLOR);property(def_border(0,WINCOLOR),&font6x9,NULL,WINCOLOR);
define(20,5,5,60,15,2,button2,"Zav©¡t");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(close_current); define(20,5,5,60,15,2,button2,"Zav<EFBFBD><EFBFBD>t");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(close_current);
redraw_window(); redraw_window();
} }
@ -341,7 +341,7 @@ static void read_dirlist()
else else
if (dirlist[i]!=NULL && !strcmp(dirlist[i],"..")) if (dirlist[i]!=NULL && !strcmp(dirlist[i],".."))
{ {
str_insline(&dirlist,0,"<- zpˆt"); str_insline(&dirlist,0,"<- zp<EFBFBD>t");
str_replace(&dirlist,i,NULL); str_replace(&dirlist,i,NULL);
i++; i++;
} }
@ -390,7 +390,7 @@ static void select_dir()
{ {
int i=f_get_value(0,59); int i=f_get_value(0,59);
if (dirlist[i]==NULL) return; if (dirlist[i]==NULL) return;
if (!strcmp(dirlist[i],"<- zpˆt")) chdir("..");else chdir(dirlist[i]); if (!strcmp(dirlist[i],"<- zp<EFBFBD>t")) chdir("..");else chdir(dirlist[i]);
update_list(); update_list();
} }
@ -403,7 +403,7 @@ static get_script(char *source,char *target)
if (i) if (i)
{ {
shutdown(); shutdown();
if (i==1) puts("Nemohu na‡¡st INSTALL.INF"); if (i==1) puts("Nemohu na<EFBFBD><EFBFBD>st INSTALL.INF");
if (i==2) puts("Chyba kompilace scriptu INSTALL.INF"); if (i==2) puts("Chyba kompilace scriptu INSTALL.INF");
abort(); abort();
} }
@ -435,20 +435,20 @@ static load_window()
read_dirlist(); read_dirlist();
read_disk_list(); read_disk_list();
def_dialoge(200,100,340,300,PRG_HEADER,3); def_dialoge(200,100,340,300,PRG_HEADER,3);
define(-1,5,20,1,1,0,label,"Jmno sloky"); define(-1,5,20,1,1,0,label,"Jm<EFBFBD>no slo<6C>ky");
define(10,5,35,330,10,0,input_line,2048);property(def_border(5,WINCOLOR),&font6x9,NULL,0x7fff); define(10,5,35,330,10,0,input_line,2048);property(def_border(5,WINCOLOR),&font6x9,NULL,0x7fff);
set_full_target_path(0); set_full_target_path(0);
for(i=0;i<str_count(disklist);i++) if (target_path[0]==disklist[i][2]) break; for(i=0;i<str_count(disklist);i++) if (target_path[0]==disklist[i][2]) break;
default_font=&font6x9; default_font=&font6x9;
define(150,70,5,60,20,2,button,"Ok");on_change(terminate);property(bbutt,&font6x9,NULL,BUTTONCOLOR); define(150,70,5,60,20,2,button,"Ok");on_control_change(terminate_gui);property(bbutt,&font6x9,NULL,BUTTONCOLOR);
define(160,5,5,60,20,2,button,"Storno");on_change(terminate);property(bbutt,&font6x9,NULL,BUTTONCOLOR); define(160,5,5,60,20,2,button,"Storno");on_control_change(terminate_gui);property(bbutt,&font6x9,NULL,BUTTONCOLOR);
default_font=vga_font; default_font=vga_font;
def_listbox(59,70,60,100,200,dirlist,0,0x03ff);c_default(0);on_change(select_dir); def_listbox(59,70,60,100,200,dirlist,0,0x03ff);c_default(0);on_control_change(select_dir);
def_listbox(69,5,60,40,200,disklist,0,0x03ff);on_change(change_disk); def_listbox(69,5,60,40,200,disklist,0,0x03ff);on_control_change(change_disk);
c_default(i); c_default(i);
default_font=&font6x9; default_font=&font6x9;
define(-1,215,135,110,80,0,win_label,"");property(def_border(5,0x631f),NULL,NULL,0x631f); define(-1,215,135,110,80,0,win_label,"");property(def_border(5,0x631f),NULL,NULL,0x631f);
define(-1,220,140,1,1,0,label,"Voln na HD:"); define(-1,220,140,1,1,0,label,"Voln<EFBFBD> na HD:");
define(100,240,150,80,10,0,view_line,20);set_default("");property(NULL,&font6x9,NULL,0x631f); define(100,240,150,80,10,0,view_line,20);set_default("");property(NULL,&font6x9,NULL,0x631f);
default_font=vga_font; default_font=vga_font;
redraw_window(); redraw_window();
@ -469,13 +469,13 @@ static void autodetect()
default_font=&font6x9; default_font=&font6x9;
def_dialoge(12,12,324,140,"Autodetekce",2); def_dialoge(12,12,324,140,"Autodetekce",2);
define(-1,5,22,1,1,0,label,"Grafick  karta:"); define(-1,5,22,1,1,0,label,"Grafick<EFBFBD> karta:");
define(-1,5,34,1,1,0,label,"Typ SVGA:"); define(-1,5,34,1,1,0,label,"Typ SVGA:");
define(-1,5,46,1,1,0,label,"Rozli¨en¡:"); define(-1,5,46,1,1,0,label,"Rozli<EFBFBD>en<EFBFBD>:");
define(-1,5,62,1,1,0,label,"Zvukov  karta:"); define(-1,5,62,1,1,0,label,"Zvukov<EFBFBD> karta:");
define(-1,5,74,1,1,0,label,"Parametry:"); define(-1,5,74,1,1,0,label,"Parametry:");
define(-1,5,90,1,1,0,label,"CD-ROM:"); define(-1,5,90,1,1,0,label,"CD-ROM:");
define(-1,5,110,1,1,0,label,"My¨:"); define(-1,5,110,1,1,0,label,"My<EFBFBD>:");
define(10,5,22,120,10,1,view_line,256);set_default(""); define(10,5,22,120,10,1,view_line,256);set_default("");
define(20,5,34,160,10,1,view_line,256);set_default(""); define(20,5,34,160,10,1,view_line,256);set_default("");
define(30,5,46,150,10,1,view_line,256);set_default(""); define(30,5,46,150,10,1,view_line,256);set_default("");
@ -488,8 +488,8 @@ static void autodetect()
do_events(); do_events();
if (getsvgainfo(&si)) if (getsvgainfo(&si))
{ {
set_value(0,10,"<nen¡>"); set_value(0,10,"<nen<EFBFBD>>");
set_value(0,20,"<nen¡>"); set_value(0,20,"<nen<EFBFBD>>");
} }
else else
{ {
@ -521,7 +521,7 @@ static EVENT_PROC(esc_mode2)
zobraz_mysku(); zobraz_mysku();
redraw_desktop(); redraw_desktop();
goto_control(0); goto_control(0);
terminate(); terminate_gui();
} }
} }
} }
@ -531,9 +531,9 @@ static char test_mode()
char i,j,c; char i,j,c;
if (msg_box("Test grafiky",'\x1', if (msg_box("Test grafiky",'\x1',
"Instal tor nyn¡ vyzkou¨¡ zvolen˜ grafick˜ reim. " "Instal<EFBFBD>tor nyn<79> vyzkou<6F><75> zvolen<65> grafick<63> re<72>im. "
"Pokud obrazovka zstane ‡ern , nebo zobraz¡ nesmysly, stisknˆte " "Pokud obrazovka z<EFBFBD>stane <20>ern<72>, nebo zobraz<61> nesmysly, stiskn<6B>te "
"ESC a instal tor obnov¡ pvodn¡ reim.","Start","Zru¨it",NULL)==2) return 0; "ESC a instal<EFBFBD>tor obnov<6F> p<>vodn<64> re<72>im.","Start","Zru<EFBFBD>it",NULL)==2) return 0;
send_message(E_ADD,E_KEYBOARD,esc_mode2); send_message(E_ADD,E_KEYBOARD,esc_mode2);
donegr(); donegr();
i=initgr_spec(f_get_value(0,9)); i=initgr_spec(f_get_value(0,9));
@ -542,7 +542,7 @@ static char test_mode()
zobraz_mysku(); zobraz_mysku();
redraw_desktop(); redraw_desktop();
} }
if (!i && (j=msg_box("Test grafiky",'\x2',"Vidi¨ prost©ed¡ instal toru spr vnˆ?","Ano","Ne",NULL))==1) if (!i && (j=msg_box("Test grafiky",'\x2',"Vidi<EFBFBD> prost<73>ed<65> instal<61>toru spr<70>vn<76>?","Ano","Ne",NULL))==1)
{ {
vmode=f_get_value(0,9); vmode=f_get_value(0,9);
if (vmode==0) initgr_low(); if (vmode==0) initgr_low();
@ -583,7 +583,7 @@ static void select_vga()
def_dialoge(20,300,156,156,"Kvalita grafiky",2); def_dialoge(20,300,156,156,"Kvalita grafiky",2);
define(9,0,20,156,80,0,listbox,video_ls,0x03ff,0);c_default(vmode); define(9,0,20,156,80,0,listbox,video_ls,0x03ff,0);c_default(vmode);
property(NULL,vga_font,NULL,WINCOLOR); property(NULL,vga_font,NULL,WINCOLOR);
define(20,38,5,80,20,3,button,"Zmˆnit teƒ");on_change(test_mode); define(20,38,5,80,20,3,button,"Zm<EFBFBD>nit te<74>");on_control_change(test_mode);
property(bbutt,NULL,NULL,BUTTONCOLOR); property(bbutt,NULL,NULL,BUTTONCOLOR);
redraw_window(); redraw_window();
} }
@ -611,19 +611,19 @@ static void select_mode_win()
{ {
def_dialoge(224,270,192,156,"Instalovat",2); def_dialoge(224,270,192,156,"Instalovat",2);
default_font=&font6x9; default_font=&font6x9;
define(10,30,40,132,30,0,button,"Automaticky");property(bbutt,NULL,NULL,BUTTONCOLOR);on_change(terminate); define(10,30,40,132,30,0,button,"Automaticky");property(bbutt,NULL,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
define(30,30,80,132,30,0,button,"Podle p© ");property(bbutt,NULL,NULL,BUTTONCOLOR);on_change(terminate); define(30,30,80,132,30,0,button,"Podle p<EFBFBD><EFBFBD>n<EFBFBD>");property(bbutt,NULL,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
define(40,50,15,92,20,3,button,"Konec");property(bbutt,NULL,NULL,BUTTONCOLOR);on_change(stop_copy); define(40,50,15,92,20,3,button,"Konec");property(bbutt,NULL,NULL,BUTTONCOLOR);on_control_change(stop_copy);
redraw_window(); redraw_window();
} }
static void select_mode_win_setup() static void select_mode_win_setup()
{ {
def_dialoge(224,270,192,156,"Monosti:",2); def_dialoge(224,270,192,156,"Mo<EFBFBD>nosti:",2);
default_font=&font6x9; default_font=&font6x9;
define(10,30,40,132,30,0,button,"Nastaven¡");property(bbutt,NULL,NULL,BUTTONCOLOR);on_change(terminate); define(10,30,40,132,30,0,button,"Nastaven<EFBFBD>");property(bbutt,NULL,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
define(30,30,80,132,30,0,button,"Odinstalov ");property(bbutt,NULL,NULL,BUTTONCOLOR);on_change(terminate); define(30,30,80,132,30,0,button,"Odinstalov<EFBFBD>n<EFBFBD>");property(bbutt,NULL,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
define(40,50,15,92,20,3,button,"Konec");property(bbutt,NULL,NULL,BUTTONCOLOR);on_change(stop_setup); define(40,50,15,92,20,3,button,"Konec");property(bbutt,NULL,NULL,BUTTONCOLOR);on_control_change(stop_setup);
redraw_window(); redraw_window();
} }
@ -657,7 +657,7 @@ static void device_select2()
char c; char c;
def_dialoge(270,240,100,100,device_name(i),3); def_dialoge(270,240,100,100,device_name(i),3);
define(10,10,25,60,40,0,radio_butts,3,"LPT 1","LPT 2","PC Speaker");c_default(0); define(10,10,25,60,40,0,radio_butts,3,"LPT 1","LPT 2","PC Speaker");c_default(0);
define(20,10,5,80,20,2,button,"Ok");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(terminate); define(20,10,5,80,20,2,button,"Ok");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
redraw_window(); redraw_window();
escape(); escape();
c=f_get_value(0,10); c=f_get_value(0,10);
@ -674,7 +674,7 @@ static void device_select2()
static void select_sound(); static void select_sound();
static void detect_sound() static void detect_sound()
{ {
if (msg_box("Rozpozn n¡ zvukov karty",'\x2',"Opravdu chce¨ nechat rozpoznat zvukovou kartu? Na nˆkter˜ch po‡¡ta‡¡ch me automatick rozpozn v n¡ zpsobit zatuhnut¡ po‡¡ta‡e.","Ano","Ne",NULL)==2) return; if (msg_box("Rozpozn<EFBFBD>n<EFBFBD> zvukov<6F> karty",'\x2',"Opravdu chce<EFBFBD> nechat rozpoznat zvukovou kartu? Na n<>kter<65>ch po<70><6F>ta<74><61>ch m<><6D>e automatick<63> rozpozn<7A>v<EFBFBD>n<EFBFBD> zp<7A>sobit zatuhnut<75> po<70><6F>ta<74>e.","Ano","Ne",NULL)==2) return;
if (mixer_running) stop_mixing(); if (mixer_running) stop_mixing();
mixer_running=0; mixer_running=0;
set_enable(0,70,mixer_running); set_enable(0,70,mixer_running);
@ -695,15 +695,15 @@ static char sound_scan()
if (sound_info.device!=DEV_NOSOUND) if (sound_info.device!=DEV_NOSOUND)
{ {
if (sound_info.device==DEV_DAC) if (sound_info.device==DEV_DAC)
if (msg_box("Varov !",'\x1',"Vybran zvukov za©¡zen¡ pou¡v  nestandardn¡ p©¡stupy a vyu¡v  " if (msg_box("Varov<EFBFBD>n<EFBFBD>!",'\x1',"Vybran<EFBFBD> zvukov<6F> za<7A><61>zen<65> pou<6F><75>v<EFBFBD> nestandardn<64> p<><70>stupy a vyu<79><75>v<EFBFBD> "
"nˆkter˜ch skryt˜ch trik systmu. Na nˆkter˜ch po‡¡ta‡¡ch nemus¡ pracovat spr vnˆ. " "n<EFBFBD>kter<EFBFBD>ch skryt<79>ch trik<69> syst<73>mu. Na n<>kter<65>ch po<70><6F>ta<74><61>ch nemus<75> pracovat spr<70>vn<76>. "
"Toto za©¡zen¡ nedok e pracovat pod WINDOWS95 nebo jin˜m OS v˜jma DOSu. " "Toto za<EFBFBD><EFBFBD>zen<EFBFBD> nedok<6F><6B>e pracovat pod WINDOWS95 nebo jin<69>m OS v<>jma DOSu. "
"Pro zrychlen¡ pr ce odinstalujte ze systmu jak˜koliv EMM manager (EMM386, QEMM, apod.) " "Pro zrychlen<EFBFBD> pr<70>ce odinstalujte ze syst<73>mu jak<61>koliv EMM manager (EMM386, QEMM, apod.) "
"Chcete pokraovat?","Ano","Ne",NULL)==2) return 1; "Chcete pokra<EFBFBD>ovat?","Ano","Ne",NULL)==2) return 1;
get_value(sound_win,20,buffer); get_value(sound_win,20,buffer);
if (sscanf(buffer,"%x",&sound_info.port)!=1) if (sscanf(buffer,"%x",&sound_info.port)!=1)
{ {
msg_box("Pozor!",'\x1',"Mus¡¨ vyplnit spr vnˆ Port","Ok",NULL); msg_box("Pozor!",'\x1',"Mus<EFBFBD><EFBFBD> vyplnit spr<70>vn<76> Port","Ok",NULL);
return 1; return 1;
} }
} }
@ -746,22 +746,22 @@ void select_sound()
default_font=&font6x9; default_font=&font6x9;
for(i=0;i<8;i++) str_add(&ls,device_name(i)); for(i=0;i<8;i++) str_add(&ls,device_name(i));
str_replace(&ls,0,"<bez zvuku>"); str_replace(&ls,0,"<bez zvuku>");
sound_win=def_dialoge(200,300,300,156,"Zvukov  karta",2); sound_win=def_dialoge(200,300,300,156,"Zvukov<EFBFBD> karta",2);
define(9,2,20,170,85,0,listbox,ls,0x03ff,0);c_default(sound_info.device);on_change(device_select2); define(9,2,20,170,85,0,listbox,ls,0x03ff,0);c_default(sound_info.device);on_control_change(device_select2);
property(def_border(0,0x4210),vga_font,NULL,WINCOLOR); property(def_border(0,0x4210),vga_font,NULL,WINCOLOR);
define(-1,180,20,1,1,0,label,"Port:"); define(-1,180,20,1,1,0,label,"Port:");
define(20,10,20,30,12,1,input_line,3);property(def_border(0,0x4210),vga_font,NULL,WINCOLOR); define(20,10,20,30,12,1,input_line,3);property(def_border(0,0x4210),vga_font,NULL,WINCOLOR);
set_default(itoa(sound_info.port,buff,16)); set_default(itoa(sound_info.port,buff,16));
define(-1,180,40,1,1,0,label,"DMA:"); define(-1,180,40,1,1,0,label,"DMA:");
i=sound_info.dma;i-=(i>2)+(i>4); i=sound_info.dma;i-=(i>2)+(i>4);
define(30,40,40,30,30,1,radio_butts,3,"0","1","3");c_default(i);on_change(change_dma); define(30,40,40,30,30,1,radio_butts,3,"0","1","3");c_default(i);on_control_change(change_dma);
define(35,10,40,30,30,1,radio_butts,3,"5","6","7");c_default(i-3);on_change(change_dma); define(35,10,40,30,30,1,radio_butts,3,"5","6","7");c_default(i-3);on_control_change(change_dma);
define(-1,180,80,1,1,0,label,"IRQ:"); define(-1,180,80,1,1,0,label,"IRQ:");
i=sound_info.irq;i-=2*(i>1)+(i>4)+(i>6); i=sound_info.irq;i-=2*(i>1)+(i>4)+(i>6);
define(40,40,80,30,40,1,radio_butts,4,"2","3","5","7");c_default(i); define(40,40,80,30,40,1,radio_butts,4,"2","3","5","7");c_default(i);
define(50,10,5,80,20,2,button,"Test");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(test_sound); define(50,10,5,80,20,2,button,"Test");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(test_sound);
define(60,100,5,80,20,2,button,"Rozpoznat");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(detect_sound); define(60,100,5,80,20,2,button,"Rozpoznat");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(detect_sound);
define(70,190,5,80,20,2,button,"Stop");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(stop_sound); define(70,190,5,80,20,2,button,"Stop");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(stop_sound);
redraw_window(); redraw_window();
set_enable(0,70,mixer_running); set_enable(0,70,mixer_running);
device_select(); device_select();
@ -773,7 +773,7 @@ static void back_start()
stop_sound(); stop_sound();
sound_scan(); sound_scan();
while (waktual!=NULL) close_current(); while (waktual!=NULL) close_current();
terminate(); terminate_gui();
} }
static void control_window(void *forward,void *back,void *help); static void control_window(void *forward,void *back,void *help);
@ -823,7 +823,7 @@ void static show_space(char device)
if (device>='A' && device<='Z') if (device>='A' && device<='Z')
{ {
if (device!=lastdevice) lastvalue=get_disk_free(device-'@')/1024; if (device!=lastdevice) lastvalue=get_disk_free(device-'@')/1024;
sprintf(buff,"Na disku %c: je voln˜ch %d Kb",device,lastvalue); sprintf(buff,"Na disku %c: je voln<EFBFBD>ch %d Kb",device,lastvalue);
lastdevice=device; lastdevice=device;
set_value(0,80,buff); set_value(0,80,buff);
} }
@ -932,7 +932,7 @@ static void start_install()
strupr(target_path); strupr(target_path);
if (validate_path(target_path)==0) if (validate_path(target_path)==0)
{ {
msg_box("Cesta je ¨patnˆ",'\x1',"Cesta s c¡lov˜m adres ©em je chybnˆ zad na. Nepou¡vejte dlouh n zvy z WINDOWS 95!","OK",NULL); msg_box("Cesta je <EFBFBD>patn<EFBFBD>",'\x1',"Cesta s c<EFBFBD>lov<EFBFBD>m adres<65><73>em je chybn<62> zad<61>na. Nepou<6F><75>vejte dlouh<75> n<>zvy z WINDOWS 95!","OK",NULL);
return; return;
} }
get_script(_SOURCE_,target_path); get_script(_SOURCE_,target_path);
@ -946,21 +946,21 @@ static void start_install()
diskfree=get_disk_free(target_path[0]-'@'); diskfree=get_disk_free(target_path[0]-'@');
if (maxcopy>diskfree) if (maxcopy>diskfree)
{ {
if (msg_box("Nedostatek m¡sta!",'\x1',"Instal tor vypo‡¡tal, e BS zaberou v¡ce m¡sta ne m te na svm disku. " if (msg_box("Nedostatek m<EFBFBD>sta!",'\x1',"Instal<EFBFBD>tor vypo<70><6F>tal, <20>e BS zaberou v<>ce m<>sta ne<6E> m<>te na sv<73>m disku. "
"Pokud v¨ak pou¡vate komprima‡n¡ program jako je t©eba DRVSPACE, pak mohou b˜t £daje o " "Pokud v<EFBFBD>ak pou<6F><75>vate komprima<6D>n<EFBFBD> program jako je t<>eba DRVSPACE, pak mohou b<>t <20>daje o "
"volnm m¡stu nep©esne. I p©es to, e nen¡ voln m¡sto chcete pokra‡ovat?","Ano","Ne",NULL)==2) return; "voln<EFBFBD>m m<>stu nep<65>esne. I p<>es to, <20>e nen<65> voln<6C> m<>sto chcete pokra<72>ovat?","Ano","Ne",NULL)==2) return;
} }
else if (maxcopy+1024*1024>diskfree) else if (maxcopy+1024*1024>diskfree)
{ {
if (msg_box("M lo m¡sta",'\x2',"Po nainstalov n¡ by mˆlo zb˜t alespo¤ 1MB pro bˆh. Sou‡asn˜ prostor" if (msg_box("M<EFBFBD>lo m<>sta",'\x2',"Po nainstalov<EFBFBD>n<EFBFBD> by m<>lo zb<7A>t alespo<70> 1MB pro b<>h. Sou<6F>asn<73> prostor"
"umo¤uje hru nainstalovat, av¨ak hru nebude mon spustit. Pokra‡ovat?","Ano","Ne",NULL)==2) return; "umo<EFBFBD><EFBFBD>uje hru nainstalovat, av<61>ak hru nebude mo<6D>n<EFBFBD> spustit. Pokra<72>ovat?","Ano","Ne",NULL)==2) return;
} }
maxcopy=maxcopy<<1; maxcopy=maxcopy<<1;
while (waktual!=NULL) close_current(); while (waktual!=NULL) close_current();
cascade_mkdir(target_path); cascade_mkdir(target_path);
if (create_ini(target_path,SKELDAL_INI)) if (create_ini(target_path,SKELDAL_INI))
{ {
msg_box(PRG_HEADER,'\x1',"Nemohu vytvo©it konfigura‡n¡ soubor. Zkontroluj spravnost z pisu cesty","Ok",NULL); msg_box(PRG_HEADER,'\x1',"Nemohu vytvo<EFBFBD>it konfigura<72>n<EFBFBD> soubor. Zkontroluj spravnost z<>pisu cesty","Ok",NULL);
clean_up(); clean_up();
return; return;
} }
@ -981,7 +981,7 @@ static void start_install()
if (error) shutdown(),exit(1); if (error) shutdown(),exit(1);
close_current(); close_current();
do_events(); do_events();
if (!autostart) msg_box("Hotovo",' ',"Hra 'Br ny Skeldalu' je £spˆ¨nˆ nainstalov na. Spu¨tˆn¡ proveƒte z p©¡kazov © dky naps m 'SKELDAL'","Konec",NULL); if (!autostart) msg_box("Hotovo",' ',"Hra 'Br<EFBFBD>ny Skeldalu' je <20>sp<73><70>n<EFBFBD> nainstalov<6F>na. Spu<70>t<EFBFBD>n<EFBFBD> prove<76>te z p<><70>kazov<6F> <20><>dky naps<70>n<EFBFBD>m 'SKELDAL'","Konec",NULL);
purge_file_list(); purge_file_list();
shutdown(); shutdown();
home_path(target_path); home_path(target_path);
@ -1028,26 +1028,26 @@ static void rozsah_window()
exit_wait=0; exit_wait=0;
default_font=&font6x9; default_font=&font6x9;
def_dialoge(146,160,348,264,"Rozsah instalace",2); def_dialoge(146,160,348,264,"Rozsah instalace",2);
define(10,10,30,70,30,0,button,"Minim ln¡");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(start_install); define(10,10,30,70,30,0,button,"Minim<EFBFBD>ln<EFBFBD>");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(start_install);
define(-1,90,30,1,1,0,label,"Instaluje jen nejdleitˆj¨¡ soubory na HD"); define(-1,90,30,1,1,0,label,"Instaluje jen nejd<EFBFBD>le<EFBFBD>it<EFBFBD>j<EFBFBD><EFBFBD> soubory na HD");
define(-1,90,40,1,1,0,label,"V¨e ostatn¡ se pak na‡¡t  p©¡mo z CD"); define(-1,90,40,1,1,0,label,"V<EFBFBD>e ostatn<74> se pak na<6E><61>t<EFBFBD> p<><70>mo z CD");
sprintf(buff,text,install_sizes[0]/1024); sprintf(buff,text,install_sizes[0]/1024);
define(-1,90,50,1,1,0,label,buff); define(-1,90,50,1,1,0,label,buff);
define(20,10,80,70,30,0,button,"St©edn¡");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(start_install); define(20,10,80,70,30,0,button,"St<EFBFBD>edn<EFBFBD>");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(start_install);
define(-1,90,80,1,1,0,label,"Instaluje v¨echny datov soubory na HD"); define(-1,90,80,1,1,0,label,"Instaluje v<EFBFBD>echny datov<6F> soubory na HD");
define(-1,90,90,1,1,0,label,"Hudba a video se ‡tou p©¡mo z CD"); define(-1,90,90,1,1,0,label,"Hudba a video se <EFBFBD>tou p<><70>mo z CD");
sprintf(buff,text,install_sizes[1]/1024); sprintf(buff,text,install_sizes[1]/1024);
define(-1,90,100,1,1,0,label,buff); define(-1,90,100,1,1,0,label,buff);
define(30,10,130,70,30,0,button,"Maxim ln¡");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(start_install); define(30,10,130,70,30,0,button,"Maxim<EFBFBD>ln<EFBFBD>");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(start_install);
define(-1,90,130,1,1,0,label,"Instaluje v¨e na v ¨ HD v‡etnˆ hudby"); define(-1,90,130,1,1,0,label,"Instaluje v<EFBFBD>e na v<><76> HD v<>etn<74> hudby");
define(-1,90,140,1,1,0,label,"a videa. Z CD se nena‡¡t  vbec nic."); define(-1,90,140,1,1,0,label,"a videa. Z CD se nena<EFBFBD><EFBFBD>t<EFBFBD> v<>bec nic.");
sprintf(buff,text,install_sizes[2]/1024); sprintf(buff,text,install_sizes[2]/1024);
define(-1,90,150,1,1,0,label,buff); define(-1,90,150,1,1,0,label,buff);
define(40,10,180,70,20,0,button,"Sloka");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(open_load_window); define(40,10,180,70,20,0,button,"Slo<EFBFBD>ka");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(open_load_window);
define(60,90,185,250,11,0,input_line,2048);property(def_border(1,0x4210),&font6x9,NULL,0x7fff); define(60,90,185,250,11,0,input_line,2048);property(def_border(1,0x4210),&font6x9,NULL,0x7fff);
set_default(target_path); set_default(target_path);
on_event(show_space_event);on_exit(show_space_exit); on_event(show_space_event);on_exit(show_space_exit);
define(70,40,220,200,10,0,check_box,"Po nainstalov  hru automaticky spustit.");c_default(1); define(70,40,220,200,10,0,check_box,"Po nainstalov<EFBFBD>n<EFBFBD> hru automaticky spustit.");c_default(1);
define(80,10,10,250,11,2,view_line,100);set_default(""); define(80,10,10,250,11,2,view_line,100);set_default("");
show_space(target_path[0]); show_space(target_path[0]);
} }
@ -1055,17 +1055,17 @@ static void rozsah_window()
static void automatic_window() static void automatic_window()
{ {
char buff[100]; char buff[100];
char *text="Hra zabere zhruba %d KB m¡sta"; char *text="Hra zabere zhruba %d KB m<EFBFBD>sta";
exit_wait=0; exit_wait=0;
default_font=&font6x9; default_font=&font6x9;
def_dialoge(110,200,420,80,"Instalovat kam?",2); def_dialoge(110,200,420,80,"Instalovat kam?",2);
define(40,10,33,70,15,0,button,"Naj¡t");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(open_load_window); define(40,10,33,70,15,0,button,"Naj<EFBFBD>t");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(open_load_window);
define(60,90,35,310,11,0,input_line,2048);property(def_border(1,0x4210),&font6x9,NULL,0x7fff); define(60,90,35,310,11,0,input_line,2048);property(def_border(1,0x4210),&font6x9,NULL,0x7fff);
set_default(target_path); set_default(target_path);
on_event(show_space_event);on_exit(show_space_exit); on_event(show_space_event);on_exit(show_space_exit);
define(10,10,10,70,20,2,button,"Start");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(start_install); define(10,10,10,70,20,2,button,"Start");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(start_install);
define(20,90,10,70,20,2,button,"<< Zpˆt");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(back_start); define(20,90,10,70,20,2,button,"<< Zp<EFBFBD>t");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(back_start);
sprintf(buff,text,install_sizes[0]/1024); sprintf(buff,text,install_sizes[0]/1024);
define(90,180,20,200,10,2,view_line,100);set_default(buff); define(90,180,20,200,10,2,view_line,100);set_default(buff);
define(80,180,10,200,10,2,view_line,100);set_default(""); define(80,180,10,200,10,2,view_line,100);set_default("");
@ -1085,12 +1085,12 @@ static void control_next1()
static void control_window(void *forward,void *back,void *help) static void control_window(void *forward,void *back,void *help)
{ {
def_dialoge(524,300,96,156,"Monosti",2); def_dialoge(524,300,96,156,"Mo<EFBFBD>nosti",2);
define(10,8,30,80,20,0,button,"Dal¨¡ >>");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(forward); define(10,8,30,80,20,0,button,"Dal<EFBFBD><EFBFBD> >>");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(forward);
define(20,8,60,80,20,0,button,"<< Zpˆt");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(back); define(20,8,60,80,20,0,button,"<< Zp<EFBFBD>t");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(back);
define(30,8,90,80,20,0,button,"? Pomoc");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(help); define(30,8,90,80,20,0,button,"? Pomoc");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(help);
define(40,8,10,80,20,3,button,"Konec");property(bbutt,&font6x9,NULL,BUTTONCOLOR); define(40,8,10,80,20,3,button,"Konec");property(bbutt,&font6x9,NULL,BUTTONCOLOR);
if (setup_mode) on_change(stop_setup);else on_change(stop_copy); if (setup_mode) on_control_change(stop_setup);else on_control_change(stop_copy);
set_enable(0,10,forward!=NULL); set_enable(0,10,forward!=NULL);
set_enable(0,20,back!=NULL); set_enable(0,20,back!=NULL);
set_enable(0,30,help!=NULL); set_enable(0,30,help!=NULL);
@ -1164,7 +1164,7 @@ static void save_ini()
char err=1; char err=1;
if (sound_scan()) return; if (sound_scan()) return;
d=msg_box("Potvrzen¡?",'\x2',"Chce¨ zapsat zmˆny do konfigura‡n¡ho souboru hry?","Ano","Ne","Zru¨it",NULL); d=msg_box("Potvrzen<EFBFBD>?",'\x2',"Chce<EFBFBD> zapsat zm<7A>ny do konfigura<72>n<EFBFBD>ho souboru hry?","Ano","Ne","Zru<EFBFBD>it",NULL);
if (d==3) return; if (d==3) return;
if (d==1) if (d==1)
{ {
@ -1193,12 +1193,12 @@ static void deinstall()
char ig; char ig;
int x,y; int x,y;
def_dialoge(200,200,250,156,"Odinstalovat?",2); def_dialoge(200,200,250,156,"Odinstalovat?",2);
define(-1,10,30,200,100,0,label,"Tato volba odstran¡ hru z va¨eho disku."); define(-1,10,30,200,100,0,label,"Tato volba odstran<EFBFBD> hru z va<76>eho disku.");
define(-1,10,40,200,100,0,label,"Pot ji nebude mone hru spustit"); define(-1,10,40,200,100,0,label,"Pot<EFBFBD> ji<6A> nebude mo<6D>ne hru spustit");
define(-1,10,50,200,100,0,label,"do novho nainstalov  z CD."); define(-1,10,50,200,100,0,label,"do nov<EFBFBD>ho nainstalov<6F>n<EFBFBD> z CD.");
define(10,30,80,150,10,0,check_box,"Zachovat uloen pozice");c_default(1); define(10,30,80,150,10,0,check_box,"Zachovat ulo<EFBFBD>en<EFBFBD> pozice");c_default(1);
define(20,10,10,80,30,3,button,"Ano");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(terminate); define(20,10,10,80,30,3,button,"Ano");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
define(30,10,10,80,30,2,button,"Proboha NE");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(terminate); define(30,10,10,80,30,2,button,"Proboha NE");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
redraw_window(); redraw_window();
escape(); escape();
if (o_aktual->id==30) if (o_aktual->id==30)
@ -1266,12 +1266,12 @@ void warning()
_outtext("(C)1998 Napoleon gameS - Setup version 1.0 written by Ondrej Novak\n" _outtext("(C)1998 Napoleon gameS - Setup version 1.0 written by Ondrej Novak\n"
"Instalacni program ke hre Brany Skeldalu\n\nUpozorneni:\n"); "Instalacni program ke hre Brany Skeldalu\n\nUpozorneni:\n");
_settextcolor(15); _settextcolor(15);
_outtext("Ú"); REPEAT(i,78) _outtext("Ä");_outtext("¿"); _outtext("<EFBFBD>"); REPEAT(i,78) _outtext("<EFBFBD>");_outtext("<EFBFBD>");
REPEAT(j,5) REPEAT(j,5)
{ {
_outtext("³"); REPEAT(i,78)_outtext(" ");_outtext("³"); _outtext("<EFBFBD>"); REPEAT(i,78)_outtext(" ");_outtext("<EFBFBD>");
} }
_outtext("À"); REPEAT(i,78) _outtext("Ä");_outtext("Ù"); _outtext("<EFBFBD>"); REPEAT(i,78) _outtext("<EFBFBD>");_outtext("<EFBFBD>");
_settextcolor(13); _settextcolor(13);
_settextwindow(6,2,20,79); _settextwindow(6,2,20,79);
_outtext("Stiskem jakekoliv klavesy spustite instalacni program. Pokud potom obrazovka" _outtext("Stiskem jakekoliv klavesy spustite instalacni program. Pokud potom obrazovka"
@ -1296,9 +1296,9 @@ static void ask_video()
ask_video_win=def_dialoge(242,100,156,156,"Vyber grafiku",3); ask_video_win=def_dialoge(242,100,156,156,"Vyber grafiku",3);
define(9,0,20,156,80,0,listbox,video_ls,0x03ff,0);c_default(vmode); define(9,0,20,156,80,0,listbox,video_ls,0x03ff,0);c_default(vmode);
property(NULL,vga_font,NULL,WINCOLOR); property(NULL,vga_font,NULL,WINCOLOR);
define(20,5,5,60,20,2,button,"Konec");on_change(terminate); define(20,5,5,60,20,2,button,"Konec");on_control_change(terminate_gui);
property(bbutt,NULL,NULL,BUTTONCOLOR); property(bbutt,NULL,NULL,BUTTONCOLOR);
define(20,70,5,60,20,2,button,"OK");on_change(test_mode_xxx); define(20,70,5,60,20,2,button,"OK");on_control_change(test_mode_xxx);
property(bbutt,NULL,NULL,BUTTONCOLOR); property(bbutt,NULL,NULL,BUTTONCOLOR);
redraw_window(); redraw_window();
} }
@ -1316,7 +1316,7 @@ static EVENT_PROC(esc_mode)
rescue_mode=1; rescue_mode=1;
redraw_desktop(); redraw_desktop();
vmode=0; vmode=0;
terminate(); terminate_gui();
} }
} }
} }
@ -1327,10 +1327,10 @@ static void about_window()
char r=!rescue_mode; char r=!rescue_mode;
if (r) send_message(E_ADD,E_KEYBOARD,esc_mode); if (r) send_message(E_ADD,E_KEYBOARD,esc_mode);
def_dialoge(200,100,240,144,PRG_HEADER,2); def_dialoge(200,100,240,144,PRG_HEADER,2);
define(-1,10,30,220,10,0,mid_label,"V¡tej u instal toru hry:"); define(-1,10,30,220,10,0,mid_label,"V<EFBFBD>tej u instal<61>toru hry:");
define(-1,10,42,220,10,0,mid_label,"Br ny Skeldalu"); define(-1,10,42,220,10,0,mid_label,"Br<EFBFBD>ny Skeldalu");
define(-1,10,80,220,10,0,mid_label,"Instala‡n¡ program napsal:"); define(-1,10,80,220,10,0,mid_label,"Instala<EFBFBD>n<EFBFBD> program napsal:");
define(-1,10,92,220,10,0,mid_label,"Ond©ej Nov k"); define(-1,10,92,220,10,0,mid_label,"Ond<EFBFBD>ej Nov<6F>k");
define(-1,10,110,220,10,0,mid_label,"(C)1998 Napoleon gameS"); define(-1,10,110,220,10,0,mid_label,"(C)1998 Napoleon gameS");
redraw_window(); redraw_window();
escape(); escape();

View file

@ -143,7 +143,7 @@ long def_window(word xs,word ys,char *name)
if (xs>=70) if (xs>=70)
{ {
define(1,1,1,19,16,1,button,"\x0f"); define(1,1,1,19,16,1,button,"\x0f");
property(NULL,icones,&icone_color,WINCOLOR);on_change(close_current); property(NULL,icones,&icone_color,WINCOLOR);on_control_change(close_current);
} }
return q; return q;
} }
@ -188,9 +188,9 @@ void def_listbox(int id,word x,word y,word xs,word ys,TSTR_LIST ls,int ofs,int c
define(id+1,x+xs+4,y+18,15,ys-35,0,scroll_bar_v,0,10,1,0x0200); define(id+1,x+xs+4,y+18,15,ys-35,0,scroll_bar_v,0,10,1,0x0200);
property(&b2,NULL,NULL,WINCOLOR); property(&b2,NULL,NULL,WINCOLOR);
define(id+2,x+xs+4,y,14,14,0,scroll_button,-1,0,"\x4"); define(id+2,x+xs+4,y,14,14,0,scroll_button,-1,0,"\x4");
property(&b1,icones,black,WINCOLOR);on_change(scroll_support); property(&b1,icones,black,WINCOLOR);on_control_change(scroll_support);
define(id+3,x+xs+4,y+ys-14,14,14,0,scroll_button,1,10,"\6"); define(id+3,x+xs+4,y+ys-14,14,14,0,scroll_button,1,10,"\6");
property(&b1,icones,black,WINCOLOR);on_change(scroll_support); property(&b1,icones,black,WINCOLOR);on_control_change(scroll_support);
define(id,x,y,xs,ys,0,listbox,ls,color,ofs); define(id,x,y,xs,ys,0,listbox,ls,color,ofs);
property(&b2,NULL,NULL,WINCOLOR); property(&b2,NULL,NULL,WINCOLOR);
} }

View file

@ -189,10 +189,10 @@ char edit_side_save(int target,int smer)
int selmode; int selmode;
apl=get_bit_fields(0,400,4); apl=get_bit_fields(0,400,4);
if (apl==0) return msg_box("Editor stˆn",2,"Nen¡ za¨krtnut   dn  strana. Pokra‡ovat?","Ano","Ne",NULL)==1; if (apl==0) return msg_box("Editor st<EFBFBD>n",2,"Nen<EFBFBD> za<7A>krtnut<75> <20><>dn<64> strana. Pokra<72>ovat?","Ano","Ne",NULL)==1;
if (smer!=-1) if (smer!=-1)
if (count_of_sel()>1) if (count_of_sel()>1)
selmode=msg_box("Editor stˆn",'\x2',"Je ozna‡eno v¡ce sektor. Chce¨ upravit pouze ...","Aktu ln¡","V¨echny","Zmˆny","Zpˆt",NULL); selmode=msg_box("Editor st<EFBFBD>n",'\x2',"Je ozna<EFBFBD>eno v<>ce sektor<6F>. Chce<63> upravit pouze ...","Aktu<EFBFBD>ln<EFBFBD>","V<EFBFBD>echny","Zm<EFBFBD>ny","Zp<EFBFBD>t",NULL);
else selmode=(apl!=1 && apl!=2 && apl!=4 && apl!=8 && target!=0)?3:1; else selmode=(apl!=1 && apl!=2 && apl!=4 && apl!=8 && target!=0)?3:1;
else else
smer=0,apl=0xf,selmode=1; smer=0,apl=0xf,selmode=1;
@ -267,7 +267,7 @@ void *edit_side_predvolba_0(EVENT_MSG *msg)
if (msg->msg==E_INIT) return &edit_side_predvolba_0; if (msg->msg==E_INIT) return &edit_side_predvolba_0;
if (msg->msg==E_DONE) return NULL; if (msg->msg==E_DONE) return NULL;
c=(char *)msg->data; c=(char *)msg->data;
strcpy(c,"Vlastnosti nastaveny jako p©edvolba..."); strcpy(c,"Vlastnosti nastaveny jako p<EFBFBD>edvolba...");
c=strchr(c,'\0'); c=strchr(c,'\0');
msg->data=(void *)c; msg->data=(void *)c;
msg->msg=-1; msg->msg=-1;
@ -303,11 +303,11 @@ void action_flags()
flags=f_get_value(0,350); flags=f_get_value(0,350);
memcpy(&b1,def_border(1,0),sizeof(CTL3D)); memcpy(&b1,def_border(1,0),sizeof(CTL3D));
def_dialoge(300,220,300,210,"V¡ce vlajek"); def_dialoge(300,220,300,210,"V<EFBFBD>ce vlajek");
define(CANCEL_BUTT,11,5,80,20,2,button,"Zru¨it");property(&b1,NULL,NULL,WINCOLOR); define(CANCEL_BUTT,11,5,80,20,2,button,"Zru<EFBFBD>it");property(&b1,NULL,NULL,WINCOLOR);
on_change(terminate); on_control_change(terminate_gui);
define(OK_BUTT,100,5,80,20,2,button,"Ok");property(&b1,NULL,NULL,WINCOLOR); define(OK_BUTT,100,5,80,20,2,button,"Ok");property(&b1,NULL,NULL,WINCOLOR);
on_change(terminate); on_control_change(terminate_gui);
define(10,10,20,250,10,0,check_box,side_flgs[24]); define(10,10,20,250,10,0,check_box,side_flgs[24]);
define(20,10,32,250,10,0,check_box,side_flgs[25]); define(20,10,32,250,10,0,check_box,side_flgs[25]);
define(30,10,44,250,10,0,check_box,side_flgs[26]); define(30,10,44,250,10,0,check_box,side_flgs[26]);
@ -363,7 +363,7 @@ static void edit_vyklenek_start()
id=find_free_vyklenek(); id=find_free_vyklenek();
if (id==-1) if (id==-1)
{ {
msg_box("Omezeni!",'\x1',"V mapˆ je pouito ji mnoho v˜klenk ve zdi. Maxim ln¡ po‡et je 256","Ok",NULL); msg_box("Omezeni!",'\x1',"V map<EFBFBD> je pou<6F>ito ji<6A> mnoho v<>klenk<6E> ve zdi. Maxim<69>ln<6C> po<70>et je 256","Ok",NULL);
return; return;
} }
v=vyklenky+id; v=vyklenky+id;
@ -391,46 +391,46 @@ void edit_side(int source,int smer)
memcpy(&b3,def_border(6,WINCOLOR),sizeof(CTL3D)); memcpy(&b3,def_border(6,WINCOLOR),sizeof(CTL3D));
default_font=vga_font; default_font=vga_font;
memcpy(f_default,flat_color(0x0000),sizeof(charcolors)); memcpy(f_default,flat_color(0x0000),sizeof(charcolors));
sprintf(s,"Vlastnosti stˆn, sektor %d stˆna %d",source,smer); sprintf(s,"Vlastnosti st<EFBFBD>n, sektor %d st<73>na %d",source,smer);
def_window(400,324,s); def_window(400,324,s);
waktual->x=125; waktual->x=125;
waktual->y=60; waktual->y=60;
waktual->modal=1; waktual->modal=1;
define(CANCEL_BUTT,10,5,80,20,2,button,"Zru¨it");property(&b1,NULL,NULL,WINCOLOR); define(CANCEL_BUTT,10,5,80,20,2,button,"Zru<EFBFBD>it");property(&b1,NULL,NULL,WINCOLOR);
on_change(close_current); on_control_change(close_current);
define(OK_BUTT,190,5,80,20,2,button,"Ok");property(&b1,NULL,NULL,WINCOLOR); define(OK_BUTT,190,5,80,20,2,button,"Ok");property(&b1,NULL,NULL,WINCOLOR);
on_change(edit_side_ok); on_control_change(edit_side_ok);
define(3400,100,5,80,20,2,button,"P©edvolba");property(&b1,NULL,NULL,WINCOLOR); define(3400,100,5,80,20,2,button,"P<EFBFBD>edvolba");property(&b1,NULL,NULL,WINCOLOR);
on_change(edit_side_predvolba_1);on_exit(edit_side_predvolba_2); on_control_change(edit_side_predvolba_1);on_control_exit(edit_side_predvolba_2);
define(10,5,20,300,35,0,label,"Prim rn¡: Sekundarn¡: Oblouk:");property(&b3,NULL,NULL,WINCOLOR); define(10,5,20,300,35,0,label,"Prim<EFBFBD>rn<EFBFBD>: Sekundarn<72>: Oblouk:");property(&b3,NULL,NULL,WINCOLOR);
define(20,10,35,90,12,0,str_line,side_names);property(&b2,NULL,NULL,WINCOLOR);c_default(p->prim); define(20,10,35,90,12,0,str_line,side_names);property(&b2,NULL,NULL,WINCOLOR);c_default(p->prim);
on_enter(string_list_sup); on_control_enter(string_list_sup);
define(30,110,35,90,12,0,str_line,side_names);property(&b2,NULL,NULL,WINCOLOR);c_default(p->sec); define(30,110,35,90,12,0,str_line,side_names);property(&b2,NULL,NULL,WINCOLOR);c_default(p->sec);
on_enter(string_list_sup); on_control_enter(string_list_sup);
define(40,210,35,90,12,0,str_line,oblouky);property(&b2,NULL,NULL,WINCOLOR);c_default(p->oblouk & 0x0f); define(40,210,35,90,12,0,str_line,oblouky);property(&b2,NULL,NULL,WINCOLOR);c_default(p->oblouk & 0x0f);
on_enter(string_list_sup); on_control_enter(string_list_sup);
define(-1,5,60,250,12,0,label,"Animace primarn¡:"); define(-1,5,60,250,12,0,label,"Animace primarn<EFBFBD>:");
define(-1,5,75,250,12,0,label,"Animace sekundarn¡:"); define(-1,5,75,250,12,0,label,"Animace sekundarn<EFBFBD>:");
define(-1,5,90,250,12,0,label,"X pozice sek. stˆny:"); define(-1,5,90,250,12,0,label,"X pozice sek. st<EFBFBD>ny:");
define(-1,5,105,250,12,0,label,"Y pozice sek. stˆny:"); define(-1,5,105,250,12,0,label,"Y pozice sek. st<EFBFBD>ny:");
define(-1,5,120,250,12,0,label,"C¡lov˜ sektor ud losti:"); define(-1,5,120,250,12,0,label,"C<EFBFBD>lov<EFBFBD> sektor ud<75>losti:");
define(-1,5,135,250,12,0,label,"C¡lov  stˆna ud losti:"); define(-1,5,135,250,12,0,label,"C<EFBFBD>lov<EFBFBD> st<73>na ud<75>losti:");
define(-1,5,150,250,12,0,label,"Popis akce:"); define(-1,5,150,250,12,0,label,"Popis akce:");
define(-1,260,60,100,12,0,label,"Aplikuj na stˆnu:"); define(-1,260,60,100,12,0,label,"Aplikuj na st<EFBFBD>nu:");
define(50,200,60,50,10,0,input_line,10,1,16,"%6d");property(&b2,NULL,NULL,WINCOLOR); define(50,200,60,50,10,0,input_line,10,1,16,"%6d");property(&b2,NULL,NULL,WINCOLOR);
set_default(strs((p->prim_anim & 0xf)+1));on_exit(test_int); set_default(strs((p->prim_anim & 0xf)+1));on_control_exit(test_int);
define(60,200,75,50,10,0,input_line,10,1,16,"%6d");property(&b2,NULL,NULL,WINCOLOR); define(60,200,75,50,10,0,input_line,10,1,16,"%6d");property(&b2,NULL,NULL,WINCOLOR);
set_default(strs((p->sec_anim & 0xf)+1));on_exit(test_int); set_default(strs((p->sec_anim & 0xf)+1));on_control_exit(test_int);
define(70,200,90,50,10,0,input_line,10,0,499,"%6d");property(&b2,NULL,NULL,WINCOLOR); define(70,200,90,50,10,0,input_line,10,0,499,"%6d");property(&b2,NULL,NULL,WINCOLOR);
set_default(strs(p->xsec<<1));on_exit(test_int); set_default(strs(p->xsec<<1));on_control_exit(test_int);
define(80,200,105,50,10,0,input_line,10,0,511,"%6d");property(&b2,NULL,NULL,WINCOLOR); define(80,200,105,50,10,0,input_line,10,0,511,"%6d");property(&b2,NULL,NULL,WINCOLOR);
set_default(strs(p->ysec<<1));on_exit(test_int); set_default(strs(p->ysec<<1));on_control_exit(test_int);
define(90,200,120,50,10,0,input_line,10,0,65535,"%6d");property(&b2,NULL,NULL,WINCOLOR); define(90,200,120,50,10,0,input_line,10,0,65535,"%6d");property(&b2,NULL,NULL,WINCOLOR);
set_default(strs(p->sector_tag));on_exit(test_int); set_default(strs(p->sector_tag));on_control_exit(test_int);
define(100,200,135,50,10,0,str_line,steny2);property(&b2,NULL,NULL,WINCOLOR); define(100,200,135,50,10,0,str_line,steny2);property(&b2,NULL,NULL,WINCOLOR);
c_default(p->side_tag & 0x3);on_enter(string_list_sup); c_default(p->side_tag & 0x3);on_control_enter(string_list_sup);
define(110,100,150,150,10,0,str_line,actions);property(&b2,NULL,NULL,WINCOLOR); define(110,100,150,150,10,0,str_line,actions);property(&b2,NULL,NULL,WINCOLOR);
on_enter(string_list_sup); c_default(p->action); on_control_enter(string_list_sup); c_default(p->action);
define(120,10,175,150,10,0,check_box,side_flgs[0]); define(120,10,175,150,10,0,check_box,side_flgs[0]);
define(130,10,187,150,10,0,check_box,side_flgs[1]); define(130,10,187,150,10,0,check_box,side_flgs[1]);
define(140,10,199,150,10,0,check_box,side_flgs[2]); define(140,10,199,150,10,0,check_box,side_flgs[2]);
@ -451,23 +451,23 @@ void edit_side(int source,int smer)
define(290,10,283,75,10,0,check_box,side_flgs[17]); define(290,10,283,75,10,0,check_box,side_flgs[17]);
define(300,190,271,150,10,0,check_box,side_flgs[18]); define(300,190,271,150,10,0,check_box,side_flgs[18]);
define(310,10,295,75,11,0,check_box,side_flgs[19]); define(310,10,295,75,11,0,check_box,side_flgs[19]);
define(400,290,80,100,10,0,check_box,"Severn¡"); define(400,290,80,100,10,0,check_box,"Severn<EFBFBD>");
define(410,290,95,100,10,0,check_box,"V˜chodn¡"); define(410,290,95,100,10,0,check_box,"V<EFBFBD>chodn<EFBFBD>");
define(420,290,110,100,10,0,check_box,"Ji"); define(420,290,110,100,10,0,check_box,"Ji<EFBFBD>n<EFBFBD>");
define(430,290,125,100,10,0,check_box,"Z padn¡"); define(430,290,125,100,10,0,check_box,"Z<EFBFBD>padn<EFBFBD>");
define(340,290,150,100,15,0,button2,"V¡ce >>");on_change(action_flags); define(340,290,150,100,15,0,button2,"V<EFBFBD>ce >>");on_control_change(action_flags);
define(350,290,150,100,15,0,value_store,4);c_default(p->flags & 0xfff00000); define(350,290,150,100,15,0,value_store,4);c_default(p->flags & 0xfff00000);
define(360,290,150,100,15,0,value_store,4);c_default(source); define(360,290,150,100,15,0,value_store,4);c_default(source);
define(370,290,150,100,15,0,value_store,4);c_default(smer); define(370,290,150,100,15,0,value_store,4);c_default(smer);
define(-1,5,20,60,10,1,label,"Lclip:"); define(-1,5,20,60,10,1,label,"Lclip:");
define(440,30,35,30,12,1,input_line,3,0,255,"%3d"); define(440,30,35,30,12,1,input_line,3,0,255,"%3d");
property(&b2,NULL,NULL,WINCOLOR); property(&b2,NULL,NULL,WINCOLOR);
set_default(strs(p->lclip));on_exit(test_int); set_default(strs(p->lclip));on_control_exit(test_int);
define(450,10,220,30,30,1,radio_butts,3,"-","\x4","\x6");c_default((p->oblouk>>5) & 0x3); define(450,10,220,30,30,1,radio_butts,3,"-","\x4","\x6");c_default((p->oblouk>>5) & 0x3);
property(NULL,icones,NULL,WINCOLOR); property(NULL,icones,NULL,WINCOLOR);
define(460,10,175,80,12,1,button,"V˜klenek");on_change(edit_vyklenek_start); define(460,10,175,80,12,1,button,"V<EFBFBD>klenek");on_control_change(edit_vyklenek_start);
define(470,190,283,150,10,0,check_box,"Lze poloit za");c_default(p->oblouk>>7); define(470,190,283,150,10,0,check_box,"Lze polo<EFBFBD>it za");c_default(p->oblouk>>7);
define(480,10,307,75,10,0,check_box,"P©edsunout s.");c_default(p->side_tag>>7); define(480,10,307,75,10,0,check_box,"P<EFBFBD>edsunout s.");c_default(p->side_tag>>7);
fill_bit_fields(0,120,p->flags,20); if (source) fill_bit_fields(0,120,p->flags,20); if (source)
fill_bit_fields(0,400,1<<smer,4); else fill_bit_fields(0,400,0xf,4); fill_bit_fields(0,400,1<<smer,4); else fill_bit_fields(0,400,0xf,4);
set_enable(0,3400,source!=0); set_enable(0,3400,source!=0);
@ -501,15 +501,15 @@ void edit_sector(int source)
property(NULL,NULL,NULL,WINCOLOR); property(NULL,NULL,NULL,WINCOLOR);
o_end->autoresizey=1; o_end->autoresizey=1;
define(11,1,20,21,17,1,scroll_button,-1,0,"\x1e"); define(11,1,20,21,17,1,scroll_button,-1,0,"\x1e");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(12,1,22,21,17,2,scroll_button,1,10,"\x1f"); define(12,1,22,21,17,2,scroll_button,1,10,"\x1f");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(20,1,1,10,10,2,resizer); define(20,1,1,10,10,2,resizer);
/* define(OK_BUTT,100,5,80,20,2,button,"Ok");property(&b1,NULL,NULL,WINCOLOR); /* define(OK_BUTT,100,5,80,20,2,button,"Ok");property(&b1,NULL,NULL,WINCOLOR);
on_change(terminate); on_change(terminate);
define(CANCEL_BUTT,10,5,80,20,2,button,"Zru¨it");property(&b1,NULL,NULL,WINCOLOR); define(CANCEL_BUTT,10,5,80,20,2,button,"Zru<EFBFBD>it");property(&b1,NULL,NULL,WINCOLOR);
on_change(terminate); on_change(terminate);
define(-1,5,20,100,12,0,label,"P©ipojen¡:"); define(-1,5,20,100,12,0,label,"P<EFBFBD>ipojen<EFBFBD>:");
define(10,10,35,50,12,0,input_line,20,0,MAPSIZE-1,"%6d");property(&b2,NULL,NULL,WINCOLOR); define(10,10,35,50,12,0,input_line,20,0,MAPSIZE-1,"%6d");property(&b2,NULL,NULL,WINCOLOR);
set_default(strs(p->step_next[0]));on_exit(test_int); set_default(strs(p->step_next[0]));on_exit(test_int);
define(20,10,50,50,12,0,input_line,20,0,MAPSIZE-1,"%6d");property(&b2,NULL,NULL,WINCOLOR); define(20,10,50,50,12,0,input_line,20,0,MAPSIZE-1,"%6d");property(&b2,NULL,NULL,WINCOLOR);
@ -519,9 +519,9 @@ void edit_sector(int source)
define(40,10,80,50,12,0,input_line,20,0,MAPSIZE-1,"%6d");property(&b2,NULL,NULL,WINCOLOR); define(40,10,80,50,12,0,input_line,20,0,MAPSIZE-1,"%6d");property(&b2,NULL,NULL,WINCOLOR);
set_default(strs(p->step_next[3]));on_exit(test_int); set_default(strs(p->step_next[3]));on_exit(test_int);
define(50,70,35,80,12,0,button,"Sever");property(&b1,NULL,NULL,WINCOLOR);on_change(edit_side_sup); define(50,70,35,80,12,0,button,"Sever");property(&b1,NULL,NULL,WINCOLOR);on_change(edit_side_sup);
define(60,70,50,80,12,0,button,"V˜chod");property(&b1,NULL,NULL,WINCOLOR);on_change(edit_side_sup); define(60,70,50,80,12,0,button,"V<EFBFBD>chod");property(&b1,NULL,NULL,WINCOLOR);on_change(edit_side_sup);
define(70,70,65,80,12,0,button,"Jih");property(&b1,NULL,NULL,WINCOLOR);on_change(edit_side_sup); define(70,70,65,80,12,0,button,"Jih");property(&b1,NULL,NULL,WINCOLOR);on_change(edit_side_sup);
define(80,70,80,80,12,0,button,"Z pad");property(&b1,NULL,NULL,WINCOLOR);on_change(edit_side_sup); define(80,70,80,80,12,0,button,"Z<EFBFBD>pad");property(&b1,NULL,NULL,WINCOLOR);on_change(edit_side_sup);
temp_source=source; temp_source=source;
*/redraw_window(); */redraw_window();
escape(); escape();
@ -679,47 +679,47 @@ void sector_details_call(int sect_num)
define(-1,30,30,100,12,0,label,"Strop:"); define(-1,30,30,100,12,0,label,"Strop:");
define(-1,30,50,100,12,0,label,"Podlaha:"); define(-1,30,50,100,12,0,label,"Podlaha:");
define(-1,30,70,100,12,0,label,"Sektor:"); define(-1,30,70,100,12,0,label,"Sektor:");
define(-1,30,90,100,12,0,label,"C¡l akce:"); define(-1,30,90,100,12,0,label,"C<EFBFBD>l akce:");
define(-1,30,110,100,12,0,label,"Stˆna akce:"); define(-1,30,110,100,12,0,label,"St<EFBFBD>na akce:");
define(-1,30,130,100,12,0,label,"Popis akce:"); define(-1,30,130,100,12,0,label,"Popis akce:");
define(10,30,28,100,13,1,str_line,ceils);property(&b2,NULL,NULL,WINCOLOR); define(10,30,28,100,13,1,str_line,ceils);property(&b2,NULL,NULL,WINCOLOR);
c_default(p->ceil); on_enter(string_list_sup); c_default(p->ceil); on_control_enter(string_list_sup);
define(20,30,48,100,13,1,str_line,floors);property(&b2,NULL,NULL,WINCOLOR); define(20,30,48,100,13,1,str_line,floors);property(&b2,NULL,NULL,WINCOLOR);
c_default(p->floor); on_enter(string_list_sup); c_default(p->floor); on_control_enter(string_list_sup);
define(30,30,68,100,13,1,str_line,sector_types);property(&b2,NULL,NULL,WINCOLOR); define(30,30,68,100,13,1,str_line,sector_types);property(&b2,NULL,NULL,WINCOLOR);
c_default(p->sector_type); on_enter(string_list_sup); c_default(p->sector_type); on_control_enter(string_list_sup);
define(40,30,88,50,13,1,input_line,10,0,MAPSIZE,"%6d");property(&b2,NULL,NULL,WINCOLOR); define(40,30,88,50,13,1,input_line,10,0,MAPSIZE,"%6d");property(&b2,NULL,NULL,WINCOLOR);
set_default(strs(p->sector_tag));on_exit(test_int); set_default(strs(p->sector_tag));on_control_exit(test_int);
define(50,30,108,100,13,1,str_line,steny2);property(&b2,NULL,NULL,WINCOLOR); define(50,30,108,100,13,1,str_line,steny2);property(&b2,NULL,NULL,WINCOLOR);
c_default(p->side_tag & 3); on_enter(string_list_sup); c_default(p->side_tag & 3); on_control_enter(string_list_sup);
define(60,30,128,150,13,1,str_line,actions);property(&b2,NULL,NULL,WINCOLOR); define(60,30,128,150,13,1,str_line,actions);property(&b2,NULL,NULL,WINCOLOR);
c_default(p->action); on_enter(string_list_sup); c_default(p->action); on_control_enter(string_list_sup);
define(70,5,150,214,80,0,radio_butts,7, define(70,5,150,214,80,0,radio_butts,7,
"(1) Norm ln¡ podlaha", "(1) Norm<EFBFBD>ln<EFBFBD> podlaha",
"(2) Dva druhy podlah", "(2) Dva druhy podlah",
"(3) Dva smˆry", "(3) Dva sm<EFBFBD>ry",
"(4) Dva smˆry a druhy", "(4) Dva sm<EFBFBD>ry a druhy",
"(5) €ty©i smˆry", "(5) <EFBFBD>ty<EFBFBD>i sm<73>ry",
"(6) €ty©i smˆry a dva druhy", "(6) <EFBFBD>ty<EFBFBD>i sm<73>ry a dva druhy",
"(7) achovnice");c_default(p->flags & 0x7); "(7) <EFBFBD>achovnice");c_default(p->flags & 0x7);
define(80,5,150,214,80,1,radio_butts,7, define(80,5,150,214,80,1,radio_butts,7,
"(1) Norm ln¡ strop", "(1) Norm<EFBFBD>ln<EFBFBD> strop",
"(2) Dva druhy strop", "(2) Dva druhy strop",
"(3) Dva smˆry", "(3) Dva sm<EFBFBD>ry",
"(4) Dva smˆry a druhy", "(4) Dva sm<EFBFBD>ry a druhy",
"(5) €ty©i smˆry", "(5) <EFBFBD>ty<EFBFBD>i sm<73>ry",
"(6) €ty©i smˆry a dva druhy", "(6) <EFBFBD>ty<EFBFBD>i sm<73>ry a dva druhy",
"(7) achovnice");c_default(p->flags >> 4 & 0x7); "(7) <EFBFBD>achovnice");c_default(p->flags >> 4 & 0x7);
define(90,5,240,214,10,0,check_box,"(?)Animace podlahy");c_default((p->flags & 0x8)!=0); define(90,5,240,214,10,0,check_box,"(?)Animace podlahy");c_default((p->flags & 0x8)!=0);
define(95,5,240,214,10,1,check_box,"(?)Animace stropu");c_default((p->flags & 0x80)!=0); define(95,5,240,214,10,1,check_box,"(?)Animace stropu");c_default((p->flags & 0x80)!=0);
define(65,5,252,214,10,0,check_box,"Sekundarni shading");c_default((minfo[sect_num].flags & 0x100)>>8); define(65,5,252,214,10,0,check_box,"Sekundarni shading");c_default((minfo[sect_num].flags & 0x100)>>8);
define(75,5,258,214,40,1,radio_butts,4,"*default*","ipka","Schody","Bez symbolu");c_default((minfo[sect_num].flags & 0x600)>>9); define(75,5,258,214,40,1,radio_butts,4,"*default*","<EFBFBD>ipka","Schody","Bez symbolu");c_default((minfo[sect_num].flags & 0x600)>>9);
define(83,5,264,214,10,0,check_box,"!Automap (kouzlem)");c_default((minfo[sect_num].flags & 0x800)>>11); define(83,5,264,214,10,0,check_box,"!Automap (kouzlem)");c_default((minfo[sect_num].flags & 0x800)>>11);
define(85,5,276,214,10,0,check_box,"!Summon");c_default((minfo[sect_num].flags & 0x1000)>>12); define(85,5,276,214,10,0,check_box,"!Summon");c_default((minfo[sect_num].flags & 0x1000)>>12);
define(87,5,288,214,10,0,check_box,"Neprojde hledan¡m cesty");c_default((minfo[sect_num].flags & 0x2000)>>13); define(87,5,288,214,10,0,check_box,"Neprojde hledan<EFBFBD>m cesty");c_default((minfo[sect_num].flags & 0x2000)>>13);
define(100,10,10,80,20,3,button,"Ok");property(&b1,NULL,NULL,WINCOLOR);on_change(terminate); define(100,10,10,80,20,3,button,"Ok");property(&b1,NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
define(110,10,10,80,20,2,button,"Zru¨it");property(&b1,NULL,NULL,WINCOLOR);on_change(terminate); define(110,10,10,80,20,2,button,"Zru<EFBFBD>it");property(&b1,NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
define(120,100,10,80,20,2,button,"P©edvolba");property(&b1,NULL,NULL,WINCOLOR);on_change(terminate); define(120,100,10,80,20,2,button,"P<EFBFBD>edvolba");property(&b1,NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
set_enable(0,120,sect_num!=0); set_enable(0,120,sect_num!=0);
redraw_window(); redraw_window();
do do
@ -735,8 +735,8 @@ void sector_details_call(int sect_num)
} }
else else
{ {
if (count_of_sel()<2 || (i=msg_box("Co teƒ?",'\x2',"M m vlastnosti aplikovat na jeden sektor nebo na vybranou oblast?", if (count_of_sel()<2 || (i=msg_box("Co te<EFBFBD>?",'\x2',"M<EFBFBD>m vlastnosti aplikovat na jeden sektor nebo na vybranou oblast?",
"Na sektor","Na oblast","Zru¨it",NULL))==1) "Na sektor","Na oblast","Zru<EFBFBD>it",NULL))==1)
{ {
start=sect_num; start=sect_num;
end=sect_num; end=sect_num;
@ -797,7 +797,7 @@ void get_error(char *err)
p=(short *)0xb8000; p=(short *)0xb8000;
if (p[0]==0xff) if (p[0]==0xff)
{ {
strcpy(err,"Neo‡ek van zhroucen¡."); strcpy(err,"Neo<EFBFBD>ek<EFBFBD>van<EFBFBD> zhroucen<65>.");
return; return;
} }
mezera=1;spc=1; mezera=1;spc=1;
@ -883,48 +883,48 @@ void open_sector_win(void)
memcpy(&f_sel,flat_color(0x0017),sizeof(charcolors)); memcpy(&f_sel,flat_color(0x0017),sizeof(charcolors));
sektor_win=def_window(120,325,"Vlastnosti"); sektor_win=def_window(120,325,"Vlastnosti");
waktual->y=2;waktual->x=SCR_WIDTH_X-120-3; waktual->y=2;waktual->x=SCR_WIDTH_X-120-3;
on_change(close_sector_win); on_control_change(close_sector_win);
define(100,4,19,59,14,0,button2,"Sever:");on_change(run_edit_side); define(100,4,19,59,14,0,button2,"Sever:");on_control_change(run_edit_side);
define(110,4,49,59,14,0,button2,"V˜chod:");on_change(run_edit_side); define(110,4,49,59,14,0,button2,"V<EFBFBD>chod:");on_control_change(run_edit_side);
define(120,4,79,59,14,0,button2,"Jih:");on_change(run_edit_side); define(120,4,79,59,14,0,button2,"Jih:");on_control_change(run_edit_side);
define(130,4,109,59,14,0,button2,"Z pad:");on_change(run_edit_side); define(130,4,109,59,14,0,button2,"Z<EFBFBD>pad:");on_control_change(run_edit_side);
define(-1,5,140,59,10,0,label,"Strop:"); define(-1,5,140,59,10,0,label,"Strop:");
define(-1,5,170,59,10,0,label,"Podlaha:"); define(-1,5,170,59,10,0,label,"Podlaha:");
define(-1,5,200,59,10,0,label,"Typ sektoru:"); define(-1,5,200,59,10,0,label,"Typ sektoru:");
define(10,65,20,50,12,0,input_line,20,0,MAPSIZE-1,"%5d");property(&b2,NULL,&f_sel,WINCOLOR); define(10,65,20,50,12,0,input_line,20,0,MAPSIZE-1,"%5d");property(&b2,NULL,&f_sel,WINCOLOR);
set_default("0");on_exit(test_int);on_event(chozeni); set_default("0");on_control_exit(test_int);on_event(chozeni);
define(20,65,50,50,12,0,input_line,20,0,MAPSIZE-1,"%5d");property(&b2,NULL,&f_sel,WINCOLOR); define(20,65,50,50,12,0,input_line,20,0,MAPSIZE-1,"%5d");property(&b2,NULL,&f_sel,WINCOLOR);
set_default("0");on_exit(test_int);on_event(chozeni); set_default("0");on_control_exit(test_int);on_event(chozeni);
define(30,65,80,50,12,0,input_line,20,0,MAPSIZE-1,"%5d");property(&b2,NULL,&f_sel,WINCOLOR); define(30,65,80,50,12,0,input_line,20,0,MAPSIZE-1,"%5d");property(&b2,NULL,&f_sel,WINCOLOR);
set_default("0");on_exit(test_int);on_event(chozeni); set_default("0");on_control_exit(test_int);on_event(chozeni);
define(40,65,110,50,12,0,input_line,20,0,MAPSIZE-1,"%5d");property(&b2,NULL,&f_sel,WINCOLOR); define(40,65,110,50,12,0,input_line,20,0,MAPSIZE-1,"%5d");property(&b2,NULL,&f_sel,WINCOLOR);
set_default("0");on_exit(test_int);on_event(chozeni); set_default("0");on_control_exit(test_int);on_event(chozeni);
define(50,5,35,95,12,0,str_line,side_names);property(&b2,NULL,&f_sel,WINCOLOR); define(50,5,35,95,12,0,str_line,side_names);property(&b2,NULL,&f_sel,WINCOLOR);
c_default(0); on_enter(string_list_sup);on_change(set_change_map); c_default(0); on_control_enter(string_list_sup);on_control_change(set_change_map);
define(60,5,65,95,12,0,str_line,side_names);property(&b2,NULL,&f_sel,WINCOLOR); define(60,5,65,95,12,0,str_line,side_names);property(&b2,NULL,&f_sel,WINCOLOR);
c_default(0); on_enter(string_list_sup);on_change(set_change_map); c_default(0); on_control_enter(string_list_sup);on_control_change(set_change_map);
define(70,5,95,95,12,0,str_line,side_names);property(&b2,NULL,&f_sel,WINCOLOR); define(70,5,95,95,12,0,str_line,side_names);property(&b2,NULL,&f_sel,WINCOLOR);
c_default(0); on_enter(string_list_sup);on_change(set_change_map); c_default(0); on_control_enter(string_list_sup);on_control_change(set_change_map);
define(80,5,125,95,12,0,str_line,side_names);property(&b2,NULL,&f_sel,WINCOLOR); define(80,5,125,95,12,0,str_line,side_names);property(&b2,NULL,&f_sel,WINCOLOR);
c_default(0); on_enter(string_list_sup);on_change(set_change_map); c_default(0); on_control_enter(string_list_sup);on_control_change(set_change_map);
define(140,103,35,12,12,0,check_box,"");o_end->runs[2]=o_end->events[3]; define(140,103,35,12,12,0,check_box,"");o_end->runs[2]=o_end->events[3];
define(150,103,65,12,12,0,check_box,"");o_end->runs[2]=o_end->events[3]; define(150,103,65,12,12,0,check_box,"");o_end->runs[2]=o_end->events[3];
define(160,103,95,12,12,0,check_box,"");o_end->runs[2]=o_end->events[3]; define(160,103,95,12,12,0,check_box,"");o_end->runs[2]=o_end->events[3];
define(170,103,125,12,12,0,check_box,"");o_end->runs[2]=o_end->events[3]; define(170,103,125,12,12,0,check_box,"");o_end->runs[2]=o_end->events[3];
define(200,5,155,110,12,0,str_line,ceils);property(&b2,NULL,&f_sel,WINCOLOR); define(200,5,155,110,12,0,str_line,ceils);property(&b2,NULL,&f_sel,WINCOLOR);
c_default(0); on_enter(string_list_sup);on_change(set_change_map); c_default(0); on_control_enter(string_list_sup);on_control_change(set_change_map);
define(210,5,185,110,12,0,str_line,floors);property(&b2,NULL,&f_sel,WINCOLOR); define(210,5,185,110,12,0,str_line,floors);property(&b2,NULL,&f_sel,WINCOLOR);
c_default(0); on_enter(string_list_sup);on_change(set_change_map); c_default(0); on_control_enter(string_list_sup);on_control_change(set_change_map);
define(220,5,215,110,12,0,str_line,sector_types);property(&b2,NULL,&f_sel,WINCOLOR); define(220,5,215,110,12,0,str_line,sector_types);property(&b2,NULL,&f_sel,WINCOLOR);
c_default(0); on_enter(string_list_sup);on_change(set_change_map); c_default(0); on_control_enter(string_list_sup);on_control_change(set_change_map);
define(-1,1,30,60,10,3,label,"Sektor:"); define(-1,1,30,60,10,3,label,"Sektor:");
define(OK_BUTT,60,67,55,17,3,button2,"Aplikuj");on_change(Apply); define(OK_BUTT,60,67,55,17,3,button2,"Aplikuj");on_control_change(Apply);
define(300,4,67,55,17,3,button2,"Detaily");on_change(sector_details); define(300,4,67,55,17,3,button2,"Detaily");on_control_change(sector_details);
define(5,60,30,55,12,3,input_line,20,0,MAPSIZE-1,"%5d");property(&b2,NULL,NULL,WINCOLOR); define(5,60,30,55,12,3,input_line,20,0,MAPSIZE-1,"%5d");property(&b2,NULL,NULL,WINCOLOR);
set_default("?");on_change(chozeni2); set_default("?");on_control_change(chozeni2);
define(310,4,3,112,20,3,button,"Testovat mapu");on_change(testmap); define(310,4,3,112,20,3,button,"Testovat mapu");on_control_change(testmap);
define(320,4,47,55,17,2,button2,"Zoom+");on_change(zoomin); define(320,4,47,55,17,2,button2,"Zoom+");on_control_change(zoomin);
define(330,4,47,55,17,3,button2,"Zoom-");on_change(zoomout); define(330,4,47,55,17,3,button2,"Zoom-");on_control_change(zoomout);
send_message(E_ADD,E_KEYBOARD,chozeni2); send_message(E_ADD,E_KEYBOARD,chozeni2);
waktual->popup=1; waktual->popup=1;
} }
@ -992,20 +992,20 @@ void open_draw_win(void)
memcpy(&f_sel,flat_color(0x0017),sizeof(charcolors)); memcpy(&f_sel,flat_color(0x0017),sizeof(charcolors));
draw_win=def_window(120,165,"Vlajky"); draw_win=def_window(120,165,"Vlajky");
waktual->y=2;waktual->x=SCR_WIDTH_X-120-3; waktual->y=2;waktual->x=SCR_WIDTH_X-120-3;
define(10,5,30,100,10,0,check_box,"Rozdˆlit");c_default(1); define(10,5,30,100,10,0,check_box,"Rozd<EFBFBD>lit");c_default(1);
on_change(draw_win_1); on_control_change(draw_win_1);
define(20,5,45,100,10,0,check_box,"!Hra");c_default(0); define(20,5,45,100,10,0,check_box,"!Hra<EFBFBD>");c_default(0);
on_change(draw_win_2); on_control_change(draw_win_2);
define(30,5,60,100,10,0,check_box,"!Nestvra");c_default(0); define(30,5,60,100,10,0,check_box,"!Nestv<EFBFBD>ra");c_default(0);
on_change(draw_win_2); on_control_change(draw_win_2);
define(40,5,75,100,10,0,check_box,"!Vˆc");c_default(0); define(40,5,75,100,10,0,check_box,"!V<EFBFBD>c");c_default(0);
on_change(draw_win_2); on_control_change(draw_win_2);
define(50,5,90,100,10,0,check_box,"!Zvuk");c_default(0); define(50,5,90,100,10,0,check_box,"!Zvuk");c_default(0);
on_change(draw_win_2); on_control_change(draw_win_2);
define(60,5,105,100,10,0,check_box,"PrimVis");c_default(0); define(60,5,105,100,10,0,check_box,"PrimVis");c_default(0);
on_change(draw_win_2); on_control_change(draw_win_2);
define(70,5,18,110,17,3,button2,"Zoom in");on_change(zoomin); define(70,5,18,110,17,3,button2,"Zoom in");on_control_change(zoomin);
define(80,5,1,110,17,3,button2,"Zoom out");on_change(zoomout); define(80,5,1,110,17,3,button2,"Zoom out");on_control_change(zoomout);
waktual->popup=1; waktual->popup=1;
} }
@ -1039,7 +1039,7 @@ static void veci_ve_vyklenku(TSTR_LIST *ls,short *list)
for(i=0;list[i]!=0;i++) for(i=0;list[i]!=0;i++)
{ {
int it=list[i]-1; int it=list[i]-1;
if (it>=max_items) str_add(ls,"<P©edmˆt neexistuje>");else str_add(ls,item_list[it].jmeno); if (it>=max_items) str_add(ls,"<P<EFBFBD>edm<EFBFBD>t neexistuje>");else str_add(ls,item_list[it].jmeno);
} }
} }
@ -1116,40 +1116,40 @@ void edit_vyklenek(int idnum)
memcpy(&old,v,sizeof(TVYKLENEK)); memcpy(&old,v,sizeof(TVYKLENEK));
veci_ve_vyklenku(&vyklist,&v->items); veci_ve_vyklenku(&vyklist,&v->items);
create_isort_list(&ls_sorts,-1); create_isort_list(&ls_sorts,-1);
def_dialoge(70,100,500,200,"Oprava v˜klenk"); def_dialoge(70,100,500,200,"Oprava v<EFBFBD>klenk<EFBFBD>");
define(9,10,20,200,126,0,listbox,ls_sorts,RGB555(31,31,31),0); define(9,10,20,200,126,0,listbox,ls_sorts,RGB555(31,31,31),0);
property(&b3,NULL,NULL,WINCOLOR);c_default(0); property(&b3,NULL,NULL,WINCOLOR);c_default(0);
define(10,216,40,21,87,0,scroll_bar_v,0,10,1,SCROLLBARCOL); define(10,216,40,21,87,0,scroll_bar_v,0,10,1,SCROLLBARCOL);
property(&b2,NULL,NULL,WINCOLOR); property(&b2,NULL,NULL,WINCOLOR);
define(11,216,20,21,17,0,scroll_button,-1,0,"\x1e"); define(11,216,20,21,17,0,scroll_button,-1,0,"\x1e");
property(&b1,icones,NULL,WINCOLOR);on_change(scroll_support); property(&b1,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(12,216,130,21,17,0,scroll_button,1,10,"\x1f"); define(12,216,130,21,17,0,scroll_button,1,10,"\x1f");
property(&b1,icones,NULL,WINCOLOR);on_change(scroll_support); property(&b1,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(20,0,0,0,0,0,value_store,4);c_default(idnum); define(20,0,0,0,0,0,value_store,4);c_default(idnum);
define(29,10,20,200,120,1,listbox,vyklist,RGB555(31,31,31),0); define(29,10,20,200,120,1,listbox,vyklist,RGB555(31,31,31),0);
property(&b3,NULL,NULL,WINCOLOR);c_default(0); property(&b3,NULL,NULL,WINCOLOR);c_default(0);
define(40,242,40,40,15,0,button,">>");on_change(add_to_vyk); define(40,242,40,40,15,0,button,">>");on_control_change(add_to_vyk);
define(50,242,60,40,15,0,button,"<<");on_change(remove_from_vyk); define(50,242,60,40,15,0,button,"<<");on_control_change(remove_from_vyk);
define(80,30,150,120,12,1,str_line,typy_veci);c_default(0); define(80,30,150,120,12,1,str_line,typy_veci);c_default(0);
property(&b2,NULL,NULL,WINCOLOR);on_enter(string_list_sup);on_change(change_grep); property(&b2,NULL,NULL,WINCOLOR);on_control_enter(string_list_sup);on_control_change(change_grep);
define(-1,150,150,50,10,1,label,"Filtr:"); define(-1,150,150,50,10,1,label,"Filtr:");
define(90,10,150,10,10,1,check_box,"");c_default(0);on_change(change_grep); define(90,10,150,10,10,1,check_box,"");c_default(0);on_control_change(change_grep);
define(-1,10,30,1,10,3,label,"Xpos Ypos Xsiz Ysiz Sector Pos"); define(-1,10,30,1,10,3,label,"Xpos Ypos Xsiz Ysiz Sector Pos");
define(100,8,12,40,12,3,input_line,10,0,500,"%4d");set_default(strs(v->xpos)); define(100,8,12,40,12,3,input_line,10,0,500,"%4d");set_default(strs(v->xpos));
property(&b2,NULL,NULL,WINCOLOR);on_exit(test_int); property(&b2,NULL,NULL,WINCOLOR);on_control_exit(test_int);
define(110,53,12,40,12,3,input_line,10,0,500,"%4d");set_default(strs(v->ypos)); define(110,53,12,40,12,3,input_line,10,0,500,"%4d");set_default(strs(v->ypos));
property(&b2,NULL,NULL,WINCOLOR);on_exit(test_int); property(&b2,NULL,NULL,WINCOLOR);on_control_exit(test_int);
define(120,98,12,40,12,3,input_line,10,0,500,"%4d");set_default(strs(v->xs)); define(120,98,12,40,12,3,input_line,10,0,500,"%4d");set_default(strs(v->xs));
property(&b2,NULL,NULL,WINCOLOR);on_exit(test_int); property(&b2,NULL,NULL,WINCOLOR);on_control_exit(test_int);
define(130,143,12,40,12,3,input_line,10,0,500,"%4d");set_default(strs(v->ys)); define(130,143,12,40,12,3,input_line,10,0,500,"%4d");set_default(strs(v->ys));
property(&b2,NULL,NULL,WINCOLOR);on_exit(test_int); property(&b2,NULL,NULL,WINCOLOR);on_control_exit(test_int);
define(140,188,12,40,12,3,input_line,10,0,maplen,"%4d");set_default(strs(v->sector)); define(140,188,12,40,12,3,input_line,10,0,maplen,"%4d");set_default(strs(v->sector));
property(&b2,NULL,NULL,WINCOLOR);on_exit(test_int); property(&b2,NULL,NULL,WINCOLOR);on_control_exit(test_int);
define(150,233,12,40,12,3,input_line,10,0,3,"%4d");set_default(strs(v->dir)); define(150,233,12,40,12,3,input_line,10,0,3,"%4d");set_default(strs(v->dir));
property(&b2,NULL,NULL,WINCOLOR);on_exit(test_int); property(&b2,NULL,NULL,WINCOLOR);on_control_exit(test_int);
define(200,5,5,60,20,2,button,"Ok");on_change(terminate);property(&b1,NULL,NULL,WINCOLOR); define(200,5,5,60,20,2,button,"Ok");on_control_change(terminate_gui);property(&b1,NULL,NULL,WINCOLOR);
define(210,70,5,60,20,2,button,"Zru¨it");on_change(terminate);property(&b1,NULL,NULL,WINCOLOR); define(210,70,5,60,20,2,button,"Zru<EFBFBD>it");on_control_change(terminate_gui);property(&b1,NULL,NULL,WINCOLOR);
define(220,135,5,60,20,2,button,"Vymazat");on_change(terminate);property(&b1,NULL,NULL,WINCOLOR); define(220,135,5,60,20,2,button,"Vymazat");on_control_change(terminate_gui);property(&b1,NULL,NULL,WINCOLOR);
redraw_window(); redraw_window();
opp: opp:
escape(); escape();
@ -1163,7 +1163,7 @@ void edit_vyklenek(int idnum)
v->dir=vals(150); v->dir=vals(150);
} }
else if (o_aktual->id==220) else if (o_aktual->id==220)
if (msg_box("Mapedit",'\x2',"Chce¨ opravdu v˜klenek zbourat?","Ano","Ne",NULL)==1) if (msg_box("Mapedit",'\x2',"Chce<EFBFBD> opravdu v<>klenek zbourat?","Ano","Ne",NULL)==1)
{ {
v->sector=0; v->sector=0;
} }

View file

@ -184,14 +184,14 @@ void generate_item_tree(TITEM *start,TSTR_LIST *list, char first)
char *d; char *d;
d=strchr(tree,'\0')-3; d=strchr(tree,'\0')-3;
strcpy(d,"ÀÄ "); strcpy(d,"<EFBFBD><EFBFBD> ");
} }
else else
{ {
char *d; char *d;
d=strchr(tree,'\0')-3; d=strchr(tree,'\0')-3;
strcpy(d,"ÃÄ "); strcpy(d,"<EFBFBD><EFBFBD> ");
} }
if (start->jmeno[0]=='~') if (start->jmeno[0]=='~')
sprintf(c,"%08X %s%s",(int)start,tree,start->popis); sprintf(c,"%08X %s%s",(int)start,tree,start->popis);
@ -213,7 +213,7 @@ void generate_item_tree(TITEM *start,TSTR_LIST *list, char first)
char *d; char *d;
d=strchr(tree,'\0')-3; d=strchr(tree,'\0')-3;
strcpy(d,"³\xdb "); strcpy(d,"<EFBFBD>\xdb ");
} }
generate_item_tree(start->inside,list,0); generate_item_tree(start->inside,list,0);
} }
@ -550,15 +550,15 @@ int select_ikon_lib(int last)
for (i=0;i<30;i++) for (i=0;i<30;i++)
{ {
define(i+10,x,y,45,55,0,ikona);c_default(last+i); define(i+10,x,y,45,55,0,ikona);c_default(last+i);
property(def_border(5,WINCOLOR),NULL,NULL,WINCOLOR);on_change(terminate); property(def_border(5,WINCOLOR),NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
x+=48;if (x+48>490) {y+=58;x=5;} x+=48;if (x+48>490) {y+=58;x=5;}
} }
define(300,10,10,80,20,3,button,"<<"); define(300,10,10,80,20,3,button,"<<");
property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(terminate); property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
define(310,10,10,80,20,2,button,">>"); define(310,10,10,80,20,2,button,">>");
property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(terminate); property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
define(320,175-40,10,80,20,3,button,"Zru¨it"); define(320,175-40,10,80,20,3,button,"Zru<EFBFBD>it");
property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(terminate); property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
redraw_window(); redraw_window();
do do
{ {
@ -587,10 +587,10 @@ void change_item_ikone()
} }
char nvlast[][16]= char nvlast[][16]=
{"cS¡la","Schopnost magie","Pohyblivost","Obratnost","Max zranˆ", {"cS<EFBFBD>la","Schopnost magie","Pohyblivost","Obratnost","Max zran<EFBFBD>n<EFBFBD>",
"Kondice","Max mana","Obrana(doln¡)","Obrana(Horn¡)","—tok(Doln¡)", "Kondice","Max mana","Obrana(doln<EFBFBD>)","Obrana(Horn<72>)","<EFBFBD>tok(Doln<6C>)",
"—tok(Horn¡)","Ohe¤","Voda","Zemˆ","Vzduch","Mysl","Magick la(D)", "<EFBFBD>tok(Horn<72>)","Ohe<EFBFBD>","Voda","Zem<EFBFBD>","Vzduch","Mysl","Magick<EFBFBD> s<>la(D)",
"Magick la(H)","\0"}; "Magick<EFBFBD> s<>la(H)","\0"};
void ukaz_vlastnosti(int pocet,int x,int y,int id,short *it) void ukaz_vlastnosti(int pocet,int x,int y,int id,short *it)
{ {
@ -633,13 +633,13 @@ void oprav_vlastnosti(TITEM *it)
define(190,5,272,100,10,0,check_box,"Na nohy"); define(190,5,272,100,10,0,check_box,"Na nohy");
define(200,105,200,100,10,0,check_box,"Na chodidla"); define(200,105,200,100,10,0,check_box,"Na chodidla");
define(210,105,212,100,10,0,check_box,"Na ramena"); define(210,105,212,100,10,0,check_box,"Na ramena");
define(220,105,224,100,10,0,check_box,"Na z da"); define(220,105,224,100,10,0,check_box,"Na z<EFBFBD>da");
define(300,10,10,80,20,2,button,"Zru¨it");on_change(terminate); define(300,10,10,80,20,2,button,"Zru<EFBFBD>it");on_control_change(terminate_gui);
property(def_border(1,0),NULL,NULL,WINCOLOR); property(def_border(1,0),NULL,NULL,WINCOLOR);
define(310,10,40,80,20,2,button,"Ok");on_change(terminate); define(310,10,40,80,20,2,button,"Ok");on_control_change(terminate_gui);
property(def_border(1,0),NULL,NULL,WINCOLOR); property(def_border(1,0),NULL,NULL,WINCOLOR);
define(-1,225,206,70,10,0,label,"Magick˜ £tok"); define(-1,225,206,70,10,0,label,"Magick<EFBFBD> <20>tok");
define(250,225,218,70,70,0,radio_butts,5,"Ohe¤","Voda","Zemˆ","Vzduch","Mysl"); define(250,225,218,70,70,0,radio_butts,5,"Ohe<EFBFBD>","Voda","Zem<EFBFBD>","Vzduch","Mysl");
c_default(it->zmeny[VLS_MGZIVEL]); c_default(it->zmeny[VLS_MGZIVEL]);
fill_bit_fields(0,130,it->place_map,11); fill_bit_fields(0,130,it->place_map,11);
redraw_window(); redraw_window();
@ -679,7 +679,7 @@ void save_edited_item()
it->magie=vals(110); it->magie=vals(110);
it->silaspell=vals(120); it->silaspell=vals(120);
it->ikona=f_get_value(0,130); it->ikona=f_get_value(0,130);
terminate(); terminate_gui();
} }
TITEM *select_item(TITEM *it); TITEM *select_item(TITEM *it);
@ -695,17 +695,17 @@ void e_item_insert_inside()
it=isolate_item(it); it=isolate_item(it);
if (insert_inside(it,is)==NULL) if (insert_inside(it,is)==NULL)
{ {
msg_box("Chyba integrity:",'\x1',"Nelze vloit tento p©edmˆt do zvolenho " msg_box("Chyba integrity:",'\x1',"Nelze vlo<EFBFBD>it tento p<>edm<64>t do zvolen<65>ho "
"Patrnˆ se pokou¨¡¨ vloit tut vˆc samu do sebe. Nebo vˆc nen¡ " "Patrn<EFBFBD> se pokou<6F><75><EFBFBD> vlo<6C>it tut<75><74> v<>c samu do sebe. Nebo v<>c nen<65> "
"izolov na, nebo ji nelze izolovat. Je mon e se sna¡¨ vloit " "izolov<EFBFBD>na, nebo ji nelze izolovat. Je mo<6D>n<EFBFBD> <20>e se sna<6E><61><EFBFBD> vlo<6C>it "
"vˆc do vˆci, kter  je uvnit© tto vˆci, nebo v uvnit© vˆci, kter  " "v<EFBFBD>c do v<>ci, kter<65> je uvnit<69> t<>to v<>ci, nebo v uvnit<69> v<>ci, kter<65> "
"je uvnit© vˆci, do kter chce¨ vˆc um¡stit atd. Mohlo by dojit k " "je uvnit<EFBFBD> v<>ci, do kter<65> chce<63> v<>c um<75>stit atd. Mohlo by dojit k "
"zacyklen¡ a to nelze dopustit. Program bude vˆc izolovat, jeliko " "zacyklen<EFBFBD> a to nelze dopustit. Program bude v<>c izolovat, jeliko<6B> "
"ji nelze rekonstruovat pvodn¡ stav","Budu si pamatovat",NULL); "ji<EFBFBD> nelze rekonstruovat p<>vodn<64> stav","Budu si pamatovat",NULL);
insert_isolated(it); insert_isolated(it);
return; return;
} }
terminate(); terminate_gui();
} }
void e_item_insert_map() void e_item_insert_map()
@ -721,23 +721,23 @@ void item_edit(TITEM *it)
CTL3D *c; CTL3D *c;
c=def_border(5,WINCOLOR); c=def_border(5,WINCOLOR);
def_dialoge(120,80,410,300,"Oprava £daj o p©edmˆtu"); def_dialoge(120,80,410,300,"Oprava <EFBFBD>daj<EFBFBD> o p<>edm<64>tu");
curfont=vga_font; curfont=vga_font;
default_font=curfont; default_font=curfont;
define(-1,5,20,50,10,0,label,"Jmno (31 znak)"); define(-1,5,20,50,10,0,label,"Jm<EFBFBD>no (31 znak<61>)");
define(15,10,35,288,12,0,input_line,31);set_default(it->jmeno); define(15,10,35,288,12,0,input_line,31);set_default(it->jmeno);
property(def_border(2,WINCOLOR),NULL,flat_color(RGB555(15,0,0)),WINCOLOR); property(def_border(2,WINCOLOR),NULL,flat_color(RGB555(15,0,0)),WINCOLOR);
define(-1,5,50,50,10,0,label,"Popis (63 znak)"); define(-1,5,50,50,10,0,label,"Popis (63 znak<EFBFBD>)");
define(20,10,65,380,12,0,input_line,63);set_default(it->popis); define(20,10,65,380,12,0,input_line,63);set_default(it->popis);
property(def_border(2,WINCOLOR),NULL,flat_color(0xF),WINCOLOR); property(def_border(2,WINCOLOR),NULL,flat_color(0xF),WINCOLOR);
define(5,0,0,0,0,0,value_store,4);set_default(&it); define(5,0,0,0,0,0,value_store,4);set_default(&it);
define(30,10,30,80,20,1,button,"Vlastnosti"); define(30,10,30,80,20,1,button,"Vlastnosti");
property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(otevri_vlastnosti); property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(otevri_vlastnosti);
define(-1,5,80,100,10,0,label,"Hmotnost"); define(-1,5,80,100,10,0,label,"Hmotnost");
define(-1,5,95,100,10,0,label,"Nosnost"); define(-1,5,95,100,10,0,label,"Nosnost");
define(-1,5,110,100,10,0,label,"ID Kl¡‡e"); define(-1,5,110,100,10,0,label,"ID Kl<EFBFBD><EFBFBD>e");
define(-1,5,125,100,10,0,label,"?Hodnota"); define(-1,5,125,100,10,0,label,"?Hodnota");
define(-1,5,140,100,10,0,label,"€.Ud losti"); define(-1,5,140,100,10,0,label,"<EFBFBD>.Ud<55>losti");
define(-1,5,155,100,10,0,label,"Druh"); define(-1,5,155,100,10,0,label,"Druh");
def_border(5,WINCOLOR); def_border(5,WINCOLOR);
define(40,105,80,60,12,0,input_line,7,-32767,+32767,"%6d"); define(40,105,80,60,12,0,input_line,7,-32767,+32767,"%6d");
@ -752,18 +752,18 @@ void item_edit(TITEM *it)
property(c,NULL,NULL,WINCOLOR);on_exit(test_int);set_default(strs(it->use_event)); property(c,NULL,NULL,WINCOLOR);on_exit(test_int);set_default(strs(it->use_event));
define(90,80,155,120,108,0,radio_butts,10, define(90,80,155,120,108,0,radio_butts,10,
"Nespecif.", "Nespecif.",
"Brnˆ", "Brn<EFBFBD>n<EFBFBD>",
"Ru‡n¡ zbra¤", "Ru<EFBFBD>n<EFBFBD> zbra<72>",
"Svitek/Hulka", "Svitek/Hulka",
"St©eln  zbr.", "St<EFBFBD>eln<EFBFBD> zbr.",
"Vrhac¡", "Vrhac<EFBFBD>",
"Lektvar/Mˆch", "Lektvar/M<EFBFBD>ch",
"J¡dlo", "J<EFBFBD>dlo",
"Batoh/Truhla", "Batoh/Truhla",
"Specialn¡");c_default(it->druh); "Specialn<EFBFBD>");c_default(it->druh);
define(-1,105,80,100,10,1,label,"Kouzlo:"); define(-1,105,80,100,10,1,label,"Kouzlo:");
define(-1,105,95,100,10,1,label,"Mana celk:"); define(-1,105,95,100,10,1,label,"Mana celk:");
define(-1,105,110,100,10,1,label,"S¡la kouzla"); define(-1,105,110,100,10,1,label,"S<EFBFBD>la kouzla");
define(100,55,80,60,12,1,input_line,7,-32767,32767,"%6d");on_exit(test_int); define(100,55,80,60,12,1,input_line,7,-32767,32767,"%6d");on_exit(test_int);
property(c,NULL,NULL,WINCOLOR);set_default(strs(it->spell)); property(c,NULL,NULL,WINCOLOR);set_default(strs(it->spell));
define(110,55,95,60,12,1,input_line,7,-32767,32767,"%6d");on_exit(test_int); define(110,55,95,60,12,1,input_line,7,-32767,32767,"%6d");on_exit(test_int);
@ -771,11 +771,11 @@ void item_edit(TITEM *it)
define(120,55,110,60,12,1,input_line,7,-32767,32767,"%6d");on_exit(test_int); define(120,55,110,60,12,1,input_line,7,-32767,32767,"%6d");on_exit(test_int);
property(c,NULL,NULL,WINCOLOR);set_default(strs(it->silaspell)); property(c,NULL,NULL,WINCOLOR);set_default(strs(it->silaspell));
define(130,10,180,45,55,0,ikona);c_default(it->ikona); define(130,10,180,45,55,0,ikona);c_default(it->ikona);
property(c,NULL,NULL,WINCOLOR);on_change(change_item_ikone); property(c,NULL,NULL,WINCOLOR);on_control_change(change_item_ikone);
define(300,10,10,80,20,3,button,"Ulo");property(def_border(1,0),NULL,NULL,RGB(0,24,0));on_change(save_edited_item); define(300,10,10,80,20,3,button,"Ulo<EFBFBD>");property(def_border(1,0),NULL,NULL,RGB(0,24,0));on_control_change(save_edited_item);
define(310,100,10,80,20,3,button,"Vloit do");property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(e_item_insert_inside); define(310,100,10,80,20,3,button,"Vlo<EFBFBD>it do");property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(e_item_insert_inside);
define(320,100,10,80,20,2,button,"Um¡stit");property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(e_item_insert_map); define(320,100,10,80,20,2,button,"Um<EFBFBD>stit");property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(e_item_insert_map);
define(330,10,10,80,20,2,button,"Zru¨it");property(def_border(1,0),NULL,flat_color(RGB555(31,31,31)),RGB555(16,0,0);on_change(terminate); define(330,10,10,80,20,2,button,"Zru<EFBFBD>it");property(def_border(1,0),NULL,flat_color(RGB555(31,31,31)),RGB555(16,0,0);on_control_change(terminate_gui);
redraw_window(); redraw_window();
escape(); escape();
close_current(); close_current();
@ -794,7 +794,7 @@ void select_item_edit()
sscanf(ls[i],"%X",&it); sscanf(ls[i],"%X",&it);
if ((unsigned short)it->druh>=256) if ((unsigned short)it->druh>=256)
{ {
msg_box("Nelze!",'\x1',"Nelze upravovat tento druh vˆci","Beru na vˆdom¡",NULL); msg_box("Nelze!",'\x1',"Nelze upravovat tento druh v<EFBFBD>ci","Beru na v<>dom<6F>",NULL);
return; return;
} }
item_edit(it); item_edit(it);
@ -815,12 +815,12 @@ void select_item_klon()
sscanf(ls[i],"%X",&it); sscanf(ls[i],"%X",&it);
if ((unsigned short)it->druh>=256) if ((unsigned short)it->druh>=256)
{ {
msg_box("Nelze!",'\x1',"Nelze klonovat tento druh vˆci","Beru na vˆdom¡",NULL); msg_box("Nelze!",'\x1',"Nelze klonovat tento druh v<EFBFBD>ci","Beru na v<>dom<6F>",NULL);
return; return;
} }
if (it->inside!=NULL) if (it->inside!=NULL)
{ {
i=msg_box("Klonovat",'\x2',"Klonovat i vˆci uvnit©?","Ano","Ne",NULL); i=msg_box("Klonovat",'\x2',"Klonovat i v<EFBFBD>ci uvnit<69>?","Ano","Ne",NULL);
} }
it=clone_item(it,i==1); it=clone_item(it,i==1);
generate_item_tree(item_tree,&ls,1); generate_item_tree(item_tree,&ls,1);
@ -875,10 +875,10 @@ void select_item_delete()
sscanf(ls[i],"%X",&it); sscanf(ls[i],"%X",&it);
if (item_tree==it && it->next==NULL) if (item_tree==it && it->next==NULL)
{ {
msg_box("Nelze!",'\x1',"Jeden p©edmˆt mus¡ zstat","Ok",NULL); msg_box("Nelze!",'\x1',"Jeden p<EFBFBD>edm<EFBFBD>t mus<75> z<>stat","Ok",NULL);
return; return;
} }
if (msg_box("P©edmˆty",'\x2',"Vymazat vybranou vˆc","Souhlas","Ne",NULL)==2) return; if (msg_box("P<EFBFBD>edm<EFBFBD>ty",'\x2',"Vymazat vybranou v<EFBFBD>c","Souhlas","Ne",NULL)==2) return;
isolate_item(it); isolate_item(it);
delete_item(it); delete_item(it);
check_for_empty_loc(); check_for_empty_loc();
@ -945,7 +945,7 @@ TITEM *select_item(TITEM *it)
if (q==it) break; if (q==it) break;
} }
if (i==ls) i=0; if (i==ls) i=0;
def_dialoge(120,80,410,300,"P©edmˆty"); def_dialoge(120,80,410,300,"P<EFBFBD>edm<EFBFBD>ty");
default_font=vga_font; default_font=vga_font;
memcpy(&b2,def_border(5,WINCOLOR),sizeof(CTL3D)); memcpy(&b2,def_border(5,WINCOLOR),sizeof(CTL3D));
define(9,5,20,380,210,0,listbox,il,RGB555(31,31,31),9); define(9,5,20,380,210,0,listbox,il,RGB555(31,31,31),9);
@ -953,23 +953,23 @@ TITEM *select_item(TITEM *it)
define(10,1,40,19,171,1,scroll_bar_v,0,10,1,SCROLLBARCOL); define(10,1,40,19,171,1,scroll_bar_v,0,10,1,SCROLLBARCOL);
property(&b2,NULL,NULL,WINCOLOR);c_default(0);c_default(i); property(&b2,NULL,NULL,WINCOLOR);c_default(0);c_default(i);
define(11,1,20,21,17,1,scroll_button,-1,0,"\x1e"); define(11,1,20,21,17,1,scroll_button,-1,0,"\x1e");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(12,1,213,21,17,1,scroll_button,1,10,"\x1f"); define(12,1,213,21,17,1,scroll_button,1,10,"\x1f");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(5,0,0,0,0,0,value_store,4);set_default(&it); define(5,0,0,0,0,0,value_store,4);set_default(&it);
define(20,5,5,80,15,3,button,"Upravit");on_change(select_item_edit); define(20,5,5,80,15,3,button,"Upravit");on_control_change(select_item_edit);
property(def_border(1,0),NULL,NULL,WINCOLOR); property(def_border(1,0),NULL,NULL,WINCOLOR);
define(30,5,25,80,15,3,button,"Klonovat");on_change(select_item_klon); define(30,5,25,80,15,3,button,"Klonovat");on_control_change(select_item_klon);
property(def_border(1,0),NULL,NULL,WINCOLOR); property(def_border(1,0),NULL,NULL,WINCOLOR);
define(40,5,45,80,15,3,button,"Vymazat");on_change(select_item_delete); define(40,5,45,80,15,3,button,"Vymazat");on_control_change(select_item_delete);
property(def_border(1,0),NULL,NULL,WINCOLOR); property(def_border(1,0),NULL,NULL,WINCOLOR);
define(50,5,5,80,15,2,button,"Zru¨it");on_change(terminate); define(50,5,5,80,15,2,button,"Zru<EFBFBD>it");on_control_change(terminate_gui);
property(def_border(1,0),NULL,NULL,WINCOLOR); property(def_border(1,0),NULL,NULL,WINCOLOR);
define(60,5,25,80,15,2,button,"Vyber");on_change(terminate); define(60,5,25,80,15,2,button,"Vyber");on_control_change(terminate_gui);
property(def_border(1,0),NULL,NULL,WINCOLOR); property(def_border(1,0),NULL,NULL,WINCOLOR);
define(70,90,5,80,15,3,button,"Izoluj");on_change(select_item_isolate); define(70,90,5,80,15,3,button,"Izoluj");on_control_change(select_item_isolate);
property(def_border(1,0),NULL,NULL,WINCOLOR); property(def_border(1,0),NULL,NULL,WINCOLOR);
define(80,90,25,80,15,3,button,"Mapa");on_change(items_on_map_show); define(80,90,25,80,15,3,button,"Mapa");on_control_change(items_on_map_show);
property(def_border(1,0),NULL,NULL,WINCOLOR); property(def_border(1,0),NULL,NULL,WINCOLOR);
redraw_window(); redraw_window();
escape(); escape();

View file

@ -190,15 +190,15 @@ int select_ikon_lib(int last)
for (i=0;i<30;i++) for (i=0;i<30;i++)
{ {
define(i+10,x,y,45,55,0,ikona);c_default(last+i); define(i+10,x,y,45,55,0,ikona);c_default(last+i);
property(def_border(5,WINCOLOR),NULL,NULL,0);on_change(terminate); property(def_border(5,WINCOLOR),NULL,NULL,0);on_control_change(terminate_gui);
x+=48;if (x+48>490) {y+=58;x=5;} x+=48;if (x+48>490) {y+=58;x=5;}
} }
define(300,10,10,80,20,3,button,"<<"); define(300,10,10,80,20,3,button,"<<");
property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(terminate); property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
define(310,10,10,80,20,2,button,">>"); define(310,10,10,80,20,2,button,">>");
property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(terminate); property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
define(320,175-40,10,80,20,3,button,"Zru¨it"); define(320,175-40,10,80,20,3,button,"Zru<EFBFBD>it");
property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(terminate); property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
redraw_window(); redraw_window();
do do
{ {
@ -227,10 +227,10 @@ void change_item_ikone()
} }
char nvlast[][16]= char nvlast[][16]=
{"S¡la","Schopnost magie","Pohyblivost","Obratnost","Max zranˆ", {"S<EFBFBD>la","Schopnost magie","Pohyblivost","Obratnost","Max zran<EFBFBD>n<EFBFBD>",
"Kondice","Max mana","Obrana(doln¡)","Obrana(Horn¡)","—tok(Doln¡)", "Kondice","Max mana","Obrana(doln<EFBFBD>)","Obrana(Horn<72>)","<EFBFBD>tok(Doln<6C>)",
"—tok(Horn¡)","Ohe¤","Voda","Zemˆ","Vzduch","Mysl","ivoty Regen", "<EFBFBD>tok(Horn<72>)","Ohe<EFBFBD>","Voda","Zem<EFBFBD>","Vzduch","Mysl","<EFBFBD>ivoty Regen",
"Mana Regen","Kondice Regen","Magick  s¡la(D)", "Magick  s¡la(H)","","—‡innek z sahu","*"}; "Mana Regen","Kondice Regen","Magick<EFBFBD> s<>la(D)", "Magick<EFBFBD> s<>la(H)","","<EFBFBD><EFBFBD>innek z<>sahu","*"};
void ukaz_vlastnosti(int pocet,int x,int y,int id,short *it) void ukaz_vlastnosti(int pocet,int x,int y,int id,short *it)
{ {
@ -277,13 +277,13 @@ void oprav_vlastnosti(TITEM *it)
define(190,5,272,100,10,0,check_box,"Na nohy"); define(190,5,272,100,10,0,check_box,"Na nohy");
define(200,105,200,100,10,0,check_box,"Na chodidla"); define(200,105,200,100,10,0,check_box,"Na chodidla");
define(210,105,212,100,10,0,check_box,"Na ramena"); define(210,105,212,100,10,0,check_box,"Na ramena");
define(220,105,224,100,10,0,check_box,"Na z da"); */ define(220,105,224,100,10,0,check_box,"Na z<EFBFBD>da"); */
define(300,10,10,80,20,2,button,"Zru¨it");on_change(terminate); define(300,10,10,80,20,2,button,"Zru<EFBFBD>it");on_control_change(terminate_gui);
property(def_border(1,0),NULL,NULL,WINCOLOR); property(def_border(1,0),NULL,NULL,WINCOLOR);
define(310,10,40,80,20,2,button,"Ok");on_change(terminate); define(310,10,40,80,20,2,button,"Ok");on_control_change(terminate_gui);
property(def_border(1,0),NULL,NULL,WINCOLOR); property(def_border(1,0),NULL,NULL,WINCOLOR);
define(-1,225,216,70,10,0,label,"Magick˜ £tok"); define(-1,225,216,70,10,0,label,"Magick<EFBFBD> <20>tok");
define(250,225,228,70,70,0,radio_butts,5,"Ohe¤","Voda","Zemˆ","Vzduch","Mysl"); define(250,225,228,70,70,0,radio_butts,5,"Ohe<EFBFBD>","Voda","Zem<EFBFBD>","Vzduch","Mysl");
c_default(it->zmeny[VLS_MGZIVEL]); c_default(it->zmeny[VLS_MGZIVEL]);
// fill_bit_fields(0,130,it->place_map,11); // fill_bit_fields(0,130,it->place_map,11);
redraw_window(); redraw_window();
@ -311,7 +311,7 @@ void item_special(TITEM *it)
int i,y; int i,y;
CTL3D *c; CTL3D *c;
def_dialoge(140,100,410,320,"Special - obr zky v letu"); def_dialoge(140,100,410,320,"Special - obr<EFBFBD>zky v letu");
y=20;c=def_border(5,WINCOLOR); y=20;c=def_border(5,WINCOLOR);
for(i=0;i<16;i++) for(i=0;i<16;i++)
{ {
@ -321,10 +321,10 @@ void item_special(TITEM *it)
} }
define(-1,5,20,1,1,0,label,"Zezadu"); define(-1,5,20,1,1,0,label,"Zezadu");
define(-1,5,85,1,1,0,label,"Ze strany"); define(-1,5,85,1,1,0,label,"Ze strany");
define(-1,5,150,1,1,0,label,"Zep©edu"); define(-1,5,150,1,1,0,label,"Zep<EFBFBD>edu");
define(-1,5,215,1,1,0,label,"V˜buch"); define(-1,5,215,1,1,0,label,"V<EFBFBD>buch");
define(300,10,10,80,20,2,button,"Zru¨it");on_change(terminate); define(300,10,10,80,20,2,button,"Zru<EFBFBD>it");on_control_change(terminate_gui);
define(310,100,10,80,20,2,button,"Ok");on_change(terminate); define(310,100,10,80,20,2,button,"Ok");on_control_change(terminate_gui);
redraw_window(); redraw_window();
escape(); escape();
if (o_aktual->id==310) if (o_aktual->id==310)
@ -394,14 +394,14 @@ void items_adjusting()
yy2=350-y2-vec[1]; yy2=350-y2-vec[1];
if (yy1<0 || yy2<0) if (yy1<0 || yy2<0)
{ {
msg_box("Chyba!",'\x1',"Nelze zobrazit, protoe n hled je z‡ sti mimo obrazovku!","Ok",NULL); msg_box("Chyba!",'\x1',"Nelze zobrazit, proto<EFBFBD>e n<>hled je z<><7A>sti mimo obrazovku!","Ok",NULL);
return; return;
} }
preview_win=def_window(300,400,"View"); preview_win=def_window(300,400,"View");
define(10,150-malexs/2,350-maleys,malexs,maleys,0,pcx_view);set_default(ITEM_MALE); define(10,150-malexs/2,350-maleys,malexs,maleys,0,pcx_view);set_default(ITEM_MALE);
define(20,150+x1-vec[0]/2,yy1,1,1,0,pcx_view);set_default(filename); define(20,150+x1-vec[0]/2,yy1,1,1,0,pcx_view);set_default(filename);
define(30,150+x2-vec[0]/2,yy2,1,1,0,pcx_view);set_default(filename); define(30,150+x2-vec[0]/2,yy2,1,1,0,pcx_view);set_default(filename);
define(40,5,5,80,20,2,button,"Ok");on_change(close_current); define(40,5,5,80,20,2,button,"Ok");on_control_change(close_current);
movesize_win(waktual,0,0,300,400); movesize_win(waktual,0,0,300,400);
redraw_window(); redraw_window();
free(vec); free(vec);
@ -440,18 +440,18 @@ void item_sound_call(TITEM *it)
memcpy(&b3,def_border(6,WINCOLOR),sizeof(CTL3D)); memcpy(&b3,def_border(6,WINCOLOR),sizeof(CTL3D));
default_font=vga_font; default_font=vga_font;
memcpy(f_default,flat_color(0x0000),sizeof(charcolors)); memcpy(f_default,flat_color(0x0000),sizeof(charcolors));
def_dialoge(100,50,300,250,"Zvuk p©i dopadu (destrukci)"); def_dialoge(100,50,300,250,"Zvuk p<EFBFBD>i dopadu (destrukci)");
concat(c,sample_path,"*.wav"); concat(c,sample_path,"*.wav");
list=read_directory(c,DIR_BREIF,_A_NORMAL); list=read_directory(c,DIR_BREIF,_A_NORMAL);
read_ddl_list_wav(&list); read_ddl_list_wav(&list);
define(9,10,20,200,126,0,listbox,list,0x7fff,0); define(9,10,20,200,126,0,listbox,list,0x7fff,0);
property(&b3,NULL,NULL,WINCOLOR);c_default(0);on_change(mob_test_sound); property(&b3,NULL,NULL,WINCOLOR);c_default(0);on_control_change(mob_test_sound);
define(10,217,40,19,87,0,scroll_bar_v,0,10,1,SCROLLBARCOL); define(10,217,40,19,87,0,scroll_bar_v,0,10,1,SCROLLBARCOL);
property(&b2,NULL,NULL,WINCOLOR); property(&b2,NULL,NULL,WINCOLOR);
define(11,216,20,21,17,0,scroll_button,-1,0,"\x1e"); define(11,216,20,21,17,0,scroll_button,-1,0,"\x1e");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(12,216,130,21,17,0,scroll_button,1,10,"\x1f"); define(12,216,130,21,17,0,scroll_button,1,10,"\x1f");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
{ {
int z,y; int z,y;
char *s; char *s;
@ -462,10 +462,10 @@ void item_sound_call(TITEM *it)
define(20,120,y,120,12,0,input_line,13);property(&b2,NULL,NULL,WINCOLOR); define(20,120,y,120,12,0,input_line,13);property(&b2,NULL,NULL,WINCOLOR);
set_default(s); set_default(s);
define(40,245,y,20,12,0,button,"<"); define(40,245,y,20,12,0,button,"<");
property(&b1,NULL,NULL,WINCOLOR);on_change(mob_sound_copy); property(&b1,NULL,NULL,WINCOLOR);on_control_change(mob_sound_copy);
} }
define(100,5,5,80,20,2,button,"Ok");on_change(terminate); property(&b1,NULL,NULL,WINCOLOR); define(100,5,5,80,20,2,button,"Ok");on_control_change(terminate_gui); property(&b1,NULL,NULL,WINCOLOR);
define(110,90,5,80,20,2,button,"Zru¨it");on_change(terminate); property(&b1,NULL,NULL,WINCOLOR); define(110,90,5,80,20,2,button,"Zru<EFBFBD>it");on_control_change(terminate_gui); property(&b1,NULL,NULL,WINCOLOR);
redraw_window(); redraw_window();
escape(); escape();
if (o_aktual->id==100) if (o_aktual->id==100)
@ -523,7 +523,7 @@ void save_edited_item()
it->shiftup=0xff; it->shiftup=0xff;
w=find_window(preview_win); w=find_window(preview_win);
if (w!=NULL) close_window(w); if (w!=NULL) close_window(w);
terminate(); terminate_gui();
} }
@ -593,23 +593,23 @@ void item_edit(TITEM *it)
if (anm>=str_count(weapons)) anm=0; if (anm>=str_count(weapons)) anm=0;
c=def_border(5,WINCOLOR); c=def_border(5,WINCOLOR);
def_dialoge(220,80,410,350,"Oprava £daj o p©edmˆtu"); def_dialoge(220,80,410,350,"Oprava <EFBFBD>daj<EFBFBD> o p<>edm<64>tu");
curfont=vga_font; curfont=vga_font;
default_font=curfont; default_font=curfont;
define(-1,5,20,50,10,0,label,"Jmno (31 znak)"); define(-1,5,20,50,10,0,label,"Jm<EFBFBD>no (31 znak<61>)");
define(15,10,35,288,12,0,input_line,31);set_default(it->jmeno); define(15,10,35,288,12,0,input_line,31);set_default(it->jmeno);
property(def_border(2,WINCOLOR),NULL,flat_color(RGB555(16,0,0)),WINCOLOR); property(def_border(2,WINCOLOR),NULL,flat_color(RGB555(16,0,0)),WINCOLOR);
define(-1,5,50,50,10,0,label,"Popis (31 znak)"); define(-1,5,50,50,10,0,label,"Popis (31 znak<EFBFBD>)");
define(20,10,65,380,12,0,input_line,31);set_default(it->popis); define(20,10,65,380,12,0,input_line,31);set_default(it->popis);
property(def_border(2,WINCOLOR),NULL,flat_color(0xF),WINCOLOR); property(def_border(2,WINCOLOR),NULL,flat_color(0xF),WINCOLOR);
define(5,0,0,0,0,0,value_store,4);set_default(&it); define(5,0,0,0,0,0,value_store,4);set_default(&it);
define(30,10,30,80,20,1,button,"Vlastnosti"); define(30,10,30,80,20,1,button,"Vlastnosti");
property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(otevri_vlastnosti); property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(otevri_vlastnosti);
define(-1,5,80,100,10,0,label,"Hmotnost"); define(-1,5,80,100,10,0,label,"Hmotnost");
define(-1,5,95,100,10,0,label,"Nosnost"); define(-1,5,95,100,10,0,label,"Nosnost");
define(-1,5,110,100,10,0,label,"ID Kl¡‡e"); define(-1,5,110,100,10,0,label,"ID Kl<EFBFBD><EFBFBD>e");
define(-1,5,125,100,10,0,label,"?Hodnota"); define(-1,5,125,100,10,0,label,"?Hodnota");
define(-1,5,140,100,10,0,label,"€.Ud losti"); define(-1,5,140,100,10,0,label,"<EFBFBD>.Ud<55>losti");
define(-1,5,155,100,10,0,label,"Druh"); define(-1,5,155,100,10,0,label,"Druh");
def_border(5,WINCOLOR); def_border(5,WINCOLOR);
define(40,105,80,60,12,0,input_line,7,-32767,+32767,"%6d"); define(40,105,80,60,12,0,input_line,7,-32767,+32767,"%6d");
@ -626,7 +626,7 @@ void item_edit(TITEM *it)
on_enter(string_list_sup);c_default(it->druh); on_enter(string_list_sup);c_default(it->druh);
define(-1,105,80,100,10,1,label,"Kouzlo:"); define(-1,105,80,100,10,1,label,"Kouzlo:");
define(-1,105,95,100,10,1,label,"Mana celk:"); define(-1,105,95,100,10,1,label,"Mana celk:");
define(-1,105,110,100,10,1,label,"Cena vˆci"); define(-1,105,110,100,10,1,label,"Cena v<EFBFBD>ci");
define(-1,105,125,100,10,1,label,"Poloha1(XY)"); define(-1,105,125,100,10,1,label,"Poloha1(XY)");
define(-1,105,140,100,10,1,label,"Poloha2(XY)"); define(-1,105,140,100,10,1,label,"Poloha2(XY)");
define(100,55,80,50,12,1,input_line,7,-32767,32767,"%6d");on_exit(test_int); define(100,55,80,50,12,1,input_line,7,-32767,32767,"%6d");on_exit(test_int);
@ -643,29 +643,29 @@ void item_edit(TITEM *it)
property(c,NULL,NULL,WINCOLOR);set_default(strs(it->polohy[1][0]));on_event(adjust_enter); property(c,NULL,NULL,WINCOLOR);set_default(strs(it->polohy[1][0]));on_event(adjust_enter);
define(170,5,140,45,12,1,input_line,7,-32767,32767,"%5d");on_exit(test_int); define(170,5,140,45,12,1,input_line,7,-32767,32767,"%5d");on_exit(test_int);
property(c,NULL,NULL,WINCOLOR);set_default(strs(it->polohy[1][1]));on_event(adjust_enter); property(c,NULL,NULL,WINCOLOR);set_default(strs(it->polohy[1][1]));on_event(adjust_enter);
define(175,5,155,60,20,1,button,"Zobraz");on_change(items_adjusting); define(175,5,155,60,20,1,button,"Zobraz");on_control_change(items_adjusting);
define(180,80,175,220,12,0,str_line,umisteni_veci);property(c,NULL,NULL,WINCOLOR); define(180,80,175,220,12,0,str_line,umisteni_veci);property(c,NULL,NULL,WINCOLOR);
on_enter(string_list_sup);c_default(it->umisteni); on_enter(string_list_sup);c_default(it->umisteni);
define(200,80,190,220,12,0,str_line,typy_zbrani);property(c,NULL,NULL,WINCOLOR); define(200,80,190,220,12,0,str_line,typy_zbrani);property(c,NULL,NULL,WINCOLOR);
on_enter(string_list_sup);c_default(it->typ_zbrane); on_enter(string_list_sup);c_default(it->typ_zbrane);
define(210,80,205,220,10,0,check_box,"P©i dopadu se zni‡¡"); define(210,80,205,220,10,0,check_box,"P<EFBFBD>i dopadu se zni<6E><69>");
define(220,80,217,220,10,0,check_box,"Existuje dokud je pou¡v n"); define(220,80,217,220,10,0,check_box,"Existuje dokud je pou<EFBFBD><EFBFBD>v<EFBFBD>n");
define(130,10,180,45,55,0,ikona);c_default(it->ikona); define(130,10,180,45,55,0,ikona);c_default(it->ikona);
property(c,NULL,NULL,0);on_change(change_item_ikone); property(c,NULL,NULL,0);on_control_change(change_item_ikone);
define(-1,150,25,120,12,2,label,"Obr zkov˜ script"); define(-1,150,25,120,12,2,label,"Obr<EFBFBD>zkov<EFBFBD> script");
define(190,150,10,120,12,2,str_line,vzhled_veci);property(c,NULL,NULL,WINCOLOR); define(190,150,10,120,12,2,str_line,vzhled_veci);property(c,NULL,NULL,WINCOLOR);
c_default(it->vzhled); on_enter(string_list_sup); c_default(it->vzhled); on_enter(string_list_sup);
define(-1,150,60,120,12,2,label,"Animace zbranˆ"); define(-1,150,60,120,12,2,label,"Animace zbran<EFBFBD>");
define(400,150,45,120,12,2,str_line,weapons);property(c,NULL,NULL,WINCOLOR); define(400,150,45,120,12,2,str_line,weapons);property(c,NULL,NULL,WINCOLOR);
c_default(anm); on_enter(string_list_sup);on_change(update_hitpos); c_default(anm); on_enter(string_list_sup);on_control_change(update_hitpos);
define(-1,10,45,1,12,3,label,"Hit Pos:"); define(-1,10,45,1,12,3,label,"Hit Pos:");
define(410,90,45,40,12,3,input_line,7,0,255,"%4d");on_exit(test_int); define(410,90,45,40,12,3,input_line,7,0,255,"%4d");on_exit(test_int);
property(c,NULL,NULL,WINCOLOR);set_default(strs(it->hitpos)); property(c,NULL,NULL,WINCOLOR);set_default(strs(it->hitpos));
define(300,10,35,80,20,2,button,"Ulo");property(def_border(1,0),NULL,NULL,RGB555(0,20,0));on_change(save_edited_item); define(300,10,35,80,20,2,button,"Ulo<EFBFBD>");property(def_border(1,0),NULL,NULL,RGB555(0,20,0));on_control_change(save_edited_item);
define(320,10,70,80,20,2,button,"Zvuk");property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(item_sound); define(320,10,70,80,20,2,button,"Zvuk");property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(item_sound);
define(330,10,10,80,20,2,button,"Zru¨it");property(def_border(1,0),NULL,flat_color(RGB555(31,31,31)),RGB555(20,0,0));on_change(terminate); define(330,10,10,80,20,2,button,"Zru<EFBFBD>it");property(def_border(1,0),NULL,flat_color(RGB555(31,31,31)),RGB555(20,0,0));on_control_change(terminate_gui);
define(310,10,10,80,20,3,button,"Special");property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(otevri_special); define(310,10,10,80,20,3,button,"Special");property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(otevri_special);
define(340,10,95,80,20,2,button,"Aff");property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(spell_affections); define(340,10,95,80,20,2,button,"Aff");property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(spell_affections);
define(700,0,0,0,0,0,value_store,4);c_default(it->zmeny[VLS_KOUZLA]); define(700,0,0,0,0,0,value_store,4);c_default(it->zmeny[VLS_KOUZLA]);
redraw_window(); redraw_window();
fill_bit_fields(0,210,it->flags,2); fill_bit_fields(0,210,it->flags,2);
@ -695,7 +695,7 @@ void create_ibuffer_list()
else sprintf(c,"%3d %s",i,q->jmeno); else sprintf(c,"%3d %s",i,q->jmeno);
if (str_replace(&ls_buffer,i,c)==NULL) return; if (str_replace(&ls_buffer,i,c)==NULL) return;
} }
if (i==0) str_replace(&ls_buffer,0," -1 <adn p©edmˆty>"); if (i==0) str_replace(&ls_buffer,0," -1 <<EFBFBD>adn<EFBFBD> p<>edm<64>ty>");
str_delfreelines(&ls_buffer); str_delfreelines(&ls_buffer);
} }
@ -716,7 +716,7 @@ void create_isort_list(TSTR_LIST *ls_sorts,int filter)
cc=1; cc=1;
} }
} }
if (!cc) str_replace(ls_sorts,0," -1 <adn vzory>"); if (!cc) str_replace(ls_sorts,0," -1 <<EFBFBD>adn<EFBFBD> vzory>");
str_delfreelines(ls_sorts); str_delfreelines(ls_sorts);
} }
@ -732,7 +732,7 @@ void save_items()
f=fopen(ITEMS_DAT,"wb"); f=fopen(ITEMS_DAT,"wb");
if (f==NULL) if (f==NULL)
{ {
msg_box("Chyba",'\x1',"Nemohu uloit vzory p©edmˆt","Panika",NULL); msg_box("Chyba",'\x1',"Nemohu ulo<EFBFBD>it vzory p<>edm<64>t<EFBFBD>","Panika",NULL);
return; return;
} }
save_section(f,item_list,SV_ITLIST,sizeof(TITEM)*max_items); save_section(f,item_list,SV_ITLIST,sizeof(TITEM)*max_items);
@ -817,7 +817,7 @@ void clone_item()
j=aloc_free_item(); j=aloc_free_item();
if (j==-1) if (j==-1)
{ {
msg_box("Nelze!",'\0x1',"MAPEDIT je omezen na po‡et v¨ech mon˜ch vzor ve h©e","Ok",NULL); msg_box("Nelze!",'\0x1',"MAPEDIT je omezen na po<EFBFBD>et v<>ech mo<6D>n<EFBFBD>ch vzor<6F> ve h<>e","Ok",NULL);
return; return;
} }
i=f_get_value(0,9); i=f_get_value(0,9);
@ -853,11 +853,11 @@ void delete_item_sort()
i=f_get_value(0,9); i=f_get_value(0,9);
sscanf(ls_sorts[i],"%d",&i); sscanf(ls_sorts[i],"%d",&i);
if (i<0 || i>=max_items) return; if (i<0 || i>=max_items) return;
if (msg_box("Dotaz?",'\x02',"Opravdu m ¨ v £myslu vymazat tento vzor? Je mon," if (msg_box("Dotaz?",'\x02',"Opravdu m<EFBFBD><EFBFBD> v <20>myslu vymazat tento vzor? Je mo<6D>n<EFBFBD>,"
" e na tento vzor se odvol v j¡ p©edmˆty v jin mapˆ. MAPEDIT je " " <EFBFBD>e na tento vzor se odvol<6F>v<EFBFBD>j<EFBFBD> p<>edm<64>ty v jin<69> map<61>. MAPEDIT je "
"neme vymazat, a mohou se dal¨¡ pr c¡ zmˆnit v p©edmˆt jin˜!", "nem<EFBFBD><EFBFBD>e vymazat, a mohou se dal<61><6C> pr<70>c<EFBFBD> zm<7A>nit v p<>edm<64>t jin<69>!",
"P©esto vymazat","Zru¨it",NULL)==2) return; "P<EFBFBD>esto vymazat","Zru<EFBFBD>it",NULL)==2) return;
strcpy(item_list[i].jmeno,"??? Vymaz n"); strcpy(item_list[i].jmeno,"??? Vymaz<EFBFBD>n");
while (max_items && item_list[max_items-1].jmeno[0]=='?') max_items--; while (max_items && item_list[max_items-1].jmeno[0]=='?') max_items--;
create_isort_list(&ls_sorts,grep_num); create_isort_list(&ls_sorts,grep_num);
send_message(E_GUI,9,E_CONTROL,1,ls_sorts); send_message(E_GUI,9,E_CONTROL,1,ls_sorts);
@ -899,27 +899,27 @@ void open_item_win()
default_font=vga_font; default_font=vga_font;
memcpy(f_default,flat_color(0x0000),sizeof(charcolors)); memcpy(f_default,flat_color(0x0000),sizeof(charcolors));
memcpy(&f_sel,flat_color(RGB555(0,0,24)),sizeof(charcolors)); memcpy(&f_sel,flat_color(RGB555(0,0,24)),sizeof(charcolors));
item_win=def_window(200,300,"P©edmˆty"); item_win=def_window(200,300,"P<EFBFBD>edm<EFBFBD>ty");
waktual->y=2;waktual->x=SCR_WIDTH_X-20-160-3; waktual->y=2;waktual->x=SCR_WIDTH_X-20-160-3;
waktual->minsizx=120; waktual->minsizx=120;
waktual->minsizy=100; waktual->minsizy=100;
on_change(close_current); on_control_change(close_current);
define(9,5,20,170,240,0,listbox,ls_buffer,RGB555(31,31,0),0);c_default(0); define(9,5,20,170,240,0,listbox,ls_buffer,RGB555(31,31,0),0);c_default(0);
property(&b2,NULL,&f_sel,WINCOLOR); property(&b2,NULL,&f_sel,WINCOLOR);
o_end->autoresizex=1; o_end->autoresizex=1;
o_end->autoresizey=1; o_end->autoresizey=1;
define(10,3,41,19,198,1,scroll_bar_v,0,10,1,SCROLLBARCOL); define(10,3,41,19,198,1,scroll_bar_v,0,10,1,SCROLLBARCOL);
property(&b2,NULL,NULL,WINCOLOR);on_change(scroll_support); property(&b2,NULL,NULL,WINCOLOR);on_control_change(scroll_support);
o_end->autoresizey=1; o_end->autoresizey=1;
define(11,3,20,19,19,1,scroll_button,-1,0,"\x1e"); define(11,3,20,19,19,1,scroll_button,-1,0,"\x1e");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(12,3,40,19,19,2,scroll_button,1,10,"\x1f"); define(12,3,40,19,19,2,scroll_button,1,10,"\x1f");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(20,3,1,10,10,2,resizer); define(20,3,1,10,10,2,resizer);
define(30,5,10,50,20,3,button,"P©ekr."); define(30,5,10,50,20,3,button,"P<EFBFBD>ekr.");
property(&b1,NULL,NULL,WINCOLOR);on_change(refresh_itm); property(&b1,NULL,NULL,WINCOLOR);on_control_change(refresh_itm);
define(30,60,10,50,20,3,button,"Vyma"); define(30,60,10,50,20,3,button,"Vyma<EFBFBD>");
property(&b1,NULL,NULL,WINCOLOR);on_change(it_kos); property(&b1,NULL,NULL,WINCOLOR);on_control_change(it_kos);
movesize_win(waktual,waktual->x,waktual->y,waktual->xs,150); movesize_win(waktual,waktual->x,waktual->y,waktual->xs,150);
redraw_window(); redraw_window();
@ -934,7 +934,7 @@ void umisti_item()
if (selected_place==-1) if (selected_place==-1)
{ {
msg_box("Nic nen¡ vybr no",'\x01',"Nejd©¡ve klikni my¨¡ na mapˆ, na m¡sto kam chce¨ p©edmˆt um¡stit","Ok",NULL); msg_box("Nic nen<EFBFBD> vybr<62>no",'\x01',"Nejd<EFBFBD><EFBFBD>ve klikni my<6D><79> na map<61>, na m<>sto kam chce<63> p<>edm<64>t um<75>stit","Ok",NULL);
return; return;
} }
i=f_get_value(0,9); i=f_get_value(0,9);
@ -942,7 +942,7 @@ void umisti_item()
for(j=0;j<ITEM_BUFFER && item_buffer[j];j++); for(j=0;j<ITEM_BUFFER && item_buffer[j];j++);
if (j==ITEM_BUFFER) if (j==ITEM_BUFFER)
{ {
msg_box("Omezeni.",' ',"MAPEDIT omezil po‡et p©edmˆt na jednom poli‡ku. Dal¨¡ ji nelze vloit","Ok",NULL); msg_box("Omezeni.",' ',"MAPEDIT omezil po<EFBFBD>et p<>edm<64>t<EFBFBD> na jednom poli<6C>ku. Dal<61><6C> ji<6A> nelze vlo<6C>it","Ok",NULL);
return; return;
} }
item_buffer[j]=i+1; item_buffer[j]=i+1;
@ -970,7 +970,7 @@ void vloz_do_item()
void inv_testmap() void inv_testmap()
{ {
if (selected_place<0) if (selected_place<0)
msg_box("Nic nen¡ vybr no",'\x01',"Nejd©¡ve klikni my¨¡ na mapˆ, na m¡sto kde chce¨ za‡¡t","Ok",NULL); msg_box("Nic nen<EFBFBD> vybr<62>no",'\x01',"Nejd<EFBFBD><EFBFBD>ve klikni my<6D><79> na map<61>, na m<>sto kde chce<63> za<7A><61>t","Ok",NULL);
else else
call_testmap(selected_place/4); call_testmap(selected_place/4);
} }
@ -1007,35 +1007,35 @@ void editor_vzoru()
vzor_win=def_window(200,370,"Vzory"); vzor_win=def_window(200,370,"Vzory");
waktual->minsizx=130; waktual->minsizx=130;
waktual->minsizy=170; waktual->minsizy=170;
on_change(close_current); on_control_change(close_current);
define(9,5,20,170,240,0,listbox,ls_sorts,RGB555(31,31,0),0);c_default(0); define(9,5,20,170,240,0,listbox,ls_sorts,RGB555(31,31,0),0);c_default(0);
property(&b2,NULL,&f_sel,WINCOLOR); property(&b2,NULL,&f_sel,WINCOLOR);
o_end->autoresizex=1; o_end->autoresizex=1;
o_end->autoresizey=1; o_end->autoresizey=1;
define(10,3,41,19,198,1,scroll_bar_v,0,10,1,SCROLLBARCOL); define(10,3,41,19,198,1,scroll_bar_v,0,10,1,SCROLLBARCOL);
property(&b2,NULL,NULL,WINCOLOR);on_change(scroll_support); property(&b2,NULL,NULL,WINCOLOR);on_control_change(scroll_support);
o_end->autoresizey=1; o_end->autoresizey=1;
define(11,3,20,19,19,1,scroll_button,-1,0,"\x1e"); define(11,3,20,19,19,1,scroll_button,-1,0,"\x1e");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(12,3,110,19,19,2,scroll_button,1,10,"\x1f"); define(12,3,110,19,19,2,scroll_button,1,10,"\x1f");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(20,3,1,10,10,2,resizer); define(20,3,1,10,10,2,resizer);
define(30,5,35,50,20,3,button,"Vyma");on_change(delete_item_sort); define(30,5,35,50,20,3,button,"Vyma<EFBFBD>");on_control_change(delete_item_sort);
property(&b1,NULL,NULL,WINCOLOR); property(&b1,NULL,NULL,WINCOLOR);
define(40,5,60,50,20,3,button,"Klonuj");on_change(clone_item); define(40,5,60,50,20,3,button,"Klonuj");on_control_change(clone_item);
property(&b1,NULL,NULL,WINCOLOR); property(&b1,NULL,NULL,WINCOLOR);
define(50,5,85,50,20,3,button,"Oprav");on_change(edit_selected_item); define(50,5,85,50,20,3,button,"Oprav");on_control_change(edit_selected_item);
property(&b1,NULL,NULL,WINCOLOR); property(&b1,NULL,NULL,WINCOLOR);
define(60,10,35,60,20,2,button,"Um¡stit");on_change(umisti_item); define(60,10,35,60,20,2,button,"Um<EFBFBD>stit");on_control_change(umisti_item);
property(&b1,NULL,NULL,WINCOLOR); property(&b1,NULL,NULL,WINCOLOR);
define(70,10,60,60,20,2,button,"Vlo do");on_change(vloz_do_item); define(70,10,60,60,20,2,button,"Vlo<EFBFBD> do");on_control_change(vloz_do_item);
property(&b1,NULL,NULL,WINCOLOR); property(&b1,NULL,NULL,WINCOLOR);
define(80,10,85,60,20,2,button,"Test");on_change(inv_testmap); define(80,10,85,60,20,2,button,"Test");on_control_change(inv_testmap);
property(&b1,NULL,NULL,WINCOLOR); property(&b1,NULL,NULL,WINCOLOR);
define(90,5,10,170,12,3,str_line,typy_veci);c_default(grep_num>-1?grep_num:0); define(90,5,10,170,12,3,str_line,typy_veci);c_default(grep_num>-1?grep_num:0);
property(&b2,NULL,&f_sel,WINCOLOR);on_enter(string_list_sup);on_change(change_grep); property(&b2,NULL,&f_sel,WINCOLOR);on_enter(string_list_sup);on_control_change(change_grep);
o_end->autoresizex=1; o_end->autoresizex=1;
define(100,10,10,10,10,2,check_box,"");c_default(grep_num>-1);on_change(change_grep); define(100,10,10,10,10,2,check_box,"");c_default(grep_num>-1);on_control_change(change_grep);
movesize_win(waktual,waktual->x,160,waktual->xs,SCR_WIDTH_Y-20-160); movesize_win(waktual,waktual->x,160,waktual->xs,SCR_WIDTH_Y-20-160);
redraw_window(); redraw_window();
} }
@ -1198,7 +1198,7 @@ void re_build_shop_list(TSTR_LIST *ls,TSHOP *p, int count)
str_add(ls,s); str_add(ls,s);
p++; p++;
} }
str_add(ls,"<nov˜ obchod>"); str_add(ls,"<nov<EFBFBD> obchod>");
} }
@ -1218,7 +1218,7 @@ void re_build_item_list(TSTR_LIST *ls,TPRODUCT *p,int count)
*ls=create_list(16); *ls=create_list(16);
if (!count || p==NULL) if (!count || p==NULL)
{ {
str_add(ls,"< dn˜ p©edmˆt>"); str_add(ls,"<<EFBFBD><EFBFBD>dn<EFBFBD> p<>edm<64>t>");
return; return;
} }
while (count--) while (count--)
@ -1229,7 +1229,7 @@ void re_build_item_list(TSTR_LIST *ls,TPRODUCT *p,int count)
d=p->item; d=p->item;
if (p->trade_flags & SHP_TYPE) if (p->trade_flags & SHP_TYPE)
sprintf(s,"typ: <%s>",typy_veci[d]); sprintf(s,"typ: <%s>",typy_veci[d]);
else if (d>=max_items) strcpy(s,"<p©edmˆt vymaz n!>"); else if (d>=max_items) strcpy(s,"<p<EFBFBD>edm<EFBFBD>t vymaz<61>n!>");
else else
sprintf(s,"%c%c%c%c %s (%d)",(p->trade_flags & SHP_SELL?'P':219), sprintf(s,"%c%c%c%c %s (%d)",(p->trade_flags & SHP_SELL?'P':219),
(p->trade_flags & SHP_BUY?'N':219), (p->trade_flags & SHP_BUY?'N':219),
@ -1270,17 +1270,17 @@ static void close_edit_shop()
p->spec_max=vals(230); p->spec_max=vals(230);
if (s[0]==0) if (s[0]==0)
{ {
msg_box("Editor obchod",'\x1',"Obchod mus¡ m¡t svho prodava‡e (shopkeeppera). Obchod bude ozna‡en jako smazan˜.","Ok",NULL); msg_box("Editor obchod<EFBFBD>",'\x1',"Obchod mus<EFBFBD> m<>t sv<73>ho prodava<76>e (shopkeeppera). Obchod bude ozna<6E>en jako smazan<61>.","Ok",NULL);
strcpy(s,"*vymaz n*"); strcpy(s,"*vymaz<EFBFBD>n*");
} }
if (s[0]=='<') if (s[0]=='<')
{ {
msg_box("Editor obchod",'\x1',"Obchodn¡k m  neplatn jmno","Ok",NULL); msg_box("Editor obchod<EFBFBD>",'\x1',"Obchodn<EFBFBD>k m<> neplatn<74> jm<6A>no","Ok",NULL);
return; return;
} }
strcpy(p->keeper,s); strcpy(p->keeper,s);
if (!p->products && s[0]!='*') if (!p->products && s[0]!='*')
msg_box("Editor obchod",'\x1',"S ni‡¡m se neobchoduje. Nejsou definov ny  dn produkty. Tato situace me vst ke krachu hry!","Beru na vˆdom¡",NULL); msg_box("Editor obchod<EFBFBD>",'\x1',"S ni<EFBFBD><EFBFBD>m se neobchoduje. Nejsou definov<6F>ny <20><>dn<64> produkty. Tato situace m<><6D>e v<>st ke krachu hry!","Beru na v<>dom<6F>",NULL);
send_message(E_GUI,9,E_CONTROL,0,&ls); send_message(E_GUI,9,E_CONTROL,0,&ls);
release_list(ls); release_list(ls);
close_current(); close_current();
@ -1428,42 +1428,42 @@ void edit_shop(int i)
re_build_item_list(&ls,shp->list,shp->products); re_build_item_list(&ls,shp->list,shp->products);
memcpy(&ctl1,def_border(1,0),sizeof(ctl1)); memcpy(&ctl1,def_border(1,0),sizeof(ctl1));
memcpy(&ctl2,def_border(2,WINCOLOR),sizeof(ctl2)); memcpy(&ctl2,def_border(2,WINCOLOR),sizeof(ctl2));
def_window(400,300,"Editor obchod"); def_window(400,300,"Editor obchod<EFBFBD>");
on_change(close_edit_shop); on_control_change(close_edit_shop);
define(500,0,0,0,0,0,value_store,4);c_default(i); define(500,0,0,0,0,0,value_store,4);c_default(i);
define(9,10,20,200,166,0,listbox,ls,RGB555(31,31,31),0); define(9,10,20,200,166,0,listbox,ls,RGB555(31,31,31),0);
property(&ctl1,NULL,NULL,WINCOLOR);c_default(0);on_change(show_selected); property(&ctl1,NULL,NULL,WINCOLOR);c_default(0);on_control_change(show_selected);
define(10,217,40,19,127,0,scroll_bar_v,0,10,1,SCROLLBARCOL); define(10,217,40,19,127,0,scroll_bar_v,0,10,1,SCROLLBARCOL);
property(&ctl1,NULL,NULL,WINCOLOR); property(&ctl1,NULL,NULL,WINCOLOR);
define(11,216,20,21,17,0,scroll_button,-1,0,"\x1e"); define(11,216,20,21,17,0,scroll_button,-1,0,"\x1e");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(12,216,170,21,17,0,scroll_button,1,10,"\x1f"); define(12,216,170,21,17,0,scroll_button,1,10,"\x1f");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(20,75,30,60,20,1,button,"Voit");property(&ctl1,NULL,NULL,WINCOLOR);on_change(add_item); define(20,75,30,60,20,1,button,"Vo<EFBFBD>it");property(&ctl1,NULL,NULL,WINCOLOR);on_control_change(add_item);
define(60,75,55,60,20,1,button,"P©epsat");property(&ctl1,NULL,NULL,WINCOLOR);on_change(rewrite_item); define(60,75,55,60,20,1,button,"P<EFBFBD>epsat");property(&ctl1,NULL,NULL,WINCOLOR);on_control_change(rewrite_item);
define(30,10,30,60,20,1,button,"Typ");property(&ctl1,NULL,NULL,WINCOLOR);on_change(add_type); define(30,10,30,60,20,1,button,"Typ");property(&ctl1,NULL,NULL,WINCOLOR);on_control_change(add_type);
define(40,10,55,60,20,1,button,"Odebrat");property(&ctl1,NULL,NULL,WINCOLOR);on_change(remove_item); define(40,10,55,60,20,1,button,"Odebrat");property(&ctl1,NULL,NULL,WINCOLOR);on_control_change(remove_item);
define(50,10,10,80,20,2,button,"Zav©¡t");property(&ctl1,NULL,NULL,WINCOLOR);on_change(close_edit_shop); define(50,10,10,80,20,2,button,"Zav<EFBFBD><EFBFBD>t");property(&ctl1,NULL,NULL,WINCOLOR);on_control_change(close_edit_shop);
define(100,10,80,150,12,1,str_line,shop_items);property(&ctl2,NULL,NULL,WINCOLOR); define(100,10,80,150,12,1,str_line,shop_items);property(&ctl2,NULL,NULL,WINCOLOR);
c_default(0); on_enter(string_list_sup);on_change(zjisti_cenu); c_default(0); on_enter(string_list_sup);on_control_change(zjisti_cenu);
define(-1,155,100,1,1,1,label,"Cena:"); define(-1,155,100,1,1,1,label,"Cena:");
define(110,10,100,90,12,1,input_line,10,0,9999999,"%7d");property(&ctl2,NULL,NULL,WINCOLOR); define(110,10,100,90,12,1,input_line,10,0,9999999,"%7d");property(&ctl2,NULL,NULL,WINCOLOR);
set_default(strs(item_list[0].cena));on_exit(test_int); set_default(strs(item_list[0].cena));on_exit(test_int);
define(-1,155,120,1,1,1,label,"Poet:"); define(-1,155,120,1,1,1,label,"Po<EFBFBD>et:");
define(120,10,120,90,12,1,input_line,10,-1,9999999,"%7d");property(&ctl2,NULL,NULL,WINCOLOR); define(120,10,120,90,12,1,input_line,10,-1,9999999,"%7d");property(&ctl2,NULL,NULL,WINCOLOR);
set_default(strs(1));on_exit(test_int); set_default(strs(1));on_exit(test_int);
define(130,10,135,150,10,1,check_box,"Prod vat");c_default(1); define(130,10,135,150,10,1,check_box,"Prod<EFBFBD>vat");c_default(1);
define(140,10,147,150,10,1,check_box,"Nakupovat");c_default(0); define(140,10,147,150,10,1,check_box,"Nakupovat");c_default(0);
define(150,10,159,150,10,1,check_box,"Zbo‘¡ p©ib˜v ");c_default(0); define(150,10,159,150,10,1,check_box,"Zbo<EFBFBD><EFBFBD> p<>ib<69>v<EFBFBD>");c_default(0);
define(160,10,171,150,10,1,check_box,"Nen¡ vdy na skladˆ");c_default(0); define(160,10,171,150,10,1,check_box,"Nen<EFBFBD> v<>dy na sklad<61>");c_default(0);
define(-1,10,200,1,1,0,label,"Shopkeeper:"); define(-1,10,200,1,1,0,label,"Shopkeeper:");
define(200,100,200,200,12,0,input_line,15);set_default(shp->keeper);property(&ctl2,NULL,NULL,WINCOLOR); define(200,100,200,200,12,0,input_line,15);set_default(shp->keeper);property(&ctl2,NULL,NULL,WINCOLOR);
define(-1,10,220,1,1,0,label,"Obr zek:"); define(-1,10,220,1,1,0,label,"Obr<EFBFBD>zek:");
define(210,100,220,100,12,0,input_line,12);set_default(shp->picture);property(&ctl2,NULL,NULL,WINCOLOR); define(210,100,220,100,12,0,input_line,12);set_default(shp->picture);property(&ctl2,NULL,NULL,WINCOLOR);
define(215,220,218,80,14,0,button,"Nalistuj");property(&ctl1,NULL,NULL,WINCOLOR);on_change(browse_dialogs); define(215,220,218,80,14,0,button,"Nalistuj");property(&ctl1,NULL,NULL,WINCOLOR);on_control_change(browse_dialogs);
define(-1,10,240,1,1,0,label,"Rozptyl cen +/- [%]"); define(-1,10,240,1,1,0,label,"Rozptyl cen +/- [%]");
define(220,150,240,60,12,0,input_line,6,0,100,"%5d");set_default(strs(shp->koef));on_exit(test_int);property(&ctl2,NULL,NULL,WINCOLOR); define(220,150,240,60,12,0,input_line,6,0,100,"%5d");set_default(strs(shp->koef));on_exit(test_int);property(&ctl2,NULL,NULL,WINCOLOR);
define(-1,220,240,1,1,0,label,"Poet spec:"); define(-1,220,240,1,1,0,label,"Po<EFBFBD>et spec:");
define(230,320,240,60,12,0,input_line,6,0,100,"%5d");set_default(strs(shp->spec_max));on_exit(test_int);property(&ctl2,NULL,NULL,WINCOLOR); define(230,320,240,60,12,0,input_line,6,0,100,"%5d");set_default(strs(shp->spec_max));on_exit(test_int);property(&ctl2,NULL,NULL,WINCOLOR);
{ {
char s[50]; char s[50];
@ -1482,7 +1482,7 @@ static void close_shop_list()
send_message(E_GUI,9,E_CONTROL,0,&ls); send_message(E_GUI,9,E_CONTROL,0,&ls);
for(i=0;i<max_shops;i++) if (shopstate[i]==1) for(i=0;i<max_shops;i++) if (shopstate[i]==1)
{ {
msg_box("Toto okno nelze uzav©¡t!",'\x1',"Program ‡ek  na dokon‡en¡ prace v nˆkterm z pod©¡zen˜ch oken","Ok",NULL); msg_box("Toto okno nelze uzav<EFBFBD><EFBFBD>t!",'\x1',"Program <EFBFBD>ek<EFBFBD> na dokon<6F>en<65> prace v n<>kter<65>m z pod<6F><64>zen<65>ch oken","Ok",NULL);
return; return;
} }
for(i=0;i<max_shops;) for(i=0;i<max_shops;)
@ -1523,7 +1523,7 @@ void open_shop_editor()
if (ls[i]==NULL) return; if (ls[i]==NULL) return;
if (shopstate[i]==1) if (shopstate[i]==1)
{ {
msg_box("Seznam obchod",'\x1',"Tento obchod je ji opravov n v jinm oknˆ. Nelze jej znovu otev©¡t","Ok",NULL); msg_box("Seznam obchod<EFBFBD>",'\x1',"Tento obchod je ji<EFBFBD> opravov<6F>n v jin<69>m okn<6B>. Nelze jej znovu otev<65><76>t","Ok",NULL);
return; return;
} }
shopstate[i]=1; shopstate[i]=1;
@ -1545,12 +1545,12 @@ static void erase_shop()
if (ls[i]==NULL) return; if (ls[i]==NULL) return;
if (ls[i][0]=='<') if (ls[i][0]=='<')
{ {
msg_box("Seznam obchod",'\x1',"Tento obchod je opravov n v jinm oknˆ. Nelze jej vymazat","Ok",NULL); msg_box("Seznam obchod<EFBFBD>",'\x1',"Tento obchod je opravov<EFBFBD>n v jin<69>m okn<6B>. Nelze jej vymazat","Ok",NULL);
return; return;
} }
if (msg_box("Vymazat obchod?",'\x2',"Opravdu chce¨ vymazat obchod?","Ano","Ne",NULL)==2) return; if (msg_box("Vymazat obchod?",'\x2',"Opravdu chce<EFBFBD> vymazat obchod?","Ano","Ne",NULL)==2) return;
p=shop_list+i; p=shop_list+i;
strcpy(p->keeper,"*vymaz n*"); strcpy(p->keeper,"*vymaz<EFBFBD>n*");
re_build_shop_list(&ls,shop_list,max_shops); re_build_shop_list(&ls,shop_list,max_shops);
send_message(E_GUI,9,E_CONTROL,1,ls); send_message(E_GUI,9,E_CONTROL,1,ls);
} }
@ -1570,18 +1570,18 @@ void open_shop_list()
ls_sorts=NULL; ls_sorts=NULL;
re_build_shop_list(&ls,shop_list,max_shops); re_build_shop_list(&ls,shop_list,max_shops);
memcpy(&ctl1,def_border(1,0),sizeof(ctl1)); memcpy(&ctl1,def_border(1,0),sizeof(ctl1));
shop_window=def_window(250,220,"Seznam obchod"); shop_window=def_window(250,220,"Seznam obchod<EFBFBD>");
on_change(close_shop_list); on_control_change(close_shop_list);
define(9,10,20,200,166,0,listbox,ls,RGB555(31,31,31),0); define(9,10,20,200,166,0,listbox,ls,RGB555(31,31,31),0);
property(&ctl1,NULL,NULL,WINCOLOR);c_default(0);//on_change(edit_shop_item); property(&ctl1,NULL,NULL,WINCOLOR);c_default(0);//on_change(edit_shop_item);
define(10,217,40,19,127,0,scroll_bar_v,0,10,1,SCROLLBARCOL); define(10,217,40,19,127,0,scroll_bar_v,0,10,1,SCROLLBARCOL);
property(&ctl1,NULL,NULL,WINCOLOR); property(&ctl1,NULL,NULL,WINCOLOR);
define(11,216,20,21,17,0,scroll_button,-1,0,"\x1e"); define(11,216,20,21,17,0,scroll_button,-1,0,"\x1e");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(12,216,170,21,17,0,scroll_button,1,10,"\x1f"); define(12,216,170,21,17,0,scroll_button,1,10,"\x1f");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(200,5,5,70,20,3,button,"Oprava");on_change(open_shop_editor);property(&ctl1,NULL,NULL,WINCOLOR); define(200,5,5,70,20,3,button,"Oprava");on_control_change(open_shop_editor);property(&ctl1,NULL,NULL,WINCOLOR);
define(210,80,5,70,20,3,button,"Vymazat");on_change(erase_shop);property(&ctl1,NULL,NULL,WINCOLOR); define(210,80,5,70,20,3,button,"Vymazat");on_control_change(erase_shop);property(&ctl1,NULL,NULL,WINCOLOR);
movesize_win(waktual,10,10,250,220); movesize_win(waktual,10,10,250,220);
} }
else select_window(shop_window); else select_window(shop_window);
@ -1618,7 +1618,7 @@ void save_shop(TSHOP *p,FILE *f)
{ {
char s[300]; char s[300];
sprintf(s,"Duplicitn¡ p©edmˆt v definici v obchodu '%s'. Soubor obchodu bude uloen, ale vlastn¡ hra me na tomto p©edmˆtu zkrachovat!",p->keeper); sprintf(s,"Duplicitn<EFBFBD> p<>edm<64>t v definici v obchodu '%s'. Soubor obchodu bude ulo<6C>en, ale vlastn<74> hra m<><6D>e na tomto p<>edm<64>tu zkrachovat!",p->keeper);
msg_box("Shop edit",'\x1',s,"Ok",NULL); msg_box("Shop edit",'\x1',s,"Ok",NULL);
typs++; typs++;
} }

View file

@ -46,10 +46,10 @@ word icone_color[7]={RGB555(8,8,8),RGB555(31,31,31),RGB555(0,0,15),RGB555(16,16,
extern word sipka; extern word sipka;
static char *error_texts[]= static char *error_texts[]=
{ {
"Progamov  chyba", "Progamov<EFBFBD> chyba",
"Pr vˆ bˆ¡c¡ ud lost zpsobila neplatnou referenci pamˆŸi!", "Pr<EFBFBD>v<EFBFBD> b<><62><EFBFBD>c<EFBFBD> ud<75>lost zp<7A>sobila neplatnou referenci pam<61><6D>i!",
"Pr vˆ bˆ¡c¡ ud lost zpsobila zpracov n¡ neplatn instrukce!", "Pr<EFBFBD>v<EFBFBD> b<><62><EFBFBD>c<EFBFBD> ud<75>lost zp<7A>sobila zpracov<6F>n<EFBFBD> neplatn<74> instrukce!",
"Systm zachytil neo‡ek vanou chybu programu!" "Syst<EFBFBD>m zachytil neo<65>ek<65>vanou chybu programu!"
}; };
static char ask_exit_status; static char ask_exit_status;
@ -123,7 +123,7 @@ EVENT_PROC(exit_key)
WHEN_MSG(E_KEYBOARD) WHEN_MSG(E_KEYBOARD)
{ {
c=GET_DATA(int); c=GET_DATA(int);
if ((c & 0xff)==0 && (c>>8)=='D') terminate(); if ((c & 0xff)==0 && (c>>8)=='D') terminate_gui();
if ((c & 0xff)==0 && (c>>8)==';') about(); if ((c & 0xff)==0 && (c>>8)==';') about();
if ((c & 0xff)==0 && (c>>8)=='?') save_dump(); if ((c & 0xff)==0 && (c>>8)=='?') save_dump();
if ((c & 0xff)==0 && (c>>8)=='<') movesize_test(); if ((c & 0xff)==0 && (c>>8)=='<') movesize_test();
@ -141,7 +141,7 @@ EVENT_PROC(wait_ms_key)
WHEN_MSG(E_MOUSE) WHEN_MSG(E_MOUSE)
{ {
ms=get_mouse(GET_MSG_VAR()); ms=get_mouse(GET_MSG_VAR());
if (ms->event_type & 4) terminate(); if (ms->event_type & 4) terminate_gui();
} }
} }
@ -281,7 +281,7 @@ void prg_error(EVENT_MSG *msg,void **unused)
} }
zobraz_mysku(); zobraz_mysku();
showview(0,0,0,0); showview(0,0,0,0);
*err=2-msg_box(error_texts[0],' ',c,"Ignoruj","Konec","Ulo mapu",NULL); *err=2-msg_box(error_texts[0],' ',c,"Ignoruj","Konec","Ulo<EFBFBD> mapu",NULL);
if (*err==-1) save_all_map(); if (*err==-1) save_all_map();
} }
} }
@ -399,7 +399,7 @@ long def_window(word xs,word ys,char *name)
if (xs>=70) if (xs>=70)
{ {
define(1,1,1,19,16,1,button,"\x0f"); define(1,1,1,19,16,1,button,"\x0f");
property(NULL,icones,&icone_color,WINCOLOR);on_change(close_test); property(NULL,icones,&icone_color,WINCOLOR);on_control_change(close_test);
} }
return q; return q;
} }
@ -465,14 +465,14 @@ void about()
define(-1,5,25,29,29,0,dtext,"\x8");property(NULL,icones,&c,WINCOLOR); define(-1,5,25,29,29,0,dtext,"\x8");property(NULL,icones,&c,WINCOLOR);
define(-1,75,25,100,29,0,dtext,"MAPEDIT");property(NULL,NULL,&c2,WINCOLOR); define(-1,75,25,100,29,0,dtext,"MAPEDIT");property(NULL,NULL,&c2,WINCOLOR);
define(-1,200,35,60,29,0,label,"verze 2.0");property(NULL,NULL,&c3,WINCOLOR); define(-1,200,35,60,29,0,label,"verze 2.0");property(NULL,NULL,&c3,WINCOLOR);
define(-1,20,80,200,10,0,label,"Naps no pro hru \"Br ny Skeldalu\""); define(-1,20,80,200,10,0,label,"Naps<EFBFBD>no pro hru \"Br<EFBFBD>ny Skeldalu\"");
define(-1,20,92,200,10,0,label,"(C) 1997 Napoleon gameS "); define(-1,20,92,200,10,0,label,"(C) 1997 Napoleon gameS ");
define(-1,20,104,200,10,0,label,"Naprogamoval: Ond©ej Nov k "); define(-1,20,104,200,10,0,label,"Naprogamoval: Ond<EFBFBD>ej Nov<6F>k ");
define(-1,20,116,200,10,0,label,"Tento software sm¡ b˜t pouit jen"); define(-1,20,116,200,10,0,label,"Tento software sm<EFBFBD> b<>t pou<6F>it jen");
define(-1,20,128,200,10,0,label,"ve spojen¡ s v˜vojem hry \"Br ny"); define(-1,20,128,200,10,0,label,"ve spojen<EFBFBD> s v<>vojem hry \"Br<EFBFBD>ny");
define(-1,20,140,200,10,0,label,"Skeldalu\" (a p©¡padn dal¨¡ verze)"); define(-1,20,140,200,10,0,label,"Skeldalu\" (a p<EFBFBD><EFBFBD>padn<EFBFBD> dal<61><6C> verze)");
define(-1,20,152,200,10,0,label,"a to pouze ‡leny v˜vojovho t˜mu."); define(-1,20,152,200,10,0,label,"a to pouze <EFBFBD>leny v<>vojov<6F>ho t<>mu.");
define(10,110,170,80,20,0,button,"Ok");on_change(close_test); define(10,110,170,80,20,0,button,"Ok");on_control_change(close_test);
} }
else select_window(about_win); else select_window(about_win);
redraw_window(); redraw_window();
@ -500,7 +500,7 @@ void close_app(void)
desktop_add_window(w); desktop_add_window(w);
define(-1,0,0,mx,my,0,fog_bar);property(NULL,NULL,NULL,RGB555(16,0,0)); define(-1,0,0,mx,my,0,fog_bar);property(NULL,NULL,NULL,RGB555(16,0,0));
redraw_desktop(); redraw_desktop();
if ((ask_exit_status=msg_box("Dotaz?",'\x2',"Chce¨ program ukon‡it, nebo nahr t jinou mapu?","Jinou mapu","Ukonit","Ne",NULL))!=3) terminate(); if ((ask_exit_status=msg_box("Dotaz?",'\x2',"Chce<EFBFBD> program ukon<6F>it, nebo nahr<68>t jinou mapu?","Jinou mapu","Ukon<EFBFBD>it","Ne",NULL))!=3) terminate_gui();
close_window(w); close_window(w);
do_events(); do_events();
} }
@ -563,11 +563,11 @@ void open_editor_win()
if (find_window(editor_win)==NULL) if (find_window(editor_win)==NULL)
{ {
editor_win=def_window(100,150,"Editory"); editor_win=def_window(100,150,"Editory");
define(10,10,25,80,20,0,button,"map script");on_change(edit_script_file); define(10,10,25,80,20,0,button,"map script");on_control_change(edit_script_file);
define(20,10,50,80,20,0,button,"map texty");on_change(edit_script_file); define(20,10,50,80,20,0,button,"map texty");on_control_change(edit_script_file);
define(30,10,75,80,20,0,button,"items.scr");on_change(edit_script_file); define(30,10,75,80,20,0,button,"items.scr");on_control_change(edit_script_file);
define(40,10,100,80,20,0,button,"items.pic");on_change(edit_script_file); define(40,10,100,80,20,0,button,"items.pic");on_control_change(edit_script_file);
define(50,10,125,80,20,0,button,"animator");on_change(call_animator); define(50,10,125,80,20,0,button,"animator");on_control_change(call_animator);
redraw_window(); redraw_window();
} }
else else
@ -583,27 +583,27 @@ void create_menu(void)
menu_win=def_window(400,150,"Map Edit v2.0 for Windows - " MAPEDIT_VERSION ); menu_win=def_window(400,150,"Map Edit v2.0 for Windows - " MAPEDIT_VERSION );
waktual->x=120; waktual->x=120;
waktual->y=250; waktual->y=250;
on_change(close_app); on_control_change(close_app);
curcolor=WINCOLOR; curcolor=WINCOLOR;
default_font=icones; default_font=icones;
define(10,5,25,29,29,0,button,"\x8");property(NULL,NULL,&c,WINCOLOR);on_change(edit_basic_maze); define(10,5,25,29,29,0,button,"\x8");property(NULL,NULL,&c,WINCOLOR);on_control_change(edit_basic_maze);
define(20,5,55,29,29,0,button,"\x9");property(NULL,NULL,&c,WINCOLOR);on_change(editor_veci); define(20,5,55,29,29,0,button,"\x9");property(NULL,NULL,&c,WINCOLOR);on_control_change(editor_veci);
define(30,5,85,29,29,0,button,"\xA");property(NULL,NULL,&c,WINCOLOR);on_change(enemy_window); define(30,5,85,29,29,0,button,"\xA");property(NULL,NULL,&c,WINCOLOR);on_control_change(enemy_window);
c[1]=RGB555(20,0,0);c[2]=RGB555(0,0,16); c[1]=RGB555(20,0,0);c[2]=RGB555(0,0,16);
define(40,200,25,29,29,0,button,"e");property(NULL,NULL,&c,WINCOLOR);on_change(shop_train_edit); define(40,200,25,29,29,0,button,"e");property(NULL,NULL,&c,WINCOLOR);on_control_change(shop_train_edit);
c[1]=RGB555(31,31,31);c[2]=RGB555(24,24,24); c[1]=RGB555(31,31,31);c[2]=RGB555(24,24,24);
c[3]=RGB555(20,0,0);c[4]=RGB555(0,0,16); c[3]=RGB555(20,0,0);c[4]=RGB555(0,0,16);
define(50,200,55,29,29,0,button,"E");property(NULL,NULL,&c,WINCOLOR);on_change(open_editor_win); define(50,200,55,29,29,0,button,"E");property(NULL,NULL,&c,WINCOLOR);on_control_change(open_editor_win);
define(60,200,85,29,29,0,button,"S");property(NULL,NULL,&c,WINCOLOR);on_change(save_all_map); define(60,200,85,29,29,0,button,"S");property(NULL,NULL,&c,WINCOLOR);on_control_change(save_all_map);
define(70,5,115,29,29,0,button,"P");property(NULL,NULL,&c,WINCOLOR);on_change(pcxviewer); define(70,5,115,29,29,0,button,"P");property(NULL,NULL,&c,WINCOLOR);on_control_change(pcxviewer);
memcpy(c,flat_color(RGB555(0,0,15)),sizeof(FC_TABLE)); memcpy(c,flat_color(RGB555(0,0,15)),sizeof(FC_TABLE));
define(-1,45,35,90,20,0,label,"Kreslen¡ mapy");property(NULL,vga_font,&c,WINCOLOR); define(-1,45,35,90,20,0,label,"Kreslen<EFBFBD> mapy");property(NULL,vga_font,&c,WINCOLOR);
define(-1,45,65,90,20,0,label,"Pokl d n¡ p©edmˆt");property(NULL,vga_font,&c,WINCOLOR); define(-1,45,65,90,20,0,label,"Pokl<EFBFBD>d<EFBFBD>n<EFBFBD> p<>edm<64>t<EFBFBD>");property(NULL,vga_font,&c,WINCOLOR);
define(-1,45,95,90,20,0,label,"Um¡sŸov n¡ nestvr");property(NULL,vga_font,&c,WINCOLOR); define(-1,45,95,90,20,0,label,"Um<EFBFBD>s<EFBFBD>ov<EFBFBD>n<EFBFBD> nestv<74>r");property(NULL,vga_font,&c,WINCOLOR);
define(-1,240,35,90,20,0,label,"Obchody");property(NULL,vga_font,&c,WINCOLOR); define(-1,240,35,90,20,0,label,"Obchody");property(NULL,vga_font,&c,WINCOLOR);
define(-1,240,65,90,20,0,label,"Editor script");property(NULL,vga_font,&c,WINCOLOR); define(-1,240,65,90,20,0,label,"Editor script<EFBFBD>");property(NULL,vga_font,&c,WINCOLOR);
define(-1,240,95,90,20,0,label,"Uloen¡ mapy");property(NULL,vga_font,&c,WINCOLOR); define(-1,240,95,90,20,0,label,"Ulo<EFBFBD>en<EFBFBD> mapy");property(NULL,vga_font,&c,WINCOLOR);
define(-1,45,125,90,20,0,label,"Prohl¡e‡ PCX");property(NULL,vga_font,&c,WINCOLOR); define(-1,45,125,90,20,0,label,"Prohl<EFBFBD><EFBFBD>e<EFBFBD> PCX");property(NULL,vga_font,&c,WINCOLOR);
default_font=vga_font; default_font=vga_font;
memcpy(f_default,flat_color(0x0000),sizeof(charcolors)); memcpy(f_default,flat_color(0x0000),sizeof(charcolors));
//set_enable(0,20,0); //set_enable(0,20,0);
@ -715,8 +715,8 @@ static ask_password_event(EVENT_MSG *msg,OBJREC *obj)
WHEN_MSG(E_KEYBOARD) WHEN_MSG(E_KEYBOARD)
{ {
char c=GET_DATA(char); char c=GET_DATA(char);
if (c==13) {goto_control(20);terminate();} if (c==13) {goto_control(20);terminate_gui();}
if (c==27) {goto_control(30);terminate();} if (c==27) {goto_control(30);terminate_gui();}
} }
} }
@ -726,19 +726,19 @@ char ask_password(char *pass,char text)
switch (text) switch (text)
{ {
case 0:c="Provˆ©en¡";break; case 0:c="Prov<EFBFBD><EFBFBD>en<EFBFBD>";break;
case 1:c="Zmˆna hesla";break; case 1:c="Zm<EFBFBD>na hesla";break;
case 2:c="Kontrola";break; case 2:c="Kontrola";break;
} }
def_dialoge(320-100,240-50,200,90,c); def_dialoge(320-100,240-50,200,90,c);
define(-1,10,20,1,1,0,label,"Vlo heslo:"); define(-1,10,20,1,1,0,label,"Vlo<EFBFBD> heslo:");
define(10,10,40,180,12,0,input_line,49); define(10,10,40,180,12,0,input_line,49);
property(def_border(3,WINCOLOR),NULL,flat_color(RGB555(31,31,31)),RGB555(8,8,8)); property(def_border(3,WINCOLOR),NULL,flat_color(RGB555(31,31,31)),RGB555(8,8,8));
if (text==1)set_default(pass);else set_default("");on_event(ask_password_event); if (text==1)set_default(pass);else set_default("");on_event(ask_password_event);
define(20,5,5,50,20,2,button,"OK"); define(20,5,5,50,20,2,button,"OK");
property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(terminate); property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
define(30,5,5,50,20,3,button,"Zru¨it"); define(30,5,5,50,20,3,button,"Zru<EFBFBD>it");
property(def_border(1,0),NULL,NULL,WINCOLOR);on_change(terminate); property(def_border(1,0),NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
redraw_window(); redraw_window();
goto_control(10); goto_control(10);
escape(); escape();
@ -763,7 +763,7 @@ char check_data_password(void)
if (ask_password(text,0)==0) return 0; if (ask_password(text,0)==0) return 0;
if (strcmp(data_password,text)) if (strcmp(data_password,text))
{ {
msg_box("Chyba!",1,"Chybn heslo! P©¡stup zam¡tnut!","OK",NULL); msg_box("Chyba!",1,"Chybn<EFBFBD> heslo! P<><50>stup zam<61>tnut!","OK",NULL);
return 0; return 0;
} }
else else
@ -927,7 +927,7 @@ int main(int argc,char *argv[])
init_maps(); init_maps();
set_defaults(); set_defaults();
if (load_map(filename)) if (load_map(filename))
msg_box(filename,'\01',"Tento soubor je buƒ ne‡iteln˜, nebo po¨kozen˜","Pokra‡ovat",NULL); msg_box(filename,'\01',"Tento soubor je bu<EFBFBD> ne<6E>iteln<6C>, nebo po<70>kozen<65>","Pokra<EFBFBD>ovat",NULL);
if (check_password(NULL)==0) if (check_password(NULL)==0)
if (ask_password(test,0)==0 || check_password(test)==0) if (ask_password(test,0)==0 || check_password(test)==0)
{ {
@ -937,8 +937,8 @@ int main(int argc,char *argv[])
} }
if (maplen<2) if (maplen<2)
{ {
sel=msg_box(filename,' ',"Soubor neexistuje, bude vytvo©en nov˜. Nyn¡ je nutn nastavit z kladn¡ stˆny" sel=msg_box(filename,' ',"Soubor neexistuje, bude vytvo<EFBFBD>en nov<6F>. Nyn<79> je nutn<74> nastavit z<>kladn<64> st<73>ny"
" a jin dal¨¡ parametry pro tuto mapu","Pokra‡ujem","Zav©it",NULL); " a jin<EFBFBD> dal<61><6C> parametry pro tuto mapu","Pokra<EFBFBD>ujem","Zav<EFBFBD>it",NULL);
if (sel==1) if (sel==1)
{ {
newmap=1; newmap=1;

View file

@ -34,37 +34,37 @@ static char nocenter=0;
#define MODRA RGB555(0,0,31) #define MODRA RGB555(0,0,31)
char _actions []= char _actions []=
"< dn >\0" "<<EFBFBD><EFBFBD>dn<EFBFBD>>\0"
"Otev©i dve©e\0" "Otev<EFBFBD>i dve<76>e\0"
"Zav©i dve©e\0" "Zav<EFBFBD>i dve<76>e\0"
"Otev©i nebo zav©i\0" "Otev<EFBFBD>i nebo zav<61>i\0"
"Spusź animaci prim\0" "Spus<EFBFBD> animaci prim\0"
"Uka prim. st<73>nu\0" "Uka<EFBFBD> prim. st<73>nu\0"
"Schovej prim.st<73>nu\0" "Schovej prim.st<73>nu\0"
"Uk/schov.pri.st<73>nu\0" "Uk/schov.pri.st<73>nu\0"
"Spusź animaci sek.\0" "Spus<EFBFBD> animaci sek.\0"
"Uka sek. st<73>nu\0" "Uka<EFBFBD> sek. st<73>nu\0"
"Schovej sek. st<73>nu\0" "Schovej sek. st<73>nu\0"
"Uk/schov.sek.st<73>nu\0" "Uk/schov.sek.st<73>nu\0"
"Schovej prim.&sek.\0" "Schovej prim.&sek.\0"
"Zobraz text\0" "Zobraz text\0"
"Kod.z mek (star<61>-Nepouˇvat!)\0" "Kod.z<EFBFBD>mek (star<61>-Nepou<6F><75>vat!)\0"
"Otev©i teleport\0" "Otev<EFBFBD>i teleport\0"
"Uzav©i teleport\0" "Uzav<EFBFBD>i teleport\0"
"Kodov<EFBFBD> z mek (log)\0" "Kodov<EFBFBD> z<EFBFBD>mek (log)\0"
"Konec hry\0" "Konec hry\0"
"\\\0"; "\\\0";
char chka[]={0,1,1,1,1,1,1,1,1,1,1,1,0}; char chka[]={0,1,1,1,1,1,1,1,1,1,1,1,0};
char _steny2 []="Severnˇ\0V<EFBFBD>chodnˇ\0Ji\0Z padnˇ\0\\\0"; char _steny2 []="Severn<EFBFBD>\0V<EFBFBD>chodn<EFBFBD>\0Ji<EFBFBD>n<EFBFBD>\0Z<EFBFBD>padn<EFBFBD>\0\\\0";
char _zivly []="Ohe¤\0Voda\0Zem<EFBFBD>\0Vzduch\0Mysl\0\\\0"; char _zivly []="Ohe<EFBFBD>\0Voda\0Zem<EFBFBD>\0Vzduch\0Mysl\0\\\0";
char _sector_types[]= char _sector_types[]=
"!Voln<6C>!\0""Normalnˇ\0""Schody\0""Lo<EFBFBD>ka na vod<6F>\0""L va\0" "!Voln<6C>!\0""Normaln<EFBFBD>\0""Schody\0""Lo<EFBFBD>ka na vod<6F>\0""L<EFBFBD>va\0"
"Sm<EFBFBD>r sever\0""Sm<EFBFBD>r v<>chod\0""Sm<EFBFBD>r jih\0""Sm<EFBFBD>r z pad\0""Voda\0""Sloup\0""Dira\0""Teleport\0" "Sm<EFBFBD>r sever\0""Sm<EFBFBD>r v<>chod\0""Sm<EFBFBD>r jih\0""Sm<EFBFBD>r z<EFBFBD>pad\0""Voda\0""Sloup\0""Dira\0""Teleport\0"
"Tla‡ˇtko(norm)\0""Tla‡ˇtko(zma‡k)\0" "Tla<EFBFBD><EFBFBD>tko(norm)\0""Tla<EFBFBD><EFBFBD>tko(zma<6D>k)\0"
"Fltna (Sever)\0""Fltna (V<>chod)\0""Fltna (Jih)\0""Fltna (Z pad)\0" "Fl<EFBFBD>tna (Sever)\0""Fl<EFBFBD>tna (V<>chod)\0""Fl<EFBFBD>tna (Jih)\0""Fl<EFBFBD>tna (Z<>pad)\0"
"Opu¨t<EFBFBD>nˇ mapy\0""r\0""Sloup&Smrt\0""Ubˇra ivoty\0" "Opu<EFBFBD>t<EFBFBD>n<EFBFBD> mapy\0""V<EFBFBD>r\0""Sloup&Smrt\0""Ub<EFBFBD>ra <20>ivoty\0"
"\\\0"; "\\\0";
char _type_multi_actions[]= char _type_multi_actions[]=
@ -80,82 +80,82 @@ char _type_multi_actions[]=
"\\\0"; "\\\0";
char _typy_zbrani[]= char _typy_zbrani[]=
"Me‡ (t<>k  ostr  rovn )\0" "Me<EFBFBD> (t<><74>k<EFBFBD> ostr<74> rovn<76>)\0"
"Sekera (t<>k  ostr  ost.)\0" "Sekera (t<><EFBFBD>k<EFBFBD> ostr<74> ost.)\0"
"Kladivo (tup )\0" "Kladivo (tup<EFBFBD>)\0"
"Hl\0" "H<EFBFBD>l\0"
"D<EFBFBD>ka (Lehk  ostr )\0" "D<EFBFBD>ka (Lehk<EFBFBD> ostr<74>)\0"
"ˇp (st©eln )\0" "<EFBFBD><EFBFBD>p (st<73>eln<6C>)\0"
"Ostatnˇ / Spec\0" "Ostatn<EFBFBD> / Spec\0"
"\\\0"; "\\\0";
char _typy_veci[]= char _typy_veci[]=
"Nespecifikov no\0" "Nespecifikov<EFBFBD>no\0"
"Zbra¤ tv ©ˇ v tv ©\0" "Zbra<EFBFBD> tv<74><76><EFBFBD> v tv<74><76>\0"
"Vrhacˇ zbra¤\0" "Vrhac<EFBFBD> zbra<72>\0"
"St©eln  zbra¤\0" "St<EFBFBD>eln<EFBFBD> zbra<72>\0"
"Zbroj\0" "Zbroj\0"
"Svitek / Hlka\0" "Svitek / H<EFBFBD>lka\0"
"Lektvar\0" "Lektvar\0"
"Voda\0" "Voda\0"
"Jˇdlo\0" "J<EFBFBD>dlo\0"
"Speci lnˇ\0" "Speci<EFBFBD>ln<EFBFBD>\0"
"Runa\0" "Runa\0"
"Penˇze\0" "Pen<EFBFBD>ze\0"
"Svitek s textem\0" "Svitek s textem\0"
"Prach\0" "Prach\0"
"Ostatnˇ\0" "Ostatn<EFBFBD>\0"
"\\\0"; "\\\0";
char _umisteni_veci[]= char _umisteni_veci[]=
"Nikam\0" "Nikam\0"
"Zavazadlo\0" "Zavazadlo\0"
"Na t<>lo (naho©e)\0" "Na t<>lo (naho<EFBFBD>e)\0"
"Na t<>lo (dole)\0" "Na t<>lo (dole)\0"
"Na hlavu\0" "Na hlavu\0"
"Na nohy\0" "Na nohy\0"
"Kutna (na t<>lo/naho©e/dole/helma)\0" "Kutna (na t<>lo/naho<EFBFBD>e/dole/helma)\0"
"Na krk\0" "Na krk\0"
"Do ruky\0" "Do ruky\0"
"Obouru\0" "Obouru<EFBFBD>\0"
"Prsten\0" "Prsten\0"
"›ˇp\0" "<EFBFBD><EFBFBD>p\0"
"\\0"; "\\0";
char _side_flgs[]= char _side_flgs[]=
"Automap\0" "Automap\0"
"Neprchozˇ(hr c)\0" "Nepr<EFBFBD>choz<EFBFBD>(hr<68>c)\0"
"Neprchozˇ(nestvra)\0" "Nepr<EFBFBD>choz<EFBFBD>(nestv<74>ra)\0"
"Neprchozˇ(v<>c)\0" "Nepr<EFBFBD>choz<EFBFBD>(v<>c)\0"
"Neprchozˇ(zvuk)\0" "Nepr<EFBFBD>choz<EFBFBD>(zvuk)\0"
"Poplach\0" "Poplach\0"
"Prchozˇ akce\0" "Pr<EFBFBD>choz<EFBFBD> akce\0"
"Prchledn  st<73>na\0" "Pr<EFBFBD>chledn<EFBFBD> st<73>na\0"
"Prim:Animace\0" "Prim:Animace\0"
"Prim:Viditeln \0" "Prim:Viditeln<EFBFBD>\0"
"Prim:Tam a zp<7A>t\0" "Prim:Tam a zp<7A>t\0"
"Prim:Sm<53>r\0" "Prim:Sm<53>r\0"
"Sek:Animace\0" "Sek:Animace\0"
"Sek:Viditeln \0" "Sek:Viditeln<EFBFBD>\0"
"Sek:Tam a zp<7A>t\0" "Sek:Tam a zp<7A>t\0"
"Sek:Sm<53>r\0" "Sek:Sm<53>r\0"
"Lev<EFBFBD> oblouk\0" "Lev<EFBFBD> oblouk\0"
"Prav<EFBFBD> oblouk\0" "Prav<EFBFBD> oblouk\0"
"Dva druhy st<73>n\0" "Dva druhy st<73>n\0"
"Spec. mapovat\0" "Spec. mapovat\0"
"Kopˇruj p©ˇchozˇ ud lost\0" "Kop<EFBFBD>ruj p<><70>choz<6F> ud<75>lost\0"
"Po¨li jinou ud lost\0" "Po<EFBFBD>li jinou ud<75>lost\0"
"Aplikuj i z druh strany\0" "Aplikuj i z druh<EFBFBD> strany\0"
"Autoanimace p©epˇna‡\0" "Autoanimace p<EFBFBD>ep<EFBFBD>na<EFBFBD><EFBFBD>\0"
"Zm<EFBFBD>na automapingu\0" "Zm<EFBFBD>na automapingu\0"
"Zm<EFBFBD>na prchodnosti(hr )\0" "Zm<EFBFBD>na pr<EFBFBD>chodnosti(hr<68><72>)\0"
"Zm<EFBFBD>na prchodnosti(nestvra)\0" "Zm<EFBFBD>na pr<EFBFBD>chodnosti(nestv<74>ra)\0"
"Zm<EFBFBD>na prchodnosti(v<>c)\0" "Zm<EFBFBD>na pr<EFBFBD>chodnosti(v<>c)\0"
"Zm<EFBFBD>na prchodnosti(zvuk)\0" "Zm<EFBFBD>na pr<EFBFBD>chodnosti(zvuk)\0"
"Tajn  st<73>na\0" "Tajn<EFBFBD> st<73>na\0"
"TRUESEE (iluze)\0" "TRUESEE (iluze)\0"
"Neviditeln  na map<61>\0" "Neviditeln<EFBFBD> na map<61>\0"
"Potvora je ve h©e\0" "Potvora je ve h<EFBFBD>e\0"
"Potvora je v oblasti\0" "Potvora je v oblasti\0"
"\\\0"; "\\\0";
@ -918,9 +918,9 @@ void create_map_win(int xp,...)
autocenter_map(); autocenter_map();
cl[0]=0;cl[1]=0x610; cl[0]=0;cl[1]=0x610;
map_win=def_window(500,451,"Kreslenˇ mapy"); map_win=def_window(500,451,"Kreslen<EFBFBD> mapy");
waktual->x=7;waktual->y=2; waktual->x=7;waktual->y=2;
on_change(close_with_tool); on_control_change(close_with_tool);
define(10,2,20,473,408,0,workspace); define(10,2,20,473,408,0,workspace);
property(def_border(1,0),NULL,NULL,WINCOLOR); property(def_border(1,0),NULL,NULL,WINCOLOR);
o_end->autoresizex=1;o_end->autoresizey=1; o_end->autoresizex=1;o_end->autoresizey=1;
@ -928,23 +928,23 @@ void create_map_win(int xp,...)
waktual->minsizx=140; waktual->minsizx=140;
waktual->minsizy=90; waktual->minsizy=90;
define(20,3,42,17,365,1,scroll_bar_v,-100,100,(59*8)/M_ZOOM,SCROLLBARCOL); define(20,3,42,17,365,1,scroll_bar_v,-100,100,(59*8)/M_ZOOM,SCROLLBARCOL);
property(ctl,NULL,NULL,WINCOLOR);c_default(ymap_offs);on_change(scroll_workspace); property(ctl,NULL,NULL,WINCOLOR);c_default(ymap_offs);on_control_change(scroll_workspace);
o_end->autoresizey=1; o_end->autoresizey=1;
define(21,1,20,21,17,1,scroll_button,-2,-100,"\x1e"); define(21,1,20,21,17,1,scroll_button,-2,-100,"\x1e");
property(NULL,icones,&cl,WINCOLOR);on_change(scroll_support); property(NULL,icones,&cl,WINCOLOR);on_control_change(scroll_support);
define(22,1,22,21,17,2,scroll_button,2,100,"\x1f"); define(22,1,22,21,17,2,scroll_button,2,100,"\x1f");
property(NULL,icones,&cl,WINCOLOR);on_change(scroll_support); property(NULL,icones,&cl,WINCOLOR);on_control_change(scroll_support);
define(30,26,3,352,15,3,scroll_bar_h,-100,100,(59*8)/M_ZOOM,SCROLLBARCOL); define(30,26,3,352,15,3,scroll_bar_h,-100,100,(59*8)/M_ZOOM,SCROLLBARCOL);
property(ctl,NULL,NULL,WINCOLOR);c_default(xmap_offs);on_change(scroll_workspace); property(ctl,NULL,NULL,WINCOLOR);c_default(xmap_offs);on_control_change(scroll_workspace);
o_end->autoresizex=1; o_end->autoresizex=1;
define(31,96,1,21,19,2,scroll_button,2,100,"\x1c"); define(31,96,1,21,19,2,scroll_button,2,100,"\x1c");
property(NULL,icones,&cl,WINCOLOR);on_change(scroll_support); property(NULL,icones,&cl,WINCOLOR);on_control_change(scroll_support);
define(32,1,1,21,19,3,scroll_button,-2,-100,"\x1d"); define(32,1,1,21,19,3,scroll_button,-2,-100,"\x1d");
property(NULL,icones,&cl,WINCOLOR);on_change(scroll_support); property(NULL,icones,&cl,WINCOLOR);on_control_change(scroll_support);
define(40,60,1,30,19,2,button,"/");property(NULL,icones,&cl,WINCOLOR); define(40,60,1,30,19,2,button,"/");property(NULL,icones,&cl,WINCOLOR);
on_enter(layer_show);on_exit(layer_hide);on_change(layer_plus); on_control_enter(layer_show);on_control_exit(layer_hide);on_control_change(layer_plus);
define(50,28,1,30,19,2,button,"\\");property(NULL,icones,&cl,WINCOLOR); define(50,28,1,30,19,2,button,"\\");property(NULL,icones,&cl,WINCOLOR);
on_enter(layer_show);on_exit(layer_hide);on_change(layer_minus); on_control_enter(layer_show);on_control_exit(layer_hide);on_control_change(layer_minus);
define(60,1,1,19,19,2,resizer); define(60,1,1,19,19,2,resizer);
xpp=&xp; xpp=&xp;
xpp++; xpp++;
@ -961,13 +961,13 @@ void create_map_win(int xp,...)
tool_bar=def_window(90,90,"Tools"); tool_bar=def_window(90,90,"Tools");
waktual->x=SCR_WIDTH_X-1-94;waktual->y=desktop_y_size-90-3; waktual->x=SCR_WIDTH_X-1-94;waktual->y=desktop_y_size-90-3;
define(20,1,55,40,34,0,toggle_button,"\xC");property(NULL,icones,&icone_color,WINCOLOR); define(20,1,55,40,34,0,toggle_button,"\xC");property(NULL,icones,&icone_color,WINCOLOR);
on_change(tool_select);c_default(tool_sel==20); on_control_change(tool_select);c_default(tool_sel==20);
define(30,42,20,40,34,0,toggle_button,"\xD");property(NULL,icones,&icone_color,WINCOLOR); define(30,42,20,40,34,0,toggle_button,"\xD");property(NULL,icones,&icone_color,WINCOLOR);
on_change(tool_select);c_default(tool_sel==30); on_control_change(tool_select);c_default(tool_sel==30);
define(40,42,55,40,34,0,toggle_button,"\xE");property(NULL,icones,&icone_color,WINCOLOR); define(40,42,55,40,34,0,toggle_button,"\xE");property(NULL,icones,&icone_color,WINCOLOR);
on_change(tool_select);c_default(tool_sel==40); on_control_change(tool_select);c_default(tool_sel==40);
define(10,1,20,40,34,0,toggle_button,"\xB");property(NULL,icones,&icone_color,WINCOLOR); define(10,1,20,40,34,0,toggle_button,"\xB");property(NULL,icones,&icone_color,WINCOLOR);
on_change(tool_select);c_default(tool_sel==10); on_control_change(tool_select);c_default(tool_sel==10);
} }
if (tool_sel==10)open_draw_win(); if (tool_sel==10)open_draw_win();
if (tool_sel==40)open_wiz_tool(); if (tool_sel==40)open_wiz_tool();

View file

@ -236,7 +236,7 @@ void create_enemy_list()
str_add(&enemy_list,s); str_add(&enemy_list,s);
} }
else; else;
str_add(&enemy_list," -1 <nov  potvora>"); str_add(&enemy_list," -1 <nov<EFBFBD> potvora>");
} }
@ -266,14 +266,14 @@ void new_mob()
} }
static char nvlast[][16]= static char nvlast[][16]=
{"S¡la","UM(%kouzlen¡)","Pohyblivost","Obratnost","Max zranˆ", {"S<EFBFBD>la","UM(%kouzlen<65>)","Pohyblivost","Obratnost","Max zran<EFBFBD>n<EFBFBD>",
"","","Obrana(doln¡)","Obrana(Horn¡)","—tok(Doln¡)", "","","Obrana(doln<EFBFBD>)","Obrana(Horn<72>)","<EFBFBD>tok(Doln<6C>)",
"—tok(Horn¡)","Ohe¤","Voda","Zemˆ","Vzduch","Mysl","ivoty Regen", "<EFBFBD>tok(Horn<72>)","Ohe<EFBFBD>","Voda","Zem<EFBFBD>","Vzduch","Mysl","<EFBFBD>ivoty Regen",
"","","Magick  s¡la(D)", "Magick  s¡la(H)","","—‡innek z sahu","*"}; "","","Magick<EFBFBD> s<>la(D)", "Magick<EFBFBD> s<>la(H)","","<EFBFBD><EFBFBD>innek z<>sahu","*"};
char smery_anim[][7]= char smery_anim[][7]=
{"Vp©ed","Vlevo","Vzad","Vpravo","—tok","Z sah"}; {"Vp<EFBFBD>ed","Vlevo","Vzad","Vpravo","<EFBFBD>tok","Z<EFBFBD>sah"};
char smery_znaky[]="FLBRCH"; char smery_znaky[]="FLBRCH";
char sekvence[]="0123456789ABCDEF"; char sekvence[]="0123456789ABCDEF";
@ -314,8 +314,8 @@ char load_sequence(char *mobname,int otoceni)
char text[256]; char text[256];
if (load_ddl_seq(st,otoceni)) return 0; if (load_ddl_seq(st,otoceni)) return 0;
sprintf(text,"Nemohu nalezt soubor %s jen ma obsahovat sekvence animac¡ pro tuto potvoru...",s); sprintf(text,"Nemohu nalezt soubor %s jen<EFBFBD> ma obsahovat sekvence animac<61> pro tuto potvoru...",s);
msg_box("Upozornˆ!",'\x1',text,"Beru na vˆdom¡",NULL); msg_box("Upozorn<EFBFBD>n<EFBFBD>!",'\x1',text,"Beru na v<EFBFBD>dom<EFBFBD>",NULL);
return 1; return 1;
} }
while(otoceni--) while(otoceni--)
@ -331,8 +331,8 @@ char load_sequence(char *mobname,int otoceni)
{ {
char text[256]; char text[256];
sprintf(text,"Soubor %s obsahuje chybn £daje",s); sprintf(text,"Soubor %s obsahuje chybn<EFBFBD> <20>daje",s);
msg_box("Upozornˆ!",'\x1',text,"Beru na vˆdom¡",NULL); msg_box("Upozorn<EFBFBD>n<EFBFBD>!",'\x1',text,"Beru na v<EFBFBD>dom<EFBFBD>",NULL);
return 1; return 1;
} }
return 0; return 0;
@ -504,13 +504,13 @@ void mob_turn()
void mob_ask_delete() void mob_ask_delete()
{ {
if (msg_box("Dotaz?",'\x2',"Opravdu chce¨ potovoru vymazat ze seznam vzor? Ujisti se, e tuto potvoru nepou¡v ¨ v  dn jin mapˆ","Ano","Ne",NULL)==1) if (msg_box("Dotaz?",'\x2',"Opravdu chce<EFBFBD> potovoru vymazat ze seznam<61> vzor<6F>? Ujisti se, <20>e tuto potvoru nepou<6F><75>v<EFBFBD><76> v <20><>dn<64> jin<69> map<61>","Ano","Ne",NULL)==1)
terminate(); terminate_gui();
o_aktual=find_object(waktual,260); o_aktual=find_object(waktual,260);
} }
char *sound_ev[]= char *sound_ev[]=
{"P©i chzi","—tok","Z sah","Reserved"}; {"P<EFBFBD>i ch<63>zi","<EFBFBD>tok","Z<EFBFBD>sah","Reserved"};
void mob_test_sound() void mob_test_sound()
{ {
@ -555,15 +555,15 @@ void mob_inv()
memcpy(&b1,def_border(1,0),sizeof(CTL3D)); memcpy(&b1,def_border(1,0),sizeof(CTL3D));
default_font=vga_font; default_font=vga_font;
memcpy(f_default,flat_color(0x0000),sizeof(charcolors)); memcpy(f_default,flat_color(0x0000),sizeof(charcolors));
def_dialoge(100,50,400,390,"Invent © potvory"); def_dialoge(100,50,400,390,"Invent<EFBFBD><EFBFBD> potvory");
str_insline(&ls_sorts,0,"<nic>"); str_insline(&ls_sorts,0,"<nic>");
for(i=0;i<MOBS_INV;i++) for(i=0;i<MOBS_INV;i++)
{ {
define(i+10,10,20+i*15,250,10,0,str_line,ls_sorts);on_enter(string_list_sup); define(i+10,10,20+i*15,250,10,0,str_line,ls_sorts);on_enter(string_list_sup);
c_default(moblist[m].inv[i]); c_default(moblist[m].inv[i]);
} }
define(300,5,20,80,20,1,button,"Ok");property(&b1,NULL,NULL,WINCOLOR);on_change(terminate); define(300,5,20,80,20,1,button,"Ok");property(&b1,NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
define(310,5,45,80,20,1,button,"Zru¨it");property(&b1,NULL,NULL,WINCOLOR);on_change(terminate); define(310,5,45,80,20,1,button,"Zru<EFBFBD>it");property(&b1,NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
redraw_desktop(); redraw_desktop();
escape(); escape();
if (o_aktual->id==300) if (o_aktual->id==300)
@ -576,20 +576,20 @@ static char *aff_list[]=
{ {
"INVIS", "INVIS",
"OKO ZA OKO", "OKO ZA OKO",
"NASTAV TV<54>ž", "NASTAV TV<54><EFBFBD>",
"ENERGY DRAIN", "ENERGY DRAIN",
"MANA SHIELD (*)", "MANA SHIELD (*)",
"SANCTUARY SHIELD (1/2 zasahu)", "SANCTUARY SHIELD (1/2 zasahu)",
"HIGH SANCTUARY (omezit zasah)", "HIGH SANCTUARY (omezit zasah)",
"BLIND (slepota)", "BLIND (slepota)",
"REGENERACE (*)", "REGENERACE (*)",
"OCHRANA PžED ZIMOU (*)", "OCHRANA P<EFBFBD>ED ZIMOU (*)",
"OCHRANA PžED <EFBFBD>REM (*)", "OCHRANA P<EFBFBD>ED <20><EFBFBD>REM (*)",
"KNOCK BACK", "KNOCK BACK",
"< volno >", "< volno >",
"< volno >", "< volno >",
"< volno >", "< volno >",
"Vyhrazeno pro dmona" "Vyhrazeno pro d<EFBFBD>mona"
}; };
void spell_affections() void spell_affections()
@ -607,14 +607,14 @@ void spell_affections()
{ {
define(i+10,10,20+i*12,250,10,0,check_box,aff_list[i]);c_default((m & (1<<i))!=0); define(i+10,10,20+i*12,250,10,0,check_box,aff_list[i]);c_default((m & (1<<i))!=0);
} }
define(-1,10,230,1,1,0,label,"(*) - u nestvur neimplementov no"); define(-1,10,230,1,1,0,label,"(*) - u nestvur neimplementov<EFBFBD>no");
define(-1,10,242,1,1,0,label,"Sanctuary bere potvo©e jen 1/2 ivot ze z sahu"); define(-1,10,242,1,1,0,label,"Sanctuary bere potvo<EFBFBD>e jen 1/2 <20>ivot<6F> ze z<>sahu");
define(-1,10,254,1,1,0,label,"High Sanc. o©ez v  z sah na max 18 ivot"); define(-1,10,254,1,1,0,label,"High Sanc. o<EFBFBD>ez<EFBFBD>v<EFBFBD> z<>sah na max 18 <20>ivot<6F>");
define(-1,10,266,1,1,0,label,"Energy drain p©id  1/2 toho co ubere postav m"); define(-1,10,266,1,1,0,label,"Energy drain p<EFBFBD>id<EFBFBD> 1/2 toho co ubere postav<61>m");
define(-1,10,278,1,1,0,label,"BLIND - potvora je slepa (senceless)"); define(-1,10,278,1,1,0,label,"BLIND - potvora je slepa (senceless)");
define(-1,10,290,1,1,0,label,"REGENERACE - Kad kolo +HPREG ivot"); define(-1,10,290,1,1,0,label,"REGENERACE - Ka<EFBFBD>d<EFBFBD> kolo +HPREG <20>ivot<6F>");
define(300,5,20,80,20,1,button,"Ok");property(&b1,NULL,NULL,WINCOLOR);on_change(terminate); define(300,5,20,80,20,1,button,"Ok");property(&b1,NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
define(310,5,45,80,20,1,button,"Zru¨it");property(&b1,NULL,NULL,WINCOLOR);on_change(terminate); define(310,5,45,80,20,1,button,"Zru<EFBFBD>it");property(&b1,NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
redraw_desktop(); redraw_desktop();
escape(); escape();
if (o_aktual->id==300) if (o_aktual->id==300)
@ -643,13 +643,13 @@ void mob_sound_call(int mob)
list=read_directory(c,DIR_BREIF,_A_NORMAL); list=read_directory(c,DIR_BREIF,_A_NORMAL);
read_ddl_list_wav(&list); read_ddl_list_wav(&list);
define(9,10,20,200,126,0,listbox,list,RGB555(31,31,31),0); define(9,10,20,200,126,0,listbox,list,RGB555(31,31,31),0);
property(&b3,NULL,NULL,WINCOLOR);c_default(0);on_change(mob_test_sound); property(&b3,NULL,NULL,WINCOLOR);c_default(0);on_control_change(mob_test_sound);
define(10,217,40,19,87,0,scroll_bar_v,0,10,1,SCROLLBARCOL); define(10,217,40,19,87,0,scroll_bar_v,0,10,1,SCROLLBARCOL);
property(&b2,NULL,NULL,WINCOLOR); property(&b2,NULL,NULL,WINCOLOR);
define(11,216,20,21,17,0,scroll_button,-1,0,"\x1e"); define(11,216,20,21,17,0,scroll_button,-1,0,"\x1e");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(12,216,130,21,17,0,scroll_button,1,10,"\x1f"); define(12,216,130,21,17,0,scroll_button,1,10,"\x1f");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
for(j=0;j<MOB_SOUNDS-1;j++) for(j=0;j<MOB_SOUNDS-1;j++)
{ {
int z,y; int z,y;
@ -661,11 +661,11 @@ void mob_sound_call(int mob)
if (z && enemy_sound!=NULL && (z<=str_count(enemy_sound))) if (z && enemy_sound!=NULL && (z<=str_count(enemy_sound)))
set_default(enemy_sound[z-1]);else set_default(""); set_default(enemy_sound[z-1]);else set_default("");
define(j+40,245,y,20,12,0,button,"<"); define(j+40,245,y,20,12,0,button,"<");
property(&b1,NULL,NULL,WINCOLOR);on_change(mob_sound_copy); property(&b1,NULL,NULL,WINCOLOR);on_control_change(mob_sound_copy);
} }
define(90,5,30,100,10,2,check_box,"Loop (WALK!)");c_default((moblist[i].vlajky & 0x40)!=0); define(90,5,30,100,10,2,check_box,"Loop (WALK!)");c_default((moblist[i].vlajky & 0x40)!=0);
define(100,5,5,80,20,2,button,"Ok");on_change(terminate); property(&b1,NULL,NULL,WINCOLOR); define(100,5,5,80,20,2,button,"Ok");on_control_change(terminate_gui); property(&b1,NULL,NULL,WINCOLOR);
define(110,90,5,80,20,2,button,"Zru¨it");on_change(terminate); property(&b1,NULL,NULL,WINCOLOR); define(110,90,5,80,20,2,button,"Zru<EFBFBD>it");on_control_change(terminate_gui); property(&b1,NULL,NULL,WINCOLOR);
redraw_window(); redraw_window();
escape(); escape();
if (o_aktual->id==100) if (o_aktual->id==100)
@ -708,17 +708,17 @@ static void open_dialog_edit_box()
memcpy(&b3,def_border(6,WINCOLOR),sizeof(CTL3D)); memcpy(&b3,def_border(6,WINCOLOR),sizeof(CTL3D));
default_font=vga_font; default_font=vga_font;
memcpy(f_default,flat_color(0x0000),sizeof(charcolors)); memcpy(f_default,flat_color(0x0000),sizeof(charcolors));
def_dialoge(100,250,250,180,"P©i©aƒ dialog"); def_dialoge(100,250,250,180,"P<EFBFBD>i<EFBFBD>a<EFBFBD> dialog");
define(9,10,20,200,126,0,listbox,dlg_names,RGB555(31,31,31),0); define(9,10,20,200,126,0,listbox,dlg_names,RGB555(31,31,31),0);
property(&b3,NULL,NULL,WINCOLOR);c_default(pgf2name(j)); property(&b3,NULL,NULL,WINCOLOR);c_default(pgf2name(j));
define(10,217,40,19,87,0,scroll_bar_v,0,10,1,SCROLLBARCOL); define(10,217,40,19,87,0,scroll_bar_v,0,10,1,SCROLLBARCOL);
property(&b2,NULL,NULL,WINCOLOR); property(&b2,NULL,NULL,WINCOLOR);
define(11,216,20,21,17,0,scroll_button,-1,0,"\x1e"); define(11,216,20,21,17,0,scroll_button,-1,0,"\x1e");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(12,216,130,21,17,0,scroll_button,1,10,"\x1f"); define(12,216,130,21,17,0,scroll_button,1,10,"\x1f");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(100,5,5,80,20,2,button,"Ok");on_change(terminate); property(&b1,NULL,NULL,WINCOLOR); define(100,5,5,80,20,2,button,"Ok");on_control_change(terminate_gui); property(&b1,NULL,NULL,WINCOLOR);
define(110,90,5,80,20,2,button,"Zru¨it");on_change(terminate); property(&b1,NULL,NULL,WINCOLOR); define(110,90,5,80,20,2,button,"Zru<EFBFBD>it");on_control_change(terminate_gui); property(&b1,NULL,NULL,WINCOLOR);
redraw_window(); redraw_window();
escape(); escape();
if (o_aktual->id==100) if (o_aktual->id==100)
@ -753,7 +753,7 @@ void edit_mob(int i)
define(200,310,35,290,1,0,pcx_view);set_default("_"); define(200,310,35,290,1,0,pcx_view);set_default("_");
define(205,310,35,290,370,0,symetry);c_default(moblist[i].adjusting[0]); define(205,310,35,290,370,0,symetry);c_default(moblist[i].adjusting[0]);
define(207,5,20,120,20,1,input_line,20);set_default(""); define(207,5,20,120,20,1,input_line,20);set_default("");
define(-1,190,20,100,12,0,label,"Jmno potvory"); define(-1,190,20,100,12,0,label,"Jm<EFBFBD>no potvory");
define(10,300,20,200,12,0,input_line,31);set_default(moblist[i].name);property(def_border(2,WINCOLOR),NULL,NULL,WINCOLOR); define(10,300,20,200,12,0,input_line,31);set_default(moblist[i].name);property(def_border(2,WINCOLOR),NULL,NULL,WINCOLOR);
z=0;b1=def_border(5,WINCOLOR); z=0;b1=def_border(5,WINCOLOR);
for(y=20;y<380;) for(y=20;y<380;)
@ -761,7 +761,7 @@ void edit_mob(int i)
if (nvlast[z][0]) if (nvlast[z][0])
{ {
define(-1,5,y,140,12,0,label,nvlast[z]); define(-1,5,y,140,12,0,label,nvlast[z]);
define(z+20,120,y,60,12,0,input_line,8,-32767,32767,"%6d");set_default(strs(moblist[i].vlastnosti[z]));on_exit(test_int); define(z+20,120,y,60,12,0,input_line,8,-32767,32767,"%6d");set_default(strs(moblist[i].vlastnosti[z]));on_control_exit(test_int);
property(b1,NULL,NULL,WINCOLOR); property(b1,NULL,NULL,WINCOLOR);
y+=15; y+=15;
} }
@ -769,69 +769,69 @@ void edit_mob(int i)
if (nvlast[z][0]=='*') break; if (nvlast[z][0]=='*') break;
} }
y+=15; y+=15;
define(-1,5,y,140,12,0,label,"ivel:"); define(-1,5,y,140,12,0,label,"<EFBFBD>ivel:");
define(102,120,y,60,12,0,str_line,zivly);c_default(moblist[i].vlastnosti[VLS_MGZIVEL]);on_enter(string_list_sup);property(b1,NULL,NULL,WINCOLOR);y+=15; define(102,120,y,60,12,0,str_line,zivly);c_default(moblist[i].vlastnosti[VLS_MGZIVEL]);on_enter(string_list_sup);property(b1,NULL,NULL,WINCOLOR);y+=15;
define(-1,5,y,140,12,0,label,"Jmno grafiky"); define(-1,5,y,140,12,0,label,"Jm<EFBFBD>no grafiky");
define(100,120,y,60,12,0,input_line,6);set_default(moblist[i].mobs_name);property(b1,NULL,NULL,WINCOLOR);on_exit(check_mobs_name);y+=15; define(100,120,y,60,12,0,input_line,6);set_default(moblist[i].mobs_name);property(b1,NULL,NULL,WINCOLOR);on_control_exit(check_mobs_name);y+=15;
define(-1,5,y,140,12,0,label,"Rychlost"); define(-1,5,y,140,12,0,label,"Rychlost");
define(101,130,y,30,12,0,input_line,3,0,128,"%3d");set_default(strs(moblist[i].speed));on_exit(test_int);property(b1,NULL,NULL,WINCOLOR);y+=15; define(101,130,y,30,12,0,input_line,3,0,128,"%3d");set_default(strs(moblist[i].speed));on_control_exit(test_int);property(b1,NULL,NULL,WINCOLOR);y+=15;
define(-1,5,y,140,12,0,label,"ance £tˆku"); define(-1,5,y,140,12,0,label,"<EFBFBD>ance <20>t<EFBFBD>ku");
define(103,130,y,30,12,0,input_line,3,0,255,"%3d");set_default(strs(moblist[i].flee_num));on_exit(test_int);property(b1,NULL,NULL,WINCOLOR);y+=15; define(103,130,y,30,12,0,input_line,3,0,255,"%3d");set_default(strs(moblist[i].flee_num));on_control_exit(test_int);property(b1,NULL,NULL,WINCOLOR);y+=15;
define(-1,5,y,140,12,0,label,"Kouzlo"); define(-1,5,y,140,12,0,label,"Kouzlo");
define(104,130,y,30,12,0,input_line,3,0,255,"%3d");set_default(strs(moblist[i].casting));on_exit(test_int);property(b1,NULL,NULL,WINCOLOR);y+=15; define(104,130,y,30,12,0,input_line,3,0,255,"%3d");set_default(strs(moblist[i].casting));on_control_exit(test_int);property(b1,NULL,NULL,WINCOLOR);y+=15;
define(-1,5,y,140,12,0,label,"Specproc"); define(-1,5,y,140,12,0,label,"Specproc");
define(105,120,y,60,12,0,str_line,mob_procs);c_default(moblist[i].specproc);on_enter(string_list_sup);property(b1,NULL,NULL,WINCOLOR);y+=15; define(105,120,y,60,12,0,str_line,mob_procs);c_default(moblist[i].specproc);on_enter(string_list_sup);property(b1,NULL,NULL,WINCOLOR);y+=15;
y=260;define(-1,220,248,140,12,0,label,"Poet anim."); y=260;define(-1,220,248,140,12,0,label,"Po<EFBFBD>et anim.");
for(z=0;z<6;z++) for(z=0;z<6;z++)
{ {
define(-1,190,y,50,12,0,label,smery_anim[z]); define(-1,190,y,50,12,0,label,smery_anim[z]);
define(z+120,260,y,20,12,0,input_line,2,!z*2,15,"%2d");set_default(strs(moblist[i].anim_counts[z]));on_exit(test_int); define(z+120,260,y,20,12,0,input_line,2,!z*2,15,"%2d");set_default(strs(moblist[i].anim_counts[z]));on_control_exit(test_int);
property(b1,NULL,NULL,WINCOLOR); property(b1,NULL,NULL,WINCOLOR);
y+=15; y+=15;
} }
define(127,285,320,20,12,0,input_line,2,1,15,"%2d");set_default(strs(moblist[i].hit_pos));on_exit(test_int); define(127,285,320,20,12,0,input_line,2,1,15,"%2d");set_default(strs(moblist[i].hit_pos));on_control_exit(test_int);
property(b1,NULL,NULL,WINCOLOR); property(b1,NULL,NULL,WINCOLOR);
define(430,190,350,50,10,0,check_box,"Chod¡"); define(430,190,350,50,10,0,check_box,"Chod<EFBFBD>");
define(440,190,362,50,10,0,check_box,"—to‡¡"); define(440,190,362,50,10,0,check_box,"<EFBFBD>to<EFBFBD><EFBFBD>");
define(450,190,374,50,10,0,check_box,"Sly¨¡"); define(450,190,374,50,10,0,check_box,"Sly<EFBFBD><EFBFBD>");
define(460,250,350,100,10,0,check_box,"Jeden na pol¡‡ku"); define(460,250,350,100,10,0,check_box,"Jeden na pol<EFBFBD><EFBFBD>ku");
define(470,250,362,60,10,0,check_box,"Str ce"); define(470,250,362,60,10,0,check_box,"Str<EFBFBD><EFBFBD>ce");
define(480,250,374,40,10,0,check_box,"Sebere"); define(480,250,374,40,10,0,check_box,"Sebere");
define(490,250,386,40,10,0,check_box,"Sb¡r "); define(490,250,386,40,10,0,check_box,"Sb<EFBFBD>r<EFBFBD>");
define(500,190,386,50,10,0,check_box,"St©¡l¡"); define(500,190,386,50,10,0,check_box,"St<EFBFBD><EFBFBD>l<EFBFBD>");
define(510,20,438,50,10,0,check_box,"Dialog.");c_default(moblist[i].dialog>=0);on_change(open_dialog_edit_box); define(510,20,438,50,10,0,check_box,"Dialog.");c_default(moblist[i].dialog>=0);on_control_change(open_dialog_edit_box);
define(-1,190,50,50,12,0,label,"Dohled"); define(-1,190,50,50,12,0,label,"Dohled");
define(-1,190,65,50,12,0,label,"Dosah"); define(-1,190,65,50,12,0,label,"Dosah");
define(-1,190,80,50,12,0,label,"Expy:"); define(-1,190,80,50,12,0,label,"Expy:");
define(-1,190,95,50,12,0,label,"Bonus:"); define(-1,190,95,50,12,0,label,"Bonus:");
define(-1,190,110,50,12,0,label,"Pen¡ze:"); define(-1,190,110,50,12,0,label,"Pen<EFBFBD>ze:");
define(160,260,50,30,12,0,input_line,3,0,255,"%3d");set_default(strs(moblist[i].dohled));on_exit(test_int);property(b1,NULL,NULL,WINCOLOR); define(160,260,50,30,12,0,input_line,3,0,255,"%3d");set_default(strs(moblist[i].dohled));on_control_exit(test_int);property(b1,NULL,NULL,WINCOLOR);
define(170,260,65,30,12,0,input_line,3,0,255,"%3d");set_default(strs(moblist[i].dosah));on_exit(test_int);property(b1,NULL,NULL,WINCOLOR); define(170,260,65,30,12,0,input_line,3,0,255,"%3d");set_default(strs(moblist[i].dosah));on_control_exit(test_int);property(b1,NULL,NULL,WINCOLOR);
define(175,250,80,55,12,0,input_line,6,0,999999,"%6d");set_default(strs(moblist[i].experience));on_exit(test_int);property(b1,NULL,NULL,WINCOLOR); define(175,250,80,55,12,0,input_line,6,0,999999,"%6d");set_default(strs(moblist[i].experience));on_control_exit(test_int);property(b1,NULL,NULL,WINCOLOR);
define(176,250,95,55,12,0,input_line,6,0,65535,"%6d");set_default(strs(moblist[i].bonus));on_exit(test_int);property(b1,NULL,NULL,WINCOLOR); define(176,250,95,55,12,0,input_line,6,0,65535,"%6d");set_default(strs(moblist[i].bonus));on_control_exit(test_int);property(b1,NULL,NULL,WINCOLOR);
define(177,255,110,50,12,0,input_line,6,0,65535,"%5d");set_default(strs(moblist[i].money));on_exit(test_int);property(b1,NULL,NULL,WINCOLOR); define(177,255,110,50,12,0,input_line,6,0,65535,"%5d");set_default(strs(moblist[i].money));on_control_exit(test_int);property(b1,NULL,NULL,WINCOLOR);
define(180,0,0,0,0,0,value_store,4);c_default(0);//cislo_animace define(180,0,0,0,0,0,value_store,4);c_default(0);//cislo_animace
define(185,0,0,0,0,0,value_store,4);c_default(0);//cislo_pozice define(185,0,0,0,0,0,value_store,4);c_default(0);//cislo_pozice
define(190,0,0,0,0,0,value_store,4);c_default(i);//cislo_i define(190,0,0,0,0,0,value_store,4);c_default(i);//cislo_i
b1=def_border(1,0); b1=def_border(1,0);
define(210,190,144,80,20,0,button,"Dal¨¡ >>");property(b1,NULL,NULL,WINCOLOR);on_change(mob_next); define(210,190,144,80,20,0,button,"Dal<EFBFBD><EFBFBD> >>");property(b1,NULL,NULL,WINCOLOR);on_control_change(mob_next);
define(220,190,166,80,20,0,button,"Otoit");property(b1,NULL,NULL,WINCOLOR);on_change(mob_turn); define(220,190,166,80,20,0,button,"Oto<EFBFBD>it");property(b1,NULL,NULL,WINCOLOR);on_control_change(mob_turn);
define(230,190,188,80,20,0,button,"Test");property(b1,NULL,NULL,WINCOLOR);on_change(play_mob); define(230,190,188,80,20,0,button,"Test");property(b1,NULL,NULL,WINCOLOR);on_control_change(play_mob);
define(240,84,2,80,20,2,button,"Zru¨it");property(b1,NULL,NULL,WINCOLOR);on_change(terminate); define(240,84,2,80,20,2,button,"Zru<EFBFBD>it");property(b1,NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
define(250,2,2,80,20,2,button,"Ok");property(b1,NULL,NULL,WINCOLOR);on_change(terminate); define(250,2,2,80,20,2,button,"Ok");property(b1,NULL,NULL,WINCOLOR);on_control_change(terminate_gui);
define(260,166,2,80,20,2,button,"Vymazat");property(b1,NULL,NULL,WINCOLOR);on_change(mob_ask_delete); define(260,166,2,80,20,2,button,"Vymazat");property(b1,NULL,NULL,WINCOLOR);on_control_change(mob_ask_delete);
define(270,2,24,80,20,2,button,"Zvuky");property(b1,NULL,NULL,WINCOLOR);on_change(mob_sound); define(270,2,24,80,20,2,button,"Zvuky");property(b1,NULL,NULL,WINCOLOR);on_control_change(mob_sound);
define(280,84,24,80,20,2,button,"Invent ©");property(b1,NULL,NULL,WINCOLOR);on_change(mob_inv); define(280,84,24,80,20,2,button,"Invent<EFBFBD><EFBFBD>");property(b1,NULL,NULL,WINCOLOR);on_control_change(mob_inv);
define(290,166,24,80,20,2,button,"Aff");property(b1,NULL,NULL,WINCOLOR);on_change(spell_affections); define(290,166,24,80,20,2,button,"Aff");property(b1,NULL,NULL,WINCOLOR);on_control_change(spell_affections);
define(-1,190,220,1,1,0,label,"Pals:"); define(-1,190,220,1,1,0,label,"Pals:");
define(520,230,220,30,12,0,input_line,3,-127,127,"%3d");set_default(strs(moblist[i].paletts_count));on_exit(test_int);property(b1,NULL,NULL,WINCOLOR); define(520,230,220,30,12,0,input_line,3,-127,127,"%3d");set_default(strs(moblist[i].paletts_count));on_control_exit(test_int);property(b1,NULL,NULL,WINCOLOR);
for(y=0;y<6*16;y++) {define(300+y,0,0,0,0,0,value_store,4);c_default(moblist[i].adjusting[y]);} for(y=0;y<6*16;y++) {define(300+y,0,0,0,0,0,value_store,4);c_default(moblist[i].adjusting[y]);}
define(630,0,0,0,0,0,value_store,1);c_default(0);//IN_BATTLE; define(630,0,0,0,0,0,value_store,1);c_default(0);//IN_BATTLE;
define(640,190,400,50,10,0,check_box,"Prchoz¡"); define(640,190,400,50,10,0,check_box,"Pr<EFBFBD>choz<EFBFBD>");
define(650,190,412,50,10,0,check_box,"C¡t¡"); define(650,190,412,50,10,0,check_box,"C<EFBFBD>t<EFBFBD>");
define(660,190,424,100,10,0,check_box,"Astral (wind)"); define(660,190,424,100,10,0,check_box,"Astral (wind)");
define(670,300,400,100,10,0,check_box,"Reload mob"); define(670,300,400,100,10,0,check_box,"Reload mob");
define(680,300,412,100,10,0,check_box,"Kouzl¡"); define(680,300,412,100,10,0,check_box,"Kouzl<EFBFBD>");
define(700,0,0,0,0,0,value_store,4);c_default(moblist[i].vlastnosti[VLS_KOUZLA]); define(700,0,0,0,0,0,value_store,4);c_default(moblist[i].vlastnosti[VLS_KOUZLA]);
movesize_win(waktual,0,0,DxGetResX(),DxGetResY()); movesize_win(waktual,0,0,DxGetResX(),DxGetResY());
check_mobs_name(); check_mobs_name();
@ -865,7 +865,7 @@ void edit_mob(int i)
for(z=0;z<6*16;z++) p->adjusting[z]=f_get_value(0,300+z); for(z=0;z<6*16;z++) p->adjusting[z]=f_get_value(0,300+z);
if (p->name[0]=='\0') if (p->name[0]=='\0')
{ {
msg_box("Doporu‡en¡",' ',"Bylo by dobr potvoru nazvat, kvuli snadn manipulaci","Ok",NULL); msg_box("Doporu<EFBFBD>en<EFBFBD>",' ',"Bylo by dobr<EFBFBD> potvoru nazvat, kvuli snadn<64> manipulaci","Ok",NULL);
strcpy(p->name,p->mobs_name); strcpy(p->name,p->mobs_name);
} }
p->lives=p->vlastnosti[VLS_MAXHIT]; p->lives=p->vlastnosti[VLS_MAXHIT];
@ -889,7 +889,7 @@ void edit_mob(int i)
{ {
redraw=1; redraw=1;
jdi_na_sektor(j); jdi_na_sektor(j);
if (msg_box("Potvora je v mapˆ. Vymazat?",'\0x2',"Chce¨ vymazat tuto potvoru a v¨echny dal¨¡?","Ano","Ne",NULL)==2) return; if (msg_box("Potvora je v map<EFBFBD>. Vymazat?",'\0x2',"Chce<EFBFBD> vymazat tuto potvoru a v<>echny dal<61><6C>?","Ano","Ne",NULL)==2) return;
break; break;
} }
for(j=0;j<maplen;j++) if ((mob_map[j] & 0x3fff)==i) mob_map[j]=-1; for(j=0;j<maplen;j++) if ((mob_map[j] & 0x3fff)==i) mob_map[j]=-1;
@ -957,13 +957,13 @@ void enemy_window()
property(b1,NULL,NULL,WINCOLOR); property(b1,NULL,NULL,WINCOLOR);
o_end->autoresizey=1; o_end->autoresizey=1;
define(31,3,20,19,15,1,scroll_button,-1,0,"\x1e"); define(31,3,20,19,15,1,scroll_button,-1,0,"\x1e");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(32,3,68,19,15,2,scroll_button,1,10,"\x1f"); define(32,3,68,19,15,2,scroll_button,1,10,"\x1f");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(40,5,5,60,20,3,button,"Vymazat");property(b1,NULL,NULL,WINCOLOR);on_change(vymazat_moba); define(40,5,5,60,20,3,button,"Vymazat");property(b1,NULL,NULL,WINCOLOR);on_control_change(vymazat_moba);
define(50,5,30,60,20,3,button,"Um¡stit");property(b1,NULL,NULL,WINCOLOR);on_change(umistit_moba); define(50,5,30,60,20,3,button,"Um<EFBFBD>stit");property(b1,NULL,NULL,WINCOLOR);on_control_change(umistit_moba);
define(60,70,5,60,20,3,button,"Novou");property(b1,NULL,NULL,WINCOLOR);on_change(new_mob); define(60,70,5,60,20,3,button,"Novou");property(b1,NULL,NULL,WINCOLOR);on_control_change(new_mob);
define(70,70,30,60,20,3,button,"Opravit");property(b1,NULL,NULL,WINCOLOR);on_change(edit_mob_event); define(70,70,30,60,20,3,button,"Opravit");property(b1,NULL,NULL,WINCOLOR);on_control_change(edit_mob_event);
movesize_win(waktual,SCR_WIDTH_X,0,170,SCR_WIDTH_Y-20); movesize_win(waktual,SCR_WIDTH_X,0,170,SCR_WIDTH_Y-20);
redraw_window(); redraw_window();
} }
@ -1051,7 +1051,7 @@ void *save_mob_map(long *size)
for(i=0,c=0;i<maplen;i++) for(i=0,c=0;i<maplen;i++)
if (mob_map[i]!=-1) c++; if (mob_map[i]!=-1) c++;
if (!c) return NULL; if (!c) return NULL;
if (c>255) msg_box("Omezen¡",'\x1',"Nelze m¡t v jedn mapˆ v¡c potvor ne 255. MAPEDIT nˆkter nenahraje.","Ok",NULL); if (c>255) msg_box("Omezen<EFBFBD>",'\x1',"Nelze m<EFBFBD>t v jedn<64> map<61> v<>c potvor ne<6E> 255. MAPEDIT n<>kter<65> nenahraje.","Ok",NULL);
p=data=getmem(*size=c*4); p=data=getmem(*size=c*4);
for(i=0;i<maplen;i++) for(i=0;i<maplen;i++)
if (mob_map[i]!=-1) if (mob_map[i]!=-1)
@ -1094,8 +1094,8 @@ static void check_correct_sounds()
if (err) if (err)
{ {
char text[200]; char text[200];
sprintf(text,"Nestvra \"%s\" m  ¨patnou referenci zvuku! Poloka bude vynulov na!",moblist[i].name); sprintf(text,"Nestv<EFBFBD>ra \"%s\" m<> <20>patnou referenci zvuku! Polo<6C>ka bude vynulov<6F>na!",moblist[i].name);
if (msg_box("Chybn  reference",'\x1',text,"Pokraovat","Opravit",NULL)==2) mob_sound_call(i); if (msg_box("Chybn<EFBFBD> reference",'\x1',text,"Pokra<EFBFBD>ovat","Opravit",NULL)==2) mob_sound_call(i);
} }
} }
} }
@ -1136,7 +1136,7 @@ void load_sound_dat(void *p,long siz)
c=strchr(c,0); c=strchr(c,0);
if (c==NULL) if (c==NULL)
{ {
msg_box("Load Error",'\x1',"Chyba nastala p©i na‡¡t n¡ souboru SOUND.DAT: Nekonzistetn¡ £daje. Nˆkter zvuky nebudou p©i©azeny!","Ok",NULL); msg_box("Load Error",'\x1',"Chyba nastala p<EFBFBD>i na<6E><61>t<EFBFBD>n<EFBFBD> souboru SOUND.DAT: Nekonzistetn<74> <20>daje. N<>kter<65> zvuky nebudou p<>i<EFBFBD>azeny!","Ok",NULL);
break; break;
} }
c++; c++;

View file

@ -239,7 +239,7 @@ static void clear_switchs()
} }
#define ZMENIT "Zmˆnit grafiku" #define ZMENIT "Zm<EFBFBD>nit grafiku"
static void zmenit() static void zmenit()
{ {
int i,c,f; int i,c,f;
@ -255,7 +255,7 @@ static void zmenit()
c=f_get_value(0,140); c=f_get_value(0,140);
if (c==0) if (c==0)
{ {
msg_box(ZMENIT,1,"Mus¡¨ vybrat nˆjakou grafiku. Klepni tam, jak je naps no <nic>",MSB_OK); msg_box(ZMENIT,1,"Mus<EFBFBD><EFBFBD> vybrat n<>jakou grafiku. Klepni tam, jak je naps<70>no <nic>",MSB_OK);
return; return;
} }
load_side_script(script_name); load_side_script(script_name);
@ -263,13 +263,13 @@ static void zmenit()
i=change_side(f_get_value(0,130),c-1,get_bit_fields(0,160,3),f-1,name); i=change_side(f_get_value(0,130),c-1,get_bit_fields(0,160,3),f-1,name);
if (i<-1) if (i<-1)
{ {
msg_box(ZMENIT,1,"Program odm¡tl (z nˆjak˜ch dvod) akci provst. Zkontrolujte v¨echny £daje",MSB_OK); msg_box(ZMENIT,1,"Program odm<EFBFBD>tl (z n<>jak<61>ch d<>vod<6F>) akci prov<6F>st. Zkontrolujte v<>echny <20>daje",MSB_OK);
discharge_side_script(); discharge_side_script();
return; return;
} }
if (i==-1) if (i==-1)
{ {
msg_box(ZMENIT,1,"Nepovolen  kombinace pol¡ \"Hlavn¡\", \"Lev \" a \"Prav \"",MSB_OK); msg_box(ZMENIT,1,"Nepovolen<EFBFBD> kombinace pol<6F> \"Hlavn<EFBFBD>\", \"Lev<EFBFBD>\" a \"Prav<EFBFBD>\"",MSB_OK);
discharge_side_script(); discharge_side_script();
return; return;
} }
@ -291,14 +291,14 @@ static void vymazat()
if (pos==0) if (pos==0)
{ {
msg_box(VYMAZAT,1,"Mus¡¨ vybrat nˆjakou grafiku. Klepni tam, jak je naps no <nic>",MSB_OK); msg_box(VYMAZAT,1,"Mus<EFBFBD><EFBFBD> vybrat n<>jakou grafiku. Klepni tam, jak je naps<70>no <nic>",MSB_OK);
return; return;
} }
if (msg_box(VYMAZAT,1,"Vymazat grafiku v‡etnˆ p©¡padn˜ch animac¡?",MSB_ANONE)==2) return; if (msg_box(VYMAZAT,1,"Vymazat grafiku v<EFBFBD>etn<EFBFBD> p<><70>padn<64>ch animac<61>?",MSB_ANONE)==2) return;
load_side_script(script_name); load_side_script(script_name);
if (delete_side(f_get_value(0,130),pos-1)) if (delete_side(f_get_value(0,130),pos-1))
{ {
msg_box(VYMAZAT,1,"Program odm¡tl vymazat grafiky ze scriptu, nastala nˆjak  chyba.",MSB_OK); msg_box(VYMAZAT,1,"Program odm<EFBFBD>tl vymazat grafiky ze scriptu, nastala n<>jak<61> chyba.",MSB_OK);
discharge_side_script(); discharge_side_script();
return; return;
} }
@ -306,18 +306,18 @@ static void vymazat()
refresh_scrs(); refresh_scrs();
} }
#define ZALOZIT "Zaloit grafiku" #define ZALOZIT "Zalo<EFBFBD>it grafiku"
static void add_graphics() static void add_graphics()
{ {
char name[200]; char name[200];
int c,d; int c,d;
get_value(0,100,name); get_value(0,100,name);
if (name[0]==0) {msg_box(ZALOZIT,1,"Mus¡¨ vepsat nˆjak jmno!",MSB_OK);return;} if (name[0]==0) {msg_box(ZALOZIT,1,"Mus<EFBFBD><EFBFBD> vepsat n<>jak<61> jm<6A>no!",MSB_OK);return;}
load_side_script(script_name); load_side_script(script_name);
if ((c=add_side(f_get_value(0,130),name,vals(110)))==-1) if ((c=add_side(f_get_value(0,130),name,vals(110)))==-1)
{ {
msg_box(ZALOZIT,1,"Nelze zaloit novou grafiku! P©¡li mnoho grafik, nebo nastala jin  chyba.",MSB_OK); msg_box(ZALOZIT,1,"Nelze zalo<EFBFBD>it novou grafiku! P<><50>li<6C> mnoho grafik, nebo nastala jin<69> chyba.",MSB_OK);
discharge_side_script(); discharge_side_script();
} }
else save_side_script(script_name); else save_side_script(script_name);
@ -350,12 +350,12 @@ static void nahled()
list=f_get_value(0,130);pos=f_get_value(0,140)-1+vals(150)-1; list=f_get_value(0,130);pos=f_get_value(0,140)-1+vals(150)-1;
if (pos<0) if (pos<0)
{ {
msg_box("N hled",1,"Nen¡ co zobrazit!",MSB_OK); msg_box("N<EFBFBD>hled",1,"Nen<EFBFBD> co zobrazit!",MSB_OK);
return; return;
} }
load_side_script(script_name); load_side_script(script_name);
tady: tady:
def_dialoge(2,2,630,440,"N hled grafiky"); def_dialoge(2,2,630,440,"N<EFBFBD>hled grafiky");
switch (list) switch (list)
{ {
case 0: p1=def_nahled(10,5,25,get_side_name(list,pos,1)); case 0: p1=def_nahled(10,5,25,get_side_name(list,pos,1));
@ -372,9 +372,9 @@ static void nahled()
swap=1; swap=1;
break; break;
} }
define(-1,5,5,80,20,2,button,"Ok");on_change(terminate); define(-1,5,5,80,20,2,button,"Ok");on_control_change(terminate_gui);
define(110,100,5,80,20,2,button,">>");on_change(terminate); define(110,100,5,80,20,2,button,">>");on_control_change(terminate_gui);
define(120,190,5,80,20,2,button,"<<");on_change(terminate); define(120,190,5,80,20,2,button,"<<");on_control_change(terminate_gui);
redraw_window(); redraw_window();
p4=get_side_name(list,pos,0); p4=get_side_name(list,pos,0);
if (p4!=NULL) set_enable(0,120,p4[0]=='*' && pos>0); if (p4!=NULL) set_enable(0,120,p4[0]=='*' && pos>0);
@ -404,51 +404,51 @@ void pcxviewer()
memcpy(&b1,def_border(1,0),sizeof(CTL3D)); memcpy(&b1,def_border(1,0),sizeof(CTL3D));
memcpy(&b2,def_border(5,WINCOLOR),sizeof(CTL3D)); memcpy(&b2,def_border(5,WINCOLOR),sizeof(CTL3D));
memcpy(&b3,def_border(6,WINCOLOR),sizeof(CTL3D)); memcpy(&b3,def_border(6,WINCOLOR),sizeof(CTL3D));
pcxview_win=def_window(635,440,"Prohl¡e‡ obrazk PCX"); pcxview_win=def_window(635,440,"Prohl<EFBFBD><EFBFBD>e<EFBFBD> obrazk<7A> PCX");
default_font=vga_font; default_font=vga_font;
memcpy(f_default,flat_color(0x0000),sizeof(charcolors)); memcpy(f_default,flat_color(0x0000),sizeof(charcolors));
on_change(close_pcx_window); on_control_change(close_pcx_window);
define(9,10,20,110,376,0,listbox,ls,0x7fff,0);on_change(read_pcx); define(9,10,20,110,376,0,listbox,ls,0x7fff,0);on_control_change(read_pcx);
property(&b3,NULL,NULL,WINCOLOR);c_default(0); property(&b3,NULL,NULL,WINCOLOR);c_default(0);
define(10,126,40,21,337,0,scroll_bar_v,0,10,1,0x0200); define(10,126,40,21,337,0,scroll_bar_v,0,10,1,0x0200);
property(&b2,NULL,NULL,WINCOLOR); property(&b2,NULL,NULL,WINCOLOR);
define(11,126,20,21,17,0,scroll_button,-1,0,"\x1e"); define(11,126,20,21,17,0,scroll_button,-1,0,"\x1e");
property(&b1,icones,NULL,WINCOLOR);on_change(scroll_support); property(&b1,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(12,126,380,21,17,0,scroll_button,1,10,"\x1f"); define(12,126,380,21,17,0,scroll_button,1,10,"\x1f");
property(&b1,icones,NULL,WINCOLOR);on_change(scroll_support); property(&b1,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(-1,175,20,1,1,0,label,"Cesta:"); define(-1,175,20,1,1,0,label,"Cesta:");
define(20,175,32,320,12,0,input_line,240);set_default(basic_path); define(20,175,32,320,12,0,input_line,240);set_default(basic_path);
property(&b3,NULL,NULL,WINCOLOR);on_exit(get_directory); property(&b3,NULL,NULL,WINCOLOR);on_control_exit(get_directory);
define(30,175,50,2,2,0,picture2);c_default(0); define(30,175,50,2,2,0,picture2);c_default(0);
define(40,10,10,80,10,3,check_box,"Otoit");c_default(swap);on_change(change_swap); define(40,10,10,80,10,3,check_box,"Oto<EFBFBD>it");c_default(swap);on_control_change(change_swap);
define(45,10,25,160,10,3,check_box,"Grafika Skeldalu");c_default(0);on_change(get_directory); define(45,10,25,160,10,3,check_box,"Grafika Skeldalu");c_default(0);on_control_change(get_directory);
define(-1,5,80,110,75,1,label,"");property(&b2,NULL,NULL,WINCOLOR); define(-1,5,80,110,75,1,label,"");property(&b2,NULL,NULL,WINCOLOR);
define(-1,10,80,100,70,1,label,"Nov  grafika"); define(-1,10,80,100,70,1,label,"Nov<EFBFBD> grafika");
define(100,10,100,100,10,1,input_line,50);set_default("");property(&b3,NULL,NULL,WINCOLOR); define(100,10,100,100,10,1,input_line,50);set_default("");property(&b3,NULL,NULL,WINCOLOR);
define(-1,10,115,100,12,1,label,"Sn¡mk"); define(-1,10,115,100,12,1,label,"Sn<EFBFBD>mk<EFBFBD>");
define(110,10,115,30,10,1,input_line,20,1,15,"%2d");set_default(strs(1));property(&b3,NULL,NULL,WINCOLOR); define(110,10,115,30,10,1,input_line,20,1,15,"%2d");set_default(strs(1));property(&b3,NULL,NULL,WINCOLOR);
on_exit(test_int); on_control_exit(test_int);
define(120,10,130,60,20,1,button,"Zaloit");property(&b1,NULL,NULL,WINCOLOR); define(120,10,130,60,20,1,button,"Zalo<EFBFBD>it");property(&b1,NULL,NULL,WINCOLOR);
on_change(add_graphics); on_control_change(add_graphics);
define(130,10,160,110,50,1,radio_butts,4,"Stˆna","Podlaha","Strop","Oblouk");c_default(0);on_change(refresh_scrs); define(130,10,160,110,50,1,radio_butts,4,"St<EFBFBD>na","Podlaha","Strop","Oblouk");c_default(0);on_control_change(refresh_scrs);
define(-1,5,230,110,110,1,label,"");property(&b2,NULL,NULL,WINCOLOR); define(-1,5,230,110,110,1,label,"");property(&b2,NULL,NULL,WINCOLOR);
define(-1,10,230,100,10,1,label,"Vyber grafiku:"); define(-1,10,230,100,10,1,label,"Vyber grafiku:");
define(140,10,255,100,10,1,str_line,side_names);on_enter(string_list_sup);c_default(0);property(&b2,NULL,NULL,WINCOLOR); define(140,10,255,100,10,1,str_line,side_names);on_enter(string_list_sup);c_default(0);property(&b2,NULL,NULL,WINCOLOR);
define(-1,10,270,100,12,1,label,"Sn¡mek"); define(-1,10,270,100,12,1,label,"Sn<EFBFBD>mek");
define(150,10,270,30,12,1,input_line,20,1,15,"%2d");set_default(strs(1));property(&b3,NULL,NULL,WINCOLOR); define(150,10,270,30,12,1,input_line,20,1,15,"%2d");set_default(strs(1));property(&b3,NULL,NULL,WINCOLOR);
on_exit(test_int); on_control_exit(test_int);
define(160,10,300,100,10,1,check_box,"Hlavn¡");c_default(0);on_change(clear_switchs); define(160,10,300,100,10,1,check_box,"Hlavn<EFBFBD>");c_default(0);on_control_change(clear_switchs);
define(170,10,312,100,10,1,check_box,"Lev ");c_default(0);on_change(clear_switchs); define(170,10,312,100,10,1,check_box,"Lev<EFBFBD>");c_default(0);on_control_change(clear_switchs);
define(180,10,324,100,10,1,check_box,"Prav ");c_default(0);on_change(clear_switchs); define(180,10,324,100,10,1,check_box,"Prav<EFBFBD>");c_default(0);on_control_change(clear_switchs);
define(190,20,345,80,20,1,button,"P©i©adit");property(&b1,NULL,NULL,WINCOLOR);on_change(zmenit); define(190,20,345,80,20,1,button,"P<EFBFBD>i<EFBFBD>adit");property(&b1,NULL,NULL,WINCOLOR);on_control_change(zmenit);
define(200,20,370,80,20,1,button,"Vymazat");property(&b1,NULL,NULL,WINCOLOR);on_change(vymazat); define(200,20,370,80,20,1,button,"Vymazat");property(&b1,NULL,NULL,WINCOLOR);on_control_change(vymazat);
define(200,20,395,80,20,1,button,"N hled");property(&b1,NULL,NULL,WINCOLOR);on_change(nahled); define(200,20,395,80,20,1,button,"N<EFBFBD>hled");property(&b1,NULL,NULL,WINCOLOR);on_control_change(nahled);
define(-1,130,20,1,400,1,label,"");property(def_border(4,WINCOLOR),NULL,NULL,WINCOLOR); define(-1,130,20,1,400,1,label,"");property(def_border(4,WINCOLOR),NULL,NULL,WINCOLOR);
define(-1,100,30,1,1,1,label,"Tvrce"); define(-1,100,30,1,1,1,label,"Tv<EFBFBD>rce");
define(-1,100,45,1,1,1,label,"grafick˜ch"); define(-1,100,45,1,1,1,label,"grafick<EFBFBD>ch");
define(-1,100,60,1,1,1,label,"script"); define(-1,100,60,1,1,1,label,"script<EFBFBD>");
} }
else else
{ {

View file

@ -163,7 +163,7 @@ void strlist_event(EVENT_MSG *msg,OBJREC *o)
i++; i++;
} }
*d=i; *d=i;
terminate(); terminate_gui();
} }
} }
if (msg->msg==E_CONTROL) if (msg->msg==E_CONTROL)
@ -232,16 +232,16 @@ int string_list(char *c,int akt)
def_window(WLISTX,WLISTY,"Vyber"); def_window(WLISTX,WLISTY,"Vyber");
waktual->x=x1; waktual->x=x1;
waktual->y=y1; waktual->y=y1;
on_change(terminate); on_control_change(terminate_gui);
set_window_modal(); set_window_modal();
define(19,5,20,WLISTX-30,WLISTY-20,0,listbox,c,RGB555(31,31,31),0);c_default(akt); define(19,5,20,WLISTX-30,WLISTY-20,0,listbox,c,RGB555(31,31,31),0);c_default(akt);
on_change(terminate); on_control_change(terminate_gui);
define(20,3,42,17,WLISTY-64,1,scroll_bar_v,0,1,18,SCROLLBARCOL); define(20,3,42,17,WLISTY-64,1,scroll_bar_v,0,1,18,SCROLLBARCOL);
property(ctl,NULL,NULL,WINCOLOR);c_default(0); property(ctl,NULL,NULL,WINCOLOR);c_default(0);
define(21,1,20,21,17,1,scroll_button,-1,0,"\x1e"); define(21,1,20,21,17,1,scroll_button,-1,0,"\x1e");
property(NULL,icones,&cl,WINCOLOR);on_change(scroll_support); property(NULL,icones,&cl,WINCOLOR);on_control_change(scroll_support);
define(22,1,1,21,17,2,scroll_button,1,1,"\x1f"); define(22,1,1,21,17,2,scroll_button,1,1,"\x1f");
property(NULL,icones,&cl,WINCOLOR);on_change(scroll_support); property(NULL,icones,&cl,WINCOLOR);on_control_change(scroll_support);
redraw_window(); redraw_window();
send_message(E_GUI,19,E_CONTROL,2); send_message(E_GUI,19,E_CONTROL,2);
redraw_window(); redraw_window();

File diff suppressed because it is too large Load diff

View file

@ -63,7 +63,7 @@ static void f10exit()
do do
{ {
c=*(int*)task_wait_event(E_KEYBOARD); c=*(int*)task_wait_event(E_KEYBOARD);
if ((c & 0xff)==0 && (c>>8)=='D') terminate(); if ((c & 0xff)==0 && (c>>8)=='D') terminate_gui();
if ((c & 0xff)==0 && (c>>8)=='C') if ((c & 0xff)==0 && (c>>8)=='C')
{ {
done_mysky(); done_mysky();
@ -122,7 +122,7 @@ long def_window(word xs,word ys,char *name)
if (xs>=70) if (xs>=70)
{ {
define(1,1,1,19,16,1,button,"\x0f"); define(1,1,1,19,16,1,button,"\x0f");
property(NULL,icones,&icone_color,WINCOLOR);on_change(close_current); property(NULL,icones,&icone_color,WINCOLOR);on_control_change(close_current);
} }
return q; return q;
} }
@ -149,10 +149,10 @@ int def_dialoge(word x,word y,word xs, word ys, char *name,char modal)
static void display_progress(void) static void display_progress(void)
{ {
def_dialoge(10,300,620,80,"Na‡¡t m informace o filmu...",1); def_dialoge(10,300,620,80,"Na<EFBFBD><EFBFBD>t<EFBFBD>m informace o filmu...",1);
define(10,10,20,600,30,0,done_bar,100); define(10,10,20,600,30,0,done_bar,100);
property(def_border(3,WINCOLOR),NULL,flat_color(0x2e0),WINCOLOR); property(def_border(3,WINCOLOR),NULL,flat_color(0x2e0),WINCOLOR);
define(30,5,5,80,20,2,button,"Konec");on_change(terminate); define(30,5,5,80,20,2,button,"Konec");on_control_change(terminate_gui);
property(def_border(1,0),vga_font,flat_color(0),BUTTONCOLOR); property(def_border(1,0),vga_font,flat_color(0),BUTTONCOLOR);
c_default(0); c_default(0);
redraw_window(); redraw_window();
@ -222,11 +222,11 @@ void init_desktop(void)
define(5,1,1,14,14,1,color_box);c_default(LABELCOLOR); define(5,1,1,14,14,1,color_box);c_default(LABELCOLOR);
define(10,2,20,320,180,0,pic_viewer);c_default(0); define(10,2,20,320,180,0,pic_viewer);c_default(0);
define(20,26,4,271,17,3,scroll_bar_h,0,total_frames-1,total_frames/16,0x0200); define(20,26,4,271,17,3,scroll_bar_h,0,total_frames-1,total_frames/16,0x0200);
property(def_border(3,WINCOLOR),NULL,NULL,WINCOLOR);c_default(0);on_change(change_frame_pos); property(def_border(3,WINCOLOR),NULL,NULL,WINCOLOR);c_default(0);on_control_change(change_frame_pos);
define(21,2,4,21,19,2,scroll_button,1,100,"\x1c"); define(21,2,4,21,19,2,scroll_button,1,100,"\x1c");
property(NULL,icones,&cl,WINCOLOR);on_change(scroll_support); property(NULL,icones,&cl,WINCOLOR);on_control_change(scroll_support);
define(22,2,4,21,19,3,scroll_button,-1,-100,"\x1d"); define(22,2,4,21,19,3,scroll_button,-1,-100,"\x1d");
property(NULL,icones,&cl,WINCOLOR);on_change(scroll_support); property(NULL,icones,&cl,WINCOLOR);on_control_change(scroll_support);
redraw_desktop(); redraw_desktop();
show_frame(0); show_frame(0);
} }
@ -246,9 +246,9 @@ static void init_editor()
switch(examine_mgif_file(show_progress)) switch(examine_mgif_file(show_progress))
{ {
case EX_NOT_FOUND:chyba="MGIF soubor nenalezen!";break; case EX_NOT_FOUND:chyba="MGIF soubor nenalezen!";break;
case EX_NO_SOUND:chyba="Film nem  zvukovou stopu. Sestav jej se zvukem.";break; case EX_NO_SOUND:chyba="Film nem<EFBFBD> zvukovou stopu. Sestav jej se zvukem.";break;
case EX_READ_ERROR:chyba="Chyba p©i ‡ten¡. Film je mon  po¨kozen";break; case EX_READ_ERROR:chyba="Chyba p<EFBFBD>i <20>ten<65>. Film je mo<6D>n<EFBFBD> po<70>kozen";break;
case EX_SOUND_ERROR:chyba="Nekonzistentn¡ zvukov  stopa!";break; case EX_SOUND_ERROR:chyba="Nekonzistentn<EFBFBD> zvukov<6F> stopa!";break;
default:chyba=NULL; default:chyba=NULL;
} }
if (chyba!=NULL) if (chyba!=NULL)
@ -406,9 +406,9 @@ void open_program_window(int track)
cl1[0]=0x8000;cl1[1]=0xf; cl1[0]=0x8000;cl1[1]=0xf;
memcpy(cl2,flat_color(0),sizeof(cl2)); memcpy(cl2,flat_color(0),sizeof(cl2));
win_program=def_dialoge(10,250,620,220,smp_prg[track].sample_name,0); win_program=def_dialoge(10,250,620,220,smp_prg[track].sample_name,0);
define(10,10,20,500,70,0,track_view,&smp_prg[track].levy);on_change(change_frame_clk1); define(10,10,20,500,70,0,track_view,&smp_prg[track].levy);on_control_change(change_frame_clk1);
property(def_border(5,WINCOLOR),NULL,NULL,WINCOLOR);c_default(frame); property(def_border(5,WINCOLOR),NULL,NULL,WINCOLOR);c_default(frame);
define(20,10,120,500,70,0,track_view,&smp_prg[track].pravy);on_change(change_frame_clk1); define(20,10,120,500,70,0,track_view,&smp_prg[track].pravy);on_control_change(change_frame_clk1);
property(def_border(5,WINCOLOR),NULL,NULL,WINCOLOR);c_default(frame); property(def_border(5,WINCOLOR),NULL,NULL,WINCOLOR);c_default(frame);
define(30,10,95,500,20,0,starts_view,smp_prg+track); define(30,10,95,500,20,0,starts_view,smp_prg+track);
property(def_border(5,WINCOLOR),NULL,NULL,WINCOLOR);c_default(frame); property(def_border(5,WINCOLOR),NULL,NULL,WINCOLOR);c_default(frame);
@ -416,27 +416,27 @@ void open_program_window(int track)
{ {
int y=i; int y=i;
define(40+i,85,20+y,20,35,1,scroll_button,-1,0,"\x1e"); define(40+i,85,20+y,20,35,1,scroll_button,-1,0,"\x1e");
property(NULL,icones,&cl1,WINCOLOR);on_change(change_vpoint);on_event(step_clear); property(NULL,icones,&cl1,WINCOLOR);on_control_change(change_vpoint);on_event(step_clear);
define(50+i,85,56+y,20,35,1,scroll_button,1,255,"\x1f"); define(50+i,85,56+y,20,35,1,scroll_button,1,255,"\x1f");
property(NULL,icones,&cl1,WINCOLOR);on_change(change_vpoint);on_event(step_clear); property(NULL,icones,&cl1,WINCOLOR);on_control_change(change_vpoint);on_event(step_clear);
define(60+i,10,20+y,20,70,1,button,"X");on_change(change_vpoint); define(60+i,10,20+y,20,70,1,button,"X");on_control_change(change_vpoint);
property(NULL,vga_font,cl2,WINCOLOR); property(NULL,vga_font,cl2,WINCOLOR);
define(70+i,32,20+y,50,20,1,button,"+ÄÄÄ+");on_change(change_vpoint); define(70+i,32,20+y,50,20,1,button,"+<EFBFBD><EFBFBD><EFBFBD>+");on_control_change(change_vpoint);
property(NULL,vga_font,cl2,WINCOLOR); property(NULL,vga_font,cl2,WINCOLOR);
define(80+i,32,45+y,50,20,1,scroll_button,-1,0,"+--+"); define(80+i,32,45+y,50,20,1,scroll_button,-1,0,"+--+");
property(NULL,vga_font,&cl2,WINCOLOR);on_change(change_vpoint);on_event(step_clear); property(NULL,vga_font,&cl2,WINCOLOR);on_control_change(change_vpoint);on_event(step_clear);
define(90+i,32,70+y,50,20,1,scroll_button,1,255,"+--+"); define(90+i,32,70+y,50,20,1,scroll_button,1,255,"+--+");
property(NULL,vga_font,&cl2,WINCOLOR);on_change(change_vpoint);on_event(step_clear); property(NULL,vga_font,&cl2,WINCOLOR);on_control_change(change_vpoint);on_event(step_clear);
} }
define(200,10,95,95,20,1,button,"(re)Start");property(NULL,vga_font,&cl2,WINCOLOR); define(200,10,95,95,20,1,button,"(re)Start");property(NULL,vga_font,&cl2,WINCOLOR);
on_change(toggle_restart); on_control_change(toggle_restart);
cl=def_border(1,0); cl=def_border(1,0);
define(210,10,5,80,20,3,button,"Max");property(cl,vga_font,&cl2,BUTTONCOLOR);on_change(max_min_mid_align); define(210,10,5,80,20,3,button,"Max");property(cl,vga_font,&cl2,BUTTONCOLOR);on_control_change(max_min_mid_align);
define(220,100,5,80,20,3,button,"Min");property(cl,vga_font,&cl2,BUTTONCOLOR);on_change(max_min_mid_align); define(220,100,5,80,20,3,button,"Min");property(cl,vga_font,&cl2,BUTTONCOLOR);on_control_change(max_min_mid_align);
define(230,190,5,80,20,3,button,"St©ed");property(cl,vga_font,&cl2,BUTTONCOLOR);on_change(max_min_mid_align); define(230,190,5,80,20,3,button,"St<EFBFBD>ed");property(cl,vga_font,&cl2,BUTTONCOLOR);on_control_change(max_min_mid_align);
define(240,280,5,80,20,3,button,"Jako doln¡");property(cl,vga_font,&cl2,BUTTONCOLOR);on_change(max_min_mid_align); define(240,280,5,80,20,3,button,"Jako doln<EFBFBD>");property(cl,vga_font,&cl2,BUTTONCOLOR);on_control_change(max_min_mid_align);
define(250,370,5,80,20,3,button,"Jako horn¡");property(cl,vga_font,&cl2,BUTTONCOLOR);on_change(max_min_mid_align); define(250,370,5,80,20,3,button,"Jako horn<EFBFBD>");property(cl,vga_font,&cl2,BUTTONCOLOR);on_control_change(max_min_mid_align);
define(260,10,10,80,10,2,check_box,"Vypnut");on_change(mute_channel);c_default(smp_prg[cur_track].muted); define(260,10,10,80,10,2,check_box,"Vypnut");on_control_change(mute_channel);c_default(smp_prg[cur_track].muted);
redraw_window(); redraw_window();
mute_channel(); mute_channel();
} }
@ -505,22 +505,22 @@ void new_edit_sample(int track)
memcpy(&b1,def_border(1,0),sizeof(CTL3D)); memcpy(&b1,def_border(1,0),sizeof(CTL3D));
memcpy(&b2,def_border(5,WINCOLOR),sizeof(CTL3D)); memcpy(&b2,def_border(5,WINCOLOR),sizeof(CTL3D));
memcpy(&b3,def_border(6,WINCOLOR),sizeof(CTL3D)); memcpy(&b3,def_border(6,WINCOLOR),sizeof(CTL3D));
def_dialoge(20,140,600,200,"Vlo nov˜ zvuk",1); def_dialoge(20,140,600,200,"Vlo<EFBFBD> nov<6F> zvuk",1);
dir=create_list(2);str_add(&dir,"<wait>"); dir=create_list(2);str_add(&dir,"<wait>");
define(9,10,20,120,166,0,listbox,dir,0x7fff,0);on_change(dopln_jmeno_samplu); define(9,10,20,120,166,0,listbox,dir,0x7fff,0);on_control_change(dopln_jmeno_samplu);
property(&b3,NULL,NULL,WINCOLOR);c_default(0); property(&b3,NULL,NULL,WINCOLOR);c_default(0);
define(10,137,40,19,127,0,scroll_bar_v,0,10,1,0x0200); define(10,137,40,19,127,0,scroll_bar_v,0,10,1,0x0200);
property(&b2,NULL,NULL,WINCOLOR); property(&b2,NULL,NULL,WINCOLOR);
define(11,136,20,21,17,0,scroll_button,-1,0,"\x1e"); define(11,136,20,21,17,0,scroll_button,-1,0,"\x1e");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(12,136,170,21,17,0,scroll_button,1,10,"\x1f"); define(12,136,170,21,17,0,scroll_button,1,10,"\x1f");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(20,170,20,420,12,0,input_line,255);set_default(last_path);on_exit(change_dir); define(20,170,20,420,12,0,input_line,255);set_default(last_path);on_control_exit(change_dir);
property(&b3,vga_font,NULL,WINCOLOR); property(&b3,vga_font,NULL,WINCOLOR);
define(-1,170,35,1,1,0,label,"Cesta a jmno zvuku"); define(-1,170,35,1,1,0,label,"Cesta a jm<EFBFBD>no zvuku");
define(-1,170,65,1,1,0,label,"Jmno stopy (voliteln)"); define(-1,170,65,1,1,0,label,"Jm<EFBFBD>no stopy (voliteln<6C>)");
define(-1,170,95,1,1,0,label,"Za tek opakov  (-1 vyp)"); define(-1,170,95,1,1,0,label,"Za<EFBFBD><EFBFBD>tek opakov<6F>n<EFBFBD> (-1 vyp)");
define(-1,170,125,1,1,0,label,"Konec opakov "); define(-1,170,125,1,1,0,label,"Konec opakov<EFBFBD>n<EFBFBD>");
c=(smp_prg[track].sample_name);if (c==NULL) c=empty; c=(smp_prg[track].sample_name);if (c==NULL) c=empty;
define(30,170,50,420,12,0,input_line,255);set_default(c); define(30,170,50,420,12,0,input_line,255);set_default(c);
property(&b3,vga_font,NULL,WINCOLOR); property(&b3,vga_font,NULL,WINCOLOR);
@ -531,8 +531,8 @@ void new_edit_sample(int track)
property(&b3,vga_font,NULL,WINCOLOR); property(&b3,vga_font,NULL,WINCOLOR);
define(60,290,140,100,12,0,input_line,199);set_default(itoa(smp_prg[track].loop_end,num,10)); define(60,290,140,100,12,0,input_line,199);set_default(itoa(smp_prg[track].loop_end,num,10));
property(&b3,vga_font,NULL,WINCOLOR); property(&b3,vga_font,NULL,WINCOLOR);
define(100,10,10,80,20,2,button,"Storno");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(terminate); define(100,10,10,80,20,2,button,"Storno");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
define(110,10,35,80,20,2,button,"Ok");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(terminate); define(110,10,35,80,20,2,button,"Ok");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
define(120,10,70,38,20,2,button,"");property(&b1,vga_font,NULL,BUTTONCOLOR); define(120,10,70,38,20,2,button,"");property(&b1,vga_font,NULL,BUTTONCOLOR);
define(130,52,70,38,20,2,button,"");property(&b1,vga_font,NULL,BUTTONCOLOR); define(130,52,70,38,20,2,button,"");property(&b1,vga_font,NULL,BUTTONCOLOR);
redraw_window(); redraw_window();
@ -620,7 +620,7 @@ static void delete_sample()
int i; int i;
i=f_get_value(0,9); i=f_get_value(0,9);
if (i>=samples_total || i<0) return; if (i>=samples_total || i<0) return;
if (msg_box("Ot zka?",'\x2',"Odstranit zvuk?","Ano","Ne",NULL)==2) return; if (msg_box("Ot<EFBFBD>zka?",'\x2',"Odstranit zvuk?","Ano","Ne",NULL)==2) return;
open_program_window(-1); open_program_window(-1);
remove_sample(i); remove_sample(i);
update_sample_list(); update_sample_list();
@ -654,7 +654,7 @@ static void duplic_sample()
static void prehrat_cele() static void prehrat_cele()
{ {
show_frame(-1); show_frame(-1);
def_dialoge(2,42,635,378,"P©ehr t cel",1); def_dialoge(2,42,635,378,"P<EFBFBD>ehr<EFBFBD>t cel<65>",1);
redraw_window(); redraw_window();
curcolor=0; curcolor=0;
start_mixing(); start_mixing();
@ -680,9 +680,9 @@ static void prehrat_preview()
x=o->locx+320+4; x=o->locx+320+4;
y=o->locy+180+4; y=o->locy+180+4;
if (x>500) x=2;if (y>400) y=2; if (x>500) x=2;if (y>400) y=2;
def_dialoge(x,y,100,80,"N hled",1); def_dialoge(x,y,100,80,"N<EFBFBD>hled",1);
define(10,10,25,80,30,0,button,"STOP"); define(10,10,25,80,30,0,button,"STOP");
property(def_border(1,0),vga_font,NULL,BUTTONCOLOR);on_change(stop_preview_clk); property(def_border(1,0),vga_font,NULL,BUTTONCOLOR);on_control_change(stop_preview_clk);
redraw_window(); redraw_window();
preview_block(f_get_value(win_preview,20),o->locx,o->locy); preview_block(f_get_value(win_preview,20),o->locx,o->locy);
close_current(); close_current();
@ -695,8 +695,8 @@ static void make()
def_dialoge(10,300,620,80,"Sestavuji...",1); def_dialoge(10,300,620,80,"Sestavuji...",1);
define(10,10,20,600,30,0,done_bar,100);c_default(0); define(10,10,20,600,30,0,done_bar,100);c_default(0);
property(def_border(3,WINCOLOR),NULL,flat_color(0x2e0),WINCOLOR); property(def_border(3,WINCOLOR),NULL,flat_color(0x2e0),WINCOLOR);
define(20,5,5,480,12,3,input_line,100);set_default("Ukl d m projekt...."); define(20,5,5,480,12,3,input_line,100);set_default("Ukl<EFBFBD>d<EFBFBD>m projekt....");
define(30,5,5,80,20,2,button,"Stop");on_change(terminate); define(30,5,5,80,20,2,button,"Stop");on_control_change(terminate_gui);
property(def_border(1,0),vga_font,NULL,BUTTONCOLOR); property(def_border(1,0),vga_font,NULL,BUTTONCOLOR);
redraw_window(); redraw_window();
save_project(prj_name); save_project(prj_name);
@ -708,7 +708,7 @@ static void build()
{ {
int i; int i;
if (msg_box(PRG_HEADER,'\x2',"Chce¨ spustit REBUILD filmu? Tato funkce sestav¡ CELOU zvukovou stopu, co me zabrat dost ‡asu","Ano","Ne",NULL)==2) return; if (msg_box(PRG_HEADER,'\x2',"Chce<EFBFBD> spustit REBUILD filmu? Tato funkce sestav<61> CELOU zvukovou stopu, co<63> m<><6D>e zabrat dost <20>asu","Ano","Ne",NULL)==2) return;
for(i=0;i<total_frames;i++) for(i=0;i<total_frames;i++)
mgf_frames[i].changed=1; mgf_frames[i].changed=1;
make(); make();
@ -717,12 +717,12 @@ static void build()
static void exit_prog() static void exit_prog()
{ {
int i; int i;
i=msg_box("Exit",'\x2',"Uloit projekt p©ed ukon‡en¡m programu?","Ano","Ne","Storno",NULL); i=msg_box("Exit",'\x2',"Ulo<EFBFBD>it projekt p<>ed ukon<6F>en<65>m programu?","Ano","Ne","Storno",NULL);
switch (i) switch (i)
{ {
case 3:return; case 3:return;
case 1:save_project(prj_name); case 1:save_project(prj_name);
case 2:terminate(); case 2:terminate_gui();
} }
} }
@ -742,13 +742,13 @@ static void info()
{ {
"Film:", "Film:",
"Project:", "Project:",
"Celkem sn¡mk:", "Celkem sn<EFBFBD>mk<EFBFBD>:",
"Pr zdn˜ch sn¡mk:", "Pr<EFBFBD>zdn<EFBFBD>ch sn<73>mk<6D>:",
"Vyuit  pamˆŸ(KB):", "Vyu<EFBFBD>it<EFBFBD> pam<61><6D>(KB):",
"Sestavovac¡ pamˆŸ(KB):", "Sestavovac<EFBFBD> pam<61><6D>(KB):",
"Stop:", "Stop:",
"Sestaveno sn¡mk:", "Sestaveno sn<EFBFBD>mk<EFBFBD>:",
"Cas sestaven¡:", "Cas sestaven<EFBFBD>:",
}; };
char str[200];char *c; char str[200];char *c;
int i; int i;
@ -775,12 +775,12 @@ static void info()
"1/4", "1/4",
"1/8", "1/8",
"1/16");c_default(amplifikace); "1/16");c_default(amplifikace);
define(100,5,5,60,20,2,button,"Ok");on_change(terminate); define(100,5,5,60,20,2,button,"Ok");on_control_change(terminate_gui);
redraw_window(); redraw_window();
escape(); escape();
if (amplifikace!=f_get_value(0,10)) if (amplifikace!=f_get_value(0,10))
{ {
msg_box(PRG_HEADER,'\x1',"Aby tato zmˆna mˆla spr vn˜ efekt, mus¡¨ provst BUILD!","Ok",NULL); msg_box(PRG_HEADER,'\x1',"Aby tato zm<EFBFBD>na m<>la spr<70>vn<76> efekt, mus<75><73> prov<6F>st BUILD!","Ok",NULL);
amplifikace=f_get_value(0,10); amplifikace=f_get_value(0,10);
} }
close_current(); close_current();
@ -796,8 +796,8 @@ char how_frames(char *prompt,int *value)
define(10,5,20,1,1,0,label,prompt); define(10,5,20,1,1,0,label,prompt);
define(20,10,35,60,12,1,input_line,10);set_default(itoa(*value,buffer,10)); define(20,10,35,60,12,1,input_line,10);set_default(itoa(*value,buffer,10));
property(def_border(5,WINCOLOR),NULL,NULL,0x7fff); property(def_border(5,WINCOLOR),NULL,NULL,0x7fff);
define(30,5,5,80,20,2,button,"Ok");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(terminate); define(30,5,5,80,20,2,button,"Ok");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
define(40,90,5,80,20,2,button,"Zru¨it");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(terminate); define(40,90,5,80,20,2,button,"Zru<EFBFBD>it");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
redraw_window(); redraw_window();
chyba: chyba:
escape(); escape();
@ -806,7 +806,7 @@ char how_frames(char *prompt,int *value)
get_value(0,20,buffer); get_value(0,20,buffer);
if (sscanf(buffer,"%d",value)!=1) if (sscanf(buffer,"%d",value)!=1)
{ {
msg_box(PRG_HEADER,'\x1',"To mus¡ b˜t ‡¡slo!","Ok",NULL); msg_box(PRG_HEADER,'\x1',"To mus<EFBFBD> b<>t <20><>slo!","Ok",NULL);
goto chyba; goto chyba;
} }
close_current(); close_current();
@ -823,7 +823,7 @@ static void ginsert()
frame=f_get_value(win_preview,20); frame=f_get_value(win_preview,20);
v=get_inserted_frames(frame); v=get_inserted_frames(frame);
if (how_frames("Kolik bylo vloeno?",&v)==0) return; if (how_frames("Kolik bylo vlo<EFBFBD>eno?",&v)==0) return;
insert_global(frame,v); insert_global(frame,v);
redraw_desktop(); redraw_desktop();
} }
@ -835,7 +835,7 @@ static void gdelete()
frame=f_get_value(win_preview,20); frame=f_get_value(win_preview,20);
v=get_deleted_frames(); v=get_deleted_frames();
if (how_frames("Kolik bylo vymaz no?",&v)==0) return; if (how_frames("Kolik bylo vymaz<EFBFBD>no?",&v)==0) return;
delete_global(frame,v); delete_global(frame,v);
redraw_desktop(); redraw_desktop();
} }
@ -854,26 +854,26 @@ void control_window()
memcpy(f_default,flat_color(0x0000),sizeof(charcolors)); memcpy(f_default,flat_color(0x0000),sizeof(charcolors));
win_control=def_dialoge(350,10,280,228,PRG_HEADER,0); win_control=def_dialoge(350,10,280,228,PRG_HEADER,0);
build_sample_list(&smp_list); build_sample_list(&smp_list);
define(9,10,20,100,196,0,listbox,smp_list,0x7fff,0);on_change(select_sample); define(9,10,20,100,196,0,listbox,smp_list,0x7fff,0);on_control_change(select_sample);
property(&b3,NULL,NULL,WINCOLOR);c_default(-1); property(&b3,NULL,NULL,WINCOLOR);c_default(-1);
define(10,117,40,19,157,0,scroll_bar_v,0,10,1,0x0200); define(10,117,40,19,157,0,scroll_bar_v,0,10,1,0x0200);
property(&b2,NULL,NULL,WINCOLOR); property(&b2,NULL,NULL,WINCOLOR);
define(11,116,20,21,17,0,scroll_button,-1,0,"\x1e"); define(11,116,20,21,17,0,scroll_button,-1,0,"\x1e");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(12,116,200,21,17,0,scroll_button,1,10,"\x1f"); define(12,116,200,21,17,0,scroll_button,1,10,"\x1f");
property(NULL,icones,NULL,WINCOLOR);on_change(scroll_support); property(NULL,icones,NULL,WINCOLOR);on_control_change(scroll_support);
define(20,140,20,65,20,0,button,"Nov˜");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(new_sample); define(20,140,20,65,20,0,button,"Nov<EFBFBD>");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(new_sample);
define(30,210,20,65,20,0,button,"Odstra¤");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(delete_sample); define(30,210,20,65,20,0,button,"Odstra<EFBFBD>");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(delete_sample);
define(40,140,45,65,20,0,button,"Oprav");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(edit_sample); define(40,140,45,65,20,0,button,"Oprav");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(edit_sample);
define(50,210,45,65,20,0,button,"Duplikuj");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(duplic_sample); define(50,210,45,65,20,0,button,"Duplikuj");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(duplic_sample);
define(60,140,120,65,20,0,button,"P©ehr t");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(prehrat_cele); define(60,140,120,65,20,0,button,"P<EFBFBD>ehr<EFBFBD>t");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(prehrat_cele);
define(70,210,120,65,20,0,button,"N hled");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(prehrat_preview); define(70,210,120,65,20,0,button,"N<EFBFBD>hled");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(prehrat_preview);
define(80,140,145,65,20,0,button,"Make");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(make); define(80,140,145,65,20,0,button,"Make");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(make);
define(90,210,145,65,20,0,button,"Build");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(build); define(90,210,145,65,20,0,button,"Build");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(build);
define(100,210,10,65,20,3,button,"Exit");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(exit_prog); define(100,210,10,65,20,3,button,"Exit");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(exit_prog);
define(110,140,10,65,20,3,button,"Info");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(info); define(110,140,10,65,20,3,button,"Info");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(info);
define(120,140,170,65,20,0,button,"GInsert");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(ginsert); define(120,140,170,65,20,0,button,"GInsert");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(ginsert);
define(130,210,170,65,20,0,button,"GDelete");property(&b1,vga_font,NULL,BUTTONCOLOR);on_change(gdelete); define(130,210,170,65,20,0,button,"GDelete");property(&b1,vga_font,NULL,BUTTONCOLOR);on_control_change(gdelete);
p=samples_total!=0; p=samples_total!=0;
set_enable(0,30,p);set_enable(0,40,p);set_enable(0,50,p); set_enable(0,30,p);set_enable(0,40,p);set_enable(0,50,p);
redraw_window(); redraw_window();
@ -884,7 +884,7 @@ void main(int argc,char **argv)
if (argc!=2) if (argc!=2)
{ {
puts("MGF SoundTrack Editor ... (C) 1998 Ond©ej Nov k\n"); puts("MGF SoundTrack Editor ... (C) 1998 Ond<EFBFBD>ej Nov<6F>k\n");
puts("Usage: MGIFEDIT <film.mgf>"); puts("Usage: MGIFEDIT <film.mgf>");
exit(1); exit(1);
} }
@ -893,8 +893,8 @@ void main(int argc,char **argv)
prj_name=get_project_name(mgif_filename); prj_name=get_project_name(mgif_filename);
switch (load_project(prj_name)) switch (load_project(prj_name))
{ {
case -1:msg_box(PRG_HEADER,'\x1',"Chyba form tu v projektu!","Zav©¡t",NULL);shutdown();exit(1); case -1:msg_box(PRG_HEADER,'\x1',"Chyba form<EFBFBD>tu v projektu!","Zav<EFBFBD><EFBFBD>t",NULL);shutdown();exit(1);
case -2:msg_box(PRG_HEADER,'\x1',"Neo‡ek van˜ eof souboru!","Zav©¡t",NULL);shutdown();exit(1); case -2:msg_box(PRG_HEADER,'\x1',"Neo<EFBFBD>ek<EFBFBD>van<EFBFBD> eof souboru!","Zav<EFBFBD><EFBFBD>t",NULL);shutdown();exit(1);
} }
init_editor(); init_editor();
warn_size_mistmach(); warn_size_mistmach();

View file

@ -48,3 +48,4 @@ void SetWheelMapping(char up, char down);
#define WM_RELOADMAP (WM_APP+215) #define WM_RELOADMAP (WM_APP+215)
#define E_RELOADMAP 40 #define E_RELOADMAP 40

5
game/CMakeLists.txt Normal file
View file

@ -0,0 +1,5 @@
SET(files automap.c clk_map.c dialogy.c dump.cpp enemy.c engine2.c globmap.c inv.c kouzla.c menu.c skeldal.c souboje.c
builder.c engine1.c gamesave.c interfac.c kniha.c macros.c realgame.c setup.c sndandmus.c specproc.c)
add_executable(skeldal ${files})

View file

@ -31,14 +31,14 @@
#define MEDIUM_MAP_LINE1 RGB555(25,20,17) #define MEDIUM_MAP_LINE1 RGB555(25,20,17)
#define MEDIUM_MAP_LINE2 RGB555(31,22,6) #define MEDIUM_MAP_LINE2 RGB555(31,22,6)
word stairs_colors[]= word stairs_colors[7]=
{AUTOMAP_LINE1, {AUTOMAP_LINE1,
RGB555(14,12,11), RGB555(14,12,11),
RGB555(15,14,12), RGB555(15,14,12),
RGB555(16,15,12), RGB555(16,15,12),
RGB555(17,16,13)}; RGB555(17,16,13)};
word arrow_colors[]= word arrow_colors[7]=
{ {
AUTOMAP_LINE1, AUTOMAP_LINE1,
AUTOMAP_FORE AUTOMAP_FORE
@ -389,6 +389,7 @@ static void draw_amap_sector(int x,int y,int sector,int mode,int turn,int line1,
set_font(H_FSYMB,0);k>>=9; set_font(H_FSYMB,0);k>>=9;
switch (k) switch (k)
{ {
default:
case 3:break; case 3:break;
case 2:set_font(H_FSYMB,0); case 2:set_font(H_FSYMB,0);
font_color(stairs_colors); font_color(stairs_colors);
@ -529,10 +530,10 @@ void draw_automap(int xr,int yr)
map_yr=yp-yr*8; map_yr=yp-yr*8;
for(k=0;k<2;k++) for(k=0;k<2;k++)
for(i=1;i<mapsize;i++) for(i=1;i<mapsize;i++)
{ {
int flagmask=MC_AUTOMAP|(k!=0?MC_DISCLOSED:0); int flagmask=MC_AUTOMAP|(k!=0?MC_DISCLOSED:0);
if ((map_coord[i].flags & flagmask) && (map_coord[i].flags & MC_MARKED) && map_coord[i].layer==depth) if ((map_coord[i].flags & flagmask) && (map_coord[i].flags & MC_MARKED) && map_coord[i].layer==depth)
{ {
x=(map_coord[i].x*8+xr*8); x=(map_coord[i].x*8+xr*8);
y=(map_coord[i].y*8+yr*8); y=(map_coord[i].y*8+yr*8);
q=map_sides+(i*4); q=map_sides+(i*4);
@ -612,8 +613,8 @@ void unwire_automap()
void *map_keyboard(EVENT_MSG *msg,void **usr) void *map_keyboard(EVENT_MSG *msg,void **usr)
{ {
char c; char c;
static draw=0; static int draw=0;
static xr,yr; static int xr,yr;
usr; usr;
if (msg->msg==E_INIT) xr=yr=0; if (msg->msg==E_INIT) xr=yr=0;
@ -643,7 +644,7 @@ void *map_keyboard(EVENT_MSG *msg,void **usr)
(*(int *)msg->data)=0; (*(int *)msg->data)=0;
unwire_proc(); unwire_proc();
wire_proc(); wire_proc();
break; break;
} }
} }
@ -672,7 +673,7 @@ void show_automap(char full)
change_click_map(clk_map_view,CLK_MAP_VIEW); change_click_map(clk_map_view,CLK_MAP_VIEW);
} }
static char mob_not_invis(sector) static char mob_not_invis(int sector)
{ {
int m; int m;
m=mob_map[sector]; m=mob_map[sector];
@ -737,7 +738,7 @@ void draw_medium_map()
} }
} }
static char map_menu_glob_map(int id,int xa,int ya,int xr,int yr) char map_menu_glob_map(int id,int xa,int ya,int xr,int yr)
{ {
id,xa,ya,xr,yr; id,xa,ya,xr,yr;
id=set_select_mode(0); id=set_select_mode(0);
@ -798,7 +799,7 @@ char map_menu(int id,int xa,int ya,int xr,int yr)
mouse_set_default(H_MS_WHO); mouse_set_default(H_MS_WHO);
ukaz_mysku(); ukaz_mysku();
showview(0,0,0,0);break; showview(0,0,0,0);break;
case 3: case 3:
unwire_proc();wire_proc();break; unwire_proc();wire_proc();break;
} }
return 1; return 1;
@ -881,7 +882,7 @@ void wire_kniha()
hold_timer(TM_FAST_TIMER,1); hold_timer(TM_FAST_TIMER,1);
} }
static last_selected; static int last_selected;
char map_target_cancel(int id,int xa,int ya,int xr,int yr) char map_target_cancel(int id,int xa,int ya,int xr,int yr)
{ {

View file

@ -1,7 +1,6 @@
#include <skeldal_win.h> #include <skeldal_win.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <conio.h>
#include <malloc.h> #include <malloc.h>
#include <math.h> #include <math.h>
#include <bios.h> #include <bios.h>
@ -17,7 +16,7 @@
#include "engine1.h" #include "engine1.h"
#include <pcx.h> #include <pcx.h>
#include "globals.h" #include "globals.h"
#include "Version.h" #include "version.h"
#define ZIVOTY_S 60 #define ZIVOTY_S 60
#define ZIVOTY_E 62 #define ZIVOTY_E 62
@ -182,7 +181,7 @@ void show_money()
{ {
char c[20]; char c[20];
set_font(H_FONT7,RGB555(28,28,21)); set_font(H_FONT7,RGB555(28,28,21));
sprintf(c,"%d",money); sprintf(c,"%ld",money);
set_aligned_position(460,13,2,2,c); set_aligned_position(460,13,2,2,c);
outtext(c); outtext(c);
} }
@ -276,8 +275,9 @@ word *bott_clear(void)
{ {
word *bott_scr; word *bott_scr;
bott_scr=(word *)getmem(scr_linelen2*104*2); long sz;
memset(bott_scr,0,_msize(bott_scr)); bott_scr=(word *)getmem(sz = scr_linelen2*104*2);
memset(bott_scr,0,sz);
return bott_scr; return bott_scr;
} }
@ -304,7 +304,7 @@ static void bott_fletna_normal(void **pp,long *s)
set_aligned_position(x,32,1,1,texty[180+i]);outtext(texty[180+i]); set_aligned_position(x,32,1,1,texty[180+i]);outtext(texty[180+i]);
} }
*pp=GetScreenAdr(); *pp=GetScreenAdr();
*s=_msize(*pp); *s=GetScreenSizeBytes();
RestoreScreen(); RestoreScreen();
} }
@ -400,7 +400,7 @@ static void bott_draw_normal(void **pp,long *s)
} }
*/ */
*pp=GetScreenAdr(); *pp=GetScreenAdr();
*s=_msize(*pp); *s=GetScreenSizeBytes();
RestoreScreen(); RestoreScreen();
} }
@ -438,11 +438,11 @@ void bott_disp_text_proc(void **pp,long *ss)
} }
while (p[0]); while (p[0]);
*pp=GetScreenAdr(); *pp=GetScreenAdr();
*ss=_msize(*pp); *ss=GetScreenSizeBytes();
RestoreScreen(); RestoreScreen();
} }
void bott_disp_text(char *text) void bott_disp_text(const char *text)
{ {
if (text==0) text="Chybi popisek!!"; if (text==0) text="Chybi popisek!!";
zneplatnit_block(H_BOTTBAR); zneplatnit_block(H_BOTTBAR);
@ -459,15 +459,15 @@ static void MaskPutPicture(int x, int y, char mask, word color, char blend, void
{ {
short *info=(short *)pic; short *info=(short *)pic;
char *data=(char *)(info+3+256); char *data=(char *)(info+3+256);
word *pos=GetScreenAdr()+x+y*scr_linelen2; word *pos=GetScreenAdr()+x+y*scr_linelen2;
if (blend) color=color & 0xF7DE; if (blend) color=color & 0xF7DE;
for (y=0;y<info[1];y++,pos+=scr_linelen2,data+=info[0]) for (y=0;y<info[1];y++,pos+=scr_linelen2,data+=info[0])
for (x=0;x<info[0];x++) for (x=0;x<info[0];x++)
if (data[x]==mask) if (data[x]==mask)
if (blend) if (blend)
pos[x]=((pos[x] & 0xF7DE)+color)>>1; pos[x]=((pos[x] & 0xF7DE)+color)>>1;
else else
pos[x]=color; pos[x]=color;
} }
@ -491,14 +491,14 @@ void bott_draw_rune(void **pp,long *ss)
if (sel_zivel!=4)trans_bar(378+24+sel_zivel*24,0,96-sel_zivel*24,22,0); if (sel_zivel!=4)trans_bar(378+24+sel_zivel*24,0,96-sel_zivel*24,22,0);
set_font(H_FBOLD,NOSHADOW(0)); set_font(H_FBOLD,NOSHADOW(0));
position(120,30); position(120,30);
outtext(glob_items[showruneitem].jmeno); outtext(glob_items[showruneitem].jmeno);
sprintf(buff,"%s %d, %s %d",texty[11],get_spell_um(spell),texty[16],get_spell_mana(spell)); sprintf(buff,"%s %d, %s %d",texty[11],get_spell_um(spell),texty[16],get_spell_mana(spell));
position (75,60); position (75,60);
outtext(buff); outtext(buff);
put_picture(70,30,ablock(glob_items[showruneitem].vzhled+face_arr[0])); put_picture(70,30,ablock(glob_items[showruneitem].vzhled+face_arr[0]));
*pp=GetScreenAdr(); *pp=GetScreenAdr();
*ss=_msize(*pp); *ss=GetScreenSizeBytes();
RestoreScreen(); RestoreScreen();
} }
void bott_disp_rune(char rune, int item) void bott_disp_rune(char rune, int item)
@ -642,7 +642,7 @@ int enter_tab[VIEW3D_Z+1][VIEW3D_X*2+1]=
void crt_minimap_itr(sector,smer,itrx,itry,automap) void crt_minimap_itr(int sector,int smer,int itrx,int itry, int automap)
{ {
static int sector_temp; static int sector_temp;
static long sideflags; static long sideflags;
@ -690,7 +690,7 @@ void crt_minimap_itr(sector,smer,itrx,itry,automap)
} }
void create_minimap(sector,smer) void create_minimap(int sector, int smer)
{ {
memset(minimap,0,sizeof(minimap)); memset(minimap,0,sizeof(minimap));
dirs[1]=smer; dirs[1]=smer;
@ -702,7 +702,7 @@ void create_minimap(sector,smer)
static const float Inv2=0.5; static const float Inv2=0.5;
static const float Snapper=3<<22; static const float Snapper=3<<22;
__inline int toInt( float fval ) static __inline int toInt( float fval )
{ {
fval += Snapper; fval += Snapper;
return ( (*(int *)&fval)&0x007fffff ) - 0x00400000; return ( (*(int *)&fval)&0x007fffff ) - 0x00400000;
@ -712,7 +712,7 @@ __inline int toInt( float fval )
static void *check_autofade(void *image, char ceil, int dark) static void *check_autofade(void *image, char ceil, int dark)
{ {
char *data=image; char *data=image;
if (data[5]==0x80) if (data[5]==0x80)
{ {
word *xy=(word *)image; word *xy=(word *)image;
if (mglob.map_autofadefc==1) if (mglob.map_autofadefc==1)
@ -767,7 +767,7 @@ int draw_basic_floor(int celx,int cely,int sector)
return 0; return 0;
} }
static calc_item_shiftup(TITEM *it) static int calc_item_shiftup(TITEM *it)
{ {
short *s; short *s;
char *c; char *c;
@ -923,7 +923,7 @@ void draw_players(int sector,int dir,int celx,int cely)
int draw_sloup_sector(celx,cely,sector) int draw_sloup_sector(int celx,int cely,int sector)
{ {
TSTENA *w,*q; TSTENA *w,*q;
int obl; int obl;
@ -1037,7 +1037,7 @@ static void zobraz_lodku(word *lodka, word *screen, int size)
int x; int x;
while (size) while (size)
{ {
for (x=0;x<640 && size;x++) for (x=0;x<640 && size;x++)
{ {
if (*lodka!=0) screen[x]=*lodka; if (*lodka!=0) screen[x]=*lodka;
lodka++; lodka++;
@ -1100,7 +1100,7 @@ static void trace_for_bgr(int dir)
} }
void render_scene(sector,smer) void render_scene(int sector, int smer)
{ {
int i,j,s; int i,j,s;
@ -1309,7 +1309,7 @@ void play_fx_at(int where)
void display_ver(int x,int y,int ax,int ay) void display_ver(int x,int y,int ax,int ay)
{ {
char *ver="Br ny Skeldalu version "VERSION" (C)1998"; char *ver="Br<EFBFBD>ny Skeldalu version "VERSION" (C)1998";
set_font(H_FTINY,RGB555(31,31,31));set_aligned_position(x,y,ax,ay,ver); set_font(H_FTINY,RGB555(31,31,31));set_aligned_position(x,y,ax,ay,ver);
outtext(ver);showview(0,0,0,0); outtext(ver);showview(0,0,0,0);
} }

View file

@ -53,7 +53,7 @@ typedef struct staty
static char women[MAX_XICHTS]={0,1,0,0,0,1,0,0};//,0,0}; static char women[MAX_XICHTS]={0,1,0,0,0,1,0,0};//,0,0};
static int cur_edited=0; static int cur_edited=0;
static int cur_xicht=-1; static int cur_xicht=-1;
static int cur_page=1; int cur_page=1;
static int loc_select=-1; static int loc_select=-1;
#define CLK_PAGE1 3 #define CLK_PAGE1 3
@ -62,7 +62,7 @@ static int loc_select=-1;
static T_CLK_MAP clk_page1[]= static T_CLK_MAP clk_page1[]=
{ {
}; };
static void display_character(THUMAN *p) static void display_character(THUMAN *p)
@ -119,7 +119,7 @@ static void tlac2(int x,int y,char *text,int pushed)
set_aligned_position(x,y,1,1,text);outtext(text); set_aligned_position(x,y,1,1,text);outtext(text);
} }
static tlac2_press(int x,int y,char *text) static void tlac2_press(int x,int y,char *text)
{ {
schovej_mysku(); schovej_mysku();
tlac2(x,y,text,1); tlac2(x,y,text,1);
@ -319,7 +319,7 @@ static char page1_tlac2(int id,int xa,int ya,int xr,int yr)
} }
void enter_generator() char enter_generator()
{ {
int i; int i;

View file

@ -251,7 +251,7 @@ char start_invetory(int id,int xa,int ya,int xr,int yr)
{ {
if (ms_last_event.event_type & 0x2) if (ms_last_event.event_type & 0x2)
{ {
if (GetKeyState(VK_CONTROL) & 0x80) if (get_control_key_state())
{ {
if (p->sektor==viewsector) if (p->sektor==viewsector)
{ {
@ -418,7 +418,7 @@ static char sing_song_clk(int id,int xa,int ya,int xr,int yr)
t->userdata[0]=viewsector; t->userdata[0]=viewsector;
t->userdata[1]=viewdir; t->userdata[1]=viewdir;
} }
} }
return id<12; return id<12;
} }

View file

@ -18,6 +18,7 @@
#include "engine1.h" #include "engine1.h"
#include <pcx.h> #include <pcx.h>
#include "globals.h" #include "globals.h"
#include <stdarg.h>
typedef struct t_paragraph typedef struct t_paragraph
{ {
@ -212,9 +213,9 @@ static void error(char *text)
{ {
char buff[256]; char buff[256];
sprintf(buff,"%s v odstavci %d\r\nLocal_pgf=%d / DIALOG : %d / SENTENCE : %d\r\n",text,last_pgf+local_pgf,local_pgf,local_pgf/128,last_pgf); sprintf(buff,"%s v odstavci %d\r\nLocal_pgf=%d / DIALOG : %d / SENTENCE : %d\r\n",text,last_pgf+local_pgf,local_pgf,local_pgf/128,last_pgf);
MessageBox(NULL,buff,NULL,MB_OK|MB_ICONSTOP|MB_SYSTEMMODAL); // MessageBox(NULL,buff,NULL,MB_OK|MB_ICONSTOP|MB_SYSTEMMODAL);
SEND_LOG("(DIALOGS) Dialog error detected at %d:%d",local_pgf/128,last_pgf); SEND_LOG("(DIALOGS) Dialog error detected at %d:%d",local_pgf/128,last_pgf);
SEND_LOG("(DIALOGS) Error description: %s",text,0); SEND_LOG("(DIALOGS) Error description: %s",text,0);
} }
static void show_dialog_picture() static void show_dialog_picture()
@ -241,7 +242,7 @@ static T_PARAGRAPH *find_paragraph(int num)
{ {
char s[80]; char s[80];
sprintf(s,"Odstavec %d neexistuje! Odkaz byl vyvol n",num); sprintf(s,"Odstavec %d neexistuje! Odkaz byl vyvol<EFBFBD>n",num);
error(s); error(s);
return (T_PARAGRAPH *)pp; return (T_PARAGRAPH *)pp;
} }
@ -392,7 +393,7 @@ static char *Get_string()
if (i<=0) c=conv_text(texty[abs(i)]);else c=conv_text(level_texts[i]); if (i<=0) c=conv_text(texty[abs(i)]);else c=conv_text(level_texts[i]);
return string_buffer; return string_buffer;
} }
error("O‡ek v  se ©etˆzec nebo index do tabulky ©etˆzc"); error("O<EFBFBD>ek<EFBFBD>v<EFBFBD> se <20>et<65>zec nebo index do tabulky <20>et<65>zc<7A>");
exit(0); exit(0);
return NULL; return NULL;
} }
@ -414,7 +415,7 @@ static short Get_short()
pc+=2; pc+=2;
return varibles[p]; return varibles[p];
} }
error("O‡ek v  se ‡¡slo"); error("O<EFBFBD>ek<EFBFBD>v<EFBFBD> se <20><>slo");
exit(0); exit(0);
return 0; return 0;
} }
@ -601,7 +602,7 @@ static void pc_xicht(int xichtid)
sn_nums[0]=i; sn_nums[0]=i;
strcpy(sn_nams[0],postavy[i].jmeno); strcpy(sn_nams[0],postavy[i].jmeno);
sn_rods[0]=postavy[i].female; sn_rods[0]=postavy[i].female;
iff=1; iff=1;
return; return;
} }
iff=0; iff=0;
@ -896,7 +897,7 @@ static void exit_dialog()
norefresh=0; norefresh=0;
} }
starting_shop=-1; starting_shop=-1;
SEND_LOG("(DIALOGS) Exiting dialog...",0,0); SEND_LOG("(DIALOGS) Exiting dialog...",0,0);
} }
@ -1009,7 +1010,7 @@ static char ask_who_proc(int id,int xa,int ya,int xr,int yr)
} }
static dlg_ask_who() static int dlg_ask_who()
{ {
draw_all(); draw_all();
mouse_set_default(H_MS_WHO); mouse_set_default(H_MS_WHO);
@ -1031,7 +1032,7 @@ static dlg_ask_who()
extern word weapon_skill[]; extern word weapon_skill[];
static void pract(h,vls,how,max) static void pract(int h,int vls,int how,int max)
{ {
iff=0; iff=0;
if (vls>=100) if (vls>=100)
@ -1062,7 +1063,7 @@ static void pract(h,vls,how,max)
} }
} }
static void pract_to(h,vls,how) static void pract_to(int h, int vls,int how)
{ {
iff=0; iff=0;
if (vls>=100) if (vls>=100)
@ -1094,12 +1095,12 @@ static char oper_balance(int val1,int val2,int oper)
case OPER_BIGEQ:return val1>=val2; case OPER_BIGEQ:return val1>=val2;
case OPER_LOWEQ:return val1<=val2; case OPER_LOWEQ:return val1<=val2;
case OPER_NOEQ:return val1!=val2; case OPER_NOEQ:return val1!=val2;
default:error("Chybn˜ operator porovn v "); default:error("Chybn<EFBFBD> operator porovn<76>v<EFBFBD>n<EFBFBD>");
} }
return 0; return 0;
} }
static char test_vls(h,vls,oper,num) static char test_vls(int h,int vls,int oper,int num)
{ {
int val; int val;
if (vls>=100) if (vls>=100)
@ -1284,7 +1285,7 @@ void do_dialog()
default: default:
{ {
char s[80]; char s[80];
sprintf(s,"Nezn m  instrukce: %d",i); sprintf(s,"Nezn<EFBFBD>m<EFBFBD> instrukce: %d",i);
error(s); error(s);
} }
break; break;
@ -1344,11 +1345,11 @@ void call_dialog(int entr,int mob)
schovej_mysku(); schovej_mysku();
alock(H_DIALOGY_DAT); alock(H_DIALOGY_DAT);
aswap(H_DIALOGY_DAT); aswap(H_DIALOGY_DAT);
selected_player=-1; selected_player=-1;
do_dialog(); do_dialog();
} }
char save_dialog_info(FILE *f) char save_dialog_info(TMPFILE_WR *f)
{ {
int pgf_pocet; int pgf_pocet;
int *p,i; int *p,i;
@ -1359,7 +1360,7 @@ char save_dialog_info(FILE *f)
SEND_LOG("(DIALOGS)(SAVELOAD) Saving dialogs info...",0,0); SEND_LOG("(DIALOGS)(SAVELOAD) Saving dialogs info...",0,0);
p=ablock(H_DIALOGY_DAT); p=ablock(H_DIALOGY_DAT);
pgf_pocet=*p; pgf_pocet=*p;
fwrite(&pgf_pocet,1,4,f); temp_storage_write(&pgf_pocet,1*4,f);
siz=(pgf_pocet+3)/4; siz=(pgf_pocet+3)/4;
if (siz) if (siz)
{ {
@ -1372,15 +1373,15 @@ char save_dialog_info(FILE *f)
int j=(i & 3)<<1; int j=(i & 3)<<1;
c[i>>2]|=(q[i].visited<<j) | (q[i].first<<(j+1)); c[i>>2]|=(q[i].visited<<j) | (q[i].first<<(j+1));
} }
res|=fwrite(c,1,siz,f)!=siz; temp_storage_write(c,1*siz,f);
free(c); free(c);
} }
res|=(fwrite(_flag_map,1,sizeof(_flag_map),f)!=sizeof(_flag_map)); temp_storage_write(_flag_map,1*sizeof(_flag_map),f);
SEND_LOG("(DIALOGS)(SAVELOAD) Done...",0,0); SEND_LOG("(DIALOGS)(SAVELOAD) Done...",0,0);
return res; return res;
} }
char load_dialog_info(FILE *f) char load_dialog_info(TMPFILE_RD *f)
{ {
int pgf_pocet; int pgf_pocet;
int *p,i; int *p,i;
@ -1391,18 +1392,18 @@ char load_dialog_info(FILE *f)
SEND_LOG("(DIALOGS)(SAVELOAD) Loading dialogs info...",0,0); SEND_LOG("(DIALOGS)(SAVELOAD) Loading dialogs info...",0,0);
p=ablock(H_DIALOGY_DAT); p=ablock(H_DIALOGY_DAT);
aswap(H_DIALOGY_DAT); aswap(H_DIALOGY_DAT);
fread(&pgf_pocet,1,4,f); temp_storage_read(&pgf_pocet,1*4,f);
siz=(pgf_pocet+3)/4; siz=(pgf_pocet+3)/4;
if (pgf_pocet!=*p) if (pgf_pocet!=*p)
{ {
SEND_LOG("(ERROR) Dialogs has different sizes %d!=%d (can be skipped)",pgf_pocet,*p); SEND_LOG("(ERROR) Dialogs has different sizes %d!=%d (can be skipped)",pgf_pocet,*p);
fseek(f,siz+sizeof(_flag_map),SEEK_CUR); temp_storage_skip(f,siz+sizeof(_flag_map));
return 0; return 0;
} }
if (siz) if (siz)
{ {
c=getmem(siz); c=getmem(siz);
res|=(fread(c,1,siz,f)!=siz); res|=(temp_storage_read(c,1*siz,f)!=siz);
p=ablock(H_DIALOGY_DAT); p=ablock(H_DIALOGY_DAT);
q=(T_PARAGRAPH *)(p+2); q=(T_PARAGRAPH *)(p+2);
for(i=0;i<pgf_pocet;i++) for(i=0;i<pgf_pocet;i++)
@ -1413,7 +1414,7 @@ char load_dialog_info(FILE *f)
} }
free(c); free(c);
} }
res|=(fread(_flag_map,1,sizeof(_flag_map),f)!=sizeof(_flag_map)); res|=(temp_storage_read(_flag_map,1*sizeof(_flag_map),f)!=sizeof(_flag_map));
SEND_LOG("(DIALOGS)(SAVELOAD) Done...",0,0); SEND_LOG("(DIALOGS)(SAVELOAD) Done...",0,0);
return res; return res;
} }

View file

@ -24,7 +24,6 @@
#include <strlite.h> #include <strlite.h>
#include <memman.h> #include <memman.h>
#include <bgraph.h> #include <bgraph.h>
#include <conio.h>
FILE *dlg; FILE *dlg;
long *odstavce=NULL; long *odstavce=NULL;

91
game/dump.cpp Normal file
View file

@ -0,0 +1,91 @@
#include <iostream>
#include <filesystem>
#include <regex>
#include <string>
#include <optional>
#include <memman.h>
int findMaxDumpNumber(const std::string &directoryPath) {
namespace fs = std::filesystem;
std::regex pattern(R"(dump(\d{4})\.bmp)");
int maxNumber = -1;
for (const auto &entry : fs::directory_iterator(directoryPath)) {
if (entry.is_regular_file()) {
std::smatch match;
std::string fileName = entry.path().filename().string();
if (std::regex_match(fileName, match, pattern)) {
int number = std::stoi(match[1]); // Extrahujeme číslo NNNN
if (number > maxNumber) {
maxNumber = number; // Aktualizujeme maximální číslo
}
}
}
}
return maxNumber;
}
extern "C" {
void save_dump(const uint16_t *screen_addr,
unsigned int width,
unsigned int height,
unsigned int linelen);
}
void save_dump(const uint16_t *screen_addr,
unsigned int width,
unsigned int height,
unsigned int linelen) {
static int dump_counter = -1;
FILE *f;
int i, r, g, b, x, y;
const uint16_t *a;
char c[20];
if (dump_counter == -1) {
dump_counter = findMaxDumpNumber(".");
SEND_LOG("(DUMP) Dump counter sets to %d", dump_counter, 0);
}
sprintf(c, "dump%04d.bmp", ++dump_counter);
SEND_LOG("(DUMP) Saving screen shot named '%s'", c, 0);
f = fopen(c, "wb");
fputc('B', f);
fputc('M', f);
i = width * height * 3 + 0x36;
fwrite(&i, 1, 4, f);
i = 0;
fwrite(&i, 1, 4, f);
i = 0x36;
fwrite(&i, 1, 4, f);
i = 0x28;
fwrite(&i, 1, 4, f);
i = width;
fwrite(&i, 1, 4, f);
i = height;
fwrite(&i, 1, 4, f);
i = 1;
fwrite(&i, 1, 2, f);
i = 24;
fwrite(&i, 1, 2, f);
i = 0;
fwrite(&i, 1, 4, f);
i = width * height * 3;
fwrite(&i, 1, 4, f);
for (i = 4, r = 0; i > 0; i--)
fwrite(&r, 1, 4, f);
for (y = height; y > 0; y--) {
const uint16_t *scr = screen_addr;
a = scr + (y - 1) * linelen;
for (x = 0; x < width; x++) {
i = a[x];
b = (i & 0x1f) << 3;
g = (i & 0x7ff) >> 3;
r = i >> 8;
i = ((r * 256) + g) * 256 + b;
fwrite(&i, 1, 3, f);
}
}
fclose(f);
}

View file

@ -106,38 +106,38 @@ void smeruj_moba(TMOB *m,int smer)
} }
} }
void save_enemy_paths(FILE *f) void save_enemy_paths(TMPFILE_WR *f)
{ {
int i,s; int i,s;
word *w; word *w;
for(i=0;i<MAX_MOBS;i++) if (mob_paths[i]!=NULL) for(i=0;i<MAX_MOBS;i++) if (mob_paths[i]!=NULL)
{ {
fwrite(&i,2,1,f); temp_storage_write(&i,2*1,f);
w=mob_path_ptr[i]; w=mob_path_ptr[i];
s=1;while(*w++) s++; s=1;while(*w++) s++;
fwrite(&s,1,sizeof(s),f); temp_storage_write(&s,1*sizeof(s),f);
fwrite(mob_path_ptr[i],s,2,f); temp_storage_write(mob_path_ptr[i],s*2,f);
} }
s=-1; s=-1;
fwrite(&s,1,2,f); temp_storage_write(&s,1*2,f);
} }
int load_enemy_paths(FILE *f) int load_enemy_paths(TMPFILE_RD *f)
{ {
short i=-1; short i=-1;
int s; int s;
word *w; word *w;
for(i=0;i<MAX_MOBS;i++) free_path(i); for(i=0;i<MAX_MOBS;i++) free_path(i);
fread(&i,2,1,f); temp_storage_read(&i,2*1,f);
while(i!=-1) while(i!=-1)
{ {
fread(&s,1,sizeof(s),f); temp_storage_read(&s,1*sizeof(s),f);
w=NewArr(word,s); w=NewArr(word,s);
fread(w,s,2,f); temp_storage_read(w,s*2,f);
register_mob_path(i,w); register_mob_path(i,w);
if (fread(&i,2,1,f)==0) return 1; if (temp_storage_read(&i,2*1,f)==0) return 1;
} }
return 0; return 0;
} }
@ -240,8 +240,8 @@ static void register_mob_graphics(int num,char *name_part,char *anims,char *seq)
{ {
char buff[256]; char buff[256];
closemode(); closemode();
sprintf(buff,"Soubor sekvence %s obsahuje chybne udaje nebo je sekvence je moc kratka\n"); sprintf(buff,"Soubor sekvence %s obsahuje chybne udaje nebo je sekvence je moc kratka\n", fulname);
MessageBox(NULL,buff,NULL,MB_OK|MB_ICONSTOP); display_error(buff);
exit(0); exit(0);
} }
} }
@ -377,7 +377,7 @@ void load_enemies(short *data,int size,int *grptr,TMOB *template,long tsize)
char buff[256]; char buff[256];
closemode(); closemode();
sprintf(buff,"Nestvura cislo #%d (%s) je spatne definovana (rychlost)",i,mobs[i].name); sprintf(buff,"Nestvura cislo #%d (%s) je spatne definovana (rychlost)",i,mobs[i].name);
MessageBox(NULL,buff,NULL,MB_OK|MB_ICONEXCLAMATION); display_error(buff);
exit(1); exit(1);
} }
cisla[i]=mobs[i].cislo_vzoru; cisla[i]=mobs[i].cislo_vzoru;
@ -534,7 +534,7 @@ int q_vidis_postavu(int sector,int dir,TMOB *p,int *otocit_se,char ret)
THUMAN *ps=&postavy[i]; THUMAN *ps=&postavy[i];
xs=map_coord[sector].x-map_coord[postavy[i].sektor].x; xs=map_coord[sector].x-map_coord[postavy[i].sektor].x;
ys=map_coord[sector].y-map_coord[postavy[i].sektor].y; ys=map_coord[sector].y-map_coord[postavy[i].sektor].y;
d=max(abs(xs),abs(ys)); d=MAX(abs(xs),abs(ys));
if (d<=p->dohled && (!(ps->vlastnosti[VLS_KOUZLA] & SPL_INVIS)||p->vlajky & MOB_SENSE) && ps->used && ps->lives) if (d<=p->dohled && (!(ps->vlastnosti[VLS_KOUZLA] & SPL_INVIS)||p->vlajky & MOB_SENSE) && ps->used && ps->lives)
switch(dir) switch(dir)
{ {
@ -555,8 +555,8 @@ int q_vidis_postavu(int sector,int dir,TMOB *p,int *otocit_se,char ret)
{ {
nd=alt; nd=alt;
if (mob_check_next_sector(p->sector,nd,p->stay_strategy & MOB_BIG,p->vlajky & MOB_PASSABLE)==1) if (mob_check_next_sector(p->sector,nd,p->stay_strategy & MOB_BIG,p->vlajky & MOB_PASSABLE)==1)
{ {
nd=(alt+2)&3; nd=(alt+2)&3;
if (mob_check_next_sector(p->sector,nd,p->stay_strategy & MOB_BIG,p->vlajky & MOB_PASSABLE)==1) if (mob_check_next_sector(p->sector,nd,p->stay_strategy & MOB_BIG,p->vlajky & MOB_PASSABLE)==1)
{ {
nd=(alt+3)&3; nd=(alt+3)&3;
@ -832,7 +832,7 @@ void rozhodni_o_smeru(TMOB *p)
if (v==1 && p->stay_strategy & MOB_GUARD) r=return_home(p,&dir); if (v==1 && p->stay_strategy & MOB_GUARD) r=return_home(p,&dir);
if (r) if (r)
{ {
if (v<2) r=1;else r=rand()*v/(RAND_MAX+1)+1; if (v<2) r=1;else r=rnd(v)+1;
vdir=dir=mob_vyber_vychod(r,sect,dir,alone,passable); vdir=dir=mob_vyber_vychod(r,sect,dir,alone,passable);
//if ( p->stay_strategy & MOB_WATCH && rnd(100)<20 && lv<128 && dir!=p->dir) dir=-1; //if ( p->stay_strategy & MOB_WATCH && rnd(100)<20 && lv<128 && dir!=p->dir) dir=-1;
} }
@ -951,13 +951,13 @@ static void CheckMobStoned(int num)
{ {
TMOB *p=mobs+num; TMOB *p=mobs+num;
TMOBSAVEDATA *save; TMOBSAVEDATA *save;
if (!mobsavedata) if (!mobsavedata)
{ {
mobsavedata=(TMOBSAVEDATA **)getmem(sizeof(TMOBSAVEDATA *)*MAX_MOBS); mobsavedata=(TMOBSAVEDATA **)getmem(sizeof(TMOBSAVEDATA *)*MAX_MOBS);
memset(mobsavedata,0,sizeof(TMOBSAVEDATA)*MAX_MOBS); memset(mobsavedata,0,sizeof(TMOBSAVEDATA)*MAX_MOBS);
} }
save=mobsavedata[num]; save=mobsavedata[num];
if (save==NULL) if (save==NULL)
{ {
save=mobsavedata[num]=(TMOBSAVEDATA *)getmem(sizeof(TMOBSAVEDATA)); save=mobsavedata[num]=(TMOBSAVEDATA *)getmem(sizeof(TMOBSAVEDATA));
save->anim_counter=p->anim_counter; save->anim_counter=p->anim_counter;
@ -1071,7 +1071,7 @@ void otoc_moba(TMOB *p)
} }
static mob_check_teleport(int sect,int num) static int mob_check_teleport(int sect,int num)
{ {
int i; int i;
if (!ISTELEPORTSECT(sect)) return sect; if (!ISTELEPORTSECT(sect)) return sect;
@ -1203,7 +1203,7 @@ void vymaz_zasahy(THE_TIMER *q)
bott_draw(0); bott_draw(0);
} }
static drop_inventory(TMOB *p) static int drop_inventory(TMOB *p)
{ {
int i,x,y,pl; int i,x,y,pl;
short c[]={0,0}; short c[]={0,0};
@ -1263,7 +1263,7 @@ void mob_hit(TMOB *mm,int dostal)
mm->heady=mm->locy; mm->heady=mm->locy;
mm->lives-=dostal; mm->lives-=dostal;
mob_dostal_pocet=dostal; mob_dostal_pocet=dostal;
mm->dostal+=dostal; mm->dostal+=dostal;
if (dostal>0) mm->vlajky|=MOB_IN_BATTLE; if (dostal>0) mm->vlajky|=MOB_IN_BATTLE;
//mm->stay_strategy|=MOB_WALK | MOB_WATCH; //mm->stay_strategy|=MOB_WALK | MOB_WATCH;
mm->dialog_flags|=0x2; mm->dialog_flags|=0x2;
@ -1320,9 +1320,9 @@ void mob_strelba(TMOB *p)
for(i=0;i<item_count;i++) if (glob_items[i].umisteni==PL_SIP && glob_items[i].druh==TYP_VRHACI) break; for(i=0;i<item_count;i++) if (glob_items[i].umisteni==PL_SIP && glob_items[i].druh==TYP_VRHACI) break;
if (i==item_count) if (i==item_count)
{ {
closemode(); closemode();
MessageBox(NULL,"Nestvura nemuze strilet. Neni nadefinovan obekt sipu",NULL,MB_OK|MB_ICONSTOP); display_error("Nestvura nemuze strilet. Neni nadefinovan obekt sipu");
exit(1); exit(1);
} }
t=glob_items+i; t=glob_items+i;
@ -1372,13 +1372,13 @@ void PodporaStitu(THUMAN *h, short *vlastnosti)
int factor=h->kondice*100/h->vlastnosti[VLS_KONDIC]; int factor=h->kondice*100/h->vlastnosti[VLS_KONDIC];
for (i=0;i<2;i++) for (i=0;i<2;i++)
{ {
if (h->wearing[pos[i]]!=0) if (h->wearing[pos[i]]!=0)
{ {
TITEM *it=glob_items+h->wearing[pos[i]]-1; TITEM *it=glob_items+h->wearing[pos[i]]-1;
if (it->zmeny[VLS_OBRAN_L] || it->zmeny[VLS_OBRAN_H]) if (it->zmeny[VLS_OBRAN_L] || it->zmeny[VLS_OBRAN_H])
{ {
vlastnosti[VLS_OBRAN_L]-=it->zmeny[VLS_OBRAN_L]; vlastnosti[VLS_OBRAN_L]-=it->zmeny[VLS_OBRAN_L];
vlastnosti[VLS_OBRAN_H]-=it->zmeny[VLS_OBRAN_H]; vlastnosti[VLS_OBRAN_H]-=it->zmeny[VLS_OBRAN_H];
vlastnosti[VLS_OBRAN_L]+=(2*it->zmeny[VLS_OBRAN_L])*factor/100; vlastnosti[VLS_OBRAN_L]+=(2*it->zmeny[VLS_OBRAN_L])*factor/100;
vlastnosti[VLS_OBRAN_H]+=(2*it->zmeny[VLS_OBRAN_H])*factor/100; vlastnosti[VLS_OBRAN_H]+=(2*it->zmeny[VLS_OBRAN_H])*factor/100;
} }
@ -1435,7 +1435,7 @@ void mobs_hit(TMOB *p)
h->utek--; h->utek--;
} }
memcpy(vlastnosti,h->vlastnosti,sizeof(vlastnosti)); memcpy(vlastnosti,h->vlastnosti,sizeof(vlastnosti));
spec=vlastnosti[VLS_KOUZLA]; spec=vlastnosti[VLS_KOUZLA];
if (game_extras & EX_SHIELD_BLOCKING) PodporaStitu(h,vlastnosti); if (game_extras & EX_SHIELD_BLOCKING) PodporaStitu(h,vlastnosti);
else uprav_podle_kondice(h,&pocet); else uprav_podle_kondice(h,&pocet);
h->dostal=vypocet_zasahu(p->vlastnosti,vlastnosti,pocet,0,0); //vypocet zasahu h->dostal=vypocet_zasahu(p->vlastnosti,vlastnosti,pocet,0,0); //vypocet zasahu
@ -1481,7 +1481,7 @@ void mobs_live(int num)
int xs,ys; int xs,ys;
p=&mobs[num]; p=&mobs[num];
if (p->vlastnosti[VLS_KOUZLA] & SPL_STONED && p->lives>0) if (p->vlastnosti[VLS_KOUZLA] & SPL_STONED && p->lives>0)
{ {
p->vlajky &= ~MOB_IN_BATTLE; p->vlajky &= ~MOB_IN_BATTLE;
return; return;
@ -1491,7 +1491,7 @@ void mobs_live(int num)
char buff[256]; char buff[256];
closemode(); closemode();
sprintf(buff,"Potvora v neexistujicim sektoru (%d, %d) ",num,p->sector); sprintf(buff,"Potvora v neexistujicim sektoru (%d, %d) ",num,p->sector);
MessageBox(NULL,buff,NULL,MB_OK|MB_ICONEXCLAMATION); display_error(buff);
exit(1); exit(1);
} }
if (p->headx==p->locx && p->heady==p->locy && !p->anim_phase) if (p->headx==p->locx && p->heady==p->locy && !p->anim_phase)
@ -1563,7 +1563,7 @@ void mobs_live(int num)
p->locx+=xs; p->locx+=xs;
p->locy+=ys; p->locy+=ys;
if (xs!=0 || ys!=0) neco_v_pohybu=1; if (xs!=0 || ys!=0) neco_v_pohybu=1;
if (p->locx>192 || p->locx<64 || p->locy>192 || p->locy<64) mob_check(num,p); if (p->locx>192 || p->locx<64 || p->locy>192 || p->locy<64) mob_check(num,p);
} }
p->anim_counter++; p->anim_counter++;
if (p->anim_phase==MOB_ATTACK) if (p->anim_phase==MOB_ATTACK)
@ -1640,7 +1640,7 @@ void check_all_mobs_battle() //kontroluje zda je nekdo v battle
{ {
p=&mobs[i]; p=&mobs[i];
if (p->vlajky & MOB_LIVE) if (p->vlajky & MOB_LIVE)
if (p->vlajky & MOB_IN_BATTLE) if (p->vlajky & MOB_IN_BATTLE)
b=1; b=1;
} }
battle=b; battle=b;
@ -1959,8 +1959,8 @@ char akce_moba_zac(TMOB *m)
mob_sound_event(m,MBS_WALK); mob_sound_event(m,MBS_WALK);
return 1; return 1;
} }
else else
return 1; return 1;
} }
rozhodni_o_smeru(m); rozhodni_o_smeru(m);
if (m->dir & 1)m->headx=mob_go_x[m->dir];else m->heady=mob_go_y[m->dir]; if (m->dir & 1)m->headx=mob_go_x[m->dir];else m->heady=mob_go_y[m->dir];
@ -2050,7 +2050,7 @@ int utok_na_sektor(THUMAN *p,TMOB *mm,int ch,int bonus)
} }
if (dostal) if (dostal)
{ {
mm->dir=(p->direction+2)&3; mm->dir=(p->direction+2)&3;
play_sample_at_sector(H_SND_SWHIT1+rnd(2),viewsector,viewsector,0,0); play_sample_at_sector(H_SND_SWHIT1+rnd(2),viewsector,viewsector,0,0);
if (p->vlastnosti[VLS_KOUZLA] & SPL_DRAIN) if (p->vlastnosti[VLS_KOUZLA] & SPL_DRAIN)
{ {

View file

@ -1,5 +1,4 @@
#include <skeldal_win.h> #include <skeldal_win.h>
#include <debug.h>
#include <types.h> #include <types.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -107,7 +106,7 @@ static long old_timer;
static void wait_timer() static void wait_timer()
{ {
Sleep(10); sleep_ms(10);
} }
/*void zooming1(void *source,long target,word *background,void *xlat,long xysize) /*void zooming1(void *source,long target,word *background,void *xlat,long xysize)
@ -444,7 +443,7 @@ void create_zooming(void)
static void zooming_forward_backward(word *background,char back) static void zooming_forward_backward(word *background,char back)
{ {
if (!zooming_step) return; if (!zooming_step) return;
{ {
long tmp=get_timer_value(); long tmp=get_timer_value();
void *buffer=DxPrepareWalk(SCREEN_OFFLINE); void *buffer=DxPrepareWalk(SCREEN_OFFLINE);
@ -454,7 +453,7 @@ static void zooming_forward_backward(word *background,char back)
int curtime; int curtime;
float phase; float phase;
do do
{ {
curtime=get_timer_value()-tmp; curtime=get_timer_value()-tmp;
phase=(curtime)*(1.0f/(float)maxtime); phase=(curtime)*(1.0f/(float)maxtime);
@ -478,7 +477,7 @@ void zooming_backward(word *background)
zooming_forward_backward(background,1); zooming_forward_backward(background,1);
} }
/* /*
int i; int i;
if (!zooming_step) return; if (!zooming_step) return;
for (i=0;i<ZOOM_PHASES;i+=zooming_step) for (i=0;i<ZOOM_PHASES;i+=zooming_step)
@ -509,7 +508,7 @@ void zooming_backward(word *background)
static void turn_left_right(char right) static void turn_left_right(char right)
{ {
{ {
if (!rot_phases) return; if (!rot_phases) return;
{ {
long tmp=get_timer_value(); long tmp=get_timer_value();
void *buffer=DxPrepareTurn(SCREEN_OFFLINE); void *buffer=DxPrepareTurn(SCREEN_OFFLINE);
@ -519,7 +518,7 @@ static void turn_left_right(char right)
float phase; float phase;
int last=90; int last=90;
do do
{ {
curtime=get_timer_value()-tmp; curtime=get_timer_value()-tmp;
phase=(curtime)*(1.0f/(float)maxtime); phase=(curtime)*(1.0f/(float)maxtime);
@ -634,14 +633,8 @@ void show_cel(int celx,int cely,void *stena,int xofs,int yofs,char rev)
zoom.ycount=realsy+1; zoom.ycount=realsy+1;
zoom.xmax=realsx; zoom.xmax=realsx;
zoom.line_len=scr_linelen; zoom.line_len=scr_linelen;
__try if (rev) sikma_zprava(); else sikma_zleva();
{ }
if (rev) sikma_zprava(); else sikma_zleva();
}
__finally
{
}
}
void show_cel2(int celx,int cely,void *stena,int xofs,int yofs,char rev) void show_cel2(int celx,int cely,void *stena,int xofs,int yofs,char rev)
@ -904,17 +897,17 @@ __inline void clear_color(void *start,int _size,word _color)
shr ecx,1 shr ecx,1
rep stosd rep stosd
rcl ecx,1 rcl ecx,1
rep stosw rep stosw
}*/ }*/
} }
//parm [EDI][ECX][EAX] modify [EBX]; //parm [EDI][ECX][EAX] modify [EBX];
void clear_buff(word *background,word backcolor,int lines) void clear_buff(word *background,word backcolor,int lines)
{ {
if (background!=NULL) put_picture(0,SCREEN_OFFLINE,background);else lines=0; if (background!=NULL) put_picture(0,SCREEN_OFFLINE,background);else lines=0;
if (lines!=360) if (lines!=360)
for (i=lines;i<360;i++) for (i=lines;i<360;i++)
clear_color(GetBuffer2nd()+SCREEN_OFFSET+scr_linelen2*i,640,backcolor); clear_color(GetBuffer2nd()+SCREEN_OFFSET+scr_linelen2*i,640,backcolor);
@ -1210,7 +1203,7 @@ void draw_enemy(DRW_ENEMY *drw)
} }
posx=drw->posx; posx=drw->posx;
posy=drw->posy; posy=drw->posy;
cely=drw->cely; cely=drw->cely;
if (drw->txtr==NULL) return; if (drw->txtr==NULL) return;
posx+=64; posx+=64;

View file

@ -1,8 +1,9 @@
#include <skeldal_win.h> #include <skeldal_win.h>
#include "types.h" #include "types.h"
#include "Engine1.h" #include "engine1.h"
#include <bgraph.h> #include <bgraph.h>
#include <string.h>
typedef ZOOMINFO tzoom; typedef ZOOMINFO tzoom;
@ -19,7 +20,7 @@ void sikma_zleva(void)
const short *ytable = zoom.ytable; const short *ytable = zoom.ytable;
while (cy) { while (cy) {
const long *xtable = zoom.xtable; const long *xtable = zoom.xtable;
word cx = zoom.xmax; word cx = zoom.xmax;
word *scr_iter = scr; word *scr_iter = scr;
const unsigned char *pixmap_iter = pixmap; const unsigned char *pixmap_iter = pixmap;
while (cx > 0) { while (cx > 0) {
@ -35,11 +36,11 @@ void sikma_zleva(void)
ytable++; ytable++;
scr-=scr_linelen2; scr-=scr_linelen2;
cy--; cy--;
} }
/* /*
__asm __asm
@ -79,7 +80,7 @@ void sikma_zleva(void)
mov [zoom]tzoom.ytable,edx ;uloaz na puvodni misto mov [zoom]tzoom.ytable,edx ;uloaz na puvodni misto
sub edi,[zoom]tzoom.line_len ;odecti tolik, kolik odpovida lince na obrazovce sub edi,[zoom]tzoom.line_len ;odecti tolik, kolik odpovida lince na obrazovce
sub ecx,10000h ;sniz horni pulku ecx o jedna sub ecx,10000h ;sniz horni pulku ecx o jedna
jnz skzl3 ;opakuj dokud neni nula jnz skzl3 ;opakuj dokud neni nula
}*/ }*/
} }
@ -93,7 +94,7 @@ void sikma_zprava(void)
const short *ytable = zoom.ytable; const short *ytable = zoom.ytable;
while (cy) { while (cy) {
const long *xtable = zoom.xtable; const long *xtable = zoom.xtable;
word cx = zoom.xmax; word cx = zoom.xmax;
word *scr_iter = scr; word *scr_iter = scr;
const unsigned char *pixmap_iter = pixmap; const unsigned char *pixmap_iter = pixmap;
while (cx > 0) { while (cx > 0) {
@ -109,7 +110,7 @@ void sikma_zprava(void)
ytable++; ytable++;
scr-=scr_linelen2; scr-=scr_linelen2;
cy--; cy--;
} }
/* /*
__asm __asm
{ {
@ -240,7 +241,7 @@ void klicovani_anm(void *target,void *source,char mirror)
++t; ++t;
t[0] = p; t[0] = p;
t[scr_linelen2] = p; t[scr_linelen2] = p;
++t; ++t;
} else { } else {
t+=2; t+=2;
} }
@ -263,14 +264,14 @@ ka_lp2: mov ebx,320
ka_lp1: lodsw ka_lp1: lodsw
movzx eax,ax movzx eax,ax
test eax,0x8000 test eax,0x8000
jnz ka_skip jnz ka_skip
mov edx,eax mov edx,eax
and edx,0x7FE0 and edx,0x7FE0
add eax,edx add eax,edx
mov edx,eax mov edx,eax
shl edx,16 shl edx,16
add edi,scr_linelen add edi,scr_linelen
or eax,edx or eax,edx
mov [edi],eax mov [edi],eax
sub edi,scr_linelen sub edi,scr_linelen
mov [edi],eax mov [edi],eax
@ -300,7 +301,7 @@ kba_lp1: lodsw
sub edi,4 sub edi,4
movzx eax,ax movzx eax,ax
test eax,0x8000 test eax,0x8000
jnz kba_skip jnz kba_skip
mov edx,eax mov edx,eax
and edx,0x7FE0 and edx,0x7FE0
add eax,edx add eax,edx
@ -373,7 +374,7 @@ void small_anm_delta(void *target,void *buff,void *paleta)
unsigned char *pixels = control + ofs; unsigned char *pixels = control + ofs;
int y; int y;
for (y = 0; y < 180; y++) { for (y = 0; y < 180; y++) {
word *tp = t; word *tp = t;
do { do {
unsigned char c = *control++; unsigned char c = *control++;
@ -383,7 +384,7 @@ void small_anm_delta(void *target,void *buff,void *paleta)
y+=d; y+=d;
t+=(d+1)*scr_linelen2; t+=(d+1)*scr_linelen2;
break; break;
} else { } else {
tp+=2*c; tp+=2*c;
c = *control++; c = *control++;
while (c) { while (c) {
@ -442,7 +443,7 @@ shmad4: add edi,scr_linelen
void scroll_and_copy(void *pic,void *slide, void *scr, int _size,int shift, void *lineinfo) void scroll_and_copy(void *pic,void *slide, void *scr, int _size,int shift, void *lineinfo)
//#pragma aux scroll_and_copy parm[esi][ebx][edi][ecx][edx][eax] //#pragma aux scroll_and_copy parm[esi][ebx][edi][ecx][edx][eax]
{ {
word *srcpc = (word *)pic; word *srcpc = (word *)pic;
word *trg = (word *)scr; word *trg = (word *)scr;
@ -453,11 +454,11 @@ void scroll_and_copy(void *pic,void *slide, void *scr, int _size,int shift, void
int y; int y;
for (y = 0; y < lc; y++ ) { for (y = 0; y < lc; y++ ) {
int left = __min(lnfo[0],lnfo[2]); int left = MIN(lnfo[0],lnfo[2]);
int right = __max(lnfo[1],lnfo[3]); int right = MAX(lnfo[1],lnfo[3]);
int x; int x;
for (x = left; x <= right; x++) { for (x = left; x <= right; x++) {
word c = sld[x] = sld[x+shiftofs]; word c = sld[x] = sld[x+shiftofs];
if (c & BGSWITCHBIT) { if (c & BGSWITCHBIT) {
trg[x] = srcpc[x]; trg[x] = srcpc[x];
@ -474,7 +475,7 @@ void scroll_and_copy(void *pic,void *slide, void *scr, int _size,int shift, void
} }
/* /*
__asm __asm
{ {
mov esi,pic mov esi,pic
@ -581,7 +582,7 @@ void enemy_draw(void *src,void *trg,int shade,int scale,int maxspace,int clip)
int clipl = clip & 0xFFFF; int clipl = clip & 0xFFFF;
int clipr = clip >> 16; int clipr = clip >> 16;
int yiter; int yiter;
if (maxspace >= 470) return; if (maxspace >= 470) return;
//prepare ytable; //prepare ytable;
@ -590,13 +591,13 @@ void enemy_draw(void *src,void *trg,int shade,int scale,int maxspace,int clip)
int accu = 0; int accu = 0;
int *w = ytable; int *w = ytable;
int sp = maxspace*2; int sp = maxspace*2;
while (sp > 0 && rwofs >= 0) { while (sp > 0 && rwofs >= 0) {
*w++ = rwofs; *w++ = rwofs;
accu+=320; accu+=320;
while (accu >= scale && rwofs >= 0) { while (accu >= scale && rwofs >= 0) {
accu-=scale; accu-=scale;
rwofs-=pcx; rwofs-=pcx;
} }
sp--; sp--;
} }
@ -638,7 +639,7 @@ void enemy_draw(void *src,void *trg,int shade,int scale,int maxspace,int clip)
} }
++xiter; ++xiter;
} }
screen-=scr_linelen2; screen-=scr_linelen2;
++yiter; ++yiter;
} }
@ -784,7 +785,7 @@ void enemy_draw_transp(void *src,void *trg,void *shade,int scale,int maxspace,in
accu+=320; accu+=320;
while (accu >= scale && rwofs >= 0) { while (accu >= scale && rwofs >= 0) {
accu-=scale; accu-=scale;
rwofs-=pcx; rwofs-=pcx;
} }
sp--; sp--;
} }
@ -826,7 +827,7 @@ void enemy_draw_transp(void *src,void *trg,void *shade,int scale,int maxspace,in
} }
++xiter; ++xiter;
} }
screen-=scr_linelen2; screen-=scr_linelen2;
++yiter; ++yiter;
} }
@ -974,7 +975,7 @@ void enemy_draw_mirror_transp(void *src,void *trg,void *shade,int scale,int maxs
accu+=320; accu+=320;
while (accu >= scale && rwofs >= 0) { while (accu >= scale && rwofs >= 0) {
accu-=scale; accu-=scale;
rwofs-=pcx; rwofs-=pcx;
} }
sp--; sp--;
} }
@ -1161,7 +1162,7 @@ void enemy_draw_mirror(void *src,void *trg,int shade,int scale,int maxspace,int
accu+=320; accu+=320;
while (accu >= scale && rwofs >= 0) { while (accu >= scale && rwofs >= 0) {
accu-=scale; accu-=scale;
rwofs-=pcx; rwofs-=pcx;
} }
sp--; sp--;
} }
@ -1312,4 +1313,4 @@ edmerr: add esp,ed_stack;vymaz tabulku
pop ebp ;obnov ebp pop ebp ;obnov ebp
} }
*/ */
} }

View file

@ -1,11 +1,8 @@
#include <skeldal_win.h> #include <skeldal_win.h>
#include <debug.h>
#include <dos.h>
#include <bios.h> #include <bios.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include <conio.h>
#include <malloc.h> #include <malloc.h>
#include <mem.h> #include <mem.h>
#include <pcx.h> #include <pcx.h>
@ -17,11 +14,13 @@
#include <bmouse.h> #include <bmouse.h>
#include <memman.h> #include <memman.h>
#include <fcntl.h> #include <fcntl.h>
#include <io.h>
#include <zvuk.h> #include <zvuk.h>
#include <SYS\STAT.H> #include <stdarg.h>
#include "globals.h" #include "globals.h"
#include "temp_storage.h"
#include <assert.h>
#include <sys/stat.h>
#define STATE_CUR_VER 1 #define STATE_CUR_VER 1
#define _GAME_ST "_GAME.TMP" #define _GAME_ST "_GAME.TMP"
@ -38,7 +37,7 @@
#define SSAVE_VERSION 0 #define SSAVE_VERSION 0
static FILE *story=NULL; static TMPFILE_WR *story=NULL;
static char load_another; static char load_another;
char reset_mobiles=0; char reset_mobiles=0;
@ -91,40 +90,30 @@ static word vypocet_crc(char *data,long delka)
while(delka>-1); while(delka>-1);
return l & 0xffff; return l & 0xffff;
} }
static unable_open_temp(char *c) static int unable_open_temp(char *c)
{ {
char d[]="Unable to open the file : ",*e; char d[]="Unable to open the file : ",*e;
concat(e,d,c); concat(e,d,c);
closemode(); closemode();
MessageBox(NULL,e,NULL,MB_OK|MB_ICONSTOP); display_error(e);
SEND_LOG("(SAVELOAD) Open temp error detected (%s)",c,0); SEND_LOG("(SAVELOAD) Open temp error detected (%s)",c,0);
exit(1); exit(1);
} }
static unable_write_temp(char *c) static void unable_write_temp(char *c)
{ {
char d[]="Unable to write to the temp file : ",*e; char d[]="Unable to write to the temp file : ",*e;
concat(e,d,c); concat(e,d,c);
closemode(); closemode();
MessageBox(NULL,e,NULL,MB_OK|MB_ICONSTOP); display_error(e);
SEND_LOG("(SAVELOAD) Open temp error detected (%s)",c,0); SEND_LOG("(SAVELOAD) Open temp error detected (%s)",c,0);
exit(1); exit(1);
} }
void expand_map_file_name(char *s) //prepise *.map na fullpath\*.TMP
{
char *c;
char *st;
c=strchr(s,0);
while (c!=s && *c!='.' && *c!='\\') c--;
if (*c=='.') strcpy(c,".TMP");
concat(st,pathtable[SR_TEMP],s);
strcpy(s,st);
}
int load_org_map(char *filename,void **sides,void **sectors,void **coords,int *mapsize) int load_org_map(char *filename,TSTENA **sides,TSECTOR **sectors,TMAP_EDIT_INFO **coords,int *mapsize)
{ {
FILE *f; FILE *f;
void *temp; void *temp;
@ -174,18 +163,18 @@ int load_org_map(char *filename,void **sides,void **sectors,void **coords,int *m
return 0; return 0;
} }
void save_daction(FILE *f,int count,D_ACTION *ptr) void save_daction(TMPFILE_WR *f,int count,D_ACTION *ptr)
{ {
if (ptr!=NULL) if (ptr!=NULL)
{ {
save_daction(f,count+1,ptr->next); save_daction(f,count+1,ptr->next);
fwrite(ptr,1,sizeof(D_ACTION),f); temp_storage_write(ptr,sizeof(D_ACTION),f);
} }
else else
fwrite(&count,1,2,f); temp_storage_write(&count,2,f);
} }
void load_daction(FILE *fsta) void load_daction(TMPFILE_RD *fsta)
{ {
int i,j; int i,j;
i=0; i=0;
@ -194,19 +183,19 @@ void load_daction(FILE *fsta)
D_ACTION *p; D_ACTION *p;
p=d_action; d_action=p->next;free(p); p=d_action; d_action=p->next;free(p);
} }
fread(&i,1,2,fsta);d_action=NULL; temp_storage_read(&i,2,fsta);d_action=NULL;
for(j=0;j<i;j++) for(j=0;j<i;j++)
{ {
D_ACTION *p; D_ACTION *p;
p=(D_ACTION *)getmem(sizeof(D_ACTION)); p=(D_ACTION *)getmem(sizeof(D_ACTION));
fread(p,1,sizeof(D_ACTION),fsta); temp_storage_read(p,sizeof(D_ACTION),fsta);
p->next=d_action; p->next=d_action;
d_action=p; d_action=p;
} }
} }
void save_items(FILE *f) void save_items(TMPFILE_WR *f)
{ {
int i,j; int i,j;
short *c; short *c;
@ -215,55 +204,55 @@ void save_items(FILE *f)
if (map_items[i]!=NULL) if (map_items[i]!=NULL)
{ {
for(j=1,c=map_items[i];*c;c++,j++); for(j=1,c=map_items[i];*c;c++,j++);
fwrite(&i,1,2,f); temp_storage_write(&i,2,f);
fwrite(&j,1,2,f); temp_storage_write(&j,2,f);
fwrite(map_items[i],2,j,f); temp_storage_write(map_items[i],2*j,f);
} }
i=-1; i=-1;
fwrite(&i,1,2,f); temp_storage_write(&i,2,f);
} }
void restore_items(FILE *f) void restore_items(TMPFILE_RD *f)
{ {
short i,j; short i,j;
for(i=0;i<mapsize*4;i++) if (map_items[i]!=NULL) free(map_items[i]); for(i=0;i<mapsize*4;i++) if (map_items[i]!=NULL) free(map_items[i]);
memset(map_items,0,mapsize*16); memset(map_items,0,mapsize*16);
while(fread(&i,1,2,f) && i!=-1) while(temp_storage_read(&i,1*2,f) && i!=-1)
{ {
fread(&j,1,2,f); temp_storage_read(&j,1*2,f);
map_items[i]=(short *)getmem(j*2); map_items[i]=(short *)getmem(j*2);
fread(map_items[i],2,j,f); temp_storage_read(map_items[i],2*j,f);
} }
} }
extern TSTR_LIST texty_v_mape; extern TSTR_LIST texty_v_mape;
void save_map_description(FILE *f) void save_map_description(TMPFILE_WR *f)
{ {
int count,max; int count,max;
int i; int i;
if (texty_v_mape==NULL) max=0;else max=str_count(texty_v_mape); if (texty_v_mape==NULL) max=0;else max=str_count(texty_v_mape);
for(i=0,count=0;i<max;i++) if (texty_v_mape[i]!=NULL) count++; for(i=0,count=0;i<max;i++) if (texty_v_mape[i]!=NULL) count++;
fwrite(&count,1,sizeof(count),f); temp_storage_write(&count,1*sizeof(count),f);
for(i=0;i<max;i++) if (texty_v_mape[i]!=NULL) for(i=0;i<max;i++) if (texty_v_mape[i]!=NULL)
{ {
int len; int len;
len=strlen(texty_v_mape[i]+12)+12+1; len=strlen(texty_v_mape[i]+12)+12+1;
fwrite(&len,1,2,f); temp_storage_write(&len,1*2,f);
fwrite(texty_v_mape[i],1,len,f); temp_storage_write(texty_v_mape[i],1*len,f);
} }
} }
void load_map_description(FILE *f) void load_map_description(TMPFILE_RD *f)
{ {
int count; int count;
int i; int i;
word len; word len;
if (texty_v_mape!=NULL)release_list(texty_v_mape); if (texty_v_mape!=NULL)release_list(texty_v_mape);
fread(&count,1,sizeof(count),f); temp_storage_read(&count,1*sizeof(count),f);
if (!count) if (!count)
{ {
texty_v_mape=NULL; texty_v_mape=NULL;
@ -272,7 +261,7 @@ void load_map_description(FILE *f)
texty_v_mape=create_list(count); texty_v_mape=create_list(count);
for(i=0;i<count;i++) for(i=0;i<count;i++)
{ {
fread(&len,1,2,f); temp_storage_read(&len,1*2,f);
{ {
char *s; char *s;
s=(char *)alloca(len); s=(char *)alloca(len);
@ -280,59 +269,59 @@ void load_map_description(FILE *f)
s[len-1]=0; s[len-1]=0;
str_replace(&texty_v_mape,i,s); str_replace(&texty_v_mape,i,s);
} }
fread(texty_v_mape[i],1,len,f); temp_storage_read(texty_v_mape[i],1*len,f);
} }
} }
void save_vyklenky(FILE *fsta) void save_vyklenky(TMPFILE_WR *fsta)
{ {
fwrite(&vyk_max,1,sizeof(vyk_max),fsta); temp_storage_write(&vyk_max,1*sizeof(vyk_max),fsta);
if (vyk_max) if (vyk_max)
fwrite(map_vyk,vyk_max,sizeof(TVYKLENEK),fsta); temp_storage_write(map_vyk,vyk_max*sizeof(TVYKLENEK),fsta);
} }
int load_vyklenky(FILE *fsta) int load_vyklenky(TMPFILE_RD *fsta)
{ {
int i=0; int i=0;
fread(&i,1,sizeof(vyk_max),fsta); temp_storage_read(&i,1*sizeof(vyk_max),fsta);
if (vyk_max) if (vyk_max)
{ {
if (i>vyk_max) return -2; if (i>vyk_max) return -2;
fread(map_vyk,vyk_max,sizeof(TVYKLENEK),fsta); temp_storage_read(map_vyk,vyk_max*sizeof(TVYKLENEK),fsta);
} }
return 0; return 0;
} }
void save_all_fly(FILE *fsta) void save_all_fly(TMPFILE_WR *fsta)
{ {
LETICI_VEC *f; LETICI_VEC *f;
f=letici_veci; f=letici_veci;
fwrite(&f,1,sizeof(f),fsta); temp_storage_write(&f,1*sizeof(f),fsta);
while (f!=NULL) while (f!=NULL)
{ {
short *c; short *c;
fwrite(f,1,sizeof(*f),fsta); temp_storage_write(f,1*sizeof(*f),fsta);
c=f->items; c=f->items;
if (c!=NULL) do fwrite(c,1,2,fsta); while (*c++); if (c!=NULL) do temp_storage_write(c,1*2,fsta); while (*c++);
f=f->next; f=f->next;
} }
} }
int load_all_fly(FILE *fsta) int load_all_fly(TMPFILE_RD *fsta)
{ {
LETICI_VEC *f=NULL,*n,*p; LETICI_VEC *f=NULL,*n,*p;
p=letici_veci; p=letici_veci;
while (p!=NULL) {stop_fly(letici_veci,0);p=p->next;} while (p!=NULL) {stop_fly(letici_veci,0);p=p->next;}
fread(&f,1,sizeof(f),fsta); temp_storage_read(&f,1*sizeof(f),fsta);
p=letici_veci; p=letici_veci;
while (f!=NULL) while (f!=NULL)
{ {
short items[100],*c; short items[100],*c;
n=New(LETICI_VEC); n=New(LETICI_VEC);
c=items;memset(items,0,sizeof(items)); c=items;memset(items,0,sizeof(items));
if (fread(n,1,sizeof(*n),fsta)!=sizeof(*n)) if (temp_storage_read(n,1*sizeof(*n),fsta)!=sizeof(*n))
{ {
free(n); free(n);
if (p!=NULL) p->next=NULL; if (p!=NULL) p->next=NULL;
@ -341,7 +330,7 @@ int load_all_fly(FILE *fsta)
if (n->items!=NULL) if (n->items!=NULL)
{ {
do do
fread(c,1,2,fsta); temp_storage_read(c,1*2,fsta);
while (*c++); while (*c++);
n->items=NewArr(short,c-items); n->items=NewArr(short,c-items);
memcpy(n->items,items,(c-items)*sizeof(short)); memcpy(n->items,items,(c-items)*sizeof(short));
@ -361,65 +350,62 @@ int save_map_state() //uklada stav mapy pro savegame (neuklada aktualni pozici);
{ {
char sta[200]; char sta[200];
char *bf; char *bf;
FILE *fsta; TMPFILE_WR *fsta;
int i; int i;
long siz; long siz;
TSTENA *org_sides; TSTENA *org_sides;
TSECTOR *org_sectors; TSECTOR *org_sectors;
short res=-1; short res=-1;
int ver=0; unsigned char ver=0;
restore_sound_names(); restore_sound_names();
strcpy(sta,level_fname); strcpy(sta,level_fname);
expand_map_file_name(sta); fsta=temp_storage_create(sta);if (fsta==NULL) unable_open_temp(sta);
fsta=fopen(sta,"wb");if (fsta==NULL) unable_open_temp(sta);
SEND_LOG("(SAVELOAD) Saving map state for current map",0,0); SEND_LOG("(SAVELOAD) Saving map state for current map",0,0);
if (load_org_map(level_fname,&org_sides,&org_sectors,NULL,NULL)) goto err; if (load_org_map(level_fname,&org_sides,&org_sectors,NULL,NULL)) goto err;
siz=(mapsize+7)/8; siz=(mapsize+7)/8;
bf=(char *)getmem(siz); bf=(char *)getmem(siz);
ver=0;
fwrite(&ver,sizeof(ver),1,fsta); //<-------------------------
ver=STATE_CUR_VER; ver=STATE_CUR_VER;
fwrite(&ver,sizeof(ver),1,fsta); //<------------------------- temp_storage_write(&ver,sizeof(ver)*1,fsta); //<-------------------------
fwrite(&mapsize,sizeof(mapsize),1,fsta); //<------------------------- temp_storage_write(&mapsize,sizeof(mapsize)*1,fsta); //<-------------------------
memset(bf,0,siz); memset(bf,0,siz);
fwrite(&siz,1,sizeof(siz),fsta); //<------------------------- temp_storage_write(&siz,1*sizeof(siz),fsta); //<-------------------------
for(i=0;i<mapsize;i++) //save automap for(i=0;i<mapsize;i++) //save automap
if (map_coord[i].flags & MC_AUTOMAP) bf[i>>3]|=1<<(i & 7); if (map_coord[i].flags & MC_AUTOMAP) bf[i>>3]|=1<<(i & 7);
if (!fwrite(bf,siz,1,fsta)) goto err; //<------------------------- temp_storage_write(bf,siz*1,fsta);
for(i=0;i<mapsize;i++) //save disclosed for(i=0;i<mapsize;i++) //save disclosed
if (map_coord[i].flags & MC_DISCLOSED) bf[i>>3]|=1<<(i & 7); if (map_coord[i].flags & MC_DISCLOSED) bf[i>>3]|=1<<(i & 7);
if (!fwrite(bf,siz,1,fsta)) goto err; //<------------------------- temp_storage_write(bf,siz*1,fsta);
save_map_description(fsta); save_map_description(fsta);
for(i=0;i<mapsize*4;i++) //save changed sides for(i=0;i<mapsize*4;i++) //save changed sides
if (memcmp(map_sides+i,org_sides+i,sizeof(TSTENA))) if (memcmp(map_sides+i,org_sides+i,sizeof(TSTENA)))
{ {
fwrite(&i,1,2,fsta); temp_storage_write(&i,1*2,fsta);
if (fwrite(map_sides+i,1,sizeof(TSTENA),fsta)!=sizeof(TSTENA)) goto err; temp_storage_write(map_sides+i,1*sizeof(TSTENA),fsta);
} }
i=-1; i=-1;
fwrite(&i,1,2,fsta); temp_storage_write(&i,1*2,fsta);
for(i=0;i<mapsize;i++) //save changed sectors for(i=0;i<mapsize;i++) //save changed sectors
if (memcmp(map_sectors+i,org_sectors+i,sizeof(TSECTOR))) if (memcmp(map_sectors+i,org_sectors+i,sizeof(TSECTOR)))
{ {
fwrite(&i,1,2,fsta); temp_storage_write(&i,1*2,fsta);
if (fwrite(map_sectors+i,1,sizeof(TSECTOR),fsta)!=sizeof(TSECTOR)) goto err; temp_storage_write(map_sectors+i,1*sizeof(TSECTOR),fsta);
} }
i=-1; i=-1;
fwrite(&i,1,2,fsta); temp_storage_write(&i,1*2,fsta);
for(i=0;i<MAX_MOBS;i++) if (mobs[i].vlajky & MOB_LIVE) for(i=0;i<MAX_MOBS;i++) if (mobs[i].vlajky & MOB_LIVE)
{ {
fwrite(&i,1,2,fsta); temp_storage_write(&i,1*2,fsta);
fwrite(mobs+i,1,sizeof(TMOB),fsta); //save_mobmap temp_storage_write(mobs+i,1*sizeof(TMOB),fsta); //save_mobmap
} }
i=-1; i=-1;
fwrite(&i,1,2,fsta); temp_storage_write(&i,1*2,fsta);
i=mapsize*4; i=mapsize*4;
fwrite(&i,1,sizeof(i),fsta); //save flag maps //<------------------------- temp_storage_write(&i,1*sizeof(i),fsta); //save flag maps //<-------------------------
if (fwrite(flag_map,1,i,fsta)!=(unsigned)i) goto err; //<------------------------- temp_storage_write(flag_map,1*i,fsta);
save_daction(fsta,0,d_action); //save dactions//<------------------------- save_daction(fsta,0,d_action); //save dactions//<-------------------------
fwrite(&macro_block_size,1,sizeof(macro_block_size),fsta); temp_storage_write(&macro_block_size,1*sizeof(macro_block_size),fsta);
if (macro_block_size)fwrite(macro_block,1,macro_block_size,fsta);//save_macros if (macro_block_size)temp_storage_write(macro_block,1*macro_block_size,fsta);//save_macros
if (save_codelocks(fsta)) goto err; if (save_codelocks(fsta)) goto err;
save_items(fsta); save_items(fsta);
save_vyklenky(fsta); save_vyklenky(fsta);
@ -428,7 +414,7 @@ int save_map_state() //uklada stav mapy pro savegame (neuklada aktualni pozici);
res=0; res=0;
err: err:
SEND_LOG("(SAVELOAD) State of current map saved (err:%d)",res,0); SEND_LOG("(SAVELOAD) State of current map saved (err:%d)",res,0);
fclose(fsta); temp_storage_close_wr(fsta);
free(org_sectors); free(org_sectors);
free(org_sides); free(org_sides);
free(bf); free(bf);
@ -444,76 +430,63 @@ int load_map_state() //obnovuje stav mapy; nutno volat po zavolani load_map;
{ {
char sta[200]; char sta[200];
char *bf; char *bf;
FILE *fsta; TMPFILE_RD *fsta;
int i; int i;
long siz; long siz;
short res=-2; short res=-2;
int ver=0; unsigned char ver=0;
strcpy(sta,level_fname); strcpy(sta,level_fname);
expand_map_file_name(sta); fsta=temp_storage_open(sta);if (fsta==NULL) return -1;
fsta=fopen(sta,"rb");if (fsta==NULL) return -1; i=0;
i=0;fread(&i,sizeof(mapsize),1,fsta); if (!temp_storage_read(&ver,sizeof(ver)*1,fsta)) goto err;
if (i==0)
{
if (!fread(&ver,sizeof(ver),1,fsta)) goto err;
if (ver>STATE_CUR_VER) goto err; if (ver>STATE_CUR_VER) goto err;
if (!fread(&i,sizeof(mapsize),1,fsta)) goto err; if (!temp_storage_read(&i,sizeof(mapsize)*1,fsta)) goto err;
if (mapsize!=i) goto err; if (mapsize!=i) goto err;
SEND_LOG("(SAVELOAD) Loading map state for current map",0,0); SEND_LOG("(SAVELOAD) Loading map state for current map",0,0);
fread(&siz,1,sizeof(siz),fsta); temp_storage_read(&siz,1*sizeof(siz),fsta);
bf=(char *)getmem(siz); bf=(char *)getmem(siz);
if (!fread(bf,siz,1,fsta)) goto err; if (!temp_storage_read(bf,siz*1,fsta)) goto err;
for (i=0;i<mapsize;i++) for (i=0;i<mapsize;i++)
if ((bf[i>>3]>>(i & 7)) & 1) map_coord[i].flags|=MC_AUTOMAP; if ((bf[i>>3]>>(i & 7)) & 1) map_coord[i].flags|=MC_AUTOMAP;
if (!fread(bf,siz,1,fsta)) goto err; if (!temp_storage_read(bf,siz*1,fsta)) goto err;
for (i=0;i<mapsize;i++) for (i=0;i<mapsize;i++)
if ((bf[i>>3]>>(i & 7)) & 1) map_coord[i].flags|=MC_DISCLOSED; if ((bf[i>>3]>>(i & 7)) & 1) map_coord[i].flags|=MC_DISCLOSED;
}
else
{
if (mapsize!=i) return fclose(fsta);
SEND_LOG("(SAVELOAD) Loading map state for current map",0,0);
fread(&siz,1,sizeof(siz),fsta);
bf=(char *)getmem(siz);
if (!fread(bf,siz,1,fsta)) goto err;
for (i=0;i<mapsize;i++)
map_coord[i].flags|=(bf[i>>3]>>(i & 7)) & 1;
}
load_map_description(fsta); load_map_description(fsta);
while (fread(&i,1,2,fsta) && i<=mapsize*4) while (temp_storage_read(&i,1*2,fsta) && i<=mapsize*4)
if (fread(map_sides+i,1,sizeof(TSTENA),fsta)!=sizeof(TSTENA)) goto err; if (temp_storage_read(map_sides+i,1*sizeof(TSTENA),fsta)!=sizeof(TSTENA)) goto err;
while (fread(&i,1,2,fsta) && i<=mapsize) while (temp_storage_read(&i,1*2,fsta) && i<=mapsize)
if (fread(map_sectors+i,1,sizeof(TSECTOR),fsta)!=sizeof(TSECTOR)) goto err; if (temp_storage_read(map_sectors+i,1*sizeof(TSECTOR),fsta)!=sizeof(TSECTOR)) goto err;
if (reset_mobiles) //reloads mobiles if flag present if (reset_mobiles) //reloads mobiles if flag present
{ {
char mm[MAX_MOBS]; char mm[MAX_MOBS];
for(i=0;i<MAX_MOBS;mobs[i].vlajky &=~MOB_LIVE,i++) for(i=0;i<MAX_MOBS;mobs[i].vlajky &=~MOB_LIVE,i++)
if (mobs[i].vlajky & MOB_LIVE) mm[i]=1;else mm[i]=0; if (mobs[i].vlajky & MOB_LIVE) mm[i]=1;else mm[i]=0;
while (fread(&i,1,2,fsta) && i<=MAX_MOBS) while (temp_storage_read(&i,1*2,fsta) && i<=MAX_MOBS)
{ {
if (mm[i]) mobs[i].vlajky |=MOB_LIVE; if (mm[i]) mobs[i].vlajky |=MOB_LIVE;
fseek(fsta,sizeof(TMOB),SEEK_CUR); temp_storage_skip(fsta,sizeof(TMOB));
} }
reset_mobiles=0; reset_mobiles=0;
} }
else else
{ {
for(i=0;i<MAX_MOBS;(mobs[i].vlajky &=~MOB_LIVE),i++); for(i=0;i<MAX_MOBS;(mobs[i].vlajky &=~MOB_LIVE),i++);
while (fread(&i,1,2,fsta) && i<=MAX_MOBS) while (temp_storage_read(&i,1*2,fsta) && i<=MAX_MOBS)
if (fread(mobs+i,1,sizeof(TMOB),fsta)!=sizeof(TMOB)) goto err; if (temp_storage_read(mobs+i,1*sizeof(TMOB),fsta)!=sizeof(TMOB)) goto err;
} }
for(i=0;i<MAX_MOBS;i++) mobs[i].vlajky &=~MOB_IN_BATTLE; for(i=0;i<MAX_MOBS;i++) mobs[i].vlajky &=~MOB_IN_BATTLE;
refresh_mob_map(); refresh_mob_map();
fread(&i,1,sizeof(i),fsta); temp_storage_read(&i,1*sizeof(i),fsta);
fread(flag_map,1,i,fsta); temp_storage_read(flag_map,1*i,fsta);
load_daction(fsta); load_daction(fsta);
fread(&i,1,sizeof(macro_block_size),fsta); temp_storage_read(&i,1*sizeof(macro_block_size),fsta);
if (macro_block_size && i==macro_block_size)fread(macro_block,1,macro_block_size,fsta); if (macro_block_size && i==macro_block_size) {
temp_storage_read(macro_block,1*macro_block_size,fsta);
}
else else
{ {
fseek(fsta,i,SEEK_CUR); temp_storage_skip(fsta,i);
SEND_LOG("(ERROR) Multiaction: Sizes mismatch %d != %d",i,macro_block_size); SEND_LOG("(ERROR) Multiaction: Sizes mismatch %d != %d",i,macro_block_size);
} }
if (load_codelocks(fsta)) goto err; if (load_codelocks(fsta)) goto err;
@ -524,7 +497,7 @@ int load_map_state() //obnovuje stav mapy; nutno volat po zavolani load_map;
res|=load_enemy_paths(fsta); res|=load_enemy_paths(fsta);
err: err:
SEND_LOG("(SAVELOAD) State of current map loaded (err:%d)",res,0); SEND_LOG("(SAVELOAD) State of current map loaded (err:%d)",res,0);
fclose(fsta); temp_storage_close_rd(fsta);
free(bf); free(bf);
return res; return res;
} }
@ -547,7 +520,7 @@ void restore_current_map() //pouze obnovuje ulozeny stav aktualni mapy
_inline unsigned char rotate(unsigned char c) _inline unsigned char rotate(unsigned char c)
{ {
return (c >> 1) | (c << 7); return (c >> 1) | (c << 7);
/*
__asm __asm
{ {
mov al,c mov al,c
@ -563,100 +536,67 @@ _inline unsigned char rotate(unsigned char c)
2 internal error 2 internal error
3 checksum error 3 checksum error
*/ */
int pack_status_file(FILE *f,char *status_name) int pack_status_file(FILE *f,const char *status_name)
{ {
int stt; int stt;
char rcheck=0; char rcheck=0;
long fsz; uint32_t fsz;
char *buffer,*c,*fullnam; char *buffer,*c,*fullnam;
word crc; word crc;
unsigned char name_len;
SEND_LOG("(SAVELOAD) Packing status file '%s'",status_name,0); SEND_LOG("(SAVELOAD) Packing status file '%s'",status_name,0);
fullnam=alloca(strlen(status_name)+strlen(pathtable[SR_TEMP])+1); fsz = temp_storage_find(status_name);
if (fullnam==NULL) return 2; if (fsz < 0) return 2;
strcpy(fullnam,pathtable[SR_TEMP]); name_len = (unsigned char)strlen(status_name);
strcat(fullnam,status_name); uint32_t extra = 1+name_len+4;
stt=open(fullnam,O_RDONLY | O_BINARY); c=buffer=getmem(fsz+extra);
fsz=filelength(stt); *c = name_len;
c=buffer=getmem(fsz+12+4+2); ++c;
strcpy(c,status_name);c+=12; memcpy(c,status_name, name_len);
*(long *)c=fsz+2; c += name_len;
c+=sizeof(long); memcpy(c,&fsz,4);
read(stt,c,fsz);
close(stt); temp_storage_retrieve(status_name, c, fsz);
crc=vypocet_crc(c,fsz);
c+=fsz; fsz+=extra;
memcpy(c,&crc,sizeof(crc));
fsz+=12+4+2;
rcheck=(fwrite(buffer,1,fsz,f)!=(unsigned)fsz); rcheck=(fwrite(buffer,1,fsz,f)!=(unsigned)fsz);
free(buffer); free(buffer);
return rcheck; return 0;
} }
int unpack_status_file(FILE *f) int unpack_status_file(FILE *f)
{ {
int stt; int stt;
char rcheck=0; char rcheck=0;
long fsz; uint32_t fsz;
char *buffer,*c,*fullnam; char *buffer;
char name[13]; unsigned char namelen = 0;
word crc,crccheck; char name[256];
name[12]=0; fread(&namelen, 1,1, f);
name[11]=0; if (namelen == 0) return -1;
fread(name,1,12,f); fread(name, 1, namelen, f);
SEND_LOG("(SAVELOAD) Unpacking status file '%s'",name,0); SEND_LOG("(SAVELOAD) Unpacking status file '%s'",name,0);
if (name[0]==0) return -1;
fread(&fsz,1,4,f); fread(&fsz,1,4,f);
c=buffer=(char *)getmem(fsz); buffer=(char *)getmem(fsz);
if (fread(buffer,1,fsz,f)!=(unsigned)fsz) return 1; if (fread(buffer,1,fsz,f)!=(unsigned)fsz) return 1;
fullnam=alloca(strlen(name)+strlen(pathtable[SR_TEMP])+2); temp_storage_store(name, buffer, fsz);
if (fullnam==NULL) return 2;
strcpy(fullnam,pathtable[SR_TEMP]);
strcat(fullnam,name);
fsz-=2;
crc=vypocet_crc(c,fsz);
c+=fsz;memcpy(&crccheck,c,sizeof(crccheck));
if (crc!=crccheck)
{
free(buffer);
return 3;
}
stt=open(fullnam,O_BINARY | O_RDWR | O_CREAT | O_TRUNC, _S_IREAD | _S_IWRITE);
if (stt==-1)
{
free(buffer);
return 1;
}
rcheck=(write(stt,buffer,fsz)!=fsz) ;
free(buffer); free(buffer);
close(stt);
return rcheck; return rcheck;
} }
static void pack_status_file_cb(const char *name, void *ctx) {
pack_status_file((FILE *)ctx, name);
}
int pack_all_status(FILE *f) int pack_all_status(FILE *f)
{ {
char *c; char c = 0;
WIN32_FIND_DATA inf; temp_storage_list(pack_status_file_cb, f);
HANDLE res; fwrite(&c,1,1,f);
return 0;
concat(c,pathtable[SR_TEMP],"*.TMP");
res=FindFirstFile(c,&inf);
if (res!=INVALID_HANDLE_VALUE)
do
{
int i;
if (inf.cFileName[0]!='~')
{
i=pack_status_file(f,inf.cFileName);
if (i) return i;
}
}
while (FindNextFile(res,&inf));
FindClose(res);
c[0]=0;
fwrite(c,1,12,f);
return 0;
} }
int unpack_all_status(FILE *f) int unpack_all_status(FILE *f)
@ -671,7 +611,7 @@ int unpack_all_status(FILE *f)
int save_basic_info() int save_basic_info()
{ {
FILE *f; TMPFILE_WR *f;
char *c; char *c;
S_SAVE s; S_SAVE s;
short *p; short *p;
@ -679,9 +619,8 @@ int save_basic_info()
char res=0; char res=0;
THUMAN *h; THUMAN *h;
concat(c,pathtable[SR_TEMP],_GAME_ST); SEND_LOG("(SAVELOAD) Saving basic info for game (file:%s)",_GAME_ST ,0);
SEND_LOG("(SAVELOAD) Saving basic info for game (file:%s)",c,0); f=temp_storage_create(_GAME_ST);
f=fopen(c,"wb");
if (f==NULL) return 1; if (f==NULL) return 1;
s.viewsector=viewsector; s.viewsector=viewsector;
s.viewdir=viewdir; s.viewdir=viewdir;
@ -713,24 +652,24 @@ int save_basic_info()
for(i=1,p=picked_item;*p;i++,p++);else i=0; for(i=1,p=picked_item;*p;i++,p++);else i=0;
s.picks=i; s.picks=i;
s.items_added=item_count-it_count_orgn; s.items_added=item_count-it_count_orgn;
res|=(fwrite(&s,1,sizeof(s),f)!=sizeof(s)); temp_storage_write(&s,1*sizeof(s),f);
if (i) if (i)
res|=(fwrite(picked_item,2,i,f)!=(unsigned)i); temp_storage_write(picked_item,2*i,f);
if (s.items_added) if (s.items_added)
res|=(fwrite(glob_items+it_count_orgn,sizeof(TITEM),s.items_added,f)!=(unsigned)s.items_added); temp_storage_write(glob_items+it_count_orgn,sizeof(TITEM)*s.items_added,f);
res|=save_spells(f); save_spells(f);
if (!res) res|=(fwrite(postavy,1,sizeof(postavy),f)!=sizeof(postavy)); temp_storage_write(postavy,1*sizeof(postavy),f);
for(i=0,h=postavy;i<POCET_POSTAV;h++,i++) if (h->demon_save!=NULL) for(i=0,h=postavy;i<POCET_POSTAV;h++,i++) if (h->demon_save!=NULL)
fwrite(h->demon_save,sizeof(THUMAN),1,f); //ulozeni polozek s demony temp_storage_write(h->demon_save,sizeof(THUMAN)*1,f); //ulozeni polozek s demony
res|=save_dialog_info(f); res|=save_dialog_info(f);
fclose(f); temp_storage_close_wr(f);
SEND_LOG("(SAVELOAD) Done... Result: %d",res,0); SEND_LOG("(SAVELOAD) Done... Result: %d",res,0);
return res; return res;
} }
int load_basic_info() int load_basic_info()
{ {
FILE *f; TMPFILE_RD *f;
char *c; char *c;
S_SAVE s; S_SAVE s;
int i; int i;
@ -738,29 +677,28 @@ int load_basic_info()
TITEM *itg; TITEM *itg;
THUMAN *h; THUMAN *h;
concat(c,pathtable[SR_TEMP],_GAME_ST); SEND_LOG("(SAVELOAD) Loading basic info for game (file:%s)",_GAME_ST,0);
SEND_LOG("(SAVELOAD) Loading basic info for game (file:%s)",c,0); f=temp_storage_open(_GAME_ST);
f=fopen(c,"rb");
if (f==NULL) return 1; if (f==NULL) return 1;
res|=(fread(&s,1,sizeof(s),f)!=sizeof(s)); res|=(temp_storage_read(&s,1*sizeof(s),f)!=sizeof(s));
if (s.game_flags & GM_MAPENABLE) enable_glmap=1;else enable_glmap=0; if (s.game_flags & GM_MAPENABLE) enable_glmap=1;else enable_glmap=0;
i=s.picks; i=s.picks;
if (picked_item!=NULL) free(picked_item); if (picked_item!=NULL) free(picked_item);
if (i) if (i)
{ {
picked_item=NewArr(short,i); picked_item=NewArr(short,i);
res|=(fread(picked_item,2,i,f)!=(unsigned)i); res|=(temp_storage_read(picked_item,2*i,f)!=(unsigned)i);
} }
else picked_item=NULL; else picked_item=NULL;
itg=NewArr(TITEM,it_count_orgn+s.items_added); itg=NewArr(TITEM,it_count_orgn+s.items_added);
memcpy(itg,glob_items,it_count_orgn*sizeof(TITEM)); memcpy(itg,glob_items,it_count_orgn*sizeof(TITEM));
free(glob_items);glob_items=itg; free(glob_items);glob_items=itg;
if (s.items_added) if (s.items_added)
res|=(fread(glob_items+it_count_orgn,sizeof(TITEM),s.items_added,f)!=(unsigned)s.items_added); res|=(temp_storage_read(glob_items+it_count_orgn,sizeof(TITEM)*s.items_added,f)!=(unsigned)s.items_added);
item_count=it_count_orgn+s.items_added; item_count=it_count_orgn+s.items_added;
res|=load_spells(f); res|=load_spells(f);
for(i=0,h=postavy;i<POCET_POSTAV;h++,i++) if (h->demon_save!=NULL) free(h->demon_save); for(i=0,h=postavy;i<POCET_POSTAV;h++,i++) if (h->demon_save!=NULL) free(h->demon_save);
if (!res) res|=(fread(postavy,1,sizeof(postavy),f)!=sizeof(postavy)); if (!res) res|=(temp_storage_read(postavy,1*sizeof(postavy),f)!=sizeof(postavy));
for(i=0,h=postavy;i<POCET_POSTAV;h++,i++) for(i=0,h=postavy;i<POCET_POSTAV;h++,i++)
{ {
h->programovano=0; h->programovano=0;
@ -769,11 +707,11 @@ int load_basic_info()
if (h->demon_save!=NULL) if (h->demon_save!=NULL)
{ {
h->demon_save=New(THUMAN); h->demon_save=New(THUMAN);
fread(h->demon_save,sizeof(THUMAN),1,f);//obnova polozek s demony temp_storage_read(h->demon_save,sizeof(THUMAN)*1,f);//obnova polozek s demony
} }
} }
res|=load_dialog_info(f); res|=load_dialog_info(f);
fclose(f); temp_storage_close_rd(f);
viewsector=s.viewsector; viewsector=s.viewsector;
viewdir=s.viewdir; viewdir=s.viewdir;
cur_group=s.cur_group; cur_group=s.cur_group;
@ -815,7 +753,7 @@ static void MakeSaveGameDir(const char *name)
char *p=(char *)alloca(strlen(name)+1); char *p=(char *)alloca(strlen(name)+1);
strcpy(p,name); strcpy(p,name);
p[strlen(p)-1]=0; p[strlen(p)-1]=0;
CreateDirectory(p,NULL); mkdir(p,0666);
} }
static int save_global_events() static int save_global_events()
@ -864,11 +802,11 @@ int save_game(int slotnum,char *gamename)
save_book(); save_book();
save_global_events(); save_global_events();
svf=fopen(ssn,"wb"); svf=fopen(ssn,"wb");
if (svf==NULL) if (svf==NULL)
{ {
char buff[256]; char buff[256];
sprintf(buff,"Nelze ulozit pozici na cestu: %s", ssn); sprintf(buff,"Nelze ulozit pozici na cestu: %s", ssn);
MessageBox(NULL,buff,NULL,MB_OK|MB_ICONSTOP|MB_SYSTEMMODAL); display_error(buff);
} }
else else
{ {
@ -925,7 +863,7 @@ int load_game(int slotnum)
} }
for(t=0;t<POCET_POSTAV;t++) postavy[t].zvolene_akce=NULL; for(t=0;t<POCET_POSTAV;t++) postavy[t].zvolene_akce=NULL;
SEND_LOG("(SAVELOAD) Game loaded.... Result %d",r,0); SEND_LOG("(SAVELOAD) Game loaded.... Result %d",r,0);
if (GetKeyState(VK_CONTROL) & 0x80) correct_level(); // if (GetKeyState(VK_CONTROL) & 0x80) correct_level();
return r; return r;
} }
@ -1083,8 +1021,7 @@ static void redraw_story_bar(int pos)
showview(x,STORY_Y+SCREEN_OFFLINE,STORY_XS,STORY_YS); showview(x,STORY_Y+SCREEN_OFFLINE,STORY_XS,STORY_YS);
} }
//#pragma aux read_story_task parm [] static void read_story_task(va_list args)
static read_story_task(va_list args)
{ {
int slot=va_arg(args,int); int slot=va_arg(args,int);
@ -1132,7 +1069,7 @@ static read_story_task(va_list args)
static void read_story(int slot) static void read_story(int slot)
{ {
static task_num=-1; static int task_num=-1;
if (task_num!=-1) term_task(task_num); if (task_num!=-1) term_task(task_num);
if (slot!=-1) if (slot!=-1)
@ -1210,7 +1147,7 @@ static EVENT_PROC(updown_scroll_hold)
} }
} }
static char updown_scroll(int id,int xa,int ya,int xr,int yr) char updown_scroll(int id,int xa,int ya,int xr,int yr)
{ {
int count; int count;
xr,yr,xa,ya; xr,yr,xa,ya;
@ -1508,30 +1445,22 @@ void wire_save_load(char save)
void open_story_file() void open_story_file()
{ {
char *c;
int err;
concat(c,pathtable[SR_TEMP],STORY_BOOK); story=temp_storage_append(STORY_BOOK);
story=fopen(c,"a");
err=GetLastError();
if (story==NULL) story=fopen(c,"w");
if (story==NULL)
unable_open_temp(c);
SEND_LOG("(STORY) Story temp file is opened....",0,0); SEND_LOG("(STORY) Story temp file is opened....",0,0);
} }
void write_story_text(char *text) void write_story_text(char *text)
{ {
if (fputs(text,story)==EOF) int l = strlen(text);
unable_write_temp(STORY_BOOK); temp_storage_write( text, l, story);
if (fputs("\n",story)==EOF) temp_storage_write("\n", 1, story);
unable_write_temp(STORY_BOOK);
} }
void close_story_file() void close_story_file()
{ {
if (story!=NULL) fclose(story); if (story!=NULL) temp_storage_close_wr(story);
story=NULL; story=NULL;
SEND_LOG("(STORY) Story temp file is closed...",0,0); SEND_LOG("(STORY) Story temp file is closed...",0,0);
} }
@ -1540,31 +1469,34 @@ static int load_map_state_partial(char *level_fname,int mapsize) //obnovuje stav
{ {
char sta[200]; char sta[200];
char *bf; char *bf;
FILE *fsta; TMPFILE_RD *fsta;
int i; int i;
long siz; long siz;
short res=-2; short res=-2;
unsigned char ver;
strcpy(sta,level_fname); fsta=temp_storage_open(level_fname);
expand_map_file_name(sta); if (fsta==NULL) return -1;
fsta=fopen(sta,"rb");if (fsta==NULL) return -1; if (!temp_storage_read(&ver,sizeof(ver)*1,fsta)) goto err;
i=0;fread(&i,sizeof(mapsize),1,fsta);if (mapsize!=i)goto err; if (ver>STATE_CUR_VER) goto err;
if (!temp_storage_read(&i,sizeof(mapsize)*1,fsta)) goto err;
if (mapsize!=i) goto err;
SEND_LOG("(SAVELOAD) Partial restore for map: %s (%s)",level_fname,"START"); SEND_LOG("(SAVELOAD) Partial restore for map: %s (%s)",level_fname,"START");
fread(&siz,1,sizeof(siz),fsta); temp_storage_read(&siz,1*sizeof(siz),fsta);
bf=(char *)getmem(siz); bf=(char *)getmem(siz);
if (!fread(bf,siz,1,fsta)) goto err; if (!temp_storage_read(bf,siz*1,fsta)) goto err;
for (i=0;i<mapsize;i++) for (i=0;i<mapsize;i++)
map_coord[i].flags|=(bf[i>>3]>>(i & 7)) & 1; map_coord[i].flags|=(bf[i>>3]>>(i & 7)) & 1;
load_map_description(fsta); load_map_description(fsta);
while (fread(&i,1,2,fsta) && i<=mapsize*4) while (temp_storage_read(&i,1*2,fsta) && i<=mapsize*4)
if (fread(map_sides+i,1,sizeof(TSTENA),fsta)!=sizeof(TSTENA)) goto err; if (temp_storage_read(map_sides+i,1*sizeof(TSTENA),fsta)!=sizeof(TSTENA)) goto err;
while (fread(&i,1,2,fsta) && i<=mapsize) while (temp_storage_read(&i,1*2,fsta) && i<=mapsize)
if (fread(map_sectors+i,1,sizeof(TSECTOR),fsta)!=sizeof(TSECTOR)) goto err; if (temp_storage_read(map_sectors+i,1*sizeof(TSECTOR),fsta)!=sizeof(TSECTOR)) goto err;
res=0; res=0;
err: err:
free(bf); free(bf);
fclose(fsta); temp_storage_close_rd(fsta);
SEND_LOG("(SAVELOAD) Partial restore for map: %s (%s)",level_fname,"DONE"); SEND_LOG("(SAVELOAD) Partial restore for map: %s (%s)",level_fname,"DONE");
return res; return res;
} }

View file

@ -1,10 +1,15 @@
#include "types.h" #include "types.h"
#include "engine1.h" #include "engine1.h"
#include "temp_storage.h"
#include <stdint.h>
#include <stdlib.h>
#define POCET_POSTAV 6 #define POCET_POSTAV 6
#define HODINA 360 #define HODINA 360
#define MAX_FILESYSTEM_PATH 256
#define A_SIDEMAP 0x8001 #define A_SIDEMAP 0x8001
#define A_SECTMAP 0x8002 #define A_SECTMAP 0x8002
@ -79,7 +84,10 @@
#define SD_DIRECTION 0x03 //smer akce. #define SD_DIRECTION 0x03 //smer akce.
#define get_string(t) texty[t] #define get_string(t) texty[t]
#define rnd(num) (rand()*(num)/(RAND_MAX+1)) static __inline unsigned int rnd(unsigned int max) {
return rand() % max;
}
static __inline int rangrnd(int a, int b) {return rnd(b-a+1)+a;} static __inline int rangrnd(int a, int b) {return rnd(b-a+1)+a;}
@ -110,8 +118,7 @@ static __inline int rangrnd(int a, int b) {return rnd(b-a+1)+a;}
#define NOSHADOW(x) ((x)|BGSWITCHBIT) #define NOSHADOW(x) ((x)|BGSWITCHBIT)
#define SWAPPATH pathtable[SR_TEMP]
#define TEMP_FILE "~SKELDAL.TMP"
#define PICTURES "..\\OBRAZKY\\" #define PICTURES "..\\OBRAZKY\\"
#define PIC_FADE_PAL_SIZE (10*512+6) #define PIC_FADE_PAL_SIZE (10*512+6)
@ -625,7 +632,7 @@ void pcx_8bit_nopal(void **p,long *s);
void set_background(void **p,long *s); void set_background(void **p,long *s);
void wav_load(void **p,long *s); void wav_load(void **p,long *s);
void wire_main_functs(); void wire_main_functs();
void ukaz_kompas(); void ukaz_kompas(char mode);
void *timming(EVENT_MSG *msg,void **data); void *timming(EVENT_MSG *msg,void **data);
void do_timer(); void do_timer();
void hold_timer(int id,char hld); void hold_timer(int id,char hld);
@ -640,8 +647,11 @@ void bott_draw_proc();
THE_TIMER *add_to_timer(int id,int delay,int maxcall,void *proc); THE_TIMER *add_to_timer(int id,int delay,int maxcall,void *proc);
void mouse_set_default(int cursor); void mouse_set_default(int cursor);
void create_frame(int x,int y,int xs,int ys,char clear); void create_frame(int x,int y,int xs,int ys,char clear);
void save_dump(); void save_dump(const uint16_t *screen_addr,
void bott_disp_text(char *); unsigned int width,
unsigned int height,
unsigned int linelen);
void bott_disp_text(const char *);
void bott_text_forever(); void bott_text_forever();
char chod_s_postavama(char sekupit); char chod_s_postavama(char sekupit);
void hide_ms_at(int line); //schova mysku ktera je nad line void hide_ms_at(int line); //schova mysku ktera je nad line
@ -1059,41 +1069,41 @@ char load_saved_shops();
#define MAGLOB_LEAVEMAP 0 // v urcitou nastavenou hodinu a minutu dene #define MAGLOB_LEAVEMAP 0 // v urcitou nastavenou hodinu a minutu dene
#define MAGLOB_STARTSLEEP 1 // postavy maji jit spat. #define MAGLOB_STARTSLEEP 1 // postavy maji jit spat.
#define MAGLOB_ENDSLEEP 2 // postavy se probouzi #define MAGLOB_ENDSLEEP 2 // postavy se probouzi
#define MAGLOB_CLICKSAVE 3 // před otevřením SAVE dialogu #define MAGLOB_CLICKSAVE 3 // p<EFBFBD>ed otev<65>en<65>m SAVE dialogu
#define MAGLOB_AFTERSAVE 4 // po uložení hry #define MAGLOB_AFTERSAVE 4 // po ulo<EFBFBD>en<EFBFBD> hry
#define MAGLOB_BEFOREMAGIC 5 // před vyvoláním kouzla #define MAGLOB_BEFOREMAGIC 5 // p<EFBFBD>ed vyvol<6F>n<EFBFBD>m kouzla
#define MAGLOB_AFTERMAGIC 6 //po vyvolání kouzla #define MAGLOB_AFTERMAGIC 6 //po vyvol<EFBFBD>n<EFBFBD> kouzla
#define MAGLOB_BEFOREMAPOPEN 7 //před otevřením mapy #define MAGLOB_BEFOREMAPOPEN 7 //p<EFBFBD>ed otev<65>en<65>m mapy
#define MAGLOB_AFTERMAPOPEN 8 //po uzavření mapy #define MAGLOB_AFTERMAPOPEN 8 //po uzav<EFBFBD>en<EFBFBD> mapy
#define MAGLOB_BEFOREBATTLE 9 //před spuštěním souboje #define MAGLOB_BEFOREBATTLE 9 //p<EFBFBD>ed spu<70>t<EFBFBD>n<EFBFBD>m souboje
#define MAGLOB_AFTERBATTLE 10 //po ukončení souboje #define MAGLOB_AFTERBATTLE 10 //po ukon<EFBFBD>en<EFBFBD> souboje
#define MAGLOB_BEFOREBOOK 11 //pred otevřením knihy #define MAGLOB_BEFOREBOOK 11 //pred otev<EFBFBD>en<EFBFBD>m knihy
#define MAGLOB_AFTERBOOK 12 //po uzavření knihy #define MAGLOB_AFTERBOOK 12 //po uzav<EFBFBD>en<EFBFBD> knihy
#define MAGLOB_ONROUND 13 //při každém kole nebo po 10s #define MAGLOB_ONROUND 13 //p<EFBFBD>i ka<6B>d<EFBFBD>m kole nebo po 10s
#define MAGLOB_ONDEADMAN 14 //při umrtí muže #define MAGLOB_ONDEADMAN 14 //p<EFBFBD>i umrt<72> mu<6D>e
#define MAGLOB_ONDEADWOMAN 15 //při umrtí ženy #define MAGLOB_ONDEADWOMAN 15 //p<EFBFBD>i umrt<72> <20>eny
#define MAGLOB_ONDEADALL 16 //při umrtí všech postav #define MAGLOB_ONDEADALL 16 //p<EFBFBD>i umrt<72> v<>ech postav
#define MAGLOB_ONHITMAN 17 //při zásahu muže #define MAGLOB_ONHITMAN 17 //p<EFBFBD>i z<>sahu mu<6D>e
#define MAGLOB_ONHITWOMAN 18 //při zásahu ženy #define MAGLOB_ONHITWOMAN 18 //p<EFBFBD>i z<>sahu <20>eny
#define MAGLOB_ONNEWRUNE 19 //při nalezení nové runy #define MAGLOB_ONNEWRUNE 19 //p<EFBFBD>i nalezen<65> nov<6F> runy
#define MAGLOB_ONPICKITEM 20 //při sebrání předmětu (pro speciální předměty) #define MAGLOB_ONPICKITEM 20 //p<EFBFBD>i sebr<62>n<EFBFBD> p<>edm<64>tu (pro speci<63>ln<6C> p<>edm<64>ty)
#define MAGLOB_ONSTEP 21 //při kroku (před animaci) #define MAGLOB_ONSTEP 21 //p<EFBFBD>i kroku (p<>ed animaci)
#define MAGLOB_ONTURN 22 //při otočení (před animaci) #define MAGLOB_ONTURN 22 //p<EFBFBD>i oto<74>en<65> (p<>ed animaci)
#define MAGLOB_ALARM 23 //při spuštění alarmu #define MAGLOB_ALARM 23 //p<EFBFBD>i spu<70>t<EFBFBD>n<EFBFBD> alarmu
#define MAGLOB_ONFIREMAGIC 24 #define MAGLOB_ONFIREMAGIC 24
#define MAGLOB_ONWATERMAGIC 25 #define MAGLOB_ONWATERMAGIC 25
#define MAGLOB_ONGROUNDMAGIC 26 #define MAGLOB_ONGROUNDMAGIC 26
#define MAGLOB_ONAIRMAGIC 27 #define MAGLOB_ONAIRMAGIC 27
#define MAGLOB_ONMINDMAGIC 28 #define MAGLOB_ONMINDMAGIC 28
#define MAGLOB_ONSPELLID1 29 //při jednom konrétním kouzle #define MAGLOB_ONSPELLID1 29 //p<EFBFBD>i jednom konr<6E>tn<74>m kouzle
#define MAGLOB_ONSPELLID2 30 //při jednom konrétním kouzle #define MAGLOB_ONSPELLID2 30 //p<EFBFBD>i jednom konr<6E>tn<74>m kouzle
#define MAGLOB_ONSPELLID3 31 //při jednom konrétním kouzle #define MAGLOB_ONSPELLID3 31 //p<EFBFBD>i jednom konr<6E>tn<74>m kouzle
#define MAGLOB_ONSPELLID4 32 //při jednom konrétním kouzle #define MAGLOB_ONSPELLID4 32 //p<EFBFBD>i jednom konr<6E>tn<74>m kouzle
#define MAGLOB_ONSPELLID5 33 //při jednom konrétním kouzle #define MAGLOB_ONSPELLID5 33 //p<EFBFBD>i jednom konr<6E>tn<74>m kouzle
#define MAGLOB_ONSPELLID6 34 //při jednom konrétním kouzle #define MAGLOB_ONSPELLID6 34 //p<EFBFBD>i jednom konr<6E>tn<74>m kouzle
#define MAGLOB_ONSPELLID7 35 //při jednom konrétním kouzle #define MAGLOB_ONSPELLID7 35 //p<EFBFBD>i jednom konr<6E>tn<74>m kouzle
#define MAGLOB_ONSPELLID8 36 //při jednom konrétním kouzle #define MAGLOB_ONSPELLID8 36 //p<EFBFBD>i jednom konr<6E>tn<74>m kouzle
#define MAGLOB_ONSPELLID9 37 //při jednom konrétním kouzle #define MAGLOB_ONSPELLID9 37 //p<EFBFBD>i jednom konr<6E>tn<74>m kouzle
#define MAGLOB_ONTIMER1 38 //cas - pocet hernich sekund od nastaveni #define MAGLOB_ONTIMER1 38 //cas - pocet hernich sekund od nastaveni
#define MAGLOB_ONTIMER2 39 //cas - pocet hernich sekund od nastaveni #define MAGLOB_ONTIMER2 39 //cas - pocet hernich sekund od nastaveni
#define MAGLOB_ONTIMER3 40 //cas - pocet hernich sekund od nastaveni #define MAGLOB_ONTIMER3 40 //cas - pocet hernich sekund od nastaveni
@ -1107,7 +1117,7 @@ char load_saved_shops();
#define MAGLOB_ONFLUTE7 48 //zahrani urcite melodie #define MAGLOB_ONFLUTE7 48 //zahrani urcite melodie
#define MAGLOB_ONFLUTE8 49 //zahrani urcite melodie #define MAGLOB_ONFLUTE8 49 //zahrani urcite melodie
#define MAGLOB_NEXTID 50 //musí být poslední #define MAGLOB_NEXTID 50 //mus<EFBFBD> b<>t posledn<64>
@ -1232,7 +1242,7 @@ typedef struct tma_create_unique
}TMA_UNIQUE; }TMA_UNIQUE;
typedef struct tma_globe typedef struct tma_globe
{ {
char action,flags,eflags,event; //event - MAGLOB_XXXX char action,flags,eflags,event; //event - MAGLOB_XXXX
unsigned short sector; //sektor of action target, when event occured unsigned short sector; //sektor of action target, when event occured
unsigned char side; //side of action target, when event occured unsigned char side; //side of action target, when event occured
@ -1283,8 +1293,8 @@ void call_macro(int side,int flags);
void call_macro_ex(int side,int flags, int runatsect); void call_macro_ex(int side,int flags, int runatsect);
char get_player_triggered(int p); //zjistuje zda hrac s cislem p byl makrem zasazen; char get_player_triggered(int p); //zjistuje zda hrac s cislem p byl makrem zasazen;
char save_load_trigger(short load); //uklada/obnovuje trigger vlajky. -1 uklada, jinak hodnota ulozeneho triggeru char save_load_trigger(short load); //uklada/obnovuje trigger vlajky. -1 uklada, jinak hodnota ulozeneho triggeru
char save_codelocks(FILE *fsta); //uklada do savegame nastaveni kodovych zamku (128 bytu); char save_codelocks(TMPFILE_WR *fsta); //uklada do savegame nastaveni kodovych zamku (128 bytu);
char load_codelocks(FILE *fsta); //obnovuje ze savegame nastaveni kodovych zamku (128 bytu); char load_codelocks(TMPFILE_RD *fsta); //obnovuje ze savegame nastaveni kodovych zamku (128 bytu);
typedef struct letici_vec typedef struct letici_vec
@ -1364,7 +1374,8 @@ void user_setup();
void setup_dialoge(); void setup_dialoge();
char game_setup(int id,int xa,int ya,int xr,int yr); char game_setup(int id,int xa,int ya,int xr,int yr);
void GamePause(); void GamePause();
void show_textured_button(int x,int y,int xs,int ys,int texture,void *border3d); typedef struct ctl3d CTL3D;
void show_textured_button(int x,int y,int xs,int ys,int texture,CTL3D *border3d);
//sounder & music //sounder & music
@ -1387,11 +1398,12 @@ void mute_all_tracks(char all);
void kill_all_sounds(); void kill_all_sounds();
void create_sound_table(char *template,long size); void create_sound_table(char *template,long size);
void create_sound_table_old(); void create_sound_table_old();
void start_play_flute(); void start_play_flute(char );
void stop_play_flute(); void stop_play_flute();
void pc_speak_play_sample(char *sample,int size,char step,int freq); void pc_speak_play_sample(char *sample,int size,char step,int freq);
char enable_sound(char enbl); char enable_sound(char enbl);
void wire_main_functs();
void unwire_main_functs();
//enemy //enemy
#define MOBS_INV 16 #define MOBS_INV 16
@ -1438,8 +1450,8 @@ typedef struct tmob
short lives; //pocet zivotu potvory short lives; //pocet zivotu potvory
short cislo_vzoru; //informace urcujici ze ktereho vzoru byl mob vytvoren short cislo_vzoru; //informace urcujici ze ktereho vzoru byl mob vytvoren
short speed; //rychlost pohybu short speed; //rychlost pohybu
short dohled; //kam dohldne short dohled; //kam dohl<EFBFBD>dne
short dosah; //okamik za‡ tku souboje short dosah; //okam<EFBFBD>ik za<7A><61>tku souboje
char stay_strategy; //chovani moba ve statickem modu (nepronasleduje) char stay_strategy; //chovani moba ve statickem modu (nepronasleduje)
char walk_data; //cislo potrebne pro pohyb moba v bludisti char walk_data; //cislo potrebne pro pohyb moba v bludisti
word bonus; //bonus za zabiti word bonus; //bonus za zabiti
@ -1492,8 +1504,8 @@ int vyber_potvoru(int sect,int dir,int *chaos); //vybere potvoru ze sektoru a sm
void load_enemies(short *data,int size,int *grptr,TMOB *template,long tsize); void load_enemies(short *data,int size,int *grptr,TMOB *template,long tsize);
char mob_test_na_bitvu(TMOB *p); //nastavi p->vlajky|MOB_INBATTLE pokud potvora muze vstoupit do bitvy; char mob_test_na_bitvu(TMOB *p); //nastavi p->vlajky|MOB_INBATTLE pokud potvora muze vstoupit do bitvy;
void send_mob_to(int m,word *path); void send_mob_to(int m,word *path);
void save_enemy_paths(FILE *f); void save_enemy_paths(TMPFILE_WR *f);
int load_enemy_paths(FILE *f); int load_enemy_paths(TMPFILE_RD *f);
void regen_all_mobs(); void regen_all_mobs();
@ -1574,8 +1586,8 @@ void display_spell_in_icone(int handle,int xicht);
void reinit_kouzla_full(); void reinit_kouzla_full();
char get_rune_enable(THUMAN *p,int strnum); char get_rune_enable(THUMAN *p,int strnum);
void remove_all_mob_spells(); void remove_all_mob_spells();
int save_spells(FILE *f); int save_spells(TMPFILE_WR *f);
int load_spells(FILE *f); int load_spells(TMPFILE_RD *f);
char get_spell_track(int num); char get_spell_track(int num);
void mob_cast(int num,TMOB *m,int mob_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 thing_cast(int num,int postava,int sector,TMOB *victim,char noanim);//vyvolavaji veci
@ -1648,8 +1660,8 @@ void show_jrc_logo(char *filename);
//dialogy //dialogy
void call_dialog(int entr,int mob); void call_dialog(int entr,int mob);
char save_dialog_info(FILE *f); char save_dialog_info(TMPFILE_WR *f);
char load_dialog_info(FILE *f); char load_dialog_info(TMPFILE_RD *f);
short *q_item_one(int i,int itnum); //test zda postava i ma vec itnum short *q_item_one(int i,int itnum); //test zda postava i ma vec itnum
short *q_item(int itnum,int sector); //test zda-li aspon jeden na sectoru ma vec itnum short *q_item(int itnum,int sector); //test zda-li aspon jeden na sectoru ma vec itnum
void change_flag(int flag,char mode); //meni vlajku = 0 - reset, 1 - set, 2 - neg void change_flag(int flag,char mode); //meni vlajku = 0 - reset, 1 - set, 2 - neg

View file

@ -1,5 +1,4 @@
#include <skeldal_win.h> #include <skeldal_win.h>
#include <debug.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <malloc.h> #include <malloc.h>
@ -11,16 +10,15 @@
#include <memman.h> #include <memman.h>
#include <ctype.h> #include <ctype.h>
#include <devices.h> #include <devices.h>
#include <conio.h>
#include <bmouse.h> #include <bmouse.h>
#include <bgraph.h> #include <bgraph.h>
#include <zvuk.h> #include <zvuk.h>
#include <io.h>
#include <strlite.h> #include <strlite.h>
#include "engine1.h" #include "engine1.h"
#include <pcx.h> #include <pcx.h>
#include "globals.h" #include "globals.h"
#include <unistd.h>
#define GLOBMAP "GLOBMAP.DAT" #define GLOBMAP "GLOBMAP.DAT"
#define ODDELOVACE ";:=,\n{}" #define ODDELOVACE ";:=,\n{}"
@ -49,8 +47,8 @@ static int usemap;
static FILE *glbm; static FILE *glbm;
static char oddelovace[]=ODDELOVACE; static char oddelovace[]=ODDELOVACE;
static last_oddelovac; static int last_oddelovac;
static linecounter=0; static int linecounter=0;
static int enter_sector=0; static int enter_sector=0;
static char *symbolmap[]= static char *symbolmap[]=
{ {
@ -173,7 +171,7 @@ static void error(char *text)
sprintf(popis,"Chyba v souboru "GLOBMAP" na radce %d.\r\n%s",linecounter,text); sprintf(popis,"Chyba v souboru "GLOBMAP" na radce %d.\r\n%s",linecounter,text);
SEND_LOG("(ERROR) %s : %s",popis,text); SEND_LOG("(ERROR) %s : %s",popis,text);
closemode(); closemode();
MessageBox(NULL,popis,NULL,MB_OK|MB_ICONSTOP); display_error(popis);
exit(0); exit(0);
} }
@ -224,7 +222,7 @@ static char test_kriterii(void)
case OP_SEKTOR: case OP_SEKTOR:
{ {
int c; int c;
if (cti_int_num(&c)) error("O‡ek v  se ‡¡slo"); if (cti_int_num(&c)) error("O<EFBFBD>ek<EFBFBD>v<EFBFBD> se <20><>slo");
hodn=c==enter_sector; hodn=c==enter_sector;
} }
break; break;
@ -233,7 +231,7 @@ static char test_kriterii(void)
break; break;
case OP_ISDEF:{ case OP_ISDEF:{
int c; int c;
if (cti_int_num(&c)) error("O‡ek v  se ‡¡slo"); if (cti_int_num(&c)) error("O<EFBFBD>ek<EFBFBD>v<EFBFBD> se <20><>slo");
hodn=index_tab[c].defined; hodn=index_tab[c].defined;
} }
break; break;
@ -241,8 +239,8 @@ static char test_kriterii(void)
{ {
int flag_num; int flag_num;
if (cti_int_num(&flag_num)) error("Za FLG mus¡ b˜t ‡¡slo!"); if (cti_int_num(&flag_num)) error("Za FLG mus<EFBFBD> b<>t <20><>slo!");
if (flag_num>255) error("€¡slo vlajky (FLG) mus¡ b˜t v rozsahu 0-255!"); if (flag_num>255) error("<EFBFBD><EFBFBD>slo vlajky (FLG) mus<75> b<>t v rozsahu 0-255!");
hodn=(test_flag(flag_num)!=0); hodn=(test_flag(flag_num)!=0);
} }
break; break;
@ -274,7 +272,7 @@ static char proved_prikaz()
do do
{ {
while (ODD==OD_NEWLINE || ODD==OD_COMMAND) ODD=cti_oddelovac(); while (ODD==OD_NEWLINE || ODD==OD_COMMAND) ODD=cti_oddelovac();
if (ODD!=0) error("O‡ek v  se jmno definice (p©¡klad: INDX=)"); if (ODD!=0) error("O<EFBFBD>ek<EFBFBD>v<EFBFBD> se jm<6A>no definice (p<><70>klad: INDX=)");
cti_retezec(20,prikaz,1,1); cti_retezec(20,prikaz,1,1);
op=get_symbol(prikaz); op=get_symbol(prikaz);
if (op==OP_BREAK) return 1; if (op==OP_BREAK) return 1;
@ -303,9 +301,9 @@ static char proved_prikaz()
cti_retezec(20,file,1,1); cti_retezec(20,file,1,1);
ODD=cti_oddelovac();if (ODD!=OD_COMMA)ex_error(OD_COMMA); ODD=cti_oddelovac();if (ODD!=OD_COMMA)ex_error(OD_COMMA);
if (cti_int_num(&xp)) error("O‡ek v  se ‡¡slo xp"); if (cti_int_num(&xp)) error("O<EFBFBD>ek<EFBFBD>v<EFBFBD> se <20><>slo xp");
ODD=cti_oddelovac();if (ODD!=OD_COMMA)ex_error(OD_COMMA); ODD=cti_oddelovac();if (ODD!=OD_COMMA)ex_error(OD_COMMA);
if (cti_int_num(&yp)) error("O‡ek v  se ‡¡slo yp"); if (cti_int_num(&yp)) error("O<EFBFBD>ek<EFBFBD>v<EFBFBD> se <20><>slo yp");
h=find_handle(file,pcx_8bit_decomp); h=find_handle(file,pcx_8bit_decomp);
if (h==-1) def_handle(h=end_ptr++,file,pcx_8bit_decomp,SR_DIALOGS); if (h==-1) def_handle(h=end_ptr++,file,pcx_8bit_decomp,SR_DIALOGS);
put_picture(xp,yp+SCREEN_OFFLINE,ablock(h)); put_picture(xp,yp+SCREEN_OFFLINE,ablock(h));
@ -377,7 +375,7 @@ static void do_script(void)
linecounter=0; linecounter=0;
glbm=fopen(s,"r"); glbm=fopen(s,"r");
free(s); free(s);
if (glbm==NULL) error("Chyb¡ uveden˜ soubor..."); if (glbm==NULL) error("Chyb<EFBFBD> uveden<65> soubor...");
ODD=cti_oddelovac(); ODD=cti_oddelovac();
do do
{ {
@ -447,9 +445,9 @@ static int find_leave_place(int sector)
return found_place; return found_place;
} }
macro_load_another_map(); int macro_load_another_map();
static select_mode; static int select_mode = 0;
static char load_index_map(int index) static char load_index_map(int index)

View file

@ -1,14 +1,9 @@
#include <skeldal_win.h> #include <skeldal_win.h>
#include <dos.h>
#include <bios.h> #include <bios.h>
#include <stdlib.h> #include <stdlib.h>
#include <io.h>
#include <direct.h>
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
//#include <dpmi.h>
#include <conio.h>
#include <malloc.h> #include <malloc.h>
#include <mem.h> #include <mem.h>
#include <pcx.h> #include <pcx.h>
@ -26,10 +21,11 @@
#include <time.h> #include <time.h>
#include <mgfplay.h> #include <mgfplay.h>
#include <wav.h> #include <wav.h>
#include <io.h>
#include <fcntl.h> #include <fcntl.h>
#include "globals.h" #include "globals.h"
#include "engine1.h" #include "engine1.h"
#include <stdarg.h>
#include <unistd.h>
#define MES_MAXSIZE 500 #define MES_MAXSIZE 500
#define CHECK_BOX_ANIM 6 #define CHECK_BOX_ANIM 6
@ -228,7 +224,7 @@ void open_message_win(int pocet_textu,char **texts)
{ {
define(i-1,wsx+10,wsy,maxws+10,wsys+10,3,button,texts[i]); define(i-1,wsx+10,wsy,maxws+10,wsys+10,3,button,texts[i]);
property(def_border(5,BAR_COLOR),curfont,flat_color(MSG_COLOR1),BAR_COLOR); property(def_border(5,BAR_COLOR),curfont,flat_color(MSG_COLOR1),BAR_COLOR);
on_change(terminate); on_control_change(terminate_gui);
wsx+=maxws+20; wsx+=maxws+20;
} }
redraw_window(); redraw_window();
@ -262,7 +258,7 @@ EVENT_PROC(message_keyboard)
if (key!=-1) if (key!=-1)
{ {
goto_control(key); goto_control(key);
terminate(); terminate_gui();
} }
} }
} }
@ -708,7 +704,7 @@ void radio_butts_gr(OBJREC *o)
o->datasize=4; o->datasize=4;
} }
char ask_test(char *text,char def) /*char ask_test(char *text,char def)
{ {
char znak; char znak;
SEND_LOG("(START CHECK) %s",text,0); SEND_LOG("(START CHECK) %s",text,0);
@ -718,7 +714,7 @@ char ask_test(char *text,char def)
if (znak!='N' && znak!='A') znak=def; if (znak!='N' && znak!='A') znak=def;
return znak=='A'; return znak=='A';
} }
*/
long get_disk_free(char disk) long get_disk_free(char disk)
{ {
return 10*1024*1024; return 10*1024*1024;
@ -738,7 +734,7 @@ void start_check()
get_mem_info(&memory); get_mem_info(&memory);
concat(c,pathtable[SR_TEMP],TEMP_FILE); concat(c,pathtable[SR_TEMP],TEMP_FILE);
// if (!access(c,F_OK)) // if (!access(c,F_OK))
// if (ask_test("Skeldal nebyl spr vnˆ ukon‡en. Mˆl bys provest kontrolu disku\n\rMam spustit SCANDISK?",'A')) // if (ask_test("Skeldal nebyl spr<EFBFBD>vn<EFBFBD> ukon<6F>en. M<>l bys provest kontrolu disku\n\rMam spustit SCANDISK?",'A'))
// system("SCANDISK /NOSUMMARY"); // system("SCANDISK /NOSUMMARY");
if (pathtable[SR_TEMP][1]==':') drv=pathtable[SR_TEMP][0];else if (pathtable[SR_TEMP][1]==':') drv=pathtable[SR_TEMP][0];else
{ {
@ -751,14 +747,14 @@ void start_check()
c=alloca(1024); c=alloca(1024);
if (siz<1024) if (siz<1024)
{ {
sprintf(c,"Na disku %c: nen¡ pot©ebn 1 MB pro ukl d n¡ pozic. Hroz¡ e pozice nebude kam ukl dat\n\resto spustit?",drv); sprintf(c,"Na disku %c: nen<EFBFBD> pot<6F>ebn<62> 1 MB pro ukl<6B>d<EFBFBD>n<EFBFBD> pozic. Hroz<6F> <20>e pozice nebude kam ukl<6B>dat\n\rP<EFBFBD>esto spustit?",drv);
if (!ask_test(c,'N')) exit(1); if (!ask_test(c,'N')) exit(1);
} }
else if (siz<50000 && level_preload==1 && memory.LargestBlockAvail<50000000) else if (siz<50000 && level_preload==1 && memory.LargestBlockAvail<50000000)
{ {
sprintf(c,"Na disku %c: neni nutn˜ch 50 MB pro odkl d n¡ dat. Skeldal bude ¨et©it\n\r" sprintf(c,"Na disku %c: neni nutn<EFBFBD>ch 50 MB pro odkl<6B>d<EFBFBD>n<EFBFBD> dat. Skeldal bude <20>et<65>it\n\r"
"s pamˆt¡ a nahr vat jen pot©ebn  data. Hra se me rapidnˆ zpomalit!\n\r" "s pam<EFBFBD>t<EFBFBD> a nahr<68>vat jen pot<6F>ebn<62> data. Hra se m<><6D>e rapidn<64> zpomalit!\n\r"
"Mam to udˆlat?",drv); "Mam to ud<EFBFBD>lat?",drv);
if (ask_test(c,'A')) level_preload=0; if (ask_test(c,'A')) level_preload=0;
} }
*/ */
@ -1051,18 +1047,22 @@ void setup_ok_button(OBJREC *o)
//----------------------------------------------------- //-----------------------------------------------------
typedef struct skeldal_soupak_params_t {
int range;
void *bgpic;
} skeldal_soupak_params;
static void skeldal_soupak_init (OBJREC *o,int *params) static void skeldal_soupak_init (OBJREC *o,int *params)
{ {
void **d; skeldal_soupak_params *p = getmem(sizeof(skeldal_soupak_params));
d=NewArr(void *,2); p->range = *params;
d[0]=(void *)*params; p->bgpic = NULL;
d[1]=NULL; o->userptr=p;
o->userptr=d;
} }
static void skeldal_soupak_draw (int x1,int y1,int x2,int y2,OBJREC *o) static void skeldal_soupak_draw (int x1,int y1,int x2,int y2,OBJREC *o)
{ {
void **z; skeldal_soupak_params *z;
int rozsah; int rozsah;
int value; int value;
word *pic; word *pic;
@ -1071,17 +1071,17 @@ static void skeldal_soupak_draw (int x1,int y1,int x2,int y2,OBJREC *o)
int xpos; int xpos;
z=o->userptr; z=o->userptr;
rozsah=(int)z[0]; rozsah=z->range;
pic=ablock(H_SOUPAK); pic=ablock(H_SOUPAK);
total=y2-y1-pic[1]; total=y2-y1-pic[1];
value=*(int *)o->data; value=*(int *)o->data;
xpos=y2-pic[1]-value*total/rozsah; xpos=y2-pic[1]-value*total/rozsah;
back=z[1]; back=z->bgpic;
if (back==NULL) if (back==NULL)
{ {
back=NewArr(word,(x2-x1+1)*(y2-y1+1)+3); back=NewArr(word,(x2-x1+1)*(y2-y1+1)+3);
get_picture(x1,y1,(x2-x1+1),(y2-y1+1),back); get_picture(x1,y1,(x2-x1+1),(y2-y1+1),back);
z[1]=back; z->bgpic=back;
pic=ablock(H_SOUPAK); pic=ablock(H_SOUPAK);
} }
else else
@ -1089,12 +1089,12 @@ static void skeldal_soupak_draw (int x1,int y1,int x2,int y2,OBJREC *o)
put_picture(x1,xpos,pic); put_picture(x1,xpos,pic);
} }
static skeldal_soupak_event(EVENT_MSG *msg,OBJREC *o) static void skeldal_soupak_event(EVENT_MSG *msg,OBJREC *o)
{ {
if (msg->msg==E_MOUSE) if (msg->msg==E_MOUSE)
{ {
MS_EVENT *ms; MS_EVENT *ms;
int *z; skeldal_soupak_params *z;
int rozsah; int rozsah;
int total; int total;
word *pic; word *pic;
@ -1103,7 +1103,7 @@ static skeldal_soupak_event(EVENT_MSG *msg,OBJREC *o)
ms=get_mouse(msg); ms=get_mouse(msg);
if (ms->tl1) if (ms->tl1)
{ {
z=o->userptr;rozsah=z[0]; z=o->userptr;rozsah=z->range;
pic=ablock(H_SOUPAK); pic=ablock(H_SOUPAK);
total=o->ys-pic[1]; total=o->ys-pic[1];
ypos=ms->y-o->locy; ypos=ms->y-o->locy;
@ -1120,10 +1120,10 @@ static skeldal_soupak_event(EVENT_MSG *msg,OBJREC *o)
static void skeldal_soupak_done(OBJREC *o) static void skeldal_soupak_done(OBJREC *o)
{ {
void **z; skeldal_soupak_params *z;
z=o->userptr; z=o->userptr;
free(z[1]); free(z->bgpic);
free(z); free(z);
o->userptr=NULL; o->userptr=NULL;
} }
@ -1180,7 +1180,7 @@ static void play_wav(int wav,int sector)
}*/ }*/
} }
static play_random_sound(int sector,int dir,int pos) static void play_random_sound(int sector,int dir,int pos)
{ {
int seed; int seed;
int v; int v;
@ -1197,7 +1197,7 @@ static play_random_sound(int sector,int dir,int pos)
srand(seed); srand(seed);
} }
static play_correct_sound(int sector,int dir) static void play_correct_sound(int sector,int dir)
{ {
play_wav(H_SND_SEVER+dir,sector); play_wav(H_SND_SEVER+dir,sector);
} }
@ -1247,12 +1247,12 @@ static char compareMelody(const char *m1,const char *m2)
if (!isalpha(*m1) && *m1!='#') m1++; if (!isalpha(*m1) && *m1!='#') m1++;
else if (!isalpha(*m2) && *m2!='#') m2++; else if (!isalpha(*m2) && *m2!='#') m2++;
else if (toupper(*m1)!=toupper(*m2)) break; else if (toupper(*m1)!=toupper(*m2)) break;
else else
{ {
m1++; m1++;
m2++; m2++;
} }
} }
if (*m1>*m2) return 1; if (*m1>*m2) return 1;
if (*m1<*m2) return -1; if (*m1<*m2) return -1;
@ -1264,7 +1264,7 @@ void check_global_fletna(THE_TIMER *t)
int sec; int sec;
int dir; int dir;
int i; int i;
int other=-1; int other=-1;
t; t;
sec=t->userdata[0]; sec=t->userdata[0];
@ -1273,7 +1273,7 @@ void check_global_fletna(THE_TIMER *t)
{ {
globFletnaStr[strlen(globFletnaStr)-1]=0; globFletnaStr[strlen(globFletnaStr)-1]=0;
} }
for (i=MAGLOB_ONFLUTE1;i<=MAGLOB_ONFLUTE8 ;i++) for (i=MAGLOB_ONFLUTE1;i<=MAGLOB_ONFLUTE8 ;i++)
if (GlobEventList[i].param!=0) if (GlobEventList[i].param!=0)
{ {
{ {
@ -1474,15 +1474,15 @@ int smlouvat_prodej(int cena,int ponuka,int posledni,int puvod,int pocet)
return 5; return 5;
} }
static smlouvat_enter(EVENT_MSG *msg,OBJREC *o) static void smlouvat_enter(EVENT_MSG *msg,OBJREC *o)
{ {
o; o;
if (msg->msg==E_KEYBOARD) if (msg->msg==E_KEYBOARD)
{ {
switch( *(char *)msg->data) switch( *(char *)msg->data)
{ {
case 13:goto_control(30);terminate();break; case 13:goto_control(30);terminate_gui();break;
case 27:goto_control(20);terminate();break; case 27:goto_control(20);terminate_gui();break;
} }
} }
} }
@ -1501,9 +1501,9 @@ int smlouvat(int cena,int puvod,int pocet,int money,char mode)
set_font(H_FBOLD,MSG_COLOR1); set_font(H_FBOLD,MSG_COLOR1);
define(-1,10,30,1,1,0,label,texty[238]); define(-1,10,30,1,1,0,label,texty[238]);
define(10,150,30,100,13,0,input_line,8);property(def_border(5,BAR_COLOR),NULL,NULL,0);set_default(""); define(10,150,30,100,13,0,input_line,8);property(def_border(5,BAR_COLOR),NULL,NULL,0);set_default("");
on_event(smlouvat_enter); on_control_event(smlouvat_enter);
define(20,20,20,80,20,2,button,texty[239]);property(def_border(5,BAR_COLOR),NULL,NULL,BAR_COLOR);on_change(terminate); define(20,20,20,80,20,2,button,texty[239]);property(def_border(5,BAR_COLOR),NULL,NULL,BAR_COLOR);on_control_change(terminate_gui);
define(30,110,20,80,20,2,button,texty[230]);property(def_border(5,BAR_COLOR),NULL,NULL,BAR_COLOR);on_change(terminate); define(30,110,20,80,20,2,button,texty[230]);property(def_border(5,BAR_COLOR),NULL,NULL,BAR_COLOR);on_control_change(terminate_gui);
do do
{ {
redraw_window(); redraw_window();
@ -1569,7 +1569,7 @@ void show_jrc_logo(char *filename)
change_music("?"); change_music("?");
curcolor=0;bar(0,0,639,479); curcolor=0;bar(0,0,639,479);
showview(0,0,0,0);Sleep(1000); showview(0,0,0,0);sleep_ms(1000);
concat(s,pathtable[SR_VIDEO],filename); concat(s,pathtable[SR_VIDEO],filename);
if (open_pcx(s,A_8BIT,&pcx)) return; if (open_pcx(s,A_8BIT,&pcx)) return;
pcxw=(word *)pcx; pcxw=(word *)pcx;

View file

@ -89,7 +89,7 @@ long shop_hacek_size=0; //toto je jeho delka
#define INV_LEVEL_COL1 (NOSHADOW(RGB555(0,0,15))) #define INV_LEVEL_COL1 (NOSHADOW(RGB555(0,0,15)))
#define INV_LEVEL_COL2 (RGB555(31,24,0)) #define INV_LEVEL_COL2 (RGB555(31,24,0))
unsigned short butt_plus[]={0x0,(RGB555(25,23,16)),(RGB555(18,17,14)),(RGB555(10,10,5)),(RGB555(31,27,14))}; unsigned short butt_plus[7]={0x0,(RGB555(25,23,16)),(RGB555(18,17,14)),(RGB555(10,10,5)),(RGB555(31,27,14))};
#define PO_XS 194 #define PO_XS 194
#define PO_YS 340 #define PO_YS 340
@ -146,7 +146,7 @@ static void items_15to16_correct(void **p,long *s)
{ {
int pos=IT_ICONE_SIZE*i; int pos=IT_ICONE_SIZE*i;
word *pal; word *pal;
if (pos>=*s) return; if (pos>=*s) return;
pal=((word *)(cur+pos))+3; pal=((word *)(cur+pos))+3;
for (j=0;j<256;j++,pal++) for (j=0;j<256;j++,pal++)
@ -181,7 +181,7 @@ void load_items()
if (f==NULL) if (f==NULL)
{ {
closemode(); closemode();
MessageBox(NULL,"Selhalo otevreni souboru ITEMS.DAT. Zkotroluj zda vubec existuje.",NULL,MB_OK|MB_ICONSTOP); display_error("Selhalo otevreni souboru ITEMS.DAT. Zkotroluj zda vubec existuje.");
exit(0); exit(0);
} }
do do
@ -455,9 +455,9 @@ int find_item(short *place,int mask)
static int lastsector; static int lastsector;
static char ValidateSector(word sector) static char ValidateSector(word sector)
{ {
int pp=map_sectors[sector].sector_type; int pp=map_sectors[sector].sector_type;
if (pp==S_NORMAL || pp==S_SMER || pp==S_LEAVE || pp==S_FLT_SMER) if (pp==S_NORMAL || pp==S_SMER || pp==S_LEAVE || pp==S_FLT_SMER)
{ {
lastsector=sector; lastsector=sector;
return 1; return 1;
@ -620,7 +620,7 @@ static char check_pick(int sect,int id,int idd,int y)
return y>min; return y>min;
} }
static get_top_of_next(int sect,int id) //vraci souradnici predmetu na nasledujicim sektoru static int get_top_of_next(int sect,int id) //vraci souradnici predmetu na nasledujicim sektoru
{ {
int cnt,idd; int cnt,idd;
@ -661,27 +661,27 @@ char pick_item_(int id,int xa,int ya,int xr,int yr)
else else
if (id>1 || ya>=get_top_of_next(sect,id)) if (id>1 || ya>=get_top_of_next(sect,id))
{ {
if ((game_extras & EX_BAG_EXTENDED) && (GetKeyState(VK_CONTROL) & 0x80) && if ((game_extras & EX_BAG_EXTENDED) && (get_control_key_state()) &&
(glob_items[*picked_item-1].nosnost>0)) (glob_items[*picked_item-1].nosnost>0))
{ {
int curinside=count_items_inside(picked_item); int curinside=count_items_inside(picked_item);
int nosnost=(glob_items[*picked_item-1].nosnost); int nosnost=(glob_items[*picked_item-1].nosnost);
short *batoh=(word *)getmem(nosnost*2+20); short *batoh=(word *)getmem(nosnost*2+20);
short *cur=batoh; short *cur=batoh;
memcpy(cur,picked_item,(curinside+1)*2); memcpy(cur,picked_item,(curinside+1)*2);
cur+=curinside; cur+=curinside;
free(picked_item); free(picked_item);
picked_item=NULL; picked_item=NULL;
nosnost-=curinside-1; nosnost-=curinside-1;
while (1) while (1)
{ {
pop_item(sect,idd,0,&picked_item); pop_item(sect,idd,0,&picked_item);
if (picked_item!=NULL) do_items_specs(); else break; if (picked_item!=NULL) do_items_specs(); else break;
if (picked_item!=NULL) if (picked_item!=NULL)
{ {
short *p=picked_item; short *p=picked_item;
int cnt=count_items_total(picked_item); int cnt=count_items_total(picked_item);
if (cnt>nosnost) if (cnt>nosnost)
{ {
push_item(sect,idd,picked_item); push_item(sect,idd,picked_item);
free(picked_item); free(picked_item);
@ -689,7 +689,7 @@ char pick_item_(int id,int xa,int ya,int xr,int yr)
break; break;
} }
while (*p) while (*p)
{ {
*cur++=-abs(*p++); *cur++=-abs(*p++);
nosnost--; nosnost--;
} }
@ -816,17 +816,17 @@ void prepocitat_postavu(THUMAN *human_selected)
{ {
p=sr1; p=sr1;
q=glob_items[c-1].zmeny; q=glob_items[c-1].zmeny;
for(j=0;j<VLS_MGSIL_L;j++) for(j=0;j<VLS_MGSIL_L;j++)
{ {
if (glob_items[c-1].druh!=TYP_VRHACI || (j!=VLS_UTOK_L && j!=VLS_UTOK_H)) if (glob_items[c-1].druh!=TYP_VRHACI || (j!=VLS_UTOK_L && j!=VLS_UTOK_H))
{ {
if (j>=VLS_OHEN && j<=VLS_MYSL) if (j>=VLS_OHEN && j<=VLS_MYSL)
p[0]=(int)floor(((float)p[0]+(float)q[0])/(1.0f+(float)p[0]*(float)q[0]/(90.0*90.0))+0.5); p[0]=(int)floor(((float)p[0]+(float)q[0])/(1.0f+(float)p[0]*(float)q[0]/(90.0*90.0))+0.5);
else else
(*p)+=(*q); (*p)+=(*q);
} }
p++,q++; p++,q++;
} }
p=sr1+VLS_DAMAGE; //vypocet damage (bez omezeni) p=sr1+VLS_DAMAGE; //vypocet damage (bez omezeni)
q=&glob_items[c-1].zmeny[VLS_DAMAGE]; q=&glob_items[c-1].zmeny[VLS_DAMAGE];
*(p++)+=*q++; *(p++)+=*q++;
@ -845,8 +845,8 @@ void prepocitat_postavu(THUMAN *human_selected)
if (human_selected->lives>human_selected->vlastnosti[VLS_MAXHIT]) human_selected->lives=human_selected->vlastnosti[VLS_MAXHIT]; if (human_selected->lives>human_selected->vlastnosti[VLS_MAXHIT]) human_selected->lives=human_selected->vlastnosti[VLS_MAXHIT];
//if (human_selected->mana>human_selected->vlastnosti[VLS_MAXMANA]) human_selected->mana=human_selected->vlastnosti[VLS_MAXMANA]; //if (human_selected->mana>human_selected->vlastnosti[VLS_MAXMANA]) human_selected->mana=human_selected->vlastnosti[VLS_MAXMANA];
if (human_selected->kondice>human_selected->vlastnosti[VLS_KONDIC]) human_selected->kondice=human_selected->vlastnosti[VLS_KONDIC]; if (human_selected->kondice>human_selected->vlastnosti[VLS_KONDIC]) human_selected->kondice=human_selected->vlastnosti[VLS_KONDIC];
v=MAX_HLAD(human_selected);human_selected->jidlo=min(human_selected->jidlo,v); v=MAX_HLAD(human_selected);human_selected->jidlo=MIN(human_selected->jidlo,v);
v=MAX_ZIZEN(human_selected);human_selected->voda=min(human_selected->voda,v); v=MAX_ZIZEN(human_selected);human_selected->voda=MIN(human_selected->voda,v);
} }
@ -862,6 +862,7 @@ void definuj_postavy()
{ {
int i,num1,r,inv=0,z; int i,num1,r,inv=0,z;
char *c,*end,cc; char *c,*end,cc;
int tmp;
c=ablock(H_POSTAVY_DAT); c=ablock(H_POSTAVY_DAT);
end=c+get_handle(H_POSTAVY_DAT)->size; end=c+get_handle(H_POSTAVY_DAT)->size;
@ -889,10 +890,10 @@ void definuj_postavy()
} }
break; break;
case 128:r=sscanf(c,"%c%14[^\r]",&cc,p->jmeno);r--;break; case 128:r=sscanf(c,"%c%14[^\r]",&cc,p->jmeno);r--;break;
case 129:r=sscanf(c,"%hd",&p->female);break; case 129:r=sscanf(c,"%d",&tmp);p->female = (char)tmp;break;
case 130:r=sscanf(c,"%hd",&p->xicht);break; case 130:r=sscanf(c,"%d",&tmp);p->xicht = (char)tmp;break;
case 131:r=sscanf(c,"%hd",&p->level);break; case 131:r=sscanf(c,"%d",&tmp);p->level = (short)tmp;break;
case 132:r=sscanf(c,"%d",&p->exp);break; case 132:r=sscanf(c,"%d",&tmp);p->exp = tmp;break;
case 133:r=sscanf(c,"%d",&num1); case 133:r=sscanf(c,"%d",&num1);
while(r==1 && num1!=-1) while(r==1 && num1!=-1)
{ {
@ -921,7 +922,7 @@ void definuj_postavy()
if (r!=1) if (r!=1)
{ {
closemode(); closemode();
MessageBox(NULL,"Error in file POSTAVY.DAT. May be missing a parameter in some definition.",NULL,MB_OK|MB_ICONSTOP); display_error("Error in file POSTAVY.DAT. May be missing a parameter in some definition.");
exit(0); exit(0);
} }
c=strchr(c,'\n')+1; c=strchr(c,'\n')+1;
@ -1163,7 +1164,7 @@ void display_rings()
} }
} }
void *build_items_wearing(THUMAN *h) void *build_items_wearing(THUMAN *h, long *s)
{ {
int i,vzhled,it; int i,vzhled,it;
word *p,hx,hy; word *p,hx,hy;
@ -1177,6 +1178,7 @@ void *build_items_wearing(THUMAN *h)
ob=getmem(siz=(PO_XS*PO_YS+PIC_FADE_PAL_SIZE)); ob=getmem(siz=(PO_XS*PO_YS+PIC_FADE_PAL_SIZE));
memset(ob,0,siz); memset(ob,0,siz);
memcpy(ob,p,PIC_FADE_PAL_SIZE); memcpy(ob,p,PIC_FADE_PAL_SIZE);
*s = siz;
ob[0]=PO_XS; ob[0]=PO_XS;
ob[1]=PO_YS; ob[1]=PO_YS;
put_picture2picture(p,ob,PO_XSS-(hx/2),PO_YS-hy-20); put_picture2picture(p,ob,PO_XSS-(hx/2),PO_YS-hy-20);
@ -1194,7 +1196,7 @@ void *build_items_wearing(THUMAN *h)
pp=(char *)ob; pp=(char *)ob;
if (h->vlastnosti[VLS_KOUZLA] & SPL_STONED) if (h->vlastnosti[VLS_KOUZLA] & SPL_STONED)
{ {
int i; int i;
for (i=0;i<(PIC_FADE_PAL_SIZE>>1);++i) if (i>3) for (i=0;i<(PIC_FADE_PAL_SIZE>>1);++i) if (i>3)
{ {
unsigned short col=ob[i]; unsigned short col=ob[i];
@ -1211,12 +1213,11 @@ void *build_items_wearing(THUMAN *h)
} }
return ob; return ob;
} }
void build_items_called(void **p,long *s) void build_items_called(void **p,long *s)
{ {
*p=build_items_wearing(&postavy[memman_handle-H_POSTAVY]); *p=build_items_wearing(&postavy[memman_handle-H_POSTAVY], s);
*s=(long)(_msize(*p));
} }
void display_items_wearing(THUMAN *h) void display_items_wearing(THUMAN *h)
@ -1277,14 +1278,14 @@ typedef struct t_inv_script
short parm1,parm2; short parm1,parm2;
char lenght; char lenght;
char align; char align;
}; } T_INV_SCRIPT;
#define INFO_AP -1 #define INFO_AP -1
#define INFO_EXP -2 #define INFO_EXP -2
#define LINE_STEP 6 #define LINE_STEP 6
#define COL_STEP 8 #define COL_STEP 8
static struct t_inv_script script[]= static T_INV_SCRIPT script[]=
{ {
{15,12,"%d",pvls(VLS_SILA),0,2+128,2}, {15,12,"%d",pvls(VLS_SILA),0,2+128,2},
{15,14,"%d",pvls(VLS_SMAGIE),0,2+128,2}, {15,14,"%d",pvls(VLS_SMAGIE),0,2+128,2},
@ -1448,7 +1449,7 @@ void hide_inv_info_box()
void inv_info_box(char *text1,char *text2,char *text3,char asterix) void inv_info_box(char *text1,char *text2,char *text3,char asterix)
{ {
int x,y,ys; int x,y,ys;
static last_info_ys=0; static int last_info_ys=0;
ys=INV_INFO_YS; ys=INV_INFO_YS;
if (text3!=NULL) ys+=INV_INFO_XP; if (text3!=NULL) ys+=INV_INFO_XP;
if (info_box_below!=NULL && last_info_ys!=ys) if (info_box_below!=NULL && last_info_ys!=ys)
@ -1772,7 +1773,7 @@ static char MakeItemCombinations(short *itm1, short *itm2)
if (table==0 && pathtable[SR_MAP2][0]) if (table==0 && pathtable[SR_MAP2][0])
{ {
concat(fname,pathtable[SR_MAP2],fname); concat(fname,pathtable[SR_MAP2],fname);
table=fopen(table,"r"); table=fopen(fname,"r");
} }
if (table==0) return 0; if (table==0) return 0;
cnt=fscanf(table,"%d %d -> %d %d",&src1,&src2,&trg1,&trg2); cnt=fscanf(table,"%d %d -> %d %d",&src1,&src2,&trg1,&trg2);
@ -1780,33 +1781,33 @@ static char MakeItemCombinations(short *itm1, short *itm2)
{ {
if (src1==i1 && src2==i2) if (src1==i1 && src2==i2)
{ {
if (cnt==3) if (cnt==3)
{ {
*itm2=trg1+1; *itm2=trg1+1;
*itm1=0; *itm1=0;
} }
else else
{ {
*itm1=trg1+1; *itm1=trg1+1;
*itm2=trg2+1; *itm2=trg2+1;
} }
succ=1; succ=1;
break; break;
} }
if (src1==i2 && src2==i1) if (src1==i2 && src2==i1)
{ {
if (cnt==3) if (cnt==3)
{ {
*itm2=trg1+1; *itm2=trg1+1;
*itm1=0; *itm1=0;
} }
else else
{ {
*itm2=trg1+1; *itm2=trg1+1;
*itm1=trg2+1; *itm1=trg2+1;
} }
succ=1; succ=1;
break; break;
} }
if (fscanf(table," ;")==-1) break; if (fscanf(table," ;")==-1) break;
cnt=fscanf(table,"%d %d -> %d %d",&src1,&src2,&trg1,&trg2); cnt=fscanf(table,"%d %d -> %d %d",&src1,&src2,&trg1,&trg2);
@ -1994,7 +1995,7 @@ int calculate_weight(THUMAN *p)
{ {
int suma=0; int suma=0;
int i; int i;
for (i=0;i<p->inv_size;i++) if (p->inv[i]) for (i=0;i<p->inv_size;i++) if (p->inv[i])
suma+=glob_items[p->inv[i]-1].hmotnost; suma+=glob_items[p->inv[i]-1].hmotnost;
suma=suma*3/2; suma=suma*3/2;
for (i=0;i<HUMAN_PLACES;i++) if (p->wearing[i]) for (i=0;i<HUMAN_PLACES;i++) if (p->wearing[i])
@ -2009,7 +2010,7 @@ int weigth_defect(THUMAN *p)
{ {
int wh,wf; int wh,wf;
wh=calculate_weight(p); wh=calculate_weight(p);
if (wh>p->vlastnosti[VLS_SILA]*20) if (wh>p->vlastnosti[VLS_SILA]*20)
wf=(wh-p->vlastnosti[VLS_SILA]*20)/200; wf=(wh-p->vlastnosti[VLS_SILA]*20)/200;
else else
wf=0; wf=0;
@ -2381,7 +2382,7 @@ static void shop_mouse_event(EVENT_MSG *msg,void **unused)
MS_EVENT *ms; MS_EVENT *ms;
int x,y; int x,y;
char cc=1; char cc=1;
static last_pos=-1; static int last_pos=-1;
ms=get_mouse(msg); ms=get_mouse(msg);
x=ms->x-(BUYBOX_X+SHP_ICPLCX); x=ms->x-(BUYBOX_X+SHP_ICPLCX);
@ -2632,7 +2633,7 @@ static void redraw_keepers_items()
showview(BUYBOX_X,BUYBOX_Y,w[0],w[1]); showview(BUYBOX_X,BUYBOX_Y,w[0],w[1]);
} }
static char shop_keeper_click(int id, int xa, int ya,int xr,int yr) char shop_keeper_click(int id, int xa, int ya,int xr,int yr)
{ {
id;xa;ya; id;xa;ya;
if (picked_item==NULL) if (picked_item==NULL)
@ -2656,7 +2657,7 @@ static char shop_keeper_click(int id, int xa, int ya,int xr,int yr)
redraw_keepers_items(); redraw_keepers_items();
ukaz_mysku(); ukaz_mysku();
update_mysky(); update_mysky();
if ((GetKeyState(VK_CONTROL) & 0x80) && (game_extras & EX_FAST_TRADE) && get_sell_price(*picked_item)<=money) if ((get_control_key_state()) && (game_extras & EX_FAST_TRADE) && get_sell_price(*picked_item)<=money)
{ {
play_sample_at_channel(H_SND_OBCHOD,1,100); play_sample_at_channel(H_SND_OBCHOD,1,100);
money-=get_sell_price(*picked_item); money-=get_sell_price(*picked_item);
@ -2734,7 +2735,7 @@ static char shop_keeper_click(int id, int xa, int ya,int xr,int yr)
} }
static char shop_bag_click(int id,int xa,int ya,int xr,int yr) char shop_bag_click(int id,int xa,int ya,int xr,int yr)
{ {
char s[200],p; char s[200],p;
int price,z; int price,z;
@ -2743,7 +2744,7 @@ static char shop_bag_click(int id,int xa,int ya,int xr,int yr)
{ {
id=bag_click(id,xa,ya,xr,yr); id=bag_click(id,xa,ya,xr,yr);
cur_owner=picked_item!=NULL; cur_owner=picked_item!=NULL;
if (picked_item!=NULL && picked_item[1]==0 && (game_extras & EX_FAST_TRADE) && (GetKeyState(VK_CONTROL) & 0x80)) if (picked_item!=NULL && picked_item[1]==0 && (game_extras & EX_FAST_TRADE) && (get_control_key_state()))
{ {
short z; short z;
price=make_offer(z=picked_item[0]); price=make_offer(z=picked_item[0]);
@ -2796,7 +2797,7 @@ static char shop_bag_click(int id,int xa,int ya,int xr,int yr)
return 1; return 1;
} }
static char shop_block_click(int id, int xa, int ya,int xr,int yr) char shop_block_click(int id, int xa, int ya,int xr,int yr)
{ {
xa,ya,xr,yr; xa,ya,xr,yr;
if (id==1) block_back();else block_next(); if (id==1) block_back();else block_next();

View file

@ -98,7 +98,19 @@ static int picture_len=0;
static char winconv=0; static char winconv=0;
static int relpos=0; static int relpos=0;
static char xlat_table[128]="__†_____­_____¨__Ÿ__________________________________<EFBFBD>___Š__€<EFBFBD>__‰_…__¥•____ž¦—__<EFBFBD>___ ___<EFBFBD>__‡__ˆ¡_ƒ__¤¢____©£__˜"; //static char xlat_table[128]="<22>__<5F><5F>_____<5F>_____<5F>__<5F><5F>__________________________________<5F>___<5F>__<5F><5F>__<5F><5F>_<EFBFBD>__<5F><5F>____<5F><5F><EFBFBD>__<5F>___<5F>___<5F>__<5F><5F>__<5F><5F>_<EFBFBD>__<5F><5F>____<5F><5F><EFBFBD>__<5F>";
static char xlat_table[128] = {
0x9b, 0x5f, 0x5f, 0x86, 0x92, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0xad, 0x5f,
0x5f, 0x5f, 0x5f, 0x5f, 0xa8, 0x5f, 0x5f, 0x9f, 0x91, 0x5f, 0x5f, 0x5f,
0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x8f, 0x5f, 0x5f, 0x5f, 0x8a,
0x5f, 0x5f, 0x80, 0x90, 0x5f, 0x5f, 0x89, 0x8b, 0x5f, 0x85, 0x5f, 0x5f,
0xa5, 0x95, 0x5f, 0x5f, 0x5f, 0x5f, 0x9e, 0xa6, 0x97, 0x5f, 0x5f, 0x9d,
0x5f, 0x5f, 0x5f, 0xa0, 0x5f, 0x5f, 0x5f, 0x8d, 0x5f, 0x5f, 0x87, 0x82,
0x5f, 0x5f, 0x88, 0xa1, 0x5f, 0x83, 0x5f, 0x5f, 0xa4, 0xa2, 0x5f, 0x5f,
0x5f, 0x5f, 0xa9, 0x96, 0xa3, 0x5f, 0x5f, 0x98, 0x0a
};
static int insert_num(char *text,int pos,int num) static int insert_num(char *text,int pos,int num)
{ {
@ -278,17 +290,18 @@ static char read_set(FILE *txt,char *var,char *set)
{ {
int c; int c;
char *cc; char *cc;
char d;
fscanf(txt,"%[^=]%c",var,&c); fscanf(txt,"%[^=]%c",var,&d);
do do
c=fgetc(txt); c=fgetc(txt);
while (c<33); while (c<33);
if (c=='"') fscanf(txt,"%[^\"]%c%c",set,&c,&c); if (c=='"') fscanf(txt,"%[^\"]%c%c",set,&d,&d);
else if (c=='\'') fscanf(txt,"%[^']%c%c",set,&c,&c); else if (c=='\'') fscanf(txt,"%[^']%c%c",set,&d,&d);
else else
{ {
ungetc(c,txt); ungetc(c,txt);
fscanf(txt,"%[^> ]%c",set,&c); fscanf(txt,"%[^> ]%c",set,&d);
} }
while(c<33 && c!=EOF) c=fgetc(txt); while(c<33 && c!=EOF) c=fgetc(txt);
if (c!='>') ungetc(c,txt); if (c!='>') ungetc(c,txt);
@ -525,7 +538,7 @@ void seek_section(FILE *txt,int sect_number)
{ {
char buff[256]; char buff[256];
sprintf(buff,"Nemohu najit odstavec s cislem %d.",sect_number); sprintf(buff,"Nemohu najit odstavec s cislem %d.",sect_number);
MessageBox(NULL,buff,NULL,MB_OK|MB_ICONSTOP); display_error(buff);
} }
exit(1); exit(1);
} }

View file

@ -10,6 +10,7 @@
//#include <i86.h> //#include <i86.h>
#include <math.h> #include <math.h>
#include <bmouse.h> #include <bmouse.h>
#include <stdarg.h>
#include "engine1.h" #include "engine1.h"
#include "globals.h" #include "globals.h"
@ -89,7 +90,7 @@
#define SP_VZPLANUTI1 23 #define SP_VZPLANUTI1 23
#define SP_VZPLANUTI2 24 #define SP_VZPLANUTI2 24
#define SP_VZPLANUTI3 25 #define SP_VZPLANUTI3 25
#define SP_PHASEDOOR 26 #define SP_PHASEDOOR 26
#define SP_TELEPORT_SECT 27 #define SP_TELEPORT_SECT 27
#define SP_OPEN_TELEPORT 28 #define SP_OPEN_TELEPORT 28
@ -150,7 +151,7 @@ static long _flag_map[MAX_SPELLS]; //tabulka nastavenych priznaku pro kouzl
//hornich 16 bitu je globalne //hornich 16 bitu je globalne
short parm1,parm2; short parm1,parm2;
char twins; unsigned char twins;
static short rand_value; static short rand_value;
@ -717,7 +718,7 @@ void spell_hit(int cil,int min,int max,int owner)
vysl=min+rnd(max-min); vysl=min+rnd(max-min);
if (vysl<0) if (vysl<0)
{ {
h->lives-=vysl,h->lives=min(h->lives,h->vlastnosti[VLS_MAXHIT]); h->lives-=vysl>h->vlastnosti[VLS_MAXHIT]?h->vlastnosti[VLS_MAXHIT]:vysl;
if (h->groupnum==0) h->groupnum=cur_group; if (h->groupnum==0) h->groupnum=cur_group;
} }
else player_hit(h,vysl,1); else player_hit(h,vysl,1);
@ -965,8 +966,8 @@ void spell_teleport_sector(int cil,int owner)
loadlevel.dir=TelepLocation.dir; loadlevel.dir=TelepLocation.dir;
send_message(E_CLOSE_MAP); send_message(E_CLOSE_MAP);
save_map=1; save_map=1;
for(i=0;i<POCET_POSTAV;i++) if (postavy[i].used) for(i=0;i<POCET_POSTAV;i++) if (postavy[i].used)
{ {
postavy[i].sektor=TelepLocation.sector; postavy[i].sektor=TelepLocation.sector;
postavy[i].direction=TelepLocation.dir; postavy[i].direction=TelepLocation.dir;
@ -1011,7 +1012,7 @@ void spell_teleport_sector(int cil,int owner)
x=map_coord[i].x-newx; x=map_coord[i].x-newx;
y=map_coord[i].y-newy; y=map_coord[i].y-newy;
dist=x*x+y*y; dist=x*x+y*y;
if(dist<nearestdst) if(dist<nearestdst)
{ {
nearestdst=dist; nearestdst=dist;
nearest=i; nearest=i;
@ -1143,7 +1144,7 @@ static void spell_open_teleport(int cil, int owner)
else if (cil>0) {sector=postavy[cil-1].sektor;dir=postavy[cil-1].direction;} else if (cil>0) {sector=postavy[cil-1].sektor;dir=postavy[cil-1].direction;}
else return; else return;
if (map_sectors[sector].step_next[dir] && (~map_sides[sector*4+dir].flags & SD_THING_IMPS)) if (map_sectors[sector].step_next[dir] && (~map_sides[sector*4+dir].flags & SD_THING_IMPS))
sector=map_sectors[sector].step_next[dir]; sector=map_sectors[sector].step_next[dir];
if (map_coord[sector].flags & MC_NOSUMMON) if (map_coord[sector].flags & MC_NOSUMMON)
@ -1159,23 +1160,23 @@ static void spell_open_teleport(int cil, int owner)
} }
if (map_sectors[sector].sector_type>=S_USERTELEPORT && if (map_sectors[sector].sector_type>=S_USERTELEPORT &&
map_sectors[sector].sector_type<=S_USERTELEPORT_END) map_sectors[sector].sector_type<=S_USERTELEPORT_END)
{ {
int i; int i;
int otherside; int otherside;
map_sectors[sector].sector_type-=S_USERTELEPORT ; map_sectors[sector].sector_type-=S_USERTELEPORT ;
otherside=map_sectors[sector].sector_tag; otherside=map_sectors[sector].sector_tag;
for (i=0;i<4;i++) {map_sides[sector*4+i].flags&=~SD_SEC_VIS;map_sides[sector*4+i].sec_anim=0;map_sides[sector*4+i].sec=0;} for (i=0;i<4;i++) {map_sides[sector*4+i].flags&=~SD_SEC_VIS;map_sides[sector*4+i].sec_anim=0;map_sides[sector*4+i].sec=0;}
map_sectors[sector].sector_tag=0; map_sectors[sector].sector_tag=0;
add_spectxtr(sector,H_TELEP_PCX,14,1,0); add_spectxtr(sector,H_TELEP_PCX,14,1,0);
play_sample_at_sector(H_SND_TELEPOUT,viewsector,sector,0,0); play_sample_at_sector(H_SND_TELEPOUT,viewsector,sector,0,0);
if (otherside!=sector && otherside) if (otherside!=sector && otherside)
{ {
map_sectors[otherside].sector_type-=S_USERTELEPORT ; map_sectors[otherside].sector_type-=S_USERTELEPORT ;
for (i=0;i<4;i++) {map_sides[otherside*4+i].flags&=~SD_SEC_VIS;map_sides[otherside*4+i].sec_anim=0;map_sides[otherside*4+i].sec=0;} for (i=0;i<4;i++) {map_sides[otherside*4+i].flags&=~SD_SEC_VIS;map_sides[otherside*4+i].sec_anim=0;map_sides[otherside*4+i].sec=0;}
map_sectors[otherside].sector_tag=0; map_sectors[otherside].sector_tag=0;
add_spectxtr(otherside,H_TELEP_PCX,14,1,0); add_spectxtr(otherside,H_TELEP_PCX,14,1,0);
play_sample_at_sector(H_SND_TELEPOUT,viewsector,otherside,0,0); play_sample_at_sector(H_SND_TELEPOUT,viewsector,otherside,0,0);
} }
} }
@ -1187,7 +1188,7 @@ static void spell_open_teleport(int cil, int owner)
if (type!=S_NORMAL && (type<S_SMER || type>=S_VODA)) allowed=0; if (type!=S_NORMAL && (type<S_SMER || type>=S_VODA)) allowed=0;
if (allowed && map_sectors[sector].sector_tag!=0) allowed=0; if (allowed && map_sectors[sector].sector_tag!=0) allowed=0;
if (allowed) if (allowed)
for (i=0;i<4;i++) for (i=0;i<4;i++)
if (map_sides[sector*4+i].sec) allowed=0; if (map_sides[sector*4+i].sec) allowed=0;
if (allowed) if (allowed)
{ {
@ -1195,7 +1196,7 @@ static void spell_open_teleport(int cil, int owner)
int templateSect=0; int templateSect=0;
int i,j; int i,j;
for (i=0;templateSect==0 && i<mapsize;i++) for (i=0;templateSect==0 && i<mapsize;i++)
{ {
if (ISTELEPORTSECT(i)) if (ISTELEPORTSECT(i))
for (j=0;j<4 && templateSect==0;j++) for (j=0;j<4 && templateSect==0;j++)
{ {
@ -1203,7 +1204,7 @@ static void spell_open_teleport(int cil, int owner)
if (map_sides[sd].sec && (map_sides[sd].flags & SD_SEC_VIS) && map_sides[sd].sec_anim!=0) if (map_sides[sd].sec && (map_sides[sd].flags & SD_SEC_VIS) && map_sides[sd].sec_anim!=0)
templateSect=i; templateSect=i;
} }
} }
if (templateSect==0) if (templateSect==0)
{ {
if (owner>=0) bott_disp_text(texty[85]); if (owner>=0) bott_disp_text(texty[85]);
@ -1234,7 +1235,7 @@ static void spell_open_teleport(int cil, int owner)
map_sectors[sector].sector_tag=sector; map_sectors[sector].sector_tag=sector;
map_sectors[sector].side_tag=(dir+2)&3; map_sectors[sector].side_tag=(dir+2)&3;
} }
add_spectxtr(sector,H_TELEP_PCX,14,1,0); add_spectxtr(sector,H_TELEP_PCX,14,1,0);
play_sample_at_sector(H_SND_TELEPOUT,viewsector,sector,0,0); play_sample_at_sector(H_SND_TELEPOUT,viewsector,sector,0,0);
} }
else else
@ -1269,7 +1270,7 @@ void spell_special(int num,TKOUZLO *spl,int spc)
hal_sector=rnd(mapsize-1)+1;hal_dir=rnd(4); hal_sector=rnd(mapsize-1)+1;hal_dir=rnd(4);
break; break;
case SP_TELEPORT:if (hod_na_uspech(spl->cil,spl)) spell_teleport(spl->cil,spl->owner,spl->teleport_target);break; case SP_TELEPORT:if (hod_na_uspech(spl->cil,spl)) spell_teleport(spl->cil,spl->owner,spl->teleport_target);break;
case SP_PHASEDOOR:if (hod_na_uspech(spl->cil,spl)) spell_teleport(spl->cil,spl->owner,-1);break; case SP_PHASEDOOR:if (hod_na_uspech(spl->cil,spl)) spell_teleport(spl->cil,spl->owner,-1);break;
case SP_SUMMON: spell_summon(spl->cil); case SP_SUMMON: spell_summon(spl->cil);
case SP_HLUBINA1:if (hlubina_level==0) hlubina_level=1;_flag_map[num]|=FLG_HLUBINA1; case SP_HLUBINA1:if (hlubina_level==0) hlubina_level=1;_flag_map[num]|=FLG_HLUBINA1;
break; break;
@ -1377,9 +1378,10 @@ static void calc_rand_value(int val1,int val2)
void call_spell(int i) void call_spell(int i)
{ {
TKOUZLO *p; TKOUZLO *p;
char *c; unsigned char *c;
unsigned char *start;
int z; int z;
char ext=0; unsigned char ext=0;
int cil; int cil;
SEND_LOG("(SPELLS) Calculating spell ID: %d",i,0); SEND_LOG("(SPELLS) Calculating spell ID: %d",i,0);
@ -1397,7 +1399,8 @@ void call_spell(int i)
} }
if (p->delay) return; if (p->delay) return;
if (p->wait) return; if (p->wait) return;
c=(char *)ablock(H_KOUZLA); c=(unsigned char *)ablock(H_KOUZLA);
start = c;
c+=p->start; c+=p->start;
twins=0; twins=0;
do do
@ -1450,7 +1453,7 @@ void call_spell(int i)
case S_location_y: TelepLocation.loc_y=GET_WORD(c);TelepLocation.map=0;break; case S_location_y: TelepLocation.loc_y=GET_WORD(c);TelepLocation.map=0;break;
default: default:
{ {
char *d="Chyba v popisu kouzel: Program narazil na neznamou instrukci %d (%02X) pri zpracovani kouzla s cislem %d. Kouzlo bylo ukoneno"; char *d="Chyba v popisu kouzel: Program narazil na neznamou instrukci %d (%02X) pri zpracovani kouzla s cislem %d. Kouzlo bylo ukon<EFBFBD>eno";
c=alloca(strlen(d)+20); c=alloca(strlen(d)+20);
sprintf(c,d,*(c-1),*(c-1),p->num); sprintf(c,d,*(c-1),*(c-1),p->num);
bott_disp_text(c); bott_disp_text(c);
@ -1461,7 +1464,7 @@ void call_spell(int i)
} }
while(!ext); while(!ext);
p->start=c-(char *)ablock(H_KOUZLA); p->start=c-start;
} }
int add_spell(int num,int cil,int owner,char noanim) int add_spell(int num,int cil,int owner,char noanim)
@ -1619,12 +1622,12 @@ void cast(int num,THUMAN *p,int owner, char backfire)
cil=0; cil=0;
num2=num; num2=num;
} }
SEND_LOG("(SPELLS) Cast num %d cil %d",num2,cil); SEND_LOG("(SPELLS) Cast num %d cil %d",num2,cil);
k=((TKOUZLO *)ablock(H_KOUZLA))+num2; k=((TKOUZLO *)ablock(H_KOUZLA))+num2;
SEND_LOG("(SPELLS) Cast spell name %s",k->spellname,0); SEND_LOG("(SPELLS) Cast spell name %s",k->spellname,0);
if (cil>0 && k->cil!=C_postava_jinde) if (cil>0 && k->cil!=C_postava_jinde)
{ {
THUMAN *h1=postavy+cil-1; THUMAN *h1=postavy+cil-1;
@ -1654,7 +1657,7 @@ void cast(int num,THUMAN *p,int owner, char backfire)
if ((per1/2+32)<per2 && (k->backfire || (game_extras & EX_RANDOM_BACKFIRES)!=0)) if ((per1/2+32)<per2 && (k->backfire || (game_extras & EX_RANDOM_BACKFIRES)!=0))
{ {
p->mana-=k->mge; p->mana-=k->mge;
if ((game_extras & EX_RANDOM_BACKFIRES)!=0) if ((game_extras & EX_RANDOM_BACKFIRES)!=0)
{ {
labyrinth_find_path(p->sektor,65535,SD_PLAY_IMPS,get_valid_sector,NULL); labyrinth_find_path(p->sektor,65535,SD_PLAY_IMPS,get_valid_sector,NULL);
teleport_target=last_sector; teleport_target=last_sector;
@ -1728,7 +1731,7 @@ void mob_cast(int num,TMOB *m,int mob_num)
} }
} }
static int calculatePhaseDoor(int sector, int dir, int um) int calculatePhaseDoor(int sector, int dir, int um)
{ {
int x=map_coord[sector].x; int x=map_coord[sector].x;
int y=map_coord[sector].y; int y=map_coord[sector].y;
@ -1754,7 +1757,7 @@ static int calculatePhaseDoor(int sector, int dir, int um)
x=map_coord[i].x-newx; x=map_coord[i].x-newx;
y=map_coord[i].y-newy; y=map_coord[i].y-newy;
dist=x*x+y*y; dist=x*x+y*y;
if(dist<nearestdst) if(dist<nearestdst)
{ {
nearestdst=dist; nearestdst=dist;
nearest=i; nearest=i;
@ -1772,7 +1775,7 @@ void thing_cast(int num,int postava,int sector,TMOB *victim,char noanim)
char telep=get_spell_teleport(num); char telep=get_spell_teleport(num);
SEND_LOG("(SPELLS) Item casts the spell (sector: %d, spell: %d)",sector,num); SEND_LOG("(SPELLS) Item casts the spell (sector: %d, spell: %d)",sector,num);
k=((TKOUZLO *)ablock(H_KOUZLA))+num; k=((TKOUZLO *)ablock(H_KOUZLA))+num;
if (telep) if (telep)
{ {
teleport_target=calculatePhaseDoor(h->sektor,h->direction,h->vlastnosti[VLS_SMAGIE]); teleport_target=calculatePhaseDoor(h->sektor,h->direction,h->vlastnosti[VLS_SMAGIE]);
@ -1864,27 +1867,25 @@ void remove_all_mob_spells()
} }
int save_spells(FILE *f) int save_spells(TMPFILE_WR *f)
{ {
char res=0;
int i,s; int i,s;
SEND_LOG("(SPELLS) Saving spell table...",0,0); SEND_LOG("(SPELLS) Saving spell table...",0,0);
for(i=0,s=0;i<MAX_SPELLS;i++) for(i=0,s=0;i<MAX_SPELLS;i++)
if (spell_table[i]!=NULL) s++; if (spell_table[i]!=NULL) s++;
res|=(fwrite(&s,1,sizeof(s),f)!=sizeof(s)); temp_storage_write(&s,1*sizeof(s),f);
for(i=0;i<MAX_SPELLS && !res;i++) for(i=0;i<MAX_SPELLS;i++)
if (spell_table[i]!=NULL) if (spell_table[i]!=NULL)
{ {
res|=(fwrite(spell_table[i],1,sizeof(TKOUZLO),f)!=sizeof(TKOUZLO)); temp_storage_write(spell_table[i],1*sizeof(TKOUZLO),f);
res|=(fwrite(vls_table[i],1,2*24,f)!=2*24); temp_storage_write(vls_table[i],1*2*24,f);
res|=(fwrite(_flag_map+i,1,4,f)!=4); temp_storage_write(_flag_map+i,1*4,f);
} }
return res; return 0;
} }
int load_spells(FILE *f) int load_spells(TMPFILE_RD *f)
{ {
char res=0; char res=0;
@ -1892,14 +1893,14 @@ int load_spells(FILE *f)
SEND_LOG("(SPELLS) Loading saved spell table...",0,0); SEND_LOG("(SPELLS) Loading saved spell table...",0,0);
reinit_kouzla_full(); reinit_kouzla_full();
res|=(fread(&s,1,sizeof(s),f)!=sizeof(s)); res|=(temp_storage_read(&s,1*sizeof(s),f)!=sizeof(s));
for(i=0;i<s && !res;i++) for(i=0;i<s && !res;i++)
{ {
spell_table[i]=New(TKOUZLO); spell_table[i]=New(TKOUZLO);
vls_table[i]=NewArr(short,24); vls_table[i]=NewArr(short,24);
res|=(fread(spell_table[i],1,sizeof(TKOUZLO),f)!=sizeof(TKOUZLO)); res|=(temp_storage_read(spell_table[i],1*sizeof(TKOUZLO),f)!=sizeof(TKOUZLO));
res|=(fread(vls_table[i],1,2*24,f)!=2*24); res|=(temp_storage_read(vls_table[i],1*2*24,f)!=2*24);
res|=(fread(_flag_map+i,1,4,f)!=4); res|=(temp_storage_read(_flag_map+i,1*4,f)!=4);
} }
true_seeing=1; true_seeing=1;
hlubina_level=2; hlubina_level=2;

View file

@ -17,6 +17,7 @@
#include <pcx.h> #include <pcx.h>
#include "globals.h" #include "globals.h"
#include "specproc.h" #include "specproc.h"
#include "temp_storage.h"
int **macros=NULL; int **macros=NULL;
void *macro_block; void *macro_block;
@ -256,26 +257,18 @@ char if_lock(int side,int key_id,int level,TMA_LOCK *lk)
return 0; return 0;
} }
void xchg_block(void *b1,void *b2,int leng) void xchg_block(void *b1, void *b2, int leng) {
//#pragma aux xchg_block parm[edi][esi][ecx]= uint8_t *p1 = (uint8_t *)b1;
{ uint8_t *p2 = (uint8_t *)b2;
__asm
{ for (int i = 0; i < leng; i++) {
mov edi,b1 uint8_t temp = p1[i];
mov esi,b2 p1[i] = p2[i];
mov ecx,leng p2[i] = temp;
lp1: mov al,[edi] }
mov ah,[esi]
mov [edi],ah
mov [esi],al
inc edi
inc esi
dec ecx
jnz lp1
}
} }
static void propadnout(int sector) void propadnout(int sector)
{ {
short *i,c,m1,m2; short *i,c,m1,m2;
@ -369,7 +362,7 @@ static void hit_player(TMA_WOUND *w,int sector)
bott_draw(1); bott_draw(1);
} }
static TMULTI_ACTION *go_macro(side,abs_pos) static TMULTI_ACTION *go_macro(int side,int abs_pos)
{ {
int *r; int *r;
int mcsiz; int mcsiz;
@ -567,7 +560,7 @@ static void build_trig_group(char mode,int side)
} }
} }
static ma_play_anim(char *filename,char cls) static int ma_play_anim(char *filename,char cls)
{ {
char *a; char *a;
@ -633,13 +626,13 @@ void macro_register_global_event(TMULTI_ACTION *q)
if (GlobEventList[q->globe.event].param>0) if (GlobEventList[q->globe.event].param>0)
GlobEventList[q->globe.event].param+=game_time; GlobEventList[q->globe.event].param+=game_time;
else else
{ {
long den=24*60*6; long den=24*60*6;
long cas=((-GlobEventList[q->globe.event].param/100)*60+(-GlobEventList[q->globe.event].param%100))*6; long cas=((-GlobEventList[q->globe.event].param/100)*60+(-GlobEventList[q->globe.event].param%100))*6;
long curtm=game_time % den; long curtm=game_time % den;
if (cas<=curtm) cas+=den; if (cas<=curtm) cas+=den;
GlobEventList[q->globe.event].param=game_time-curtm+cas; GlobEventList[q->globe.event].param=game_time-curtm+cas;
} }
} }
} }
@ -754,41 +747,14 @@ static char lock_saved=255;
static char lock_empty=254; static char lock_empty=254;
char save_codelocks(FILE *fsta) char save_codelocks(TMPFILE_WR *fsta)
{ {
char *c; temp_storage_write(codelock_memory,sizeof(codelock_memory)*1,fsta);
int i;
c=(char *)&codelock_memory;
i=sizeof(codelock_memory);
while(*c==0 && i) c++,i--;
if (!i)
{
SEND_LOG("(SAVELOAD) Codelocks wasn't used in this map... not saved",0,0);
return !fwrite(&lock_empty,sizeof(lock_empty),1,fsta);
}
SEND_LOG("(SAVELOAD) Storing code-locks...",0,0);
if (!fwrite(&lock_saved,sizeof(lock_saved),1,fsta)) return 1;
return !fwrite(codelock_memory,sizeof(codelock_memory),1,fsta);
} }
char load_codelocks(FILE *fsta) char load_codelocks(TMPFILE_RD *fsta)
{ {
char c; return !temp_storage_read(codelock_memory,sizeof(codelock_memory)*1,fsta);
if (!fread(&c,sizeof(lock_empty),1,fsta)) return 1;
if (c!=lock_saved)
{
if (c!=lock_empty)
{
fseek(fsta,-1,SEEK_CUR); //uprav pripadne stare verze savegamu ktere nemaji codelocky
SEND_LOG("(ERROR) Invalid value for codelocks... may be it's old version of savegame",0,0);
}
memset(codelock_memory,0,sizeof(codelock_memory));
return 0;
}
SEND_LOG("(SAVELOAD) Restoring code-locks for this map...",0,0);
return !fread(codelock_memory,sizeof(codelock_memory),1,fsta);
} }

View file

@ -1,7 +1,6 @@
#include <skeldal_win.h> #include <skeldal_win.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <conio.h>
#include <malloc.h> #include <malloc.h>
#include <math.h> #include <math.h>
#include <bios.h> #include <bios.h>
@ -14,7 +13,7 @@
#include <bgraph.h> #include <bgraph.h>
#include <zvuk.h> #include <zvuk.h>
#include <strlite.h> #include <strlite.h>
//#include <vesa.h> #include <stdarg.h>
#include "engine1.h" #include "engine1.h"
#include <pcx.h> #include <pcx.h>
#include "globals.h" #include "globals.h"
@ -37,10 +36,10 @@ int speedscroll=3;
char low_mem=0; char low_mem=0;
static volatile char load_ok=0; static volatile char load_ok=0;
static cur_pos[]={0,0,0,0,0}; static int cur_pos[]={0,0,0,0,0};
static cur_dir[]={UNSELECT,UNSELECT,UNSELECT,UNSELECT,UNSELECT}; static int cur_dir[]={UNSELECT,UNSELECT,UNSELECT,UNSELECT,UNSELECT};
static titlefont=H_FBIG; static int titlefont=H_FBIG;
#define TITLE_HEAD 1 #define TITLE_HEAD 1
#define TITLE_NAME 2 #define TITLE_NAME 2
@ -48,8 +47,8 @@ static titlefont=H_FBIG;
#define TITLE_CENTER 0 #define TITLE_CENTER 0
#define TITLE_KONEC 4 #define TITLE_KONEC 4
static title_mode=0; static int title_mode=0;
static title_line=0; static int title_line=0;
#define CLK_MAIN_MENU 4 #define CLK_MAIN_MENU 4
@ -93,7 +92,15 @@ T_CLK_MAP clk_main_menu[]=
{-1,0,0,639,479,empty_clk,0xff,H_MS_DEFAULT}, {-1,0,0,639,479,empty_clk,0xff,H_MS_DEFAULT},
}; };
void rozdily(void *orign,void *obr,void *hicolor,void *xtab,int pocet) void rozdily(uint8_t *orign, uint8_t *obr, uint16_t *hicolor, uint16_t *xtab, size_t pocet) {
for (size_t i = 0; i < pocet; i++) {
uint8_t al = obr[i];
al ^= orign[i];
uint16_t result = xtab[al];
hicolor[i] = result;
}
}
/*void rozdily(void *orign,void *obr,void *hicolor,void *xtab,int pocet)
//#pragma aux rozdily parm[EDX][ESI][EDI][EBX][ECX]= //#pragma aux rozdily parm[EDX][ESI][EDI][EBX][ECX]=
{ {
__asm __asm
@ -104,7 +111,7 @@ __asm
mov ebx,xtab mov ebx,xtab
mov ecx,pocet mov ecx,pocet
jp1:lodsb jp1:lodsb
xor al,[edx] xor al,[edx]
movzx eax,al movzx eax,al
inc edx inc edx
@ -113,7 +120,7 @@ jp1:lodsb
dec ecx dec ecx
jnz jp1 jnz jp1
} }
} }*/
static void nahraj_rozdilovy_pcx(void **pp,long *s) static void nahraj_rozdilovy_pcx(void **pp,long *s)
{ {
@ -139,7 +146,7 @@ static void nahraj_rozdilovy_pcx(void **pp,long *s)
rozdily(org,pos,hicolor+3,paltab,siz); rozdily(org,pos,hicolor+3,paltab,siz);
free(vysl); free(vysl);
*pp=hicolor; *pp=hicolor;
*s=_msize(*pp); *s=siz*2+12;
} }
@ -164,6 +171,7 @@ static void init_menu_entries(void)
} }
} }
/*
void zobraz_podle_masky_asm(char barva,void *scr,void *data, void *maska,int xs,int ys) void zobraz_podle_masky_asm(char barva,void *scr,void *data, void *maska,int xs,int ys)
//#pragma aux zobraz_podle_masky_asm parm[al][edi][esi][ebx][edx][ecx]= //#pragma aux zobraz_podle_masky_asm parm[al][edi][esi][ebx][edx][ecx]=
{ {
@ -179,7 +187,7 @@ void zobraz_podle_masky_asm(char barva,void *scr,void *data, void *maska,int xs,
mov ebp,edx mov ebp,edx
jp3: cmp al,[ebx] jp3: cmp al,[ebx]
jnz jp1 jnz jp1
movsw movsw
jmp jp2 jmp jp2
jp1: add edi,2 jp1: add edi,2
add esi,2 add esi,2
@ -195,6 +203,21 @@ jp2: inc ebx
pop ebp pop ebp
} }
} }
*/
static void zobraz_podle_masky_asm(char barva, uint16_t *scr, uint16_t *data, uint8_t *maska, int xs, int ys, int scr_linelen) {
int width = xs;
for (int y = 0; y < ys; y++) {
for (int x = 0; x < width; x++) {
if (barva == maska[x]) {
scr[x] = data[x];
}
}
scr += scr_linelen; // Přeskoč na další řádek obrazovky
maska += width; // Přeskoč masku
data += width; // Přeskoč zdrojová data
}
}
static void zobraz_podle_masky(char barva,char anim) static void zobraz_podle_masky(char barva,char anim)
{ {
@ -208,13 +231,13 @@ static void zobraz_podle_masky(char barva,char anim)
data=ablock(H_MENU_ANIM+anim); data=ablock(H_MENU_ANIM+anim);
xs=data[0]; xs=data[0];
ys=data[1]; ys=data[1];
zobraz_podle_masky_asm(barva,obr,data+3,maska+6+512,xs,ys); zobraz_podle_masky_asm(barva,obr,data+3,maska+6+512,xs,ys,scr_linelen2);
aunlock(H_MENU_MASK); aunlock(H_MENU_MASK);
} }
static void prehraj_animaci_v_menu(EVENT_MSG *msg,char **unused) static void prehraj_animaci_v_menu(EVENT_MSG *msg,char **unused)
{ {
static counter=0; static int counter=0;
unused; unused;
if (msg->msg==E_TIMER) if (msg->msg==E_TIMER)
{ {
@ -340,7 +363,7 @@ int enter_menu(char open)
return c; return c;
} }
char *get_next_title(char control,char *filename) char *get_next_title(signed char control,char *filename)
{ {
static FILE *titles=NULL; static FILE *titles=NULL;
static ENCFILE fl; static ENCFILE fl;
@ -360,7 +383,7 @@ char *get_next_title(char control,char *filename)
char popis[300]; char popis[300];
closemode(); closemode();
sprintf(popis,"Soubor nenalezen: %s%s nebo %s%s\n",pathtable[SR_MAP],filename,pathtable[SR_DATA],filename); sprintf(popis,"Soubor nenalezen: %s%s nebo %s%s\n",pathtable[SR_MAP],filename,pathtable[SR_DATA],filename);
MessageBox(NULL,popis,NULL,MB_OK|MB_ICONSTOP); display_error(popis);
exit(1); exit(1);
} }
} }
@ -474,8 +497,8 @@ static void get_max_extend(int *l,int *r)
for(i=0;i<360;i++) for(i=0;i<360;i++)
{ {
left=min(title_lines[i][0],left); left=MIN(title_lines[i][0],left);
right=max(title_lines[i][1],right); right=MAX(title_lines[i][1],right);
} }
*l=left; *l=left;
*r=right; *r=right;
@ -484,7 +507,7 @@ static void get_max_extend(int *l,int *r)
void titles(va_list args) void titles(va_list args)
//#pragma aux titles parm[] //#pragma aux titles parm[]
{ {
char send_back=va_arg(args,char); char send_back=va_arg(args,int);
char *textname=va_arg(args,char *); char *textname=va_arg(args,char *);
void *picture; void *picture;
@ -526,7 +549,7 @@ void titles(va_list args)
get_max_extend(&l,&r); get_max_extend(&l,&r);
memmove(title_lines,&title_lines[skip],sizeof(title_lines)-skip*sizeof(int)*2); memmove(title_lines,&title_lines[skip],sizeof(title_lines)-skip*sizeof(int)*2);
//showview(l,60,r-l+1,360); //showview(l,60,r-l+1,360);
showview(0,60,639,360); showview(0,60,639,360);
buff+=scr_linelen2*359; buff+=scr_linelen2*359;
memcpy(buff,buff+scr_linelen2*skip,40*scr_linelen); memcpy(buff,buff+scr_linelen2*skip,40*scr_linelen);
showview(0,0,640,40); showview(0,0,640,40);

View file

@ -269,12 +269,12 @@ int load_map(char *filename)
free(temp); free(temp);
break; break;
case A_STRRIGHT: case A_STRRIGHT:
num_ofsets[2]=ofsts-1; num_ofsets[2]=ofsts-1;
prepare_graphics(&ofsts,temp,size,pcx_fade_decomp,SR_GRAFIKA); prepare_graphics(&ofsts,temp,size,pcx_fade_decomp,SR_GRAFIKA);
free(temp); free(temp);
break; break;
case A_STRCEIL: case A_STRCEIL:
num_ofsets[3]=ofsts-1; num_ofsets[3]=ofsts-1;
prepare_graphics(&ofsts,temp,size,pcx_15bit_autofade,SR_GRAFIKA); prepare_graphics(&ofsts,temp,size,pcx_15bit_autofade,SR_GRAFIKA);
free(temp); free(temp);
break; break;
@ -296,7 +296,7 @@ int load_map(char *filename)
case A_MAPGLOB: case A_MAPGLOB:
num_ofsets[BACK_NUM]=ofsts; num_ofsets[BACK_NUM]=ofsts;
memset(&mglob,0,sizeof(mglob)); memset(&mglob,0,sizeof(mglob));
memcpy(&mglob,temp,__min(size,sizeof(mglob))); memcpy(&mglob,temp,MIN(size,sizeof(mglob)));
free(temp); free(temp);
for(r=0;r<4;r++) for(r=0;r<4;r++)
def_handle(ofsts++,mglob.back_fnames[r],pcx_fade_decomp,SR_GRAFIKA); def_handle(ofsts++,mglob.back_fnames[r],pcx_fade_decomp,SR_GRAFIKA);
@ -349,7 +349,7 @@ int load_map(char *filename)
map_with_password=1; map_with_password=1;
free(temp); free(temp);
break; break;
default:free(temp); default:free(temp);
@ -378,7 +378,7 @@ int load_map(char *filename)
if (!doNotLoadMapState && load_map_state()==-2) if (!doNotLoadMapState && load_map_state()==-2)
{ {
closemode(); closemode();
MessageBox(NULL,"Bug in temp file. Please purge some status blocks in last load savegame file.",NULL,MB_OK|MB_ICONSTOP); display_error("Bug in temp file. Please purge some status blocks in last load savegame file.");
exit(0); exit(0);
} }
doNotLoadMapState=0; doNotLoadMapState=0;
@ -590,7 +590,9 @@ TFLY *duplic_fly(TFLY *p)
*q=*p; *q=*p;
if (q->items!=NULL) if (q->items!=NULL)
{ {
int s=_msize(q->items); int s=0;
while (q->items[s]) ++s;
++s;
q->items=(short *)getmem(s); q->items=(short *)getmem(s);
memcpy(q->items,p->items,s); memcpy(q->items,p->items,s);
} }
@ -631,7 +633,7 @@ void calc_fly()
q=p->next; q=p->next;
if (!(p->flags & FLY_NEHMOTNA)) if (!(p->flags & FLY_NEHMOTNA))
{ {
p->velocity+=1; p->velocity+=1;
} }
p->zpos-=p->velocity; p->zpos-=p->velocity;
ss=p->sector; ss=p->sector;
@ -651,7 +653,7 @@ void calc_fly()
else else
stop_fly(p,1); stop_fly(p,1);
continue; continue;
} }
if (p->flags & FLY_IN_FLY && p->xpos>-16 && zasah_veci(p->sector,p)) if (p->flags & FLY_IN_FLY && p->xpos>-16 && zasah_veci(p->sector,p))
{ {
interrupt_fly(p); interrupt_fly(p);
@ -692,7 +694,7 @@ void calc_fly()
continue; continue;
} }
} }
} }
extern long sound_side_flags; extern long sound_side_flags;
@ -799,7 +801,7 @@ void check_codelock_log(int sector,unsigned long flags)
} }
int do_action(action_numb,sector,direct,flags,nosend) int do_action(int action_numb,int sector, int direct,int flags, int nosend)
{ {
TSTENA *q; TSTENA *q;
TSECTOR *s; TSECTOR *s;
@ -1113,7 +1115,7 @@ void check_players_place(char mode)
else else
break; break;
case S_LAVA: if (!levitat) case S_LAVA: if (!levitat)
{ {
u1=(h->lives); u1=(h->lives);
player_hit(h,u1,0); player_hit(h,u1,0);
bott_draw(0); bott_draw(0);
@ -1184,7 +1186,7 @@ void calc_game()
} }
} }
void a_touch(sector,dir) void a_touch(int sector,int dir)
{ {
TSTENA *q; TSTENA *q;
int sid; int sid;
@ -1204,7 +1206,7 @@ void a_touch(sector,dir)
call_macro(sid,MC_TOUCHSUC); call_macro(sid,MC_TOUCHSUC);
} }
void a_pass(sector,dir) void a_pass(int sector, int dir)
{ {
TSTENA *q; TSTENA *q;
@ -1493,7 +1495,7 @@ void postavy_teleport_effect(int sector,int dir,int postava,char effect)
{ {
char kolo=global_anim_counter; char kolo=global_anim_counter;
int counter=0; int counter=0;
static zavora=0; static int zavora=0;
if (zavora) return; if (zavora) return;
if (effect) if (effect)
@ -1778,9 +1780,16 @@ int check_path(word **path,word tosect)
return tosect; return tosect;
} }
static unsigned int get_path_len(const word *w) {
unsigned int i = 0;
while (w[i]) ++i;
return i;
}
void recall() void recall()
{ {
int tosect,max,i,j; int tosect;
unsigned int max,i,j;
word *paths[POCET_POSTAV]; word *paths[POCET_POSTAV];
for(i=0;i<POCET_POSTAV;i++) for(i=0;i<POCET_POSTAV;i++)
@ -1793,9 +1802,10 @@ void recall()
do do
{ {
max=0xffff;j=-1; max=0xffff;j=-1;
for(i=0;i<POCET_POSTAV;i++) if (paths[i]!=NULL && _msize(paths[i])<(unsigned)max) unsigned int l;
for(i=0;i<POCET_POSTAV;i++) if (paths[i]!=NULL && (l=get_path_len(paths[i]))<(unsigned)max)
{ {
max=_msize(paths[i]); max=l;
j=i; j=i;
} }
if (j!=-1) if (j!=-1)
@ -1908,12 +1918,12 @@ void *game_keyboard(EVENT_MSG *msg,void **usr)
{ {
case 'H':step_zoom(0);break; case 'H':step_zoom(0);break;
case 'P':step_zoom(2);break; case 'P':step_zoom(2);break;
case 'M':if (GetKeyState(VK_CONTROL) & 0x80) case 'M':if (get_control_key_state() & 0x80)
step_zoom(1); step_zoom(1);
else else
turn_zoom(1); turn_zoom(1);
break; break;
case 'K':if (GetKeyState(VK_CONTROL) & 0x80) case 'K':if (get_control_key_state() & 0x80)
step_zoom(3); step_zoom(3);
else else
turn_zoom(-1); turn_zoom(-1);
@ -1936,7 +1946,7 @@ void *game_keyboard(EVENT_MSG *msg,void **usr)
// case 25:GamePause();break; // case 25:GamePause();break;
case 28:enforce_start_battle();break; case 28:enforce_start_battle();break;
case 82:group_all();break; case 82:group_all();break;
case '<':if (!battle && GlobEvent(MAGLOB_CLICKSAVE,viewsector,viewdir)) case '<':if (!battle && GlobEvent(MAGLOB_CLICKSAVE,viewsector,viewdir))
{unwire_proc();cancel_render=1;wire_save_load(1);}break; {unwire_proc();cancel_render=1;wire_save_load(1);}break;
case '=':unwire_proc();cancel_render=1;wire_save_load(0);break; case '=':unwire_proc();cancel_render=1;wire_save_load(0);break;
case '>':game_setup(0,0,0,0,0);break; case '>':game_setup(0,0,0,0,0);break;
@ -1960,7 +1970,7 @@ void *game_keyboard(EVENT_MSG *msg,void **usr)
void start_dialog(int dialog,int mob) void start_dialog(int dialog,int mob)
{ {
if (battle) if (battle)
{ {
call_dialog(dialog,mob); call_dialog(dialog,mob);
} }

View file

@ -76,7 +76,7 @@ static void change_turn()
turn_speed((id-60)/10); turn_speed((id-60)/10);
} }
void unwire_setup(); static void unwire_setup();
static EVENT_PROC(setup_keyboard) static EVENT_PROC(setup_keyboard)
{ {
@ -155,21 +155,21 @@ void new_setup()
w=create_window(0,SCREEN_OFFLINE,639,359,0,&ctl); w=create_window(0,SCREEN_OFFLINE,639,359,0,&ctl);
w->draw_event=show_setup_desktop; w->draw_event=show_setup_desktop;
desktop_add_window(w); desktop_add_window(w);
define(10,50,270,190,20,0,skeldal_checkbox); c_default(get_snd_effect(SND_SWAP)); on_change(do_setup_change); define(10,50,270,190,20,0,skeldal_checkbox); c_default(get_snd_effect(SND_SWAP)); on_control_change(do_setup_change);
if (check_snd_effect(SND_OUTFILTER)) if (check_snd_effect(SND_OUTFILTER))
{ {
define(20,50,300,190,20,0,skeldal_checkbox);c_default(get_snd_effect(SND_OUTFILTER)); define(20,50,300,190,20,0,skeldal_checkbox);c_default(get_snd_effect(SND_OUTFILTER));
on_change(do_setup_change); on_control_change(do_setup_change);
} }
define(30,410,60,90,20,0,skeldal_checkbox);c_default(zoom_speed(-1)==0); define(30,410,60,90,20,0,skeldal_checkbox);c_default(zoom_speed(-1)==0);
on_change(change_zoom); on_control_change(change_zoom);
define(40,410,90,90,20,0,skeldal_checkbox);c_default(zoom_speed(-1)==1);on_change(change_zoom); define(40,410,90,90,20,0,skeldal_checkbox);c_default(zoom_speed(-1)==1);on_control_change(change_zoom);
define(50,410,120,90,20,0,skeldal_checkbox);c_default(zoom_speed(-1)==2);on_change(change_zoom); define(50,410,120,90,20,0,skeldal_checkbox);c_default(zoom_speed(-1)==2);on_control_change(change_zoom);
define(60,510,60,90,20,0,skeldal_checkbox);c_default(turn_speed(-1)==0);on_change(change_turn); define(60,510,60,90,20,0,skeldal_checkbox);c_default(turn_speed(-1)==0);on_control_change(change_turn);
define(70,510,90,90,20,0,skeldal_checkbox);c_default(turn_speed(-1)==1);on_change(change_turn); define(70,510,90,90,20,0,skeldal_checkbox);c_default(turn_speed(-1)==1);on_control_change(change_turn);
define(80,510,120,90,20,0,skeldal_checkbox);c_default(turn_speed(-1)==2);on_change(change_turn); define(80,510,120,90,20,0,skeldal_checkbox);c_default(turn_speed(-1)==2);on_control_change(change_turn);
for(i=0;i<5;i++) for(i=0;i<5;i++)
{ {
@ -191,9 +191,9 @@ void new_setup()
if (check_snd_effect(effects[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])); 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]));
on_change(do_setup_change); on_control_change(do_setup_change);
} }
define(300,559,336,81,21,0,setup_ok_button,texty[174]);on_change(unwire_setup); define(300,559,336,81,21,0,setup_ok_button,texty[174]);on_control_change(unwire_setup);
property(NULL,ablock(H_FTINY),&color_topbar,0); property(NULL,ablock(H_FTINY),&color_topbar,0);
redraw_window(); redraw_window();
add_to_timer(TM_CHECKBOX,4,-1,checkbox_animator); add_to_timer(TM_CHECKBOX,4,-1,checkbox_animator);

View file

@ -1,18 +1,14 @@
#include <skeldal_win.h> #include <skeldal_win.h>
#include <debug.h>
#include <assert.h> #include <assert.h>
//#include <env.h> #include <stdarg.h>
#include <dos.h>
#include <bios.h> #include <bios.h>
#include <stdlib.h> #include <stdlib.h>
#include <ctype.h> #include <ctype.h>
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include <conio.h>
#include <malloc.h> #include <malloc.h>
#include <mem.h> #include <mem.h>
#include <pcx.h> #include <pcx.h>
#include <direct.h>
#include <types.h> #include <types.h>
#include <bgraph.h> #include <bgraph.h>
#include <event.h> #include <event.h>
@ -31,8 +27,8 @@
#include "engine1.h" #include "engine1.h"
#include "wizard.h" #include "wizard.h"
#include "version.h" #include "version.h"
#include <uvodni.h>
#include <unistd.h>
#define CONFIG_NAME SKELDALINI #define CONFIG_NAME SKELDALINI
#define INI_TEXT 1 #define INI_TEXT 1
@ -95,7 +91,7 @@ TMA_LOADLEV loadlevel;
typedef struct inis typedef struct inis
{ {
char heslo[15]; char heslo[25];
char parmtype; char parmtype;
}INIS; }INIS;
@ -118,7 +114,8 @@ THUMAN postavy[POCET_POSTAV],postavy_save[POCET_POSTAV];
void (*unwire_proc)(); void (*unwire_proc)();
void (*wire_proc)(); void (*wire_proc)();
char cur_mode,battle_mode; char cur_mode,battle_mode;
static init_music_vol=127,init_gfx_vol=255; static int init_music_vol=127;
static int init_gfx_vol=255;
static char full_video=0; static char full_video=0;
static char titles_on=0; static char titles_on=0;
static char windowed=0; static char windowed=0;
@ -366,8 +363,9 @@ int ask_video()
void pcx_fade_decomp(void **p,long *s) void pcx_fade_decomp(void **p,long *s)
{ {
char *buff; char *buff;
load_pcx(*p,*s,A_FADE_PAL,&buff,mglob.fade_r,mglob.fade_g,mglob.fade_b); int r = load_pcx(*p,*s,A_FADE_PAL,&buff,mglob.fade_r,mglob.fade_g,mglob.fade_b);
*s=_msize(buff); assert(r > 0);
*s=r;
free(*p); free(*p);
*p=buff; *p=buff;
} }
@ -375,8 +373,9 @@ void pcx_fade_decomp(void **p,long *s)
void pcx_15bit_decomp(void **p,long *s) void pcx_15bit_decomp(void **p,long *s)
{ {
char *buff; char *buff;
load_pcx(*p,*s,A_16BIT,&buff); int r = load_pcx(*p,*s,A_16BIT,&buff);
*s=_msize(buff); assert(r > 0);
*s=r;
free(*p); free(*p);
*p=buff; *p=buff;
} }
@ -384,8 +383,9 @@ void pcx_15bit_decomp(void **p,long *s)
void pcx_15bit_autofade(void **p,long *s) void pcx_15bit_autofade(void **p,long *s)
{ {
char *buff; char *buff;
load_pcx(*p,*s,A_16BIT,&buff); int r = load_pcx(*p,*s,A_16BIT,&buff);
*s=_msize(buff); assert(r > 0);
*s=r;
free(*p); free(*p);
*p=buff; *p=buff;
buff[5]=0x80; buff[5]=0x80;
@ -398,9 +398,10 @@ void pcx_15bit_backgrnd(void **p,long *s)
if (*p!=NULL) if (*p!=NULL)
{ {
load_pcx(*p,*s,A_16BIT,&buff); int r = load_pcx(*p,*s,A_16BIT,&buff);
assert(r>0);
z=(long *)buff; z=(long *)buff;
*s=_msize(buff); *s=r;
for(i=*s;i>0;i-=4,z++) *z|=0x80008000; for(i=*s;i>0;i-=4,z++) *z|=0x80008000;
free(*p); free(*p);
*p=buff; *p=buff;
@ -413,8 +414,9 @@ void pcx_8bit_nopal(void **p,long *s)
if (*p!=NULL) if (*p!=NULL)
{ {
load_pcx(*p,*s,A_8BIT_NOPAL,&buff); int r = load_pcx(*p,*s,A_8BIT_NOPAL,&buff);
*s=_msize(buff); assert(r>0);
*s=r;
free(*p); free(*p);
*p=buff; *p=buff;
} }
@ -424,8 +426,9 @@ void pcx_8bit_nopal(void **p,long *s)
void pcx_8bit_decomp(void **p,long *s) void pcx_8bit_decomp(void **p,long *s)
{ {
char *buff; char *buff;
load_pcx(*p,*s,A_8BIT,&buff); int r = load_pcx(*p,*s,A_8BIT,&buff);
*s=_msize(buff); assert(r>0);
*s=r;
free(*p); free(*p);
*p=buff; *p=buff;
} }
@ -552,14 +555,14 @@ void music_init()
set_snd_effect(SND_GFX,init_gfx_vol); set_snd_effect(SND_GFX,init_gfx_vol);
set_snd_effect(SND_MUSIC,init_music_vol); set_snd_effect(SND_MUSIC,init_music_vol);
path=plugins_path; path=plugins_path;
if (path==0 || path[0]==0) if (path==0 || path[0]==0)
path=AutodetectWinAmp(); path=AutodetectWinAmp();
if (path!=0 && path[0]!=0) if (path!=0 && path[0]!=0)
{ {
SEND_LOG("(SOUND) Installing plugins, path: %s",path,0); SEND_LOG("(SOUND) Installing plugins, path: %s",path,0);
init_winamp_plugins(path); init_winamp_plugins(path);
if (path!=plugins_path) free(path); if (path!=plugins_path) free(path);
} }
SEND_LOG("(SOUND) SOUND_DONE Sound Engine should work now",0,0); SEND_LOG("(SOUND) SOUND_DONE Sound Engine should work now",0,0);
} }
@ -572,41 +575,6 @@ void clrscr()
void purge_temps(char z)
{
HANDLE rc;
WIN32_FIND_DATA fi;
char c[200];
strcpy(c,SWAPPATH);
strcat(c,"*.TMP");
rc=FindFirstFile(c,&fi);
if (rc!=INVALID_HANDLE_VALUE)
do
{
strcpy(c,SWAPPATH);
strcat(c,fi.cFileName);
if (fi.cFileName[0]!='~')
{
SEND_LOG("(PURGE) Purging temp '%s'",c,0);
remove(c);
}
}
while (FindNextFile(rc,&fi));
FindClose(rc);
if (z)
{
strcpy(c,SWAPPATH);
strcat(c,TEMP_FILE);
SEND_LOG("(PURGE) Purging temp '%s'",c,0);
remove(c);
}
}
void back_music() void back_music()
{ {
@ -881,7 +849,7 @@ void cti_texty()
case -3:sprintf(buff,"Memory very low (need min 4MB)\n");break; case -3:sprintf(buff,"Memory very low (need min 4MB)\n");break;
default:sprintf(buff,"Error in string table at line %d\n",err);break; default:sprintf(buff,"Error in string table at line %d\n",err);break;
} }
MessageBox(NULL,buff,NULL,MB_OK|MB_ICONSTOP); display_error(buff);
exit(1); exit(1);
} }
} }
@ -895,7 +863,7 @@ void global_kbd(EVENT_MSG *msg,void **usr)
if (msg->msg==E_KEYBOARD) if (msg->msg==E_KEYBOARD)
{ {
c=(*(int *)msg->data)>>8; c=(*(int *)msg->data)>>8;
if (c==';') save_dump(); if (c==';') save_dump(GetScreenAdr(), DxGetResX(), DxGetResY(), scr_linelen2);
} }
return; return;
} }
@ -924,13 +892,13 @@ void error_exception(EVENT_MSG *msg,void **unused)
SEND_LOG("(ERROR) Log: Last 'memman' handle: %x",memman_handle,0); SEND_LOG("(ERROR) Log: Last 'memman' handle: %x",memman_handle,0);
SEND_LOG("(ERROR) Log: Battle: %d Select_player %d",battle,select_player); SEND_LOG("(ERROR) Log: Battle: %d Select_player %d",battle,select_player);
closemode(); closemode();
printf("Program zpsobil bˆhovou chybu a bude ukon‡en\n" printf("Program zp<EFBFBD>sobil b<>hovou chybu a bude ukon<6F>en\n"
"Posledn¡ zpracov van  data mˆla rukojeŸ ‡¡slo %xh\n",memman_handle); "Posledn<EFBFBD> zpracov<6F>van<61> data m<>la rukoje<6A> <20><>slo %xh\n",memman_handle);
printf("Map: %s Sector %d Direction %d\n",level_fname==NULL?"<unknown>":level_fname,viewsector,viewdir); printf("Map: %s Sector %d Direction %d\n",level_fname==NULL?"<unknown>":level_fname,viewsector,viewdir);
printf("Nyn¡ se program pokus¡ uloit hru...\n\n"); printf("Nyn<EFBFBD> se program pokus<75> ulo<6C>it hru...\n\n");
autosave_enabled=1; autosave_enabled=1;
autosave(); autosave();
printf("Hra byla £spˆ¨nˆ uloena pod n zvem AUTOSAVE\n"); printf("Hra byla <EFBFBD>sp<EFBFBD><EFBFBD>n<EFBFBD> ulo<6C>ena pod n<>zvem AUTOSAVE\n");
exit(0); exit(0);
} }
} }
@ -943,7 +911,7 @@ void swap_error_exception()
"zaplnen. Uvolnete prosim nejake misto na odkladacim disku, nebo zmente \n" "zaplnen. Uvolnete prosim nejake misto na odkladacim disku, nebo zmente \n"
"adresar odkladani na jednotku, kde je vice mista"); "adresar odkladani na jednotku, kde je vice mista");
puts("Vase pozice bude ulozena pod nazvem AUTOSAVE\n" puts("Vase pozice bude ulozena pod nazvem AUTOSAVE\n"
"Pokud vsak mate pozice na stejnm disku jako odkladaci soubor (coz je\n" "Pokud vsak mate pozice na stejn<EFBFBD>m disku jako odkladaci soubor (coz je\n"
"zakladni nastaveni) bude ulozeni z 90% bohuzel neuspesne..."); "zakladni nastaveni) bude ulozeni z 90% bohuzel neuspesne...");
autosave_enabled=1; autosave_enabled=1;
autosave(); autosave();
@ -1030,7 +998,6 @@ SEND_LOG("(INIT) Initializing engine.",0,0);
/*SEND_LOG("(INIT) Loading DOS error handler.",0,0); /*SEND_LOG("(INIT) Loading DOS error handler.",0,0);
install_dos_error(device_error,(char *)getmem(4096)+4096);*/ install_dos_error(device_error,(char *)getmem(4096)+4096);*/
swap_error=swap_error_exception; swap_error=swap_error_exception;
sprintf(c,"%s%s",SWAPPATH,TEMP_FILE);
sprintf(d,"%s%s",pathtable[SR_DATA],"skeldal.ddl"); sprintf(d,"%s%s",pathtable[SR_DATA],"skeldal.ddl");
SEND_LOG("(INIT) Initializing memory manager",0,0); SEND_LOG("(INIT) Initializing memory manager",0,0);
init_manager(d,c); init_manager(d,c);
@ -1131,20 +1098,20 @@ void *map_keyboard(EVENT_MSG *msg,void **usr);
char doNotLoadMapState=0; char doNotLoadMapState=0;
static reload_map_handler(EVENT_MSG *msg,void **usr) static int reload_map_handler(EVENT_MSG *msg,void **usr)
{ {
extern char running_battle; extern char running_battle;
if (msg->msg==E_RELOADMAP) if (msg->msg==E_RELOADMAP)
{ {
int i; int i;
va_list list=msg->data; ReloadMapInfo *minfo=(ReloadMapInfo *)msg->data;
const char *fname=va_arg(list,const char *); const char *fname=minfo->fname;
int sektor=va_arg(list,int); int sektor=minfo->sektor;
strncpy(loadlevel.name,fname,sizeof(loadlevel.name)); strncpy(loadlevel.name,fname,sizeof(loadlevel.name));
loadlevel.start_pos=sektor; loadlevel.start_pos=sektor;
for(i=0;i<POCET_POSTAV;i++)postavy[i].sektor=loadlevel.start_pos; for(i=0;i<POCET_POSTAV;i++)postavy[i].sektor=loadlevel.start_pos;
SEND_LOG("(WIZARD) Load map '%s' %d",loadlevel.name,loadlevel.start_pos); SEND_LOG("(WIZARD) Load map '%s' %d",loadlevel.name,loadlevel.start_pos);
unwire_proc(); unwire_proc();
if (battle) konec_kola(); if (battle) konec_kola();
battle=0; battle=0;
running_battle=0; running_battle=0;
@ -1152,9 +1119,9 @@ extern char running_battle;
hl_ptr=ikon_libs; hl_ptr=ikon_libs;
destroy_fly_map(); destroy_fly_map();
load_items(); load_items();
kill_block(H_ENEMY); zneplatnit_block(H_ENEMY);
kill_block(H_SHOP_PIC); zneplatnit_block(H_SHOP_PIC);
kill_block(H_DIALOGY_DAT); zneplatnit_block(H_DIALOGY_DAT);
load_shops(); load_shops();
send_message(E_CLOSE_MAP); send_message(E_CLOSE_MAP);
} }
@ -1232,7 +1199,7 @@ static int do_config_skeldal(int num,int numdata,char *txt)
case 23:windowedzoom=numdata; case 23:windowedzoom=numdata;
case 24:monitor=numdata; case 24:monitor=numdata;
case 25:if (VERSIONNUM<numdata) case 25:if (VERSIONNUM<numdata)
MessageBox(NULL,"Pozor! Hra je starsi verze, nez vyzaduje dobrodruzstvi. Ve vlastnim zajmu si stahnete novou verzi, protoze toto dobrodruzstvi nemusi byt s aktualni verzi dohratelne","Chybna verze hry",MB_OK); display_error("Pozor! Hra je starsi verze, nez vyzaduje dobrodruzstvi. Ve vlastnim zajmu si stahnete novou verzi, protoze toto dobrodruzstvi nemusi byt s aktualni verzi dohratelne");
break; break;
case 26:refresh=numdata; case 26:refresh=numdata;
default:num-=CESTY_POS; default:num-=CESTY_POS;
@ -1246,7 +1213,7 @@ static int do_config_skeldal(int num,int numdata,char *txt)
} }
static void config_skeldal(char *line) static void config_skeldal(const char *line)
{ {
int ndata=0,i,maxi; int ndata=0,i,maxi;
@ -1300,7 +1267,7 @@ static void configure(char *filename)
SEND_LOG("(GAME) Done config.",0,0); SEND_LOG("(GAME) Done config.",0,0);
} }
static update_config() static int update_config()
{ {
SEND_LOG("(GAME) Updating config. file '%s'",CONFIG_NAME,NULL); SEND_LOG("(GAME) Updating config. file '%s'",CONFIG_NAME,NULL);
add_field_num(&cur_config,sinit[1].heslo,zoom_speed(-1)); add_field_num(&cur_config,sinit[1].heslo,zoom_speed(-1));
@ -1477,7 +1444,7 @@ static void game_big_circle(char enforced)
case -3: sprintf(buff,"Map file is corrupted!\n");break; case -3: sprintf(buff,"Map file is corrupted!\n");break;
default: sprintf(buff,"Error in string table at line %d",err);break; default: sprintf(buff,"Error in string table at line %d",err);break;
} }
MessageBox(NULL,buff,NULL,MB_OK|MB_ICONSTOP); display_error(buff);
exit(1); exit(1);
} }
viewsector=loadlevel.start_pos; viewsector=loadlevel.start_pos;
@ -1666,22 +1633,21 @@ void disable_intro()
update_config(); update_config();
} }
#include "crashdump.h"
void main(int argc,char *argv[]) void main(int argc,char *argv[])
{ {
char *c,rm; char *c,rm;
InitCrashDump();
if (argc>=3) rm=!strcmp(argv[1],"12345678");else rm=0; if (argc>=3) rm=!strcmp(argv[1],"12345678");else rm=0;
if (!rm) if (OtevriUvodniOkno()==0) return;
//OPEN_LOG("syslog"); //OPEN_LOG("syslog");
OPEN_LOG("con"); OPEN_LOG("con");
SEND_LOG("START --------------------------",0,0); SEND_LOG("START --------------------------",0,0);
argv; argv;
c=getcwd(NULL,_MAX_PATH+1); c=getcwd(NULL,0);
pathtable[SR_SAVES]=getmem(strlen(c)+2); pathtable[SR_SAVES]=getmem(strlen(c)+2);
strcpy(pathtable[SR_SAVES],c); strcpy(pathtable[SR_SAVES],c);
strcat(pathtable[SR_SAVES],"\\"); strcat(pathtable[SR_SAVES],"\\");
@ -1691,9 +1657,8 @@ void main(int argc,char *argv[])
mman_pathlist=pathtable; mman_pathlist=pathtable;
zoom_speed(1); zoom_speed(1);
turn_speed(1); turn_speed(1);
SetEnvironmentVariable("BSVER",VERSION);
configure(CONFIG_NAME); configure(CONFIG_NAME);
if ((argc>=2 || SelectAdventure()) && !rm ) if ((argc>=2 ) && !rm )
{ {
char *adventure; char *adventure;
char **config=cur_config; char **config=cur_config;
@ -1702,8 +1667,7 @@ void main(int argc,char *argv[])
mman_pathlist[SR_ORGMUSIC]=(char *)getmem(strlen(music)+1); mman_pathlist[SR_ORGMUSIC]=(char *)getmem(strlen(music)+1);
strcpy(mman_pathlist[SR_ORGMUSIC],music); strcpy(mman_pathlist[SR_ORGMUSIC],music);
if (argc<2) adventure=GetSelectedAdventure(); adventure=argv[1];
else adventure=argv[1];
cur_config=NULL; cur_config=NULL;
SEND_LOG("(GAME) Starting new adventure: %s",adventure,0); SEND_LOG("(GAME) Starting new adventure: %s",adventure,0);
configure(adventure); configure(adventure);
@ -1735,21 +1699,17 @@ void main(int argc,char *argv[])
/* position(200,200); /* position(200,200);
set_font(H_FBIG,RGB(200,200,200)); set_font(H_FBIG,RGB(200,200,200));
outtext("Ahoj lidi"); outtext("Ahoj lidi");
showview(0,0,0,0);*/ showview(0,0,0,0);*/
escape(); escape();
update_config(); update_config();
closemode(); closemode();
} }
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{ #include "version.h"
main(__argc, __argv);
}
#include "..\game\version.h"
int GetExeVersion() int GetExeVersion()
{ {
return VERSIONNUM; return VERSIONNUM;
} }

View file

@ -1,5 +1,4 @@
#include <skeldal_win.h> #include <skeldal_win.h>
#include <debug.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <mem.h> #include <mem.h>
@ -9,10 +8,9 @@
#include <event.h> #include <event.h>
#include "globals.h" #include "globals.h"
#include <math.h> #include <math.h>
//#include <i86.h> //Sound and Nosound
#include <strlite.h> #include <strlite.h>
#include <io.h>
#include <unistd.h>
#define PL_RANDOM 1 #define PL_RANDOM 1
#define PL_FORWARD 2 #define PL_FORWARD 2
#define PL_FIRST 3 #define PL_FIRST 3
@ -35,7 +33,7 @@ typedef struct snd_info
static short chan_state[CHANNELS]; static short chan_state[CHANNELS];
static short track_state[TRACKS]; static short track_state[TRACKS];
static short sample_volume=255; short sample_volume=255;
//static struct t_wave wav_last_head; //static struct t_wave wav_last_head;
//static int wav_last_size; //static int wav_last_size;
@ -405,8 +403,8 @@ void create_playlist(char *playlist)
for (c=playlist;c!=NULL;c=strchr(c+1,' ')) for (c=playlist;c!=NULL;c=strchr(c+1,' '))
{ {
char *e; char *e;
char d[MAX_PATH+2]="!"; char d[MAX_FILESYSTEM_PATH+2]="!";
strncat(d,c+j,MAX_PATH);d[MAX_PATH+1]=0;j=1; strncat(d,c+j,MAX_FILESYSTEM_PATH);d[MAX_FILESYSTEM_PATH+1]=0;j=1;
if ((e=strchr(d,32))!=NULL) *e=0; if ((e=strchr(d,32))!=NULL) *e=0;
str_add(&cur_playlist,d); str_add(&cur_playlist,d);
} }
@ -426,7 +424,7 @@ void create_playlist(char *playlist)
void play_next_music(char **c) void play_next_music(char **c)
{ {
int i,step; int i,step;
static char d[MAX_PATH]; static char d[MAX_FILESYSTEM_PATH];
*c=NULL; *c=NULL;
if (cur_playlist==NULL) return; if (cur_playlist==NULL) return;
@ -445,9 +443,9 @@ void play_next_music(char **c)
} }
while (step); while (step);
playing_track=i; playing_track=i;
sprintf_s(d,sizeof(d),"%s%s",pathtable[SR_MUSIC],cur_playlist[i]+1); snprintf(d,sizeof(d),"%s%s",pathtable[SR_MUSIC],cur_playlist[i]+1);
if (_access(d,0) == -1) if (access(d,0) == -1)
sprintf_s(d,sizeof(d),"%s%s",pathtable[SR_ORGMUSIC],cur_playlist[i]+1); snprintf(d,sizeof(d),"%s%s",pathtable[SR_ORGMUSIC],cur_playlist[i]+1);
cur_playlist[i][0]=33; cur_playlist[i][0]=33;
remain_play--; remain_play--;
*c=d; *c=d;

View file

@ -3,7 +3,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <event.h> #include <event.h>
#include <conio.h>
#include <zvuk.h> #include <zvuk.h>
#include <bgraph.h> #include <bgraph.h>
#include <bmouse.h> #include <bmouse.h>
@ -30,7 +29,7 @@ HUM_ACTION spell_string;
short caster; short caster;
short vybrana_zbran=-1; short vybrana_zbran=-1;
char plr_switcher[POCET_POSTAV]; char plr_switcher[POCET_POSTAV];
static autostart_round=0; static int autostart_round=0;
char autoattack=0; char autoattack=0;
char immortality=0; char immortality=0;
@ -250,7 +249,7 @@ void presun_krok(EVENT_MSG *msg,void **user)
user; user;
if (msg->msg==E_INIT) return; if (msg->msg==E_INIT) return;
if (msg->msg==E_DONE) return; if (msg->msg==E_DONE) return;
postavy[select_player].actions--; postavy[select_player].actions--;
if (hromadny_utek) if (hromadny_utek)
{ {
int i; int i;
@ -287,7 +286,7 @@ char q_zacit_souboj(TMOB *p,int d,short sector)
int ss; int ss;
int i; int i;
if (p->vlastnosti[VLS_KOUZLA] & (SPL_STONED | SPL_FEAR)) return 0; if (p->vlastnosti[VLS_KOUZLA] & (SPL_STONED | SPL_FEAR)) return 0;
dsee++; dsee++;
// if (battle) return 1; // if (battle) return 1;
prekvapeni=0; prekvapeni=0;
@ -371,7 +370,7 @@ int vypocet_zasahu(short *utocnik,short *obrance, int chaos,int zbran,int bonus
zasah=utok-(ddef=obrana); zasah=utok-(ddef=obrana);
} }
if (zasah<0) zasah=0; if (zasah<0) zasah=0;
if (zasah>0) zasah+=utocnik[VLS_DAMAGE],zasah=max(zasah,1); if (zasah>0) zasah+=utocnik[VLS_DAMAGE],zasah=MAX(zasah,1);
ddostal=zasah; ddostal=zasah;
zasah=zasah+mutok; zasah=zasah+mutok;
if (zasah>0) if (zasah>0)
@ -382,7 +381,7 @@ int vypocet_zasahu(short *utocnik,short *obrance, int chaos,int zbran,int bonus
if (flg & SPL_SANC) zasah/=2; if (flg & SPL_SANC) zasah/=2;
if (flg & SPL_HSANC) zasah/=4; if (flg & SPL_HSANC) zasah/=4;
if (flg & SPL_TVAR) zasah=-zasah; if (flg & SPL_TVAR) zasah=-zasah;
return zasah; return zasah;
} }
void rozhodni_o_poradi() void rozhodni_o_poradi()
@ -416,7 +415,7 @@ void rozhodni_o_poradi()
} }
void hrat_souboj() void hrat_souboj()
{ {
static counter=0; static int counter=0;
char cond=ms_last_event.y>378 && ms_last_event.x>510 && cur_mode!=MD_PRESUN; char cond=ms_last_event.y>378 && ms_last_event.x>510 && cur_mode!=MD_PRESUN;
if (cond) schovej_mysku(); if (cond) schovej_mysku();
redraw_scene(); redraw_scene();
@ -648,7 +647,7 @@ T_CLK_MAP clk_end_game[]=
EVENT_PROC(end_game_end_phase) EVENT_PROC(end_game_end_phase)
{ {
static wait=0; static int wait=0;
WHEN_MSG(E_TIMER) WHEN_MSG(E_TIMER)
{ {
if (pass_zavora) return; if (pass_zavora) return;
@ -733,17 +732,17 @@ void wire_presun_postavy()
cancel_render=1; cancel_render=1;
} }
static DWORD SPozdrzeno=0; static uint32_t SPozdrzeno=0;
static char JePozdrzeno() char JePozdrzeno()
{ {
return GetTickCount()<SPozdrzeno; return get_game_tick_count()<SPozdrzeno;
} }
void pozdrz_akci() void pozdrz_akci()
{ {
int battlespeed=gamespeed-gamespeed*gamespeedbattle/5; int battlespeed=gamespeed-gamespeed*gamespeedbattle/5;
SPozdrzeno=GetTickCount()+battlespeed*2000/6; SPozdrzeno=get_game_tick_count()+battlespeed*2000/6;
} }
/*void pozdrz_akci_proc(THE_TIMER *x) /*void pozdrz_akci_proc(THE_TIMER *x)
@ -781,7 +780,7 @@ void prejdi_na_pohled(THUMAN *p)
int hromadny_utek; int hromadny_utek;
static int UtekHromadne(int sector) static int UtekHromadne(int sector)
{ {
int minact=999; int minact=999;
int i; int i;
int p=0; int p=0;
@ -797,15 +796,15 @@ static int UtekHromadne(int sector)
} }
void utek_postavy(THUMAN *p) void utek_postavy(THUMAN *p)
{ {
int minact=0; int minact=0;
p->actions=p->utek; p->actions=p->utek;
if (game_extras & EX_GROUP_FLEE && (minact=UtekHromadne(p->sektor))!=0) if (game_extras & EX_GROUP_FLEE && (minact=UtekHromadne(p->sektor))!=0)
{ {
int i; int i;
p->actions=minact; p->actions=minact;
hromadny_utek=p->sektor; hromadny_utek=p->sektor;
for (i=0;i<POCET_POSTAV;i++) if (postavy[i].used && postavy[i].sektor==p->sektor) for (i=0;i<POCET_POSTAV;i++) if (postavy[i].used && postavy[i].sektor==p->sektor)
{ {
int wf=weigth_defect(postavy+i)+2; int wf=weigth_defect(postavy+i)+2;
postavy[i].kondice-=minact*wf; postavy[i].kondice-=minact*wf;
@ -831,7 +830,7 @@ void utek_postavy(THUMAN *p)
prejdi_na_pohled(p); prejdi_na_pohled(p);
} }
int trace_path(sector,dir) int trace_path(int sector,int dir)
{ {
int mm,p,c=5; int mm,p,c=5;
int r=rnd(2); int r=rnd(2);
@ -1111,9 +1110,9 @@ static char StrachPostavy(THUMAN *p)
for(select_player=0;select_player<6;select_player++) if (postavy+select_player==p) break; for(select_player=0;select_player<6;select_player++) if (postavy+select_player==p) break;
bott_draw(0); bott_draw(0);
labyrinth_find_path(p->sektor,65535,SD_PLAY_IMPS,valid_sectors,NULL); 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); ln=labyrinth_find_path(p->sektor,last_sector,SD_PLAY_IMPS,valid_sectors,&cesta);
if (cesta[0]==0) {free(cesta);return 0;} if (cesta[0]==0) {free(cesta);return 0;}
for (i=0;i<6 && cesta[i] && p->kondice ;i++) for (i=0;i<6 && cesta[i] && p->kondice ;i++)
{ {
int dir; int dir;
for (dir=0;dir<4;dir++) if (map_sectors[p->sektor].step_next[dir]==cesta[i]) break; for (dir=0;dir<4;dir++) if (map_sectors[p->sektor].step_next[dir]==cesta[i]) break;
@ -1122,7 +1121,7 @@ static char StrachPostavy(THUMAN *p)
p->sektor=cesta[i]; p->sektor=cesta[i];
build_player_map(); build_player_map();
prejdi_na_pohled(p); prejdi_na_pohled(p);
Sleep(200); sleep_ms(200);
p->kondice-=wf; p->kondice-=wf;
} }
p->provadena_akce+=p->programovano-1; p->provadena_akce+=p->programovano-1;
@ -1202,7 +1201,7 @@ void jadro_souboje(EVENT_MSG *msg,void **unused) //!!!! Jadro souboje
switch(p->provadena_akce->action) switch(p->provadena_akce->action)
{ {
case AC_MOVE: case AC_MOVE:
{ {
int wf=weigth_defect(p)+1; int wf=weigth_defect(p)+1;
p->actions++; p->actions++;
p->kondice-=p->actions*wf; p->kondice-=p->actions*wf;
@ -1767,7 +1766,7 @@ char mask_click_help_clear(int id,int xa,int ya,int xr,int yr)
static void zahajit_kolo(char prekvapeni) static void zahajit_kolo(char prekvapeni)
{ {
int i,j; int i,j;
for(i=0;i<POCET_POSTAV;i++) for(i=0;i<POCET_POSTAV;i++)
{ {
THUMAN *p=&postavy[i]; THUMAN *p=&postavy[i];
@ -1882,7 +1881,7 @@ void souboje_turn(char smer)
norefresh=1; norefresh=1;
hold_timer(TM_BACK_MUSIC,1); hold_timer(TM_BACK_MUSIC,1);
viewdir=(viewdir+smer)&3; viewdir=(viewdir+smer)&3;
if (GetKeyState(VK_SHIFT) & 0x80) fix_group_direction(); if (get_shift_key_state()) fix_group_direction();
else postavy[select_player].direction=viewdir; else postavy[select_player].direction=viewdir;
render_scene(viewsector,viewdir); render_scene(viewsector,viewdir);
hide_ms_at(387); hide_ms_at(387);
@ -2230,7 +2229,7 @@ static void rozdelit_skryte_bonusy(THUMAN *hu)
short *vls,*vls2; short *vls,*vls2;
short p[]={VLS_SILA,VLS_SMAGIE,VLS_OBRAT}; short p[]={VLS_SILA,VLS_SMAGIE,VLS_OBRAT};
short h[3]; short h[3];
register i; int i;
vls=hu->vlastnosti; vls=hu->vlastnosti;
vls2=hu->stare_vls; vls2=hu->stare_vls;
@ -2349,7 +2348,7 @@ char player_check_death(THUMAN *p, char afterround)
else map_coord[p->sektor].flags |= MC_DEAD_PLR; else map_coord[p->sektor].flags |= MC_DEAD_PLR;
GlobEvent(MAGLOB_ONDEADMAN+p->female,viewsector,viewdir); GlobEvent(MAGLOB_ONDEADMAN+p->female,viewsector,viewdir);
return 1; return 1;
} }
else else
{ {
if (p->lives<0) p->lives=0; if (p->lives<0) p->lives=0;
@ -2378,7 +2377,7 @@ char player_hit(THUMAN *p,int zraneni,char manashield)
h+=rnd(2); h+=rnd(2);
if (!mute_hit_sound) if (!mute_hit_sound)
{ {
if (GlobEvent(MAGLOB_ONHITMAN+p->female,p->sektor,p->direction)) if (GlobEvent(MAGLOB_ONHITMAN+p->female,p->sektor,p->direction))
play_sample_at_sector(h,p->sektor,viewsector,0,0); play_sample_at_sector(h,p->sektor,viewsector,0,0);
tt=add_to_timer(TM_CLEAR_ZASAHY,100+rnd(100),1,vymaz_zasahy);tt->userdata[0]=p-postavy;tt->userdata[1]=p->dostal; tt=add_to_timer(TM_CLEAR_ZASAHY,100+rnd(100),1,vymaz_zasahy);tt->userdata[0]=p-postavy;tt->userdata[1]=p->dostal;
} }

View file

@ -20,7 +20,7 @@ static void event_error(char *text,int number)
char buff[256]; char buff[256];
closemode(); closemode();
sprintf(buff,"%s\n Specproc num: %d\n",text,number); sprintf(buff,"%s\n Specproc num: %d\n",text,number);
MessageBox(NULL,buff,NULL,MB_OK|MB_ICONSTOP); display_error(buff);
exit(1); exit(1);
} }
@ -243,9 +243,9 @@ static void OtocObrazPodleMatice(float mx[3][2], word *picture)
int oldy=y-180; int oldy=y-180;
int newx=toInt(oldx*mx[0][0]+oldy*mx[1][0]+320); int newx=toInt(oldx*mx[0][0]+oldy*mx[1][0]+320);
int newy=toInt(oldx*mx[0][1]+oldy*mx[1][1]+180); int newy=toInt(oldx*mx[0][1]+oldy*mx[1][1]+180);
if (newx>=0 && newx<640 && newy>=0 && newy<360) if (newx>=0 && newx<640 && newy>=0 && newy<360)
trg[x]=picture[newx+640*newy]; trg[x]=picture[newx+640*newy];
else else
trg[x]=0; trg[x]=0;
} }
} }
@ -256,7 +256,7 @@ static void OtaceniObrazu()
float mx[3][2]; float mx[3][2];
int maxtime=500; int maxtime=500;
int lasttime=GetTickCount(); int lasttime=get_game_tick_count();
int curtime; int curtime;
get_picture(0,17,640,360,picture); get_picture(0,17,640,360,picture);
do do
@ -265,7 +265,7 @@ static void OtaceniObrazu()
float uhel; float uhel;
float cosuhel; float cosuhel;
float sinuhel; float sinuhel;
curtime=GetTickCount()-lasttime; curtime=get_game_tick_count()-lasttime;
phase=curtime/(float)maxtime; phase=curtime/(float)maxtime;
if (phase>1.0f) phase=1.0f; if (phase>1.0f) phase=1.0f;
uhel=phase*3.14159265; uhel=phase*3.14159265;
@ -280,7 +280,7 @@ static void OtaceniObrazu()
do_events(); do_events();
} }
while (curtime<maxtime); while (curtime<maxtime);
Sleep(1000); sleep_ms(1000);
free(picture); free(picture);
} }
@ -373,7 +373,7 @@ MAP_PROC(map_identify)
//Mob Procs --------------------------------------- //Mob Procs ---------------------------------------
static get_dangerous_place(int sector) static int get_dangerous_place(int sector)
{ {
int i; int i;
@ -496,7 +496,7 @@ static char mob_strelec(int event_type,TMOB *m)
i=i+2&3; i=i+2&3;
if (mob_check_next_sector(m->sector,i,m->stay_strategy & MOB_BIG,0)) if (mob_check_next_sector(m->sector,i,m->stay_strategy & MOB_BIG,0))
{ {
int l=4,z,max=RAND_MAX+1; int l=4,z,max=RAND_MAX;
for(i=0;i<4;i++) for(i=0;i<4;i++)
if (!mob_check_next_sector(m->sector,i,m->stay_strategy & MOB_BIG,0)) if (!mob_check_next_sector(m->sector,i,m->stay_strategy & MOB_BIG,0))
{ {
@ -682,7 +682,7 @@ char call_mob_event(int event_number,int event_type,TMOB *m)
{ {
if (!event_number) return 0; if (!event_number) return 0;
if (event_number>=SP_MOB_TAB_SIZE) if (event_number>=SP_MOB_TAB_SIZE)
event_error("Nestvra pouˇva neplatnou specproc.",event_number); event_error("Nestv<EFBFBD>ra pou<6F><75>va neplatnou specproc.",event_number);
cur_event_number=event_number; cur_event_number=event_number;
return sp_mob_table[event_number](event_type,m); return sp_mob_table[event_number](event_type,m);
} }
@ -691,7 +691,7 @@ char call_item_event(int event_number,int event_type,short *ptr,THUMAN *p)
{ {
if (!event_number) return 0; if (!event_number) return 0;
if (event_number>=SP_ITEM_TAB_SIZE) if (event_number>=SP_ITEM_TAB_SIZE)
event_error("€ˇslo ud losti u v<>ci je neplatn. Specproc nenˇ definov na.",event_number); 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; cur_event_number=event_number;
return sp_item_table[event_number](event_type,ptr,p); return sp_item_table[event_number](event_type,ptr,p);
} }
@ -700,7 +700,7 @@ char call_map_event(int event_number,int sector,int side,int value,int event)
{ {
if (!event_number) return 0; if (!event_number) return 0;
if (event_number>=SP_MAP_TAB_SIZE) if (event_number>=SP_MAP_TAB_SIZE)
event_error("Neplatn ‡ˇslo ud losti na st<73>n<EFBFBD>. Specproc s tˇmto ‡ˇslem nenˇ definov na.",event_number); 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; cur_event_number=event_number;
return sp_map_table[event_number](sector,side,value,event); return sp_map_table[event_number](sector,side,value,event);
} }

26
game/temp_storage.h Normal file
View file

@ -0,0 +1,26 @@
///store to temp storage
void temp_storage_store(const char *name, const void *data, long size);
///find in temp storage - returns -1 = not found, otherwise size of data
long temp_storage_find(const char *name);
///retrieve from temp storage (returns same as find)
long temp_storage_retrieve(const char *name, void *data, long size);
void temp_storage_list(void (*callback)(const char *, void *), void *context);
void temp_storage_clear();
typedef struct _temp_storage_file_rd TMPFILE_RD;
typedef struct _temp_storage_file_wr TMPFILE_WR;
TMPFILE_RD *temp_storage_open(const char *name);
TMPFILE_WR *temp_storage_create(const char *name);
TMPFILE_WR *temp_storage_append(const char *name);
void temp_storage_close_rd(TMPFILE_RD *f);
void temp_storage_close_wr(TMPFILE_WR *f);
void temp_storage_write(const void *data, unsigned long size, TMPFILE_WR *f);
unsigned long temp_storage_read(void *data, unsigned long size, TMPFILE_RD *f);
void temp_storage_skip(TMPFILE_RD *f, int bytes);

View file

@ -1,6 +1,5 @@
#include <stdio.h> #include <stdio.h>
#include <malloc.h> #include <malloc.h>
#include <dos.h>
#include <graph.h> #include <graph.h>
#include <mem.h> #include <mem.h>
#include <conio.h> #include <conio.h>
@ -83,9 +82,9 @@ int startsect;
int startsid; int startsid;
char cz_table_1[]=" 1!3457­908+,-./+ˆ¨‡©‘˜ ¡\"?=:_2ABCDEFGHIJKLMNOPQRSTUVWXYZ£\\)6=;abcdefghijklmnopqrstuvwxyz/|(; "; char cz_table_1[]=" 1!3457<EFBFBD>908+,-./<2F>+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD>?=:_2ABCDEFGHIJKLMNOPQRSTUVWXYZ<59>\\)6=;abcdefghijklmnopqrstuvwxyz/|(; ";
char cz_table_2[]=" !\"#$%&'()*+,-./0123456789:;<=>?@<40>BCD<43>FGHJKŠMN•PQ«ST—VWX<EFBFBD>Z[\\]^_` bcdfgh¡jk<6A>mn¢pqªst£vwx˜z{|}~ "; char cz_table_2[]=" !\"#$%&'()*+,-./0123456789:;<=>?@<40>BCD<43>FGH<EFBFBD>JK<EFBFBD>MN<EFBFBD>PQ<EFBFBD>ST<EFBFBD>VWX<EFBFBD>Z[\\]^_`<60>bcd<63>fgh<67>jk<6A>mn<6D>pq<70>st<73>vwx<77>z{|}~ ";
char cz_table_3[]=" !\"#$%&'()*+,-./0123456789:;<=>?@AB€…‰FGHIJKœM¥§PQ<EFBFBD>†¦VWXY[\\]^_`ab‡ƒˆfghijkŒm¤“pq©¨Ÿvwxy{|}~ "; char cz_table_3[]=" !\"#$%&'()*+,-./0123456789:;<=>?@AB<EFBFBD><EFBFBD><EFBFBD>FGHIJK<EFBFBD>M<EFBFBD><EFBFBD>PQ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>VWXY<EFBFBD>[\\]^_`ab<61><62><EFBFBD>fghijk<6A>m<EFBFBD><6D>pq<70><71><EFBFBD><EFBFBD>vwxy<78>{|}~ ";
char *cz_key_tabs[]={cz_table_1,cz_table_2,cz_table_3}; char *cz_key_tabs[]={cz_table_1,cz_table_2,cz_table_3};
word keyconv(word key) word keyconv(word key)

View file

@ -1,7 +1,7 @@
#define VERSION_MAJOR 1 #define VERSION_MAJOR 1
#define VERSION_MAJORT "1" #define VERSION_MAJORT "1"
#define VERSION_MINOR 2 #define VERSION_MINOR 3
#define VERSION_MINORT "2" #define VERSION_MINORT "3"
#define VERSION_BUILD 17 #define VERSION_BUILD 17
#define VERSION_BUILDT "17" #define VERSION_BUILDT "17"

View file

@ -1,17 +1,11 @@
#include <skeldal_win.h> #include <skeldal_win.h>
#include <debug.h>
#include <dos.h>
#include <io.h>
#include <bios.h> #include <bios.h>
#include <stdlib.h> #include <stdlib.h>
#include <ctype.h> #include <ctype.h>
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include <conio.h>
#include <malloc.h> #include <malloc.h>
#include <mem.h> #include <mem.h>
#include <dos.h>
#include <direct.h>
#include <types.h> #include <types.h>
#include <bgraph.h> #include <bgraph.h>
#include <event.h> #include <event.h>
@ -23,34 +17,18 @@
#include <gui.h> #include <gui.h>
#include <basicobj.h> #include <basicobj.h>
#include <time.h> #include <time.h>
#include <stdarg.h>
#include "globals.h" #include "globals.h"
#include <resource.h>
#include <windowsx.h>
void kamenik2windows(const char *src, int size, char *trg); void kamenik2windows(const char *src, int size, char *trg);
#define BREAK #define BREAK
static HWND hWizardDlg=NULL;
static HWND hWizardText;
static HFONT hfCourier;
static void wzprintf(const char *text,...) static void wzprintf(const char *text,...)
{ {
int len=GetWindowTextLength(hWizardText); va_list lst;
char *c=(char *)alloca(len+1024); va_start(lst, text);
char *d; vprintf(text, lst);
va_list args;
GetWindowText(hWizardText,c,len+1024);
if (len>10000) c+=1024;
d=strchr(c,0);
va_start(args,text);
_vsnprintf(d,1020,text,args);
SetWindowText(hWizardText,c);
len=strlen(c);
SendMessage(hWizardText,EM_SETSEL,len,len);
SendMessage(hWizardText,EM_SCROLLCARET,0,0);
} }
static void wzputs(const char *text) static void wzputs(const char *text)
@ -61,118 +39,17 @@ static void wzputs(const char *text)
static void wzcls() static void wzcls()
{ {
SetWindowText(hWizardText,"");
} }
static LRESULT InputWindow(HWND hDlg,UINT msg, WPARAM wParam,LPARAM lParam)
{
static char *buff;
switch (msg)
{
case WM_INITDIALOG:
buff=(char *)lParam;
SetDlgItemText(hDlg,IDC_PROMPT,buff);
hDlg=GetWindow(hDlg,GW_OWNER);
EnableWindow(hDlg,TRUE);
return 0;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDCANCEL: EndDialog(hDlg,0);break;
case IDOK:
GetDlgItemText(hDlg,IDC_VALUE,buff,1020);
EndDialog(hDlg,1);
break;
}
break;
default: return 0;
}
return 1;
}
static LRESULT CALLBACK ListWindow(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
case IDCANCEL: PostQuitMessage(LOWORD(wParam));break;
case IDC_LIST: if (HIWORD(wParam)==LBN_DBLCLK) PostQuitMessage(IDOK);break;
default: return 0;
}
default: return 0;
}
return 1;
}
static HWND PrepareListWindow(HWND parent)
{
HWND res;
RECT rc1,rc2;
GetWindowRect(parent,&rc1);
EnableWindow(parent,0);
res=CreateDialog(GetModuleHandle(0),MAKEINTRESOURCE(IDD_LISTDIALOG),parent,(DLGPROC)ListWindow);
GetWindowRect(res,&rc2);
rc2.right=rc2.right-rc2.left;
rc2.bottom=rc2.bottom-rc2.top;
rc2.left=(rc1.left+rc1.right-rc2.right)/2;
rc2.top=(rc1.top+rc1.bottom-rc2.right)/2;
SetWindowPos(res,0,rc2.left,rc2.top,rc2.right,rc2.bottom,SWP_NOZORDER);
ShowWindow(res,SW_SHOW);
return res;
}
static void CloseListWindow(HWND wnd)
{
HWND parent=GetParent(wnd);
DestroyWindow(wnd);
EnableWindow(parent,1);
}
static int PumpDialogMessages(HWND dlg)
{
MSG msg;
while (GetMessage(&msg,0,0,0))
{
if (!IsDialogMessage(dlg,&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
static int wzscanf(const char *prompt, const char *format,...) static int wzscanf(const char *prompt, const char *format,...)
{ {
char buff[1024]; va_list lst;
va_list args; va_start(lst, format);
unsigned long data[10]; return vscanf(format, lst);
int i;
static char notallowed=0;
if (notallowed) return 0;
notallowed=1;
strcpy(buff,prompt);
if (DialogBoxParam(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_INPUTWINDOW),GetActiveWindow(),(DLGPROC)InputWindow,(LPARAM)buff)==0)
{
notallowed=0;
return 0;
}
notallowed=0;
va_start(args,format);
for (i=0;i<10;i++) data[i]=va_arg(args,unsigned long);
return sscanf(buff,format,data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8],data[9]);
} }
char *side_flags[]= char *side_flags[]=
{ {
"AUTOMAP", "AUTOMAP",
@ -234,32 +111,8 @@ char *mc_flags[]=
"!SUMMON" "!SUMMON"
}; };
void mman_scan(int action) void mman_scan(int )
{ {
extern char screenstate;
static pos=0,zavora=0;
MEMORYSTATUS mmi;
char c[10];
if (screenstate && !zavora)
{
zavora=1;
switch(action)
{
case MMA_SWAP:curcolor=RGB555(31,0,0);break;
case MMA_READ:curcolor=RGB555(0,31,0);break;
case MMA_SWAP_READ:curcolor=RGB555(0,0,31);break;
case MMA_FREE:curcolor=RGB555(31,31,31);break;
}
bar(pos,0,pos+16,16);
get_mem_info(&mmi);
set_font(H_FBOLD,RGB555(31,31,31));
curcolor=0;
bar(16,0,66,16);
position(16,0);sprintf(c,"%d",mmi.dwAvailPageFile/1024);
outtext(c);
showview(pos,0,66,16);
zavora=0;
}
} }
void show_flags(int number,char **flags,char nums) void show_flags(int number,char **flags,char nums)
@ -418,6 +271,7 @@ static char raise_death(void)
return 0; return 0;
} }
/*
static char raise_killed_monster(HWND hDlg) static char raise_killed_monster(HWND hDlg)
{ {
HWND listdlg=PrepareListWindow(hDlg); HWND listdlg=PrepareListWindow(hDlg);
@ -426,7 +280,7 @@ static char raise_death(void)
int i; int i;
int res; int res;
for (i=0;i<MAX_MOBS;i++) if (~mobs[i].vlajky & MOB_LIVE && mobs[i].cislo_vzoru!=0) for (i=0;i<MAX_MOBS;i++) if (~mobs[i].vlajky & MOB_LIVE && mobs[i].cislo_vzoru!=0)
{ {
int p; int p;
_snprintf(buff,sizeof(buff),"%4d. %s (sector: %d home %d)",i,mobs[i].name,mobs[i].sector,mobs[i].home_pos); _snprintf(buff,sizeof(buff),"%4d. %s (sector: %d home %d)",i,mobs[i].name,mobs[i].sector,mobs[i].home_pos);
@ -451,7 +305,7 @@ static char raise_death(void)
CloseListWindow(listdlg); CloseListWindow(listdlg);
return 1; return 1;
} }
*/
void unaffect(); void unaffect();
extern char immortality; extern char immortality;
extern char nohassle; extern char nohassle;
@ -548,7 +402,7 @@ static char display_game_status(void)
s=map_sides+viewsector*4+viewdir; s=map_sides+viewsector*4+viewdir;
wzprintf("Sector: (%d) Podlaha %d Strop %d Cil akce %d Smer akce %d Akce %d\r\n", wzprintf("Sector: (%d) Podlaha %d Strop %d Cil akce %d Smer akce %d Akce %d\r\n",
ss->sector_type, ss->floor,ss->ceil,ss->sector_tag,ss->side_tag,ss->action); ss->sector_type, ss->floor,ss->ceil,ss->sector_tag,ss->side_tag,ss->action);
wzprintf(" Vychody: Sev %d Vych %d Jih %d Z p %d\r\n",ss->step_next[0],ss->step_next[1],ss->step_next[2],ss->step_next[3]); wzprintf(" Vychody: Sev %d Vych %d Jih %d Z<EFBFBD>p %d\r\n",ss->step_next[0],ss->step_next[1],ss->step_next[2],ss->step_next[3]);
wzprintf(" Vlajky: %02X %02X ",ss->flags,map_coord[viewsector].flags);show_flags(map_coord[viewsector].flags,mc_flags,12); wzprintf(" Vlajky: %02X %02X ",ss->flags,map_coord[viewsector].flags);show_flags(map_coord[viewsector].flags,mc_flags,12);
wzputs("\r\n"); wzputs("\r\n");
wzprintf("Stena: Prim %d Sec %d Obl %d Anim_prim %d/%d Anim_sec %d/%d\r\n", wzprintf("Stena: Prim %d Sec %d Obl %d Anim_prim %d/%d Anim_sec %d/%d\r\n",
@ -562,153 +416,6 @@ static char display_game_status(void)
return 0; return 0;
} }
static LRESULT WizardDlgProc(HWND hDlg,UINT msg, WPARAM wParam,LPARAM lParam)
{
int i;
switch (msg)
{
case WM_INITDIALOG:
hWizardDlg=hDlg;
hWizardText=GetDlgItem(hDlg,IDC_OUTPUT);
SendMessage(hWizardText,WM_SETFONT,(WPARAM)hfCourier,1);
display_game_status();
SetTimer(hDlg,10,20,NULL);
return 0;
case WM_TIMER: do_events();return 1;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDCANCEL: EndDialog(hDlg,0);return 0;
case IDC_CLEARMAP:
{
HWND listwnd=PrepareListWindow(hDlg);
HWND list=GetDlgItem(listwnd,IDC_LIST);
int res;
ListBox_AddString(list,"Clear Monsters");
ListBox_AddString(list,"Clear Items");
res=PumpDialogMessages(listwnd);
if (res==IDOK)
{
if (ListBox_GetSel(list,0))
{
for(i=0;i<MAX_MOBS;i++)
if (mobs[i].vlajky & MOB_LIVE)
{
vybrana_zbran=-1;
select_player=-1;
mob_hit(mobs+i,mobs[i].lives);
}
}
if (ListBox_GetSel(list,1))
{
for(i=0;i<mapsize*4;i++)
{
destroy_items(map_items[i]);
free(map_items[i]);
map_items[i]=NULL;
}
for(i=0;i<vyk_max;i++)
{
destroy_items(map_vyk[i].items);
map_vyk[i].items[0]=0;
}
}
}
CloseListWindow(listwnd);
}
break;
case IDC_ADVENCE:
{
int i,j,c;
if (!wzscanf("Advence to level <postava -1=vsichni><uroven>:","%d %d",&i,&j)) return 0;
c=MessageBox(GetActiveWindow(),"Automaticky?","?",MB_YESNO|MB_ICONQUESTION);
if (i>0) advence_player(i-1,j,c==IDYES);else
for(i=0;i<POCET_POSTAV;i++) if (postavy[i].used) advence_player(i,j,c==IDYES);
return 0;
}
case IDC_GOTO:
{
char prompt[50];
sprintf(prompt,"Goto sector <1-%d>:",mapsize-1);
if (!wzscanf(prompt,"%d",&viewsector)) return 0;
chod_s_postavama(1);
SEND_LOG("(WIZARD) Goto %d",viewsector,0);
return 0;
}
case IDC_LOADMAP:
if (!wzscanf("Load Map <filename><sector>","%s %hd",loadlevel.name,&loadlevel.start_pos)) return 0;
for(i=0;i<POCET_POSTAV;i++)postavy[i].sektor=loadlevel.start_pos;
SEND_LOG("(WIZARD) Load map '%s' %d",loadlevel.name,loadlevel.start_pos);
EndDialog(hDlg,0);
send_message(E_CLOSE_MAP);
return 0;
case IDC_OPENDOOR:if (map_sectors[viewsector].step_next[viewdir])
delay_action(3,viewsector,viewdir,0x2000000,0,0);
else
delay_action(3,viewsector,viewdir,0,0,0);
return 0;
case IDC_TAKEMONEY:if (take_money()) return 0;break;
case IDC_PURGE:if (purge_map()) return 0;break;
case IDC_HEAL:if (heal_meditate()) return 0;break;
case IDC_RAISEDEATH:if (raise_death()) return 0;break;
case IDC_RAISEMONSTER:if (raise_killed_monster(hDlg)) return 0;break;
case IDC_IMMORTAL:set_immortality();break;
case IDC_NETECNOST:set_nohassle();break;
case IDC_UNAFFECT :unaffect();break;
case IDC_WEAPONSKILL:if (advance_weapon()) return 0;break;
case IDC_REFRESH:display_game_status();break;
case IDC_RELOADMOBILES:
i=MessageBox(hDlg,"Tato funkce precte znova parametry vsech existujicich nestvur. "
"Pouzivej jen v pripade, ze se tyto parametry zmenili a nesouhlasi tak "
"obsah ulozene pozice. Pokracovat? ","??",MB_YESNO|MB_ICONQUESTION);
if (i==IDYES) reload_mobs();
return 0;
case IDC_LOADITEM:
{
HWND listdlg=PrepareListWindow(hDlg);
HWND list=GetDlgItem(listdlg,IDC_LIST);
char buff[256];
int i;
int res;
for (i=0;i<item_count;i++)
{
_snprintf(buff,sizeof(buff),"%d. %s",i,glob_items[i].jmeno);
kamenik2windows(buff,strlen(buff),buff);
ListBox_AddString(list,buff);
}
res=PumpDialogMessages(listdlg);
while (res==IDOK)
{
int cnt;
for (i=0,cnt=ListBox_GetCount(list);i<cnt;i++) if (ListBox_GetSel(list,i))
{
SEND_LOG("(WIZARD) Load Item %d (%s)",i,glob_items[i].jmeno);
macro_drop_item(viewsector,viewdir,i);
wzprintf("Dropped item: %d\r\n",i);
}
res=PumpDialogMessages(listdlg);
}
CloseListWindow(listdlg);
}
return 0;
}
default: return 0;
}
return 1;
}
static void OpenWizard()
{
hfCourier=CreateFont(15,0,0,0,0,0,0,0,0,0,0,0,0,"Courier");
DxDialogs(1);
DialogBox(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_LADICIOKNO),GetActiveWindow(),(DLGPROC)WizardDlgProc);
DxDialogs(0);
DeleteObject(hfCourier);
}
void wizard_kbd(EVENT_MSG *msg,void **usr) void wizard_kbd(EVENT_MSG *msg,void **usr)
{ {
char c; char c;
@ -722,12 +429,6 @@ void wizard_kbd(EVENT_MSG *msg,void **usr)
switch (c) switch (c)
{ {
case 'C': case 'C':
case 'D':
unwire_proc();
OpenWizard();
wire_proc();
showview(0,0,0,0);
break;
case '<':show_debug=!show_debug;break; case '<':show_debug=!show_debug;break;
case '=':show_lives=!show_lives;break; case '=':show_lives=!show_lives;break;
case '>':if (mman_action!=NULL) mman_action=NULL;else mman_action=mman_scan;break; case '>':if (mman_action!=NULL) mman_action=NULL;else mman_action=mman_scan;break;
@ -740,7 +441,7 @@ void wizard_kbd(EVENT_MSG *msg,void **usr)
if (folow_mob==255) folow_mode=0; if (folow_mob==255) folow_mode=0;
*/ */
break; break;
default: default:
msg->msg=E_KEYBOARD;break; msg->msg=E_KEYBOARD;break;

View file

@ -212,7 +212,7 @@ static void display_progress(void)
def_dialoge(312,380,310,75,"Copying some files...",3); def_dialoge(312,380,310,75,"Copying some files...",3);
define(10,10,27,290,15,0,done_bar,100); define(10,10,27,290,15,0,done_bar,100);
property(bbutt,NULL,flat_color(0x1e0),WINCOLOR);c_default(0); property(bbutt,NULL,flat_color(0x1e0),WINCOLOR);c_default(0);
define(30,5,5,80,15,2,button,"Stop");on_change(stop_copy); define(30,5,5,80,15,2,button,"Stop");on_control_change(stop_copy);
property(def_border(1,0),&font6x9,flat_color(0),BUTTONCOLOR); property(def_border(1,0),&font6x9,flat_color(0),BUTTONCOLOR);
define(20,5,10,200,12,3,input_line,2048);set_default(""); define(20,5,10,200,12,3,input_line,2048);set_default("");
property(NULL,&font6x9,flat_color(0),WINCOLOR); property(NULL,&font6x9,flat_color(0),WINCOLOR);
@ -306,7 +306,7 @@ static void open_handbook(char *file)
handbook=read_text(file); handbook=read_text(file);
win_handbook=def_dialoge(54,54,450,350,"Handbook",2); win_handbook=def_dialoge(54,54,450,350,"Handbook",2);
def_listbox(9,5,25,420,290,handbook,0,WINCOLOR);property(def_border(0,WINCOLOR),&font6x9,NULL,WINCOLOR); def_listbox(9,5,25,420,290,handbook,0,WINCOLOR);property(def_border(0,WINCOLOR),&font6x9,NULL,WINCOLOR);
define(20,5,5,60,15,2,button2,"Close");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(close_current); define(20,5,5,60,15,2,button2,"Close");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(close_current);
redraw_window(); redraw_window();
} }
@ -441,11 +441,11 @@ static load_window()
set_full_target_path(0); set_full_target_path(0);
for(i=0;i<str_count(disklist);i++) if (target_path[0]==disklist[i][2]) break; for(i=0;i<str_count(disklist);i++) if (target_path[0]==disklist[i][2]) break;
default_font=&font6x9; default_font=&font6x9;
define(150,70,5,60,20,2,button,"Ok");on_change(terminate);property(bbutt,&font6x9,NULL,BUTTONCOLOR); define(150,70,5,60,20,2,button,"Ok");on_control_change(terminate_gui);property(bbutt,&font6x9,NULL,BUTTONCOLOR);
define(160,5,5,60,20,2,button,"Cancel");on_change(terminate);property(bbutt,&font6x9,NULL,BUTTONCOLOR); define(160,5,5,60,20,2,button,"Cancel");on_control_change(terminate_gui);property(bbutt,&font6x9,NULL,BUTTONCOLOR);
default_font=vga_font; default_font=vga_font;
def_listbox(59,70,60,100,200,dirlist,0,0x03ff);c_default(0);on_change(select_dir); def_listbox(59,70,60,100,200,dirlist,0,0x03ff);c_default(0);on_control_change(select_dir);
def_listbox(69,5,60,40,200,disklist,0,0x03ff);on_change(change_disk); def_listbox(69,5,60,40,200,disklist,0,0x03ff);on_control_change(change_disk);
c_default(i); c_default(i);
default_font=&font6x9; default_font=&font6x9;
define(-1,215,135,110,80,0,win_label,"");property(def_border(5,0x631f),NULL,NULL,0x631f); define(-1,215,135,110,80,0,win_label,"");property(def_border(5,0x631f),NULL,NULL,0x631f);
@ -527,7 +527,7 @@ static EVENT_PROC(esc_mode2)
zobraz_mysku(); zobraz_mysku();
redraw_desktop(); redraw_desktop();
goto_control(0); goto_control(0);
terminate(); terminate_gui();
} }
} }
} }
@ -606,9 +606,9 @@ static void select_vga()
def_dialoge(20,300,156,156,"Graphics modes",2); def_dialoge(20,300,156,156,"Graphics modes",2);
define(9,0,20,156,80,0,listbox,video_ls,0x03ff,0);c_default(vmode); define(9,0,20,156,80,0,listbox,video_ls,0x03ff,0);c_default(vmode);
property(NULL,vga_font,NULL,WINCOLOR); property(NULL,vga_font,NULL,WINCOLOR);
define(20,38,20,80,20,3,button,"Change now");on_change(test_mode); define(20,38,20,80,20,3,button,"Change now");on_control_change(test_mode);
property(bbutt,NULL,NULL,BUTTONCOLOR); property(bbutt,NULL,NULL,BUTTONCOLOR);
define(30,10,5,80,10,3,check_box,"Subtitles in intro.");c_default(subtitles);on_change(toggle_subtitles); define(30,10,5,80,10,3,check_box,"Subtitles in intro.");c_default(subtitles);on_control_change(toggle_subtitles);
redraw_window(); redraw_window();
} }
@ -635,9 +635,9 @@ static void select_mode_win()
{ {
def_dialoge(224,270,192,156,"Install",2); def_dialoge(224,270,192,156,"Install",2);
default_font=&font6x9; default_font=&font6x9;
define(10,30,40,132,30,0,button,"Automatic");property(bbutt,NULL,NULL,BUTTONCOLOR);on_change(terminate); define(10,30,40,132,30,0,button,"Automatic");property(bbutt,NULL,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
define(30,30,80,132,30,0,button,"Custom");property(bbutt,NULL,NULL,BUTTONCOLOR);on_change(terminate); define(30,30,80,132,30,0,button,"Custom");property(bbutt,NULL,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
define(40,50,15,92,20,3,button,"Quit");property(bbutt,NULL,NULL,BUTTONCOLOR);on_change(stop_copy); define(40,50,15,92,20,3,button,"Quit");property(bbutt,NULL,NULL,BUTTONCOLOR);on_control_change(stop_copy);
redraw_window(); redraw_window();
} }
@ -645,9 +645,9 @@ static void select_mode_win_setup()
{ {
def_dialoge(224,270,192,156,"Menu",2); def_dialoge(224,270,192,156,"Menu",2);
default_font=&font6x9; default_font=&font6x9;
define(10,30,40,132,30,0,button,"Change settings");property(bbutt,NULL,NULL,BUTTONCOLOR);on_change(terminate); define(10,30,40,132,30,0,button,"Change settings");property(bbutt,NULL,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
define(30,30,80,132,30,0,button,"Uninstall");property(bbutt,NULL,NULL,BUTTONCOLOR);on_change(terminate); define(30,30,80,132,30,0,button,"Uninstall");property(bbutt,NULL,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
define(40,50,15,92,20,3,button,"Quit");property(bbutt,NULL,NULL,BUTTONCOLOR);on_change(stop_setup); define(40,50,15,92,20,3,button,"Quit");property(bbutt,NULL,NULL,BUTTONCOLOR);on_control_change(stop_setup);
redraw_window(); redraw_window();
} }
@ -681,7 +681,7 @@ static void device_select2()
char c; char c;
def_dialoge(270,240,100,100,device_name(i),3); def_dialoge(270,240,100,100,device_name(i),3);
define(10,10,25,60,40,0,radio_butts,3,"LPT 1","LPT 2","PC Speaker");c_default(0); define(10,10,25,60,40,0,radio_butts,3,"LPT 1","LPT 2","PC Speaker");c_default(0);
define(20,10,5,80,20,2,button,"Ok");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(terminate); define(20,10,5,80,20,2,button,"Ok");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
redraw_window(); redraw_window();
escape(); escape();
c=f_get_value(0,10); c=f_get_value(0,10);
@ -773,21 +773,21 @@ void select_sound()
for(i=0;i<8;i++) str_add(&ls,device_name(i)); for(i=0;i<8;i++) str_add(&ls,device_name(i));
str_replace(&ls,0,"<nosound>"); str_replace(&ls,0,"<nosound>");
sound_win=def_dialoge(200,300,300,156,"Sound devices",2); sound_win=def_dialoge(200,300,300,156,"Sound devices",2);
define(9,2,20,170,85,0,listbox,ls,0x03ff,0);c_default(sound_info.device);on_change(device_select2); define(9,2,20,170,85,0,listbox,ls,0x03ff,0);c_default(sound_info.device);on_control_change(device_select2);
property(def_border(0,0x4210),vga_font,NULL,WINCOLOR); property(def_border(0,0x4210),vga_font,NULL,WINCOLOR);
define(-1,180,20,1,1,0,label,"Port:"); define(-1,180,20,1,1,0,label,"Port:");
define(20,10,20,30,12,1,input_line,3);property(def_border(0,0x4210),vga_font,NULL,WINCOLOR); define(20,10,20,30,12,1,input_line,3);property(def_border(0,0x4210),vga_font,NULL,WINCOLOR);
set_default(itoa(sound_info.port,buff,16)); set_default(itoa(sound_info.port,buff,16));
define(-1,180,40,1,1,0,label,"DMA:"); define(-1,180,40,1,1,0,label,"DMA:");
i=sound_info.dma;i-=(i>2)+(i>4); i=sound_info.dma;i-=(i>2)+(i>4);
define(30,40,40,30,30,1,radio_butts,3,"0","1","3");c_default(i);on_change(change_dma); define(30,40,40,30,30,1,radio_butts,3,"0","1","3");c_default(i);on_control_change(change_dma);
define(35,10,40,30,30,1,radio_butts,3,"5","6","7");c_default(i-3);on_change(change_dma); define(35,10,40,30,30,1,radio_butts,3,"5","6","7");c_default(i-3);on_control_change(change_dma);
define(-1,180,80,1,1,0,label,"IRQ:"); define(-1,180,80,1,1,0,label,"IRQ:");
i=sound_info.irq;i-=2*(i>1)+(i>4)+(i>6); i=sound_info.irq;i-=2*(i>1)+(i>4)+(i>6);
define(40,40,80,30,40,1,radio_butts,4,"2","3","5","7");c_default(i); define(40,40,80,30,40,1,radio_butts,4,"2","3","5","7");c_default(i);
define(50,10,5,80,20,2,button,"Test");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(test_sound); define(50,10,5,80,20,2,button,"Test");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(test_sound);
define(60,100,5,80,20,2,button,"Autodetect");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(detect_sound); define(60,100,5,80,20,2,button,"Autodetect");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(detect_sound);
define(70,190,5,80,20,2,button,"Stop");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(stop_sound); define(70,190,5,80,20,2,button,"Stop");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(stop_sound);
redraw_window(); redraw_window();
set_enable(0,70,mixer_running); set_enable(0,70,mixer_running);
device_select(); device_select();
@ -799,7 +799,7 @@ static void back_start()
stop_sound(); stop_sound();
sound_scan(); sound_scan();
while (waktual!=NULL) close_current(); while (waktual!=NULL) close_current();
terminate(); terminate_gui();
} }
static void control_window(void *forward,void *back,void *help); static void control_window(void *forward,void *back,void *help);
@ -1056,22 +1056,22 @@ static void rozsah_window()
exit_wait=0; exit_wait=0;
default_font=&font6x9; default_font=&font6x9;
def_dialoge(146,160,348,264,"Installation ragne:",2); def_dialoge(146,160,348,264,"Installation ragne:",2);
define(10,10,30,70,30,0,button,"Minimum");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(start_install); define(10,10,30,70,30,0,button,"Minimum");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(start_install);
define(-1,90,30,1,1,0,label,"It will copy all important files"); define(-1,90,30,1,1,0,label,"It will copy all important files");
define(-1,90,40,1,1,0,label,"Data are loaded from CD"); define(-1,90,40,1,1,0,label,"Data are loaded from CD");
sprintf(buff,text,install_sizes[0]/1024); sprintf(buff,text,install_sizes[0]/1024);
define(-1,90,50,1,1,0,label,buff); define(-1,90,50,1,1,0,label,buff);
define(20,10,80,70,30,0,button,"Normal");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(start_install); define(20,10,80,70,30,0,button,"Normal");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(start_install);
define(-1,90,80,1,1,0,label,"It will copy all important files and data"); define(-1,90,80,1,1,0,label,"It will copy all important files and data");
define(-1,90,90,1,1,0,label,"Music and video are loaded from CD"); define(-1,90,90,1,1,0,label,"Music and video are loaded from CD");
sprintf(buff,text,install_sizes[1]/1024); sprintf(buff,text,install_sizes[1]/1024);
define(-1,90,100,1,1,0,label,buff); define(-1,90,100,1,1,0,label,buff);
define(30,10,130,70,30,0,button,"Full");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(start_install); define(30,10,130,70,30,0,button,"Full");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(start_install);
define(-1,90,130,1,1,0,label,"It will copy all files."); define(-1,90,130,1,1,0,label,"It will copy all files.");
define(-1,90,140,1,1,0,label,"You will not need CD anymore."); define(-1,90,140,1,1,0,label,"You will not need CD anymore.");
sprintf(buff,text,install_sizes[2]/1024); sprintf(buff,text,install_sizes[2]/1024);
define(-1,90,150,1,1,0,label,buff); define(-1,90,150,1,1,0,label,buff);
define(40,10,180,70,20,0,button,"Browse");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(open_load_window); define(40,10,180,70,20,0,button,"Browse");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(open_load_window);
define(60,90,185,250,11,0,input_line,2048);property(def_border(1,0x4210),&font6x9,NULL,0x7fff); define(60,90,185,250,11,0,input_line,2048);property(def_border(1,0x4210),&font6x9,NULL,0x7fff);
set_default(target_path); set_default(target_path);
on_event(show_space_event);on_exit(show_space_exit); on_event(show_space_event);on_exit(show_space_exit);
@ -1089,12 +1089,12 @@ static void automatic_window()
exit_wait=0; exit_wait=0;
default_font=&font6x9; default_font=&font6x9;
def_dialoge(110,200,420,80,"Target directory:",2); def_dialoge(110,200,420,80,"Target directory:",2);
define(40,10,33,70,15,0,button,"Browse");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(open_load_window); define(40,10,33,70,15,0,button,"Browse");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(open_load_window);
define(60,90,35,310,11,0,input_line,2048);property(def_border(1,0x4210),&font6x9,NULL,0x7fff); define(60,90,35,310,11,0,input_line,2048);property(def_border(1,0x4210),&font6x9,NULL,0x7fff);
set_default(target_path); set_default(target_path);
on_event(show_space_event);on_exit(show_space_exit); on_event(show_space_event);on_exit(show_space_exit);
define(10,10,10,70,20,2,button,"Start");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(start_install); define(10,10,10,70,20,2,button,"Start");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(start_install);
define(20,90,10,70,20,2,button,"<< Back");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(back_start); define(20,90,10,70,20,2,button,"<< Back");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(back_start);
sprintf(buff,text,install_sizes[0]/1024); sprintf(buff,text,install_sizes[0]/1024);
define(90,180,20,200,10,2,view_line,100);set_default(buff); define(90,180,20,200,10,2,view_line,100);set_default(buff);
define(80,180,10,200,10,2,view_line,100);set_default(""); define(80,180,10,200,10,2,view_line,100);set_default("");
@ -1115,11 +1115,11 @@ static void control_next1()
static void control_window(void *forward,void *back,void *help) static void control_window(void *forward,void *back,void *help)
{ {
def_dialoge(524,300,96,156,"Options",2); def_dialoge(524,300,96,156,"Options",2);
define(10,8,30,80,20,0,button,"Next >>");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(forward); define(10,8,30,80,20,0,button,"Next >>");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(forward);
define(20,8,60,80,20,0,button,"<< Back");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(back); define(20,8,60,80,20,0,button,"<< Back");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(back);
define(30,8,90,80,20,0,button,"? Help");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(help); define(30,8,90,80,20,0,button,"? Help");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(help);
define(40,8,10,80,20,3,button,"Quit");property(bbutt,&font6x9,NULL,BUTTONCOLOR); define(40,8,10,80,20,3,button,"Quit");property(bbutt,&font6x9,NULL,BUTTONCOLOR);
if (setup_mode) on_change(stop_setup);else on_change(stop_copy); if (setup_mode) on_control_change(stop_setup);else on_control_change(stop_copy);
set_enable(0,10,forward!=NULL); set_enable(0,10,forward!=NULL);
set_enable(0,20,back!=NULL); set_enable(0,20,back!=NULL);
set_enable(0,30,help!=NULL); set_enable(0,30,help!=NULL);
@ -1227,8 +1227,8 @@ static void deinstall()
define(-1,10,40,200,100,0,label,"After it, you won't be able to play"); define(-1,10,40,200,100,0,label,"After it, you won't be able to play");
define(-1,10,50,200,100,0,label,"the game until you install it again."); define(-1,10,50,200,100,0,label,"the game until you install it again.");
define(10,30,80,150,10,0,check_box,"Don't erase saved positions");c_default(1); define(10,30,80,150,10,0,check_box,"Don't erase saved positions");c_default(1);
define(20,10,10,80,30,3,button,"Yes, do it!");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(terminate); define(20,10,10,80,30,3,button,"Yes, do it!");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
define(30,10,10,80,30,2,button,"No, newer!");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_change(terminate); define(30,10,10,80,30,2,button,"No, newer!");property(bbutt,&font6x9,NULL,BUTTONCOLOR);on_control_change(terminate_gui);
redraw_window(); redraw_window();
escape(); escape();
if (o_aktual->id==30) if (o_aktual->id==30)
@ -1296,12 +1296,12 @@ void warning()
_outtext("(C)1998 Napoleon gameS - Setup version 1.0 written by Ondrej Novak\n" _outtext("(C)1998 Napoleon gameS - Setup version 1.0 written by Ondrej Novak\n"
"\n\nNote:\n"); "\n\nNote:\n");
_settextcolor(15); _settextcolor(15);
_outtext("Ú"); REPEAT(i,78) _outtext("Ä");_outtext("¿"); _outtext("<EFBFBD>"); REPEAT(i,78) _outtext("<EFBFBD>");_outtext("<EFBFBD>");
REPEAT(j,5) REPEAT(j,5)
{ {
_outtext("³"); REPEAT(i,78)_outtext(" ");_outtext("³"); _outtext("<EFBFBD>"); REPEAT(i,78)_outtext(" ");_outtext("<EFBFBD>");
} }
_outtext("À"); REPEAT(i,78) _outtext("Ä");_outtext("Ù"); _outtext("<EFBFBD>"); REPEAT(i,78) _outtext("<EFBFBD>");_outtext("<EFBFBD>");
_settextcolor(13); _settextcolor(13);
_settextwindow(6,2,20,79); _settextwindow(6,2,20,79);
_outtext( _outtext(
@ -1327,9 +1327,9 @@ static void ask_video()
ask_video_win=def_dialoge(242,100,156,156,"Select resolution",3); ask_video_win=def_dialoge(242,100,156,156,"Select resolution",3);
define(9,0,20,156,80,0,listbox,video_ls,0x03ff,0);c_default(vmode); define(9,0,20,156,80,0,listbox,video_ls,0x03ff,0);c_default(vmode);
property(NULL,vga_font,NULL,WINCOLOR); property(NULL,vga_font,NULL,WINCOLOR);
define(20,5,5,60,20,2,button,"Quit");on_change(terminate); define(20,5,5,60,20,2,button,"Quit");on_control_change(terminate_gui);
property(bbutt,NULL,NULL,BUTTONCOLOR); property(bbutt,NULL,NULL,BUTTONCOLOR);
define(20,70,5,60,20,2,button,"Ok");on_change(test_mode_xxx); define(20,70,5,60,20,2,button,"Ok");on_control_change(test_mode_xxx);
property(bbutt,NULL,NULL,BUTTONCOLOR); property(bbutt,NULL,NULL,BUTTONCOLOR);
redraw_window(); redraw_window();
} }
@ -1347,7 +1347,7 @@ static EVENT_PROC(esc_mode)
rescue_mode=1; rescue_mode=1;
redraw_desktop(); redraw_desktop();
vmode=0; vmode=0;
terminate(); terminate_gui();
} }
} }
} }
@ -1361,7 +1361,7 @@ static void about_window()
define(-1,10,30,240,10,0,mid_label,"Welcome in Install:"); define(-1,10,30,240,10,0,mid_label,"Welcome in Install:");
define(-1,10,42,240,10,0,mid_label,"The Gates of Skeldal "); define(-1,10,42,240,10,0,mid_label,"The Gates of Skeldal ");
define(-1,10,80,240,10,0,mid_label,"Install written by:"); define(-1,10,80,240,10,0,mid_label,"Install written by:");
define(-1,10,92,240,10,0,mid_label,"Ond©ej Nov k"); define(-1,10,92,240,10,0,mid_label,"Ond<EFBFBD>ej Nov<6F>k");
define(-1,10,110,240,10,0,mid_label,"(C)1998 Napoleon gameS"); define(-1,10,110,240,10,0,mid_label,"(C)1998 Napoleon gameS");
redraw_window(); redraw_window();
escape(); escape();

View file

@ -156,7 +156,7 @@ long def_window(word xs,word ys,char *name)
if (xs>=70) if (xs>=70)
{ {
define(1,1,1,19,16,1,button,"\x0f"); define(1,1,1,19,16,1,button,"\x0f");
property(NULL,icones,&icone_color,WINCOLOR);on_change(close_current); property(NULL,icones,&icone_color,WINCOLOR);on_control_change(close_current);
} }
return q; return q;
} }
@ -201,9 +201,9 @@ void def_listbox(int id,word x,word y,word xs,word ys,TSTR_LIST ls,int ofs,int c
define(id+1,x+xs+4,y+18,15,ys-35,0,scroll_bar_v,0,10,1,0x0200); define(id+1,x+xs+4,y+18,15,ys-35,0,scroll_bar_v,0,10,1,0x0200);
property(&b2,NULL,NULL,WINCOLOR); property(&b2,NULL,NULL,WINCOLOR);
define(id+2,x+xs+4,y,14,14,0,scroll_button,-1,0,"\x4"); define(id+2,x+xs+4,y,14,14,0,scroll_button,-1,0,"\x4");
property(&b1,icones,black,WINCOLOR);on_change(scroll_support); property(&b1,icones,black,WINCOLOR);on_control_change(scroll_support);
define(id+3,x+xs+4,y+ys-14,14,14,0,scroll_button,1,10,"\6"); define(id+3,x+xs+4,y+ys-14,14,14,0,scroll_button,1,10,"\6");
property(&b1,icones,black,WINCOLOR);on_change(scroll_support); property(&b1,icones,black,WINCOLOR);on_control_change(scroll_support);
define(id,x,y,xs,ys,0,listbox,ls,color,ofs); define(id,x,y,xs,ys,0,listbox,ls,color,ofs);
property(&b2,NULL,NULL,WINCOLOR); property(&b2,NULL,NULL,WINCOLOR);
} }

View file

@ -6,6 +6,7 @@
#define point point32 #define point point32
word *GetScreenAdr(); word *GetScreenAdr();
long GetScreenSizeBytes();
word *GetBuffer2nd(); word *GetBuffer2nd();
void RedirectScreen(word *newaddr); void RedirectScreen(word *newaddr);
void RestoreScreen(); void RestoreScreen();

View file

@ -619,7 +619,7 @@ void do_it_events(EVENT_MSG *msg,void **user_data)
else else
{ {
if (o_aktual->enabled) b=mouse_in_object(msev,o_aktual,waktual);else b=0; if (o_aktual->enabled) b=mouse_in_object(msev,o_aktual,waktual);else b=0;
if (b) if (b)
o_aktual->runs[2](msg,o_aktual); o_aktual->runs[2](msg,o_aktual);
if ((msev->tl1 || msev->tl2 || msev->tl3)&& !b) if ((msev->tl1 || msev->tl2 || msev->tl3)&& !b)
{ {

View file

@ -133,11 +133,11 @@ void close_current();
void check_window(WINDOW *w); void check_window(WINDOW *w);
void install_gui(void); void install_gui(void);
void uninstall_gui(void); void uninstall_gui(void);
void on_change(void (*proc)()); void on_control_change(void (*proc)());
void on_enter(void (*proc)()); void on_control_enter(void (*proc)());
void on_exit(void (*proc)()); void on_control_exit(void (*proc)());
void on_event(void (*proc)()); void on_control_event(void (*proc)());
void terminate(void); void terminate_gui(void);
void set_change(void); void set_change(void);
void set_value(int win_id,int obj_id,void *value); void set_value(int win_id,int obj_id,void *value);
void set_default(void *value); void set_default(void *value);

View file

@ -1,9 +1,9 @@
//#define LOGFILE //#define LOGFILE
#ifndef _MEMMAN_H_
#include <stdio.h> #include <stdio.h>
#ifndef _MEMMAN_H_
#define _MEMMAN_H_ #define _MEMMAN_H_
#define freemem(size) free(size); #define freemem(size) free(size);
//#define malloc(size) getmem(size) //#define malloc(size) getmem(size)
@ -84,7 +84,7 @@ int find_handle(char *name,void *decomp); //hleda mezi rukojeti stejnou defini
int test_file_exist(int group,char *filename); //testuje zda soubor existuje v ramci mmanageru int test_file_exist(int group,char *filename); //testuje zda soubor existuje v ramci mmanageru
void *afile(char *filename,int group,long *blocksize); //nahraje do pameti soubor registrovany v ramci mmanageru void *afile(char *filename,int group,long *blocksize); //nahraje do pameti soubor registrovany v ramci mmanageru
long get_handle_size(int handle); long get_handle_size(int handle);
void get_mem_info(MEMORYSTATUS *mem); //void get_mem_info(MEMORYSTATUS *mem);
void apreload_sign(int handle,int max_handle); //pripravi preloading pro nacteni dat z CD (sekvencne) void apreload_sign(int handle,int max_handle); //pripravi preloading pro nacteni dat z CD (sekvencne)
void apreload_start(void (*percent)(int cur,int max)); //provede sekvenci apreload void apreload_start(void (*percent)(int cur,int max)); //provede sekvenci apreload

Some files were not shown because too many files have changed in this diff Show more