/**********/ /* pref.c */ /**********/ #define _WINDOWS #include #include #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); }