📄 m_misc.c
字号:
char DoomDir[128], szValue[32];
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 (PBUFFER RenderBuffer, PBUFFER ScreenBuffer) // DQ
// requires a RenderBuffer in which the pitch=SCREENWIDTH
//void M_ScreenShot (void)
{
int i;
//byte* linear; // DQ removed
char lbmname[12];
// munge planar buffer to linear
//linear = screens[2]; // DQ removed
//I_ReadScreen (linear); // DQ removed
I_ReadScreen (RenderBuffer, ScreenBuffer); // DQ
// 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, RenderBuffer->Buffer,
SCREENWIDTH, SCREENHEIGHT,
W_CacheLumpName ("PLAYPAL",PU_CACHE));
players[consoleplayer].message = "screen shot";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -