📄 m_misc.c
字号:
void GetININame(void);
//
// M_SaveDefaults
//
void M_SaveDefaults (void)
{
/*
int i;
int v;
FILE* f;
*/
GetININame();
sprintf(szValue, "%d", mouseSensitivity);
WritePrivateProfileString("DEFAULTS", "mouse_sensitivity", szValue, DoomDir);
sprintf(szValue, "%d", snd_SfxVolume);
WritePrivateProfileString("DEFAULTS", "sfx_volume", szValue, DoomDir);
sprintf(szValue, "%d", snd_MusicVolume);
WritePrivateProfileString("DEFAULTS", "music_volume", szValue, DoomDir);
sprintf(szValue, "%d", showMessages);
WritePrivateProfileString("DEFAULTS", "show_messages", szValue, DoomDir);
sprintf(szValue, "%d", key_right);
WritePrivateProfileString("DEFAULTS", "key_right", szValue, DoomDir);
sprintf(szValue, "%d", key_left);
WritePrivateProfileString("DEFAULTS", "key_left", szValue, DoomDir);
sprintf(szValue, "%d", key_up);
WritePrivateProfileString("DEFAULTS", "key_up", szValue, DoomDir);
sprintf(szValue, "%d", key_down);
WritePrivateProfileString("DEFAULTS", "key_down", szValue, DoomDir);
sprintf(szValue, "%d", key_mvert);
WritePrivateProfileString("DEFAULTS", "key_mvert", szValue, DoomDir);
sprintf(szValue, "%d", key_strafeleft);
WritePrivateProfileString("DEFAULTS", "key_strafeleft", szValue, DoomDir);
sprintf(szValue, "%d", key_straferight);
WritePrivateProfileString("DEFAULTS", "key_straferight", szValue, DoomDir);
sprintf(szValue, "%d", key_fire);
WritePrivateProfileString("DEFAULTS", "key_fire", szValue, DoomDir);
sprintf(szValue, "%d", key_use);
WritePrivateProfileString("DEFAULTS", "key_use", szValue, DoomDir);
sprintf(szValue, "%d", key_strafe);
WritePrivateProfileString("DEFAULTS", "key_strafe", szValue, DoomDir);
sprintf(szValue, "%d", key_speed);
WritePrivateProfileString("DEFAULTS", "key_speed", szValue, DoomDir);
sprintf(szValue, "%d", always_run);
WritePrivateProfileString("DEFAULTS", "always_run", szValue, DoomDir);
sprintf(szValue, "%d", swap_stereo);
WritePrivateProfileString("DEFAULTS", "swap_stereo", szValue, DoomDir);
sprintf(szValue, "%d", mvert);
WritePrivateProfileString("DEFAULTS", "mvert", szValue, DoomDir);
sprintf(szValue, "%d", keylink);
WritePrivateProfileString("DEFAULTS", "keylink", szValue, DoomDir);
sprintf(szValue, "%d", usemouse);
WritePrivateProfileString("DEFAULTS", "use_mouse", szValue, DoomDir);
sprintf(szValue, "%d", mousebfire);
WritePrivateProfileString("DEFAULTS", "mouseb_fire", szValue, DoomDir);
sprintf(szValue, "%d", mousebstrafe);
WritePrivateProfileString("DEFAULTS", "mouseb_strafe", szValue, DoomDir);
sprintf(szValue, "%d", mousebforward);
WritePrivateProfileString("DEFAULTS", "mouseb_forward", szValue, DoomDir);
sprintf(szValue, "%d", mouseb1);
WritePrivateProfileString("DEFAULTS", "mouseb1", szValue, DoomDir);
sprintf(szValue, "%d", mouseb2);
WritePrivateProfileString("DEFAULTS", "mouseb2", szValue, DoomDir);
sprintf(szValue, "%d", mouseb3);
WritePrivateProfileString("DEFAULTS", "mouseb3", szValue, DoomDir);
sprintf(szValue, "%d", usejoystick);
WritePrivateProfileString("DEFAULTS", "use_joystick", szValue, DoomDir);
sprintf(szValue, "%d", joybfire);
WritePrivateProfileString("DEFAULTS", "joyb_fire", szValue, DoomDir);
sprintf(szValue, "%d", joybstrafe);
WritePrivateProfileString("DEFAULTS", "joyb_strafe", szValue, DoomDir);
sprintf(szValue, "%d", joybuse);
WritePrivateProfileString("DEFAULTS", "joyb_use", szValue, DoomDir);
sprintf(szValue, "%d", joybspeed);
WritePrivateProfileString("DEFAULTS", "joyb_speed", szValue, DoomDir);
sprintf(szValue, "%d", joyb1);
WritePrivateProfileString("DEFAULTS", "joyb1", szValue, DoomDir);
sprintf(szValue, "%d", joyb2);
WritePrivateProfileString("DEFAULTS", "joyb2", szValue, DoomDir);
sprintf(szValue, "%d", joyb3);
WritePrivateProfileString("DEFAULTS", "joyb3", szValue, DoomDir);
sprintf(szValue, "%d", joyb4);
WritePrivateProfileString("DEFAULTS", "joyb4", szValue, DoomDir);
sprintf(szValue, "%d", screenblocks);
WritePrivateProfileString("DEFAULTS", "screenblocks", szValue, DoomDir);
sprintf(szValue, "%d", detailLevel);
WritePrivateProfileString("DEFAULTS", "detaillevel", szValue, DoomDir);
sprintf(szValue, "%d", usegamma);
WritePrivateProfileString("DEFAULTS", "usegamma", szValue, DoomDir);
sprintf(szValue, "%d", numChannels);
WritePrivateProfileString("DEFAULTS", "snd_channels", szValue, DoomDir);
/*
f = fopen (defaultfile, "w");
if (!f)
return; // can't write the file, but don't complain
for (i=0 ; i<numdefaults ; i++)
{
if (defaults[i].defaultvalue > -0xfff
&& defaults[i].defaultvalue < 0xfff)
{
v = *defaults[i].location;
fprintf (f,"%s\t\t%i\n",defaults[i].name,v);
} else {
fprintf (f,"%s\t\t\"%s\"\n",defaults[i].name,
* (char **) (defaults[i].location));
}
}
fclose (f);
*/
}
//
// M_LoadDefaults
//
extern byte scantokey[128];
void WriteDebug(char *);
char MsgText[256];
void GetININame()
{
GetProfileString("WINDOOM", "DIRECTORY", "", DoomDir, 128 );
if (strlen(DoomDir) == 0)
{
getcwd(DoomDir, 128);
WriteProfileString("WINDOOM", "DIRECTORY", DoomDir );
}
strcat(DoomDir, "\\WinDoom.INI");
}
void M_LoadDefaults (void)
{
/*
int i;
int len;
FILE* f;
char def[80];
char strparm[100];
char* newstring;
int parm;
boolean isstring;
*/
GetININame();
mouseSensitivity = GetPrivateProfileInt("DEFAULTS", "mouse_sensitivity", 5, DoomDir);
snd_SfxVolume = GetPrivateProfileInt("DEFAULTS", "sfx_volume", 15, DoomDir);
snd_MusicVolume = GetPrivateProfileInt("DEFAULTS", "music_volume", 8, DoomDir);
showMessages = GetPrivateProfileInt("DEFAULTS", "show_messages", 1, DoomDir);
key_right = GetPrivateProfileInt("DEFAULTS", "key_right", KEY_RIGHTARROW, DoomDir);
key_left = GetPrivateProfileInt("DEFAULTS", "key_left", KEY_LEFTARROW, DoomDir);
key_up = GetPrivateProfileInt("DEFAULTS", "key_up", KEY_UPARROW, DoomDir);
key_down = GetPrivateProfileInt("DEFAULTS", "key_down", KEY_DOWNARROW, DoomDir);
key_strafeleft = GetPrivateProfileInt("DEFAULTS", "key_strafeleft", KEY_COMMA, DoomDir);
key_straferight = GetPrivateProfileInt("DEFAULTS", "key_straferight", KEY_PERIOD, DoomDir);
key_fire = GetPrivateProfileInt("DEFAULTS", "key_fire", KEY_RCTRL, DoomDir);
key_use = GetPrivateProfileInt("DEFAULTS", "key_use", KEY_SPACE, DoomDir);
key_strafe = GetPrivateProfileInt("DEFAULTS", "key_strafe", KEY_RALT, DoomDir);
key_speed = GetPrivateProfileInt("DEFAULTS", "key_speed", KEY_RSHIFT, DoomDir);
key_mvert = GetPrivateProfileInt("DEFAULTS", "key_mvert", KEY_SLASH, DoomDir);
always_run = GetPrivateProfileInt("DEFAULTS", "always_run", FALSE, DoomDir);
swap_stereo = GetPrivateProfileInt("DEFAULTS", "swap_stereo", FALSE, DoomDir);
mvert = GetPrivateProfileInt("DEFAULTS", "mvert", TRUE, DoomDir);
keylink = GetPrivateProfileInt("DEFAULTS", "keylink", TRUE, DoomDir);
usemouse = GetPrivateProfileInt("DEFAULTS", "use_mouse", TRUE, DoomDir);
mousebfire = GetPrivateProfileInt("DEFAULTS", "mouseb_fire", 0, DoomDir);
mousebstrafe = GetPrivateProfileInt("DEFAULTS", "mouseb_strafe", 1, DoomDir);
mousebforward = GetPrivateProfileInt("DEFAULTS", "mouseb_forward", 2, DoomDir);
mouseb1 = GetPrivateProfileInt("DEFAULTS", "mouseb1", key_fire, DoomDir);
mouseb2 = GetPrivateProfileInt("DEFAULTS", "mouseb2", key_strafe, DoomDir);
mouseb3 = GetPrivateProfileInt("DEFAULTS", "mouseb3", key_up, DoomDir);
usejoystick = GetPrivateProfileInt("DEFAULTS", "use_joystick", FALSE, DoomDir);
joybfire = GetPrivateProfileInt("DEFAULTS", "joyb_fire", 0, DoomDir);
joybstrafe = GetPrivateProfileInt("DEFAULTS", "joyb_strafe", 1, DoomDir);
joybuse = GetPrivateProfileInt("DEFAULTS", "joyb_use", 3, DoomDir);
joybspeed = GetPrivateProfileInt("DEFAULTS", "joyb_speed", 2, DoomDir);
joyb1 = GetPrivateProfileInt("DEFAULTS", "joyb1", key_fire, DoomDir);
joyb2 = GetPrivateProfileInt("DEFAULTS", "joyb2", key_strafe, DoomDir);
joyb3 = GetPrivateProfileInt("DEFAULTS", "joyb3", key_use, DoomDir);
joyb4 = GetPrivateProfileInt("DEFAULTS", "joyb4", key_speed, DoomDir);
screenblocks = GetPrivateProfileInt("DEFAULTS", "screenblocks", 10, DoomDir);
detailLevel = GetPrivateProfileInt("DEFAULTS", "detaillevel", 0, DoomDir);
usegamma = GetPrivateProfileInt("DEFAULTS", "usegamma", 0, DoomDir);
numChannels = GetPrivateProfileInt("DEFAULTS", "snd_channels", 256, DoomDir);
}
/*
snd_musicdevice 3
snd_sfxdevice 3
snd_sbport 544
snd_sbirq 5
snd_sbdma 1
snd_mport 816
chatmacro0 "no macro"
chatmacro1 "no macro"
chatmacro2 "no macro"
chatmacro3 "no macro"
chatmacro4 "no macro"
chatmacro5 "no macro"
chatmacro6 "no macro"
chatmacro7 "no macro"
chatmacro8 "no macro"
chatmacro9 "no macro"
*/
//
// SCREEN SHOTS
//
typedef struct
{
char manufacturer;
char version;
char encoding;
char bits_per_pixel;
unsigned short xmin;
unsigned short ymin;
unsigned short xmax;
unsigned short ymax;
unsigned short hres;
unsigned short vres;
unsigned char palette[48];
char reserved;
char color_planes;
unsigned short bytes_per_line;
unsigned short palette_type;
char filler[58];
unsigned char data; // unbounded
} pcx_t;
//
// WritePCXfile
//
void
WritePCXfile
( char* filename,
byte* data,
int width,
int height,
byte* palette )
{
int i;
int length;
pcx_t* pcx;
byte* pack;
pcx = Z_Malloc (width*height*2+1000, PU_STATIC, NULL);
pcx->manufacturer = 0x0a; // PCX id
pcx->version = 5; // 256 color
pcx->encoding = 1; // uncompressed
pcx->bits_per_pixel = 8; // 256 color
pcx->xmin = 0;
pcx->ymin = 0;
pcx->xmax = SHORT(width-1);
pcx->ymax = SHORT(height-1);
pcx->hres = SHORT(width);
pcx->vres = SHORT(height);
memset (pcx->palette,0,sizeof(pcx->palette));
pcx->color_planes = 1; // chunky image
pcx->bytes_per_line = SHORT(width);
pcx->palette_type = SHORT(2); // not a grey scale
memset (pcx->filler,0,sizeof(pcx->filler));
// pack the image
pack = &pcx->data;
for (i=0 ; i<width*height ; i++)
{
if ( (*data & 0xc0) != 0xc0)
*pack++ = *data++;
else
{
*pack++ = 0xc1;
*pack++ = *data++;
}
}
// write the palette
*pack++ = 0x0c; // palette ID byte
for (i=0 ; i<768 ; i++)
*pack++ = gammatable[usegamma][*palette++];
// write output file
length = pack - (byte *)pcx;
M_WriteFile (filename, pcx, length);
Z_Free (pcx);
}
//
// M_ScreenShot
//
void M_ScreenShot (void)
{
int i;
byte* linear;
char lbmname[12];
// munge planar buffer to linear
linear = screens[2];
I_ReadScreen (linear);
// find a file name to save it to
strcpy(lbmname,"DOOM00.pcx");
for (i=0 ; i<=99 ; i++)
{
lbmname[4] = i/10 + '0';
lbmname[5] = i%10 + '0';
if (access(lbmname,0) == -1)
break; // file doesn't exist
}
if (i==100)
I_Error ("M_ScreenShot: Couldn't create a PCX");
// save the pcx file
WritePCXfile (lbmname, linear,
SCREENWIDTH, SCREENHEIGHT,
W_CacheLumpName ("PLAYPAL",PU_CACHE));
players[consoleplayer].message = "screen shot";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -