improve fonts and fix bugs

This commit is contained in:
Ondřej Novák 2025-01-31 20:21:13 +01:00
parent a8a87d514c
commit 99378da298
12 changed files with 55 additions and 35 deletions

View file

@ -31,7 +31,8 @@ char *AutodetectWinAmp();
#endif
#define RGB888(r,g,b) ((unsigned short)((((r)<<8)&0xF800) | (((g)<<3) & 0x7C0) | ((b)>>3)))
#define RGB555(r,g,b) ((unsigned short)(((r)<<11) | ((g)<<6) | (b)))
#define RGB555(r,g,b) ((unsigned short)(((r)<<11) | (((g) & 0xF8)<<6) | (b)))
#define RGB555_ALPHA(r,g,b) ((unsigned short)(((r)<<11) | ((((g) & 0xF8) | 0x04)<<6) | (b)))
#pragma warning (disable : 4244 4761 4133)

View file

@ -32,6 +32,8 @@
#define MEDIUM_MAP_LINE1 RGB555(25,20,17)
#define MEDIUM_MAP_LINE2 RGB555(31,22,6)
#define AUTOMAP_FONT_COLOR (RGB555(0,0,0)|FONT_TSHADOW_GRAY)
word stairs_colors[7]=
{AUTOMAP_LINE1,
RGB555(14,12,11),
@ -162,7 +164,7 @@ void ukaz_vsechny_texty_v_mape(void)
char *c;
if (texty_v_mape==NULL) return;
set_font(H_FLITT5,NOSHADOW(0));
set_font(H_FLITT5,AUTOMAP_FONT_COLOR);
cn=str_count(texty_v_mape);
for(i=0;i<cn;i++)
{
@ -215,7 +217,7 @@ void psani_poznamek_event(EVENT_MSG *msg,void **data)
y = va_arg(msg->data, int);
c = va_arg(msg->data, char *);
set_font(H_FLITT5,NOSHADOW(0));
set_font(H_FLITT5,AUTOMAP_FONT_COLOR);
strcpy(text,c);
save=(char *)getmem(strlen(text)+1);
strcpy(save,text);
@ -243,15 +245,18 @@ void psani_poznamek_event(EVENT_MSG *msg,void **data)
char c;
c=quit_request_as_escape(va_arg(msg->data, int));
set_font(H_FLITT5,NOSHADOW(0));
set_font(H_FLITT5,AUTOMAP_FONT_COLOR);
if (c)
{
switch (c)
{
case 8:if (index) index--; text[index]=0;break;
case 27:strcpy(text,save);break;
case 27:strcpy(text,save);
[[fallthrough]];
case 13:save_text_to_map(x,y,cur_depth,text);
send_message(E_DONE,E_MOUSE,psani_poznamek_event);msg->msg=-2;return;
send_message(E_DONE,E_MOUSE,psani_poznamek_event);
msg->msg=-2;
return;
default:if (c>=32)
{
text[index]=c;
@ -290,7 +295,7 @@ int hledej_poznamku(int x,int y,int depth)
y=(y-197)+map_yr;
if (texty_v_mape==NULL) return -1;
count=str_count(texty_v_mape);
set_font(H_FLITT5,NOSHADOW(0));
set_font(H_FLITT5,AUTOMAP_FONT_COLOR);
for(i=0;i<count;i++)
if (texty_v_mape[i]!=NULL)
{
@ -412,7 +417,7 @@ static void draw_amap_sector(int x,int y,int sector,int mode,int turn,int line1,
for(i=0,sd=map_sides+sector*4;i<4 && ~sd->flags & SD_SEC_VIS;i++,sd++) {}
if (i!=4) {set_font(H_FSYMB,0x3e0);print_symbol(x,y,'T');}
break;
case S_DIRA:set_font(H_FSYMB,NOSHADOW(0));print_symbol(x,y,'N');break;
case S_DIRA:set_font(H_FSYMB,AUTOMAP_FONT_COLOR);print_symbol(x,y,'N');break;
}
}
else
@ -477,7 +482,7 @@ static void zobraz_herni_cas(void)
strcat(text,cas);
old_time=game_time;
}
set_font(H_FONT6,NOSHADOW(0));
set_font(H_FONT6,AUTOMAP_FONT_COLOR);
set_aligned_position(635,372,2,2,text);
outtext(text);
}
@ -878,7 +883,7 @@ void wire_kniha(void)
put_picture(0,0,ablock(H_KNIHA));
change_click_map(clk_kniha,CLK_KNIHA);
unwire_proc=unwire_kniha;
set_font(H_FONT6,NOSHADOW(0));
set_font(H_FONT6,AUTOMAP_FONT_COLOR);
write_book(cur_page);
ukaz_mysku();
showview(0,0,0,0);

View file

@ -43,15 +43,15 @@
#define HUMAN_ADJUST 97
unsigned short barvy_skupin[POCET_POSTAV+1]=
unsigned int barvy_skupin[POCET_POSTAV+1]=
{
RGB555(8,8,8),
RGB555(31,28,00),
RGB555(00,23,06),
RGB555(31,11,13),
RGB555(22,16,31),
RGB555(28,13,31),
RGB555(00,29,26)
RGB555(8,8,8)|FONT_TSHADOW,
RGB555(31,28,00)|FONT_TSHADOW,
RGB555(00,23,06)|FONT_TSHADOW,
RGB555(31,11,13)|FONT_TSHADOW,
RGB555(22,16,31)|FONT_TSHADOW,
RGB555(28,13,31)|FONT_TSHADOW,
RGB555(00,29,26)|FONT_TSHADOW
};
char reverse_draw=0;

View file

@ -891,8 +891,8 @@ static int cur_story_pos=0;
static char load_mode;
#define SLOT_SPACE 33
#define SELECT_COLOR RGB555(31,31,31)
#define NORMAL_COLOR RGB555(10,31,10)
#define SELECT_COLOR (RGB555(31,31,31)|FONT_TSHADOW)
#define NORMAL_COLOR (RGB555(12,31,12)|FONT_TSHADOW)
#define STORY_X 57
#define STORY_Y 50
#define STORY_XS (298-57)

View file

@ -580,7 +580,7 @@ extern int num_ofsets[]; //tabulka offsetu pro steny
extern int back_color; //cislo barvy pozadi
extern uint8_t cur_group; //cislo aktualni skupiny
extern uint8_t group_select; //1 = prave byla sestavena nova skupina
extern unsigned short barvy_skupin[POCET_POSTAV+1]; //cisla barev skupin
extern unsigned int barvy_skupin[POCET_POSTAV+1]; //cisla barev skupin
extern char battle; //jednicka znaci ze bezi bitva
extern char battle_mode; //rezim bitvy 0=programovani
extern char neco_v_pohybu; //jednicka znaci ze se nektere potvory jeste hejbou
@ -668,6 +668,8 @@ void delete_from_timer(int id);
THE_TIMER *find_timer(int id);
void objekty_mimo(void);
void mouse_set_cursor(int cursor);
#define FONT_TSHADOW 0x10000
#define FONT_TSHADOW_GRAY 0x30000
void set_font(int font,int c1,...);
void bott_draw(char);
const void *bott_draw_proc(const void *p, int32_t *s);
@ -1648,7 +1650,7 @@ void spell_teleport(int cil,int owner, int teleport_target);
#define WINCOLOR RGB555(24,24,24) // 11000 11000 0 11000
#define BAR_COLOR RGB555(15,13,11)
#define SETUP_COL1 RGB555(20,31,20)
#define SETUP_COL2 RGB555(31,31,12)
#define SETUP_COL2 (RGB555(31,31,16) | FONT_TSHADOW)
#define S_WINPOS_X 100
#define S_WINPOS_Y 100
#define S_WINPOS_XS 320

View file

@ -181,6 +181,7 @@ static T_CLK_MAP message_win[]=
};
#define MSG_COLOR1 (RGB555(30,30,23))
#define MSG_COLOR_T -2,RGB555_ALPHA(0,0,0),RGB555(24,31,24),RGB555(24,31,24),RGB555(24,31,24),RGB555(24,31,24)
void open_message_win(int pocet_textu,char **texts)
{
@ -190,7 +191,7 @@ void open_message_win(int pocet_textu,char **texts)
int i;
char *text;
set_font(H_FBOLD,MSG_COLOR1);
set_font(H_FBOLD,MSG_COLOR_T);
text=alloca(strlen(texts[0])+2);
zalamovani(texts[0],text,MES_MAXSIZE,&maxxs,&maxys);
maxws=0;wsys=0;

View file

@ -81,7 +81,7 @@ static TSHOP_ALL_STATE shop_all_state;
#define INV_YS 60
#define INV_NAME_X 129
#define INV_NAME_Y 349
#define INV_NAME_COL (RGB555(10,31,31))
#define INV_NAME_COL (RGB555(10,31,31)|FONT_TSHADOW_GRAY)
#define INV_DESK 266
#define INV_INFO_X 298
#define INV_INFO_Y 343

View file

@ -462,6 +462,8 @@ void mouse_set_default(int cursor)
void set_font(int font,int c1,...)
{
static int last_font=-1;
va_list lst;
va_start(lst, c1);
int i;
if (last_font!=-1 && last_font!=font)
@ -476,17 +478,20 @@ void set_font(int font,int c1,...)
charcolors[0]=0xFFFF;
for (i=1;i<5;i++) charcolors[i]=c1 & ~0x20;
}
else
else if (c1 & FONT_TSHADOW) {
if ((c1 & FONT_TSHADOW_GRAY) == FONT_TSHADOW_GRAY)
charcolors[0]=RGB555_ALPHA(16,16,15);
else
charcolors[0]=BGSWITCHBIT;
for (i=1;i<5;i++) charcolors[i]=c1 & ~0x20;
}else
{
charcolors[0]=0;
for (i=1;i<5;i++) charcolors[i]=c1 & ~0x20;
}
else if (c1==-2)
{
int *p;
p=&c1;p++;
for (i=0;i<5;i++) charcolors[i]=*p++;
for (i=0;i<7;i++) charcolors[i]=va_arg(lst, int);
}
last_font=font;
default_font=curfont;
@ -1593,7 +1598,7 @@ void show_help(const char *arg0) {
}
void show_help_short() {
printf("add -h to print help\n");
printf("Use -h for help\n");
}
void quit_cb_exit_wait(void *) {

View file

@ -7,7 +7,7 @@
#include "memman.h"
word *screen;
word curcolor,charcolors[7] = {0x0000,RGB555(0,31,0),RGB555(0,28,0),RGB555(0,24,0),RGB555(0,20,0),0x0000,0x0000};
word curcolor,charcolors[7] = {RGB555_ALPHA(0,0,0),RGB555(12,31,12),RGB555(12,30,12),RGB555(12,28,12),RGB555(12,20,12),0x0000,0x0000};
const word *curfont;
word *writepos,writeposx;
byte fontdsize=0;

View file

@ -147,7 +147,10 @@ chr5:
if (al == 0) goto chr2;
if (al >= 8) goto chr3;
ax = charcolors[(al-1)];
if (ax == 0xffff) goto chr4;
if (ax == 0xFFFF) goto chr4;
if (ax & BGSWITCHBIT) {
ax = ((*ebx & 0xF7DF) + (ax & 0xF7DF)) >> 1;
}
*ebx = ax;
goto chr4;
chr3:if (al == 255) goto chrend;

View file

@ -58,10 +58,10 @@ void parseIniStream(std::istream& input, Callback &&callback) {
INI_CONFIG* ini_open(const char *filename) {
INI_CONFIG *c = new INI_CONFIG;
std::fstream input(filename);
if (!input) return c;
if (!input) return NULL;
INI_CONFIG *c = new INI_CONFIG;
parseIniStream(input, [&](std::string_view section, std::string_view key, std::string_view value) {
INI_CONFIG::Config::iterator iter = c->data.find(section);
if (iter == c->data.end()) {

View file

@ -7,6 +7,7 @@
#define BGSWITCHBIT 0x0020
#define SKELDALINI "skeldal.ini"
#ifdef __cplusplus
@ -24,7 +25,9 @@ uint32_t _bios_keybrd(int mode);
#define RGB888(r,g,b) ((unsigned short)((((r)<<8)&0xF800) | (((g)<<3) & 0x7C0) | ((b)>>3)))
#define RGB555(r,g,b) ((unsigned short)(((r)<<11) | ((g)<<6) | (b)))
#define RGB555(r,g,b) (((unsigned short)(((r)<<11) | ((g)<<6) | (b))) & ~BGSWITCHBIT)
#define RGB555_ALPHA(r,g,b) (((unsigned short)(((r)<<11) | ((g)<<6) | (b))) | BGSWITCHBIT)
///build pathname from parts