#include "mhinput.h"
#include "mhfont.h"
+#include "color.h"
#include "patchlevel.h"
#define NHMAP_FONT_NAME TEXT("Terminal")
COLORREF
nhcolor_to_RGB(int c)
{
- switch (c) {
- case CLR_BLACK:
- return RGB(0x55, 0x55, 0x55);
- case CLR_RED:
- return RGB(0xFF, 0x00, 0x00);
- case CLR_GREEN:
- return RGB(0x00, 0x80, 0x00);
- case CLR_BROWN:
- return RGB(0xA5, 0x2A, 0x2A);
- case CLR_BLUE:
- return RGB(0x00, 0x00, 0xFF);
- case CLR_MAGENTA:
- return RGB(0xFF, 0x00, 0xFF);
- case CLR_CYAN:
- return RGB(0x00, 0xFF, 0xFF);
- case CLR_GRAY:
- return RGB(0xC0, 0xC0, 0xC0);
- case NO_COLOR:
- return RGB(0xFF, 0xFF, 0xFF);
- case CLR_ORANGE:
- return RGB(0xFF, 0xA5, 0x00);
- case CLR_BRIGHT_GREEN:
- return RGB(0x00, 0xFF, 0x00);
- case CLR_YELLOW:
- return RGB(0xFF, 0xFF, 0x00);
- case CLR_BRIGHT_BLUE:
- return RGB(0x00, 0xC0, 0xFF);
- case CLR_BRIGHT_MAGENTA:
- return RGB(0xFF, 0x80, 0xFF);
- case CLR_BRIGHT_CYAN:
- return RGB(0x80, 0xFF, 0xFF); /* something close to aquamarine */
- case CLR_WHITE:
- return RGB(0xFF, 0xFF, 0xFF);
- default:
- return RGB(0x00, 0x00, 0x00); /* black */
- }
+ if (c >= 0 && c < CLR_MAX)
+ return GetNHApp()->regMapColors[c];
+ return RGB(0x00, 0x00, 0x00);
}
*/
#include "hack.h"
+#include "color.h"
#include "dlb.h"
#include "func_tab.h" /* for extended commands */
#include "winMS.h"
DWORD size;
DWORD safe_buf;
char keystring[MAX_PATH];
+ int i;
+ COLORREF default_mapcolors[CLR_MAX] = {
+ RGB(0x55, 0x55, 0x55), /* CLR_BLACK */
+ RGB(0xFF, 0x00, 0x00), /* CLR_RED */
+ RGB(0x00, 0x80, 0x00), /* CLR_GREEN */
+ RGB(0xA5, 0x2A, 0x2A), /* CLR_BROWN */
+ RGB(0x00, 0x00, 0xFF), /* CLR_BLUE */
+ RGB(0xFF, 0x00, 0xFF), /* CLR_MAGENTA */
+ RGB(0x00, 0xFF, 0xFF), /* CLR_CYAN */
+ RGB(0xC0, 0xC0, 0xC0), /* CLR_GRAY */
+ RGB(0xFF, 0xFF, 0xFF), /* NO_COLOR */
+ RGB(0xFF, 0xA5, 0x00), /* CLR_ORANGE */
+ RGB(0x00, 0xFF, 0x00), /* CLR_BRIGHT_GREEN */
+ RGB(0xFF, 0xFF, 0x00), /* CLR_YELLOW */
+ RGB(0x00, 0xC0, 0xFF), /* CLR_BRIGHT_BLUE */
+ RGB(0xFF, 0x80, 0xFF), /* CLR_BRIGHT_MAGENTA */
+ RGB(0x80, 0xFF, 0xFF), /* CLR_BRIGHT_CYAN */
+ RGB(0xFF, 0xFF, 0xFF) /* CLR_WHITE */
+ };
sprintf(keystring, "%s\\%s\\%s\\%s", CATEGORYKEY, COMPANYKEY, PRODUCTKEY,
SETTINGSKEY);
GetNHApp()->saveRegistrySettings = 1; /* Normally, we always save */
GetNHApp()->regNetHackMode = TRUE;
+ for (i = 0; i < CLR_MAX; i++)
+ GetNHApp()->regMapColors[i] = default_mapcolors[i];
+
if (RegOpenKeyEx(HKEY_CURRENT_USER, keystring, 0, KEY_READ, &key)
!= ERROR_SUCCESS)
return;
NHGETREG_DWORD(INVENTBOTTOM, GetNHApp()->rtInvenWindow.bottom);
#undef NHGETREG_DWORD
+ for (i = 0; i < CLR_MAX; i++) {
+ COLORREF cl;
+ char mapcolorkey[64];
+ sprintf(mapcolorkey, "MapColor%02d", i);
+ if (RegQueryValueEx(key, mapcolorkey, NULL, NULL, (BYTE *)&cl, &size) == ERROR_SUCCESS)
+ GetNHApp()->regMapColors[i] = cl;
+ }
+
RegCloseKey(key);
/* check the data for validity */
{
HKEY key;
DWORD disposition;
+ int i;
if (GetNHApp()->saveRegistrySettings) {
char keystring[MAX_PATH];
NHSETREG_DWORD(INVENTBOTTOM, GetNHApp()->rtInvenWindow.bottom);
#undef NHSETREG_DWORD
+ for (i = 0; i < CLR_MAX; i++) {
+ COLORREF cl = GetNHApp()->regMapColors[i];
+ char mapcolorkey[64];
+ sprintf(mapcolorkey, "MapColor%02d", i);
+ RegSetValueEx(key, mapcolorkey, 0, REG_DWORD, (BYTE *)&cl, sizeof(DWORD));
+ }
+
RegCloseKey(key);
}
}