windows-nt/Source/XPSP1/NT/shell/osshell/ep/tictac/pref.c
2020-09-26 16:20:57 +08:00

135 lines
2.9 KiB
C

/**********/
/* pref.c */
/**********/
#define _WINDOWS
#include <windows.h>
#include <port1632.h>
#include "main.h"
#include "res.h"
#include "rtns.h"
#include "grafix.h"
#include "pref.h"
#include "sound.h"
BOOL fUpdateIni = fFalse;
CHAR szIniFile[] = "entpack.ini";
extern CHAR szClass[];
#define lpAppName szClass
PREF Preferences;
#define iszPrefxWindow 0
#define iszPrefyWindow 1
#define iszPrefSound 2
#define iszPrefMenu 3
#define iszPrefGame 4
#define iszPrefComputer 5
#define iszPrefSkill 6
#define iszPrefStart 7
#define iszPrefColor 8
#define iszPrefMax 9
CHAR * rgszPref[iszPrefMax] =
{
"Xpos" ,
"Ypos" ,
"Sound" ,
"Menu" ,
"Game" ,
"Computer",
"Skill" ,
"Start" ,
"Color"
};
extern INT dypCaption;
extern INT dypMenu;
extern INT dypGrid;
extern INT dxpGrid;
extern INT dxpWindow;
extern INT dypWindow;
extern BOOL fEGA;
/****** PREFERENCES ******/
INT ReadInt(INT iszPref, INT valDefault, INT valMin, INT valMax)
{
return max(valMin, min(valMax,
(INT) GetPrivateProfileInt(lpAppName, rgszPref[iszPref], valDefault, (LPSTR) szIniFile) ) );
}
#define ReadBool(iszPref, valDefault) ReadInt(iszPref, valDefault, 0, 1)
VOID ReadPreferences(VOID)
{
Preferences.xWindow = ReadInt(iszPrefxWindow, 160, 0, 1024);
Preferences.yWindow = ReadInt(iszPrefyWindow,
dypCaption+dypMenu + (fEGA ? 0 : 30), dypCaption+dypMenu, 1024);
Preferences.fSound = ReadInt(iszPrefSound, 0, 0, fsoundOn);
Preferences.fMenu = ReadInt(iszPrefMenu, fmenuAlwaysOn, fmenuAlwaysOn, fmenuOn);
Preferences.fComputer = ReadBool(iszPrefComputer, fTrue);
Preferences.iGameType = ReadInt(iszPrefGame, iGame4x4x4, iGame3x3, iGame4x4x4);
Preferences.skill = ReadInt(iszPrefSkill, skillExpert, skillBegin, skillExpert);
Preferences.iStart = ReadInt(iszPrefStart, iStartRnd, iStartRnd, iStartBlue);
{
HDC hDC = GetDC(GetDesktopWindow());
Preferences.fColor = ReadBool(iszPrefColor, (GetDeviceCaps(hDC, NUMCOLORS) != 2));
ReleaseDC(GetDesktopWindow(),hDC);
}
if (FSoundOn())
Preferences.fSound = FInitTunes();
}
VOID WriteInt(INT iszPref, INT val)
{
CHAR szVal[15];
wsprintf(szVal, "%d", val);
#ifdef DEBUG2
{
CHAR sz[80];
wsprintf(sz,"\r\n i=%d v=%d x=",iszPref, val);
OutputDebugString(sz);
OutputDebugString(szVal);
OutputDebugString("\r\n rgszPref=");
OutputDebugString(rgszPref[iszPref]);
}
#endif
WritePrivateProfileString(lpAppName, rgszPref[iszPref], szVal, (LPSTR) szIniFile);
}
VOID WritePreferences(VOID)
{
WriteInt(iszPrefxWindow, Preferences.xWindow);
WriteInt(iszPrefyWindow, Preferences.yWindow);
WriteInt(iszPrefGame, Preferences.iGameType);
WriteInt(iszPrefComputer, Preferences.fComputer);
WriteInt(iszPrefSkill, Preferences.skill);
WriteInt(iszPrefStart, Preferences.iStart);
WriteInt(iszPrefColor, Preferences.fColor);
if (FSoundSwitchable())
WriteInt(iszPrefSound, Preferences.fSound);
}