⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m_misc.c

📁 用vc编的一个射击类小游戏
💻 C
📖 第 1 页 / 共 2 页
字号:
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 + -