/*!
+* todo main関数を含むファイルの割に長過ぎる。main-win-utils.cなどといった形で分割したい
* @file main-win.c
* @brief Windows版固有実装(メインエントリポイント含む)
* @date 2018/03/16
* <p>
* Compiling this file, and using the resulting executable, requires
* several extra files not distributed with the standard Angband code.
-* If "USE_GRAPHICS" is defined, then "readdib.h" and "readdib.c" must
-* be placed into "src/", and the "8X8.BMP" bitmap file must be placed
-* into "lib/xtra/graf". In any case, some "*.fon" files (including
-* "8X13.FON" if nothing else) must be placed into "lib/xtra/font/".
-* If "USE_SOUND" is defined, then some special library (for example,
-* "winmm.lib") may need to be linked in, and desired "*.WAV" sound
-* files must be placed into "lib/xtra/sound/". All of these extra
-* files can be found in the "ext-win" archive.
+* In any case, some "*.fon" files (including "8X13.FON" if nothing else)
+* must be placed into "lib/xtra/font/". All of these extra files can be found
+* in the "ext-win" archive.
* </p>
*
* <p>
-* The "Term_xtra_win_clear()" function should probably do a low-level
+* The "term_xtra_win_clear()" function should probably do a low-level
* clear of the current window, and redraw the borders and other things,
-* if only for efficiency.
+* if only for efficiency.
* </p>
*
* <p>
* window, I think, and only a few calls actually check for its existance,
* this may be okay since "NULL" means "on top of all windows". (?) The
* user must never be allowed to "hide" the main window, or the "menubar"
-* will disappear.
+* will disappear.
* </p>
*
* <p>
* Special "Windows Help Files" can be placed into "lib/xtra/help/" for
* use with the "winhelp.exe" program. These files *may* be available
-* at the ftp site somewhere, but I have not seen them.
+* at the ftp site somewhere, but I have not seen them.
* </p>
*
* <p>
*/
#include "angband.h"
+#include "signal-handlers.h"
#include "util.h"
#include "inet.h"
+#include "chuukei.h"
-#include "cmd-dump.h"
+#include "io/write-diary.h"
+#include "cmd/cmd-dump.h"
+#include "cmd/cmd-save.h"
#include "view-mainwindow.h"
#include "floor.h"
#include "floor-events.h"
#include "dungeon.h"
/*
- * Extract the "WIN32" flag from the compiler
- */
-#if defined(__WIN32__) || defined(__WINNT__) || defined(__NT__)
-# ifndef WIN32
-# define WIN32
-# endif
-#endif
-
-/*
* Available graphic modes
*/
#define GRAPHICS_NONE 0
#define GRAPHICS_HENGBAND 3
/*
- * Hack -- allow use of "screen saver" mode
- */
-#define USE_SAVER
-
-
-/*
* Menu constants -- see "ANGBAND.RC"
*/
-
#define IDM_FILE_NEW 100
#define IDM_FILE_OPEN 101
#define IDM_FILE_SAVE 110
#include <windows.h>
/*
- * Exclude parts of MMSYSTEM.H that are not needed
- */
+* Exclude parts of MMSYSTEM.H that are not needed
+*/
#define MMNODRV /* Installable driver support */
#define MMNOWAVE /* Waveform support */
#define MMNOMIDI /* MIDI support */
#define MMNOMMIO /* Multimedia file I/O support */
#define MMNOMMSYSTEM /* General MMSYSTEM functions */
+#define INVALID_FILE_NAME (DWORD)0xFFFFFFFF
- /*
- * Standard sound names
- */
+/*
+ * Standard sound names
+ */
const concptr angband_sound_name[SOUND_MAX] =
{
"dummy",
#include <commdlg.h>
/*
- * HTML-Help requires htmlhelp.h and htmlhelp.lib from Microsoft's
- * HTML Workshop < http://msdn.microsoft.com/workshop/author/htmlhelp/ >.
- */
-/* #define HTML_HELP */
-
-#ifdef HTML_HELP
-#include <htmlhelp.h>
-#endif /* HTML_HELP */
-
-/*
* Include the support for loading bitmaps
*/
-#ifdef USE_GRAPHICS
-# include "readdib.h"
-#endif
-
-/*
- * Hack -- Fake declarations from "dos.h"
- */
-#ifdef WIN32
-#define INVALID_FILE_NAME (DWORD)0xFFFFFFFF
-#else /* WIN32 */
-#define FA_LABEL 0x08 /* Volume label */
-#define FA_DIREC 0x10 /* Directory */
-unsigned _cdecl _dos_getfileattr(concptr , unsigned *);
-#endif /* WIN32 */
+#include "readdib.h"
-/*
- * Silliness in WIN32 drawing routine
- */
-#ifdef WIN32
-# define MoveTo(H,X,Y) MoveToEx(H, X, Y, NULL)
-#endif /* WIN32 */
+#define MoveTo(H,X,Y) MoveToEx(H, X, Y, NULL)
-/*
- * Silliness for Windows 95
- */
+ /*
+ * Silliness for Windows 95
+ */
#ifndef WS_EX_TOOLWINDOW
# define WS_EX_TOOLWINDOW 0
#endif
-/*
- * Foreground color bits (hard-coded by DOS)
- */
+ /*
+ * Foreground color bits (hard-coded by DOS)
+ */
#define VID_BLACK 0x00
#define VID_BLUE 0x01
#define VID_GREEN 0x02
#define VID_YELLOW 0x06
#define VID_WHITE 0x07
-/*
- * Bright text (hard-coded by DOS)
- */
+ /*
+ * Bright text (hard-coded by DOS)
+ */
#define VID_BRIGHT 0x08
-/*
- * Background color bits (hard-coded by DOS)
- */
+ /*
+ * Background color bits (hard-coded by DOS)
+ */
#define VUD_BLACK 0x00
#define VUD_BLUE 0x10
#define VUD_GREEN 0x20
#define VUD_YELLOW 0x60
#define VUD_WHITE 0x70
-/*
- * Blinking text (hard-coded by DOS)
- */
+ /*
+ * Blinking text (hard-coded by DOS)
+ */
#define VUD_BRIGHT 0x80
-/*
- * Forward declare
- */
+ /*
+ * Forward declare
+ */
typedef struct _term_data term_data;
/*!
uint map_tile_hgt;
bool map_active;
-#if 1 /* #ifdef JP */
LOGFONT lf;
-#endif
bool posfix;
static int use_bg = 0; //!< 背景使用フラグ、1なら私用。
static char bg_bitmap_file[1024] = "bg.bmp"; //!< 現在の背景ビットマップファイル名。
-#ifdef USE_SAVER
-
/*
* The screen saver window
*/
static HWND hwndSaver;
-#endif /* USE_SAVER */
-
-
-#ifdef USE_GRAPHICS
-
/*!
* 現在使用中のタイルID(0ならば未使用)
* Flag set once "graphics" has been initialized
*/
-static byte_hack current_graphics_mode = 0;
+static byte current_graphics_mode = 0;
/*
* The global bitmap
*/
static DIBINIT infMask;
-#endif /* USE_GRAPHICS */
-
-
-#ifdef USE_SOUND
-
/*
* Flag set once "sound" has been initialized
*/
*/
static concptr sound_file[SOUND_MAX][SAMPLE_SOUND_MAX];
-#endif /* USE_SOUND */
-
-
-
-#ifdef USE_MUSIC
-
#define SAMPLE_MUSIC_MAX 16
static concptr music_file[MUSIC_BASIC_MAX][SAMPLE_MUSIC_MAX];
static concptr dungeon_music_file[1000][SAMPLE_MUSIC_MAX];
int current_music_type = 0;
int current_music_id = 0;
-#endif /* USE_MUSIC */
-
-
/*
* Full path to ANGBAND.INI
*/
static concptr ANGBAND_DIR_XTRA_SOUND;
static concptr ANGBAND_DIR_XTRA_MUSIC;
static concptr ANGBAND_DIR_XTRA_HELP;
-#if 0 /* #ifndef JP */
-static concptr ANGBAND_DIR_XTRA_FONT;
-#endif
-#ifdef USE_MUSIC
static concptr ANGBAND_DIR_XTRA_MUSIC;
-#endif
-
/*
* The "complex" color values
/*
* Flag for macro trigger with dump ASCII
*/
-static bool Term_no_press = FALSE;
+static bool term_no_press = FALSE;
/*
* Copy and paste
static bool special_key[256];
static bool ignore_key[256];
-#if 1
/*
* Hack -- initialization list for "special_key"
*/
VK_LMENU, VK_RMENU,
0 /* End of List */
};
-#else
-/*
- * Hack -- initialization list for "special_key"
- *
- * We ignore the modifier keys (shift, control, alt, num lock, scroll lock),
- * and the normal keys (escape, tab, return, letters, numbers, etc), but we
- * catch the keypad keys (with and without numlock set, including keypad 5),
- * the function keys (including the "menu" key which maps to F10), and the
- * "pause" key (between scroll lock and numlock). We also catch a few odd
- * keys which I do not recognize, but which are listed among keys which we
- * do catch, so they should be harmless to catch.
- */
-static byte special_key_list[] =
-{
- VK_CLEAR, /* 0x0C (KP<5>) */
-
- VK_PAUSE, /* 0x13 (pause) */
-
- VK_PRIOR, /* 0x21 (KP<9>) */
- VK_NEXT, /* 0x22 (KP<3>) */
- VK_END, /* 0x23 (KP<1>) */
- VK_HOME, /* 0x24 (KP<7>) */
- VK_LEFT, /* 0x25 (KP<4>) */
- VK_UP, /* 0x26 (KP<8>) */
- VK_RIGHT, /* 0x27 (KP<6>) */
- VK_DOWN, /* 0x28 (KP<2>) */
- VK_SELECT, /* 0x29 (?????) */
- VK_PRINT, /* 0x2A (?????) */
- VK_EXECUTE, /* 0x2B (?????) */
- VK_SNAPSHOT, /* 0x2C (?????) */
- VK_INSERT, /* 0x2D (KP<0>) */
- VK_DELETE, /* 0x2E (KP<.>) */
- VK_HELP, /* 0x2F (?????) */
-#if 0
- VK_NUMPAD0, /* 0x60 (KP<0>) */
- VK_NUMPAD1, /* 0x61 (KP<1>) */
- VK_NUMPAD2, /* 0x62 (KP<2>) */
- VK_NUMPAD3, /* 0x63 (KP<3>) */
- VK_NUMPAD4, /* 0x64 (KP<4>) */
- VK_NUMPAD5, /* 0x65 (KP<5>) */
- VK_NUMPAD6, /* 0x66 (KP<6>) */
- VK_NUMPAD7, /* 0x67 (KP<7>) */
- VK_NUMPAD8, /* 0x68 (KP<8>) */
- VK_NUMPAD9, /* 0x69 (KP<9>) */
- VK_MULTIPLY, /* 0x6A (KP<*>) */
- VK_ADD, /* 0x6B (KP<+>) */
- VK_SEPARATOR, /* 0x6C (?????) */
- VK_SUBTRACT, /* 0x6D (KP<->) */
- VK_DECIMAL, /* 0x6E (KP<.>) */
- VK_DIVIDE, /* 0x6F (KP</>) */
-#endif
- VK_F1, /* 0x70 */
- VK_F2, /* 0x71 */
- VK_F3, /* 0x72 */
- VK_F4, /* 0x73 */
- VK_F5, /* 0x74 */
- VK_F6, /* 0x75 */
- VK_F7, /* 0x76 */
- VK_F8, /* 0x77 */
- VK_F9, /* 0x78 */
- VK_F10, /* 0x79 */
- VK_F11, /* 0x7A */
- VK_F12, /* 0x7B */
- VK_F13, /* 0x7C */
- VK_F14, /* 0x7D */
- VK_F15, /* 0x7E */
- VK_F16, /* 0x7F */
- VK_F17, /* 0x80 */
- VK_F18, /* 0x81 */
- VK_F19, /* 0x82 */
- VK_F20, /* 0x83 */
- VK_F21, /* 0x84 */
- VK_F22, /* 0x85 */
- VK_F23, /* 0x86 */
- VK_F24, /* 0x87 */
- 0
-};
-#endif
-
/* Function prototype */
delete_bg();
if (use_bg == 0) return 0;
- hBG = LoadImage(NULL, bmfile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
+ hBG = LoadImage(NULL, bmfile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
if (!hBG) {
plog_fmt(_("壁紙用ビットマップ '%s' を読み込めません。", "Can't load the bitmap file '%s'."), bmfile);
use_bg = 0;
BITMAP bm;
int x = r->left, y = r->top;
int nx, ny, sx, sy, swid, shgt, cwid, chgt;
-
+
if (!use_bg || !hBG)
return;
do {
sy = ny % shgt;
chgt = MIN(shgt - sy, r->bottom - ny);
- BitBlt(hdc, nx, ny, cwid, chgt, hdcSrc, sx, sy, SRCCOPY);
+ BitBlt(hdc, nx, ny, cwid, chgt, hdcSrc, sx, sy, SRCCOPY);
ny += chgt;
} while (ny < r->bottom);
ny = y;
nx += cwid;
} while (nx < r->right);
-
+
SelectObject(hdcSrc, hOld);
DeleteDC(hdcSrc);
}
-#if 0
-/*
- * Hack -- given a pathname, point at the filename
- */
-static concptr extract_file_name(concptr s)
-{
- concptr p;
-
- /* Start at the end */
- p = s + strlen(s) - 1;
-
- /* Back up to divider */
- while ((p >= s) && (*p != ':') && (*p != '\\')) p--;
-
- /* Return file name */
- return (p+1);
-}
-#endif
-
-
-/*
- * Hack -- given a simple filename, extract the "font size" info
- *
- * Return a pointer to a static buffer holding the capitalized base name.
- */
-#if 0 /* #ifndef JP */
-static char *analyze_font(char *path, int *wp, int *hp)
-{
- int wid, hgt;
-
- char *s, *p;
-
- /* Start at the end */
- p = path + strlen(path) - 1;
-
- /* Back up to divider */
- while ((p >= path) && (*p != ':') && (*p != '\\')) --p;
-
- /* Advance to file name */
- ++p;
-
- /* Capitalize */
- for (s = p; *s; ++s)
- {
- /* Capitalize (be paranoid) */
- if (islower(*s)) *s = toupper(*s);
- }
-
- /* Find first 'X' */
- s = my_strchr(p, 'X');
-
- /* Extract font width */
- wid = atoi(p);
-
- /* Extract height */
- hgt = s ? atoi(s+1) : 0;
-
- /* Save results */
- (*wp) = wid;
- (*hp) = hgt;
- return (p);
-}
-#endif
-
/*
* Check for existance of a file
static bool check_file(concptr s)
{
char path[1024];
-
-#ifdef WIN32
-
DWORD attrib;
-#else /* WIN32 */
-
- unsigned int attrib;
-
-#endif /* WIN32 */
-
/* Copy it */
strcpy(path, s);
-#ifdef WIN32
-
/* Examine */
attrib = GetFileAttributes(path);
/* Require valid filename */
- if (attrib == INVALID_FILE_NAME) return (FALSE);
-
- /* Prohibit directory */
- if (attrib & FILE_ATTRIBUTE_DIRECTORY) return (FALSE);
-
-#else /* WIN32 */
-
- /* Examine and verify */
- if (_dos_getfileattr(path, &attrib)) return (FALSE);
-
- /* Prohibit something */
- if (attrib & FA_LABEL) return (FALSE);
+ if (attrib == INVALID_FILE_NAME) return FALSE;
/* Prohibit directory */
- if (attrib & FA_DIREC) return (FALSE);
-
-#endif /* WIN32 */
+ if (attrib & FILE_ATTRIBUTE_DIRECTORY) return FALSE;
/* Success */
- return (TRUE);
+ return TRUE;
}
int i;
char path[1024];
-
-#ifdef WIN32
-
DWORD attrib;
-#else /* WIN32 */
-
- unsigned int attrib;
-
-#endif /* WIN32 */
-
/* Copy it */
strcpy(path, s);
i = strlen(path);
/* Remove trailing backslash */
- if (i && (path[i-1] == '\\')) path[--i] = '\0';
-
-#ifdef WIN32
+ if (i && (path[i - 1] == '\\')) path[--i] = '\0';
/* Examine */
attrib = GetFileAttributes(path);
/* Require valid filename */
- if (attrib == INVALID_FILE_NAME) return (FALSE);
-
- /* Require directory */
- if (!(attrib & FILE_ATTRIBUTE_DIRECTORY)) return (FALSE);
-
-#else /* WIN32 */
-
- /* Examine and verify */
- if (_dos_getfileattr(path, &attrib)) return (FALSE);
-
- /* Prohibit something */
- if (attrib & FA_LABEL) return (FALSE);
+ if (attrib == INVALID_FILE_NAME) return FALSE;
/* Require directory */
- if (!(attrib & FA_DIREC)) return (FALSE);
-
-#endif /* WIN32 */
+ if (!(attrib & FILE_ATTRIBUTE_DIRECTORY)) return FALSE;
/* Success */
- return (TRUE);
+ return TRUE;
}
/* Font */
#ifdef JP
- strcpy(buf, td->lf.lfFaceName[0]!='\0' ? td->lf.lfFaceName : "MS ゴシック");
-#else
-#if 0
- strcpy(buf, td->font_file ? td->font_file : "8X13.FON");
+ strcpy(buf, td->lf.lfFaceName[0] != '\0' ? td->lf.lfFaceName : "MS ゴシック");
#else
- strcpy(buf, td->lf.lfFaceName[0]!='\0' ? td->lf.lfFaceName : "Courier");
-#endif
+ strcpy(buf, td->lf.lfFaceName[0] != '\0' ? td->lf.lfFaceName : "Courier");
#endif
WritePrivateProfileString(sec_name, "Font", buf, ini_file);
-#if 1 /* #ifdef JP */
wsprintf(buf, "%d", td->lf.lfWidth);
WritePrivateProfileString(sec_name, "FontWid", buf, ini_file);
wsprintf(buf, "%d", td->lf.lfHeight);
WritePrivateProfileString(sec_name, "FontHgt", buf, ini_file);
wsprintf(buf, "%d", td->lf.lfWeight);
WritePrivateProfileString(sec_name, "FontWgt", buf, ini_file);
-#endif
/* Bizarre */
strcpy(buf, td->bizarre ? "1" : "0");
WritePrivateProfileString(sec_name, "Bizarre", buf, ini_file);
/* bg */
strcpy(buf, use_bg ? "1" : "0");
WritePrivateProfileString("Angband", "BackGround", buf, ini_file);
- WritePrivateProfileString("Angband", "BackGroundBitmap",
+ WritePrivateProfileString("Angband", "BackGroundBitmap",
bg_bitmap_file[0] != '\0' ? bg_bitmap_file : "bg.bmp", ini_file);
/* Save window prefs */
char tmp[1024];
int wid, hgt, posx, posy;
- int dispx = GetSystemMetrics( SM_CXVIRTUALSCREEN);
- int dispy = GetSystemMetrics( SM_CYVIRTUALSCREEN);
- posx=0;
- posy=0;
-
+ int dispx = GetSystemMetrics(SM_CXVIRTUALSCREEN);
+ int dispy = GetSystemMetrics(SM_CYVIRTUALSCREEN);
+ posx = 0;
+ posy = 0;
+
/* Make section name */
sprintf(sec_name, "Term-%d", i);
#ifdef JP
GetPrivateProfileString(sec_name, "Font", "MS ゴシック", tmp, 127, ini_file);
#else
-#if 0
- GetPrivateProfileString(sec_name, "Font", "8X13.FON", tmp, 127, ini_file);
-#else
GetPrivateProfileString(sec_name, "Font", "Courier", tmp, 127, ini_file);
#endif
-#endif
/* Bizarre */
td->bizarre = (GetPrivateProfileInt(sec_name, "Bizarre", td->bizarre, ini_file) != 0);
/* Analyze font, save desired font name */
-#if 1 /* #ifdef JP */
td->font_want = string_make(tmp);
hgt = 15; wid = 0;
- td->lf.lfWidth = GetPrivateProfileInt(sec_name, "FontWid", wid, ini_file);
+ td->lf.lfWidth = GetPrivateProfileInt(sec_name, "FontWid", wid, ini_file);
td->lf.lfHeight = GetPrivateProfileInt(sec_name, "FontHgt", hgt, ini_file);
td->lf.lfWeight = GetPrivateProfileInt(sec_name, "FontWgt", 0, ini_file);
-#else
- td->font_want = string_make(analyze_font(tmp, &wid, &hgt));
-#endif
-
/* Tile size */
-#if 1 /* #ifdef JP */
td->tile_wid = GetPrivateProfileInt(sec_name, "TileWid", td->lf.lfWidth, ini_file);
td->tile_hgt = GetPrivateProfileInt(sec_name, "TileHgt", td->lf.lfHeight, ini_file);
-#else
- td->tile_wid = GetPrivateProfileInt(sec_name, "TileWid", wid, ini_file);
- td->tile_hgt = GetPrivateProfileInt(sec_name, "TileHgt", hgt, ini_file);
-#endif
-
/* Window size */
td->cols = GetPrivateProfileInt(sec_name, "NumCols", td->cols, ini_file);
/* Window position */
posx = GetPrivateProfileInt(sec_name, "PositionX", posx, ini_file);
posy = GetPrivateProfileInt(sec_name, "PositionY", posy, ini_file);
- td->pos_x = MIN(MAX(0, posx), dispx-128);
- td->pos_y = MIN(MAX(0, posy), dispy-128);
+ td->pos_x = MIN(MAX(0, posx), dispx - 128);
+ td->pos_y = MIN(MAX(0, posy), dispy - 128);
/* Window Z position */
if (i > 0)
int i;
/* Extract the "arg_graphics" flag */
- arg_graphics = (byte_hack)GetPrivateProfileInt("Angband", "Graphics", GRAPHICS_NONE, ini_file);
+ arg_graphics = (byte)GetPrivateProfileInt("Angband", "Graphics", GRAPHICS_NONE, ini_file);
/* Extract the "arg_bigtile" flag */
arg_bigtile = (GetPrivateProfileInt("Angband", "Bigtile", FALSE, ini_file) != 0);
}
}
-#if defined(USE_SOUND) || defined(USE_MUSIC)
/*
* - Taken from files.c.
char *t;
/* Skip leading whitespace */
- for ( ; *s && iswspace(*s); ++s) /* loop */;
+ for (; *s && iswspace(*s); ++s) /* loop */;
/* All done */
if (!*s) break;
return (k);
}
-#endif /* USE_SOUND || USE_MUSIC */
-
-#ifdef USE_SOUND
static void load_sound_prefs(void)
{
}
}
-#endif /* USE_SOUND */
-
-#ifdef USE_MUSIC
static void load_music_prefs(void)
{
}
-#endif /* USE_MUSIC */
/*
* Create the new global palette based on the bitmap palette
/* This makes no sense */
- if (!paletted) return (TRUE);
+ if (!paletted) return TRUE;
/* No bitmap */
lppe = NULL;
nEntries = 0;
-#ifdef USE_GRAPHICS
-
/* Check the bitmap palette */
hBmPal = infGraph.hPalette;
rnfree(lppe, lppeSize);
/* Fail */
- return (FALSE);
+ return FALSE;
}
}
-#endif /* USE_GRAPHICS */
-
/* Size of palette */
pLogPalSize = sizeof(LOGPALETTE) + (nEntries + 16) * sizeof(PALETTEENTRY);
LPPALETTEENTRY p;
/* Access the entry */
- p = &(pLogPal->palPalEntry[i+nEntries]);
+ p = &(pLogPal->palPalEntry[i + nEntries]);
/* Save the colors */
p->peRed = GetRValue(win_clr[i]);
hPal = hNewPal;
/* Success */
- return (TRUE);
+ return TRUE;
}
-#ifdef USE_GRAPHICS
/*!
* @brief グラフィクスを初期化する / Initialize graphics
* @details
if (!ReadDIB(data[0].w, buf, &infGraph))
{
plog_fmt(_("ビットマップ '%s' を読み込めません。", "Cannot read bitmap file '%s'"), name);
- return (FALSE);
+ return FALSE;
}
/* Save the new sizes */
if (!ReadDIB(data[0].w, buf, &infMask))
{
plog_fmt("Cannot read bitmap file '%s'", buf);
- return (FALSE);
+ return FALSE;
}
}
if (arg_graphics == GRAPHICS_HENGBAND)
if (!ReadDIB(data[0].w, buf, &infMask))
{
plog_fmt("Cannot read bitmap file '%s'", buf);
- return (FALSE);
+ return FALSE;
}
}
/* Free bitmap */
plog(_("パレットを実現できません!", "Cannot activate palette!"));
- return (FALSE);
+ return FALSE;
}
/* Graphics available */
current_graphics_mode = arg_graphics;
return (current_graphics_mode);
}
-#endif /* USE_GRAPHICS */
-#ifdef USE_MUSIC
/*
* Initialize music
*/
mciSendCommand(mop.wDeviceID, MCI_CLOSE, 0, 0);
}
-#endif /* USE_MUSIC */
-#ifdef USE_SOUND
/*
* Initialize sound
*/
}
return (can_use_sound);
}
-#endif /* USE_SOUND */
/*
/* Resize the window */
SetWindowPos(td->w, 0, 0, 0,
- td->size_wid, td->size_hgt,
- SWP_NOMOVE | SWP_NOZORDER);
+ td->size_wid, td->size_hgt,
+ SWP_NOMOVE | SWP_NOZORDER);
/* Redraw later */
InvalidateRect(td->w, NULL, TRUE);
{
int wid, hgt;
-#if 0 /* #ifndef JP */
- int i;
- char *base;
- char buf[1024];
-#endif
-
/* Forget the old font (if needed) */
if (td->font_id) DeleteObject(td->font_id);
-#if 1 /* #ifdef JP */
/* Unused */
(void)path;
td->font_id = CreateFontIndirect(&(td->lf));
wid = td->lf.lfWidth;
hgt = td->lf.lfHeight;
- if (!td->font_id) return (1);
-#else
- /* Forget old font */
- if (td->font_file)
- {
- bool used = FALSE;
-
- /* Scan windows */
- for (i = 0; i < MAX_TERM_DATA; i++)
- {
- /* Don't check when closing the application */
- if (!path) break;
-
- /* Check "screen" */
- if ((td != &data[i]) &&
- (data[i].font_file) &&
- (streq(data[i].font_file, td->font_file)))
- {
- used = TRUE;
- }
- }
-
- /* Remove unused font resources */
- if (!used) RemoveFontResource(td->font_file);
-
- /* Free the old name */
- string_free(td->font_file);
-
- /* Forget it */
- td->font_file = NULL;
- }
-
- /* No path given */
- if (!path) return (1);
-
- /* Local copy */
- strcpy(buf, path);
-
- /* Analyze font path */
- base = analyze_font(buf, &wid, &hgt);
-
- /* Verify suffix */
- if (!suffix(base, ".FON")) return (1);
-
- /* Verify file */
- if (!check_file(buf)) return (1);
-
- /* Load the new font */
- if (!AddFontResource(buf)) return (1);
-
- /* Save new font name */
- td->font_file = string_make(base);
-
- /* Remove the "suffix" */
- base[strlen(base)-4] = '\0';
-
- /* Create the font (using the 'base' of the font file name!) */
- td->font_id = CreateFont(hgt, wid, 0, 0, FW_DONTCARE, 0, 0, 0,
- ANSI_CHARSET, OUT_DEFAULT_PRECIS,
- CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
- FIXED_PITCH | FF_DONTCARE, base);
-#endif
+ if (!td->font_id) return 1;
/* Hack -- Unknown size */
if (!wid || !hgt)
td->font_hgt = hgt;
/* Success */
- return (0);
+ return 0;
}
*/
static void term_change_font(term_data *td)
{
-#if 1 /* #ifdef JP */
CHOOSEFONT cf;
memset(&cf, 0, sizeof(cf));
cf.lStructSize = sizeof(cf);
- cf.Flags = CF_SCREENFONTS | CF_FIXEDPITCHONLY | CF_NOVERTFONTS | CF_INITTOLOGFONTSTRUCT;
- cf.lpLogFont = &(td->lf);
+ cf.Flags = CF_SCREENFONTS | CF_FIXEDPITCHONLY | CF_NOVERTFONTS | CF_INITTOLOGFONTSTRUCT;
+ cf.lpLogFont = &(td->lf);
if (ChooseFont(&cf))
{
/* Resize the window */
term_window_resize(td);
}
-
-#else
- OPENFILENAME ofn;
-
- char tmp[1024] = "";
-
- /* Extract a default if possible */
- if (td->font_file) strcpy(tmp, td->font_file);
-
- /* Ask for a choice */
- memset(&ofn, 0, sizeof(ofn));
- ofn.lStructSize = sizeof(ofn);
- ofn.hwndOwner = data[0].w;
- ofn.lpstrFilter = "Angband Font Files (*.fon)\0*.fon\0";
- ofn.nFilterIndex = 1;
- ofn.lpstrFile = tmp;
- ofn.nMaxFile = 128;
- ofn.lpstrInitialDir = ANGBAND_DIR_XTRA_FONT;
- ofn.Flags = OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR;
- ofn.lpstrDefExt = "fon";
-
- /* Force choice if legal */
- if (GetOpenFileName(&ofn))
- {
- /* Force the font */
- if (term_force_font(td, tmp))
- {
- /* Access the standard font file */
- path_build(tmp, sizeof(tmp), ANGBAND_DIR_XTRA_FONT, "8X13.FON");
-
- /* Force the use of that font */
- (void)term_force_font(td, tmp);
- }
-
- /* Assume not bizarre */
- td->bizarre = FALSE;
-
- /* Reset the tile info */
- td->tile_wid = td->font_wid;
- td->tile_hgt = td->font_hgt;
-
- /* Analyze the font */
- term_getsize(td);
-
- /* Resize the window */
- term_window_resize(td);
- }
-#endif
-
}
+
/*
* Allow the user to lock this window.
*/
static void term_window_pos(term_data *td, HWND hWnd)
{
SetWindowPos(td->w, hWnd, 0, 0, 0, 0,
- SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
+ SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
}
-static void windows_map(void);
+static void windows_map(player_type *player_ptr);
/*
* Hack -- redraw a term_data
*/
-static void term_data_redraw(term_data *td)
+static void term_data_redraw(player_type *player_ptr, term_data *td)
{
if (td->map_active)
{
/* Redraw the map */
- windows_map();
+ windows_map(player_ptr);
}
else
{
}
-void Term_inversed_area(HWND hWnd, int x, int y, int w, int h)
+void term_inversed_area(HWND hWnd, int x, int y, int w, int h)
{
HDC hdc;
HPEN oldPen;
hdc = GetDC(hWnd);
myBrush = CreateSolidBrush(RGB(255, 255, 255));
oldBrush = SelectObject(hdc, myBrush);
- oldPen = SelectObject(hdc, GetStockObject(NULL_PEN) );
+ oldPen = SelectObject(hdc, GetStockObject(NULL_PEN));
PatBlt(hdc, tx, ty, tw, th, PATINVERT);
}
-
-/*** Function hooks needed by "Term" ***/
-
-
-#if 0
-
-/*
- * Initialize a new Term
- */
-static void Term_init_win(term *t)
-{
- /* XXX Unused */
-}
-
-
-/*
- * Nuke an old Term
- */
-static void Term_nuke_win(term *t)
-{
- /* XXX Unused */
-}
-
-#endif
-
-
/*!
* @brief //!< Windows版ユーザ設定項目実装部(実装必須) /Interact with the User
*/
-static errr Term_user_win(int n)
+static errr term_user_win(int n)
{
/* Unused */
(void)n;
/* Success */
- return (0);
+ return 0;
}
/*
* React to global changes
*/
-static errr Term_xtra_win_react(void)
+static errr term_xtra_win_react(player_type *player_ptr)
{
int i;
if (change) (void)new_palette();
}
-
-#ifdef USE_SOUND
-
/* Handle "arg_sound" */
if (use_sound != arg_sound)
{
use_sound = arg_sound;
}
-#endif
-
-#ifdef USE_MUSIC
-
/* Handle "arg_sound" */
if (use_music != arg_music)
{
/* Change setting */
use_music = arg_music;
- if(!arg_music) stop_music();
- else select_floor_music(p_ptr);
+ if (!arg_music) stop_music();
+ else select_floor_music(player_ptr);
}
-#endif
-
-
-#ifdef USE_GRAPHICS
-
/* Handle "arg_graphics" */
if (use_graphics != arg_graphics)
{
use_graphics = arg_graphics;
/* Reset visuals */
-#ifdef ANGBAND_2_8_1
- reset_visuals();
-#else /* ANGBAND_2_8_1 */
- reset_visuals(TRUE);
-#endif /* ANGBAND_2_8_1 */
+ reset_visuals(player_ptr);
}
-#endif /* USE_GRAPHICS */
-
-
/* Clean up windows */
for (i = 0; i < MAX_TERM_DATA; i++)
{
/* Success */
- return (0);
+ return 0;
}
/*
* Process at least one event
*/
-static errr Term_xtra_win_event(int v)
+static errr term_xtra_win_event(int v)
{
MSG msg;
/*
* Process all pending events
*/
-static errr Term_xtra_win_flush(void)
+static errr term_xtra_win_flush(void)
{
MSG msg;
}
/* Success */
- return (0);
+ return 0;
}
/*
* Hack -- clear the screen
*
- * Make this more efficient
+ * Make this more efficient
*/
-static errr Term_xtra_win_clear(void)
+static errr term_xtra_win_clear(void)
{
term_data *td = (term_data*)(Term->data);
/*
* Hack -- make a noise
*/
-static errr Term_xtra_win_noise(void)
+static errr term_xtra_win_noise(void)
{
MessageBeep(MB_ICONASTERISK);
- return (0);
+ return 0;
}
/*
* Hack -- make a sound
*/
-static errr Term_xtra_win_sound(int v)
+static errr term_xtra_win_sound(int v)
{
-#ifdef USE_SOUND
int i;
char buf[1024];
-#endif /* USE_SOUND */
/* Sound disabled */
- if (!use_sound) return (1);
+ if (!use_sound) return 1;
/* Illegal sound */
- if ((v < 0) || (v >= SOUND_MAX)) return (1);
-
-#ifdef USE_SOUND
+ if ((v < 0) || (v >= SOUND_MAX)) return 1;
/* Count the samples */
for (i = 0; i < SAMPLE_SOUND_MAX; i++)
}
/* No sample */
- if (i == 0) return (1);
+ if (i == 0) return 1;
/* Build the path */
path_build(buf, 1024, ANGBAND_DIR_XTRA_SOUND, sound_file[v][Rand_external(i)]);
-#ifdef WIN32
-
/* Play the sound, catch errors */
return (PlaySound(buf, 0, SND_FILENAME | SND_ASYNC));
-
-#else /* WIN32 */
-
- /* Play the sound, catch errors */
- return (sndPlaySound(buf, SND_ASYNC));
-
-#endif /* WIN32 */
-
-#else /* USE_SOUND */
-
- return (1);
-
-#endif /* USE_SOUND */
}
/*
* Hack -- play a music
*/
-static errr Term_xtra_win_music(int n, int v)
+static errr term_xtra_win_music(int n, int v)
{
-#ifdef USE_MUSIC
int i = 0;
char buf[1024];
-#endif /* USE_MUSIC */
-
/* Sound disabled */
if (n == TERM_XTRA_MUSIC_MUTE)
{
mciSendCommand(mop.wDeviceID, MCI_CLOSE, 0, 0);
}
- if(!use_music) return (1);
+ if (!use_music) return 1;
/* Illegal sound */
- if(n == TERM_XTRA_MUSIC_BASIC && ((v < 0) || (v >= MUSIC_BASIC_MAX))) return (1);
- else if(v < 0 || v >= 1000) return(1); /*!< TODO */
+ if (n == TERM_XTRA_MUSIC_BASIC && ((v < 0) || (v >= MUSIC_BASIC_MAX))) return 1;
+ else if (v < 0 || v >= 1000) return(1); /*!< TODO */
-#ifdef USE_MUSIC
-
- switch(n)
+ switch (n)
{
case TERM_XTRA_MUSIC_BASIC:
- for (i = 0; i < SAMPLE_MUSIC_MAX; i++) if(!music_file[v][i]) break;
+ for (i = 0; i < SAMPLE_MUSIC_MAX; i++) if (!music_file[v][i]) break;
break;
case TERM_XTRA_MUSIC_DUNGEON:
- for (i = 0; i < SAMPLE_MUSIC_MAX; i++) if(!dungeon_music_file[v][i]) break;
+ for (i = 0; i < SAMPLE_MUSIC_MAX; i++) if (!dungeon_music_file[v][i]) break;
break;
case TERM_XTRA_MUSIC_QUEST:
- for (i = 0; i < SAMPLE_MUSIC_MAX; i++) if(!quest_music_file[v][i]) break;
+ for (i = 0; i < SAMPLE_MUSIC_MAX; i++) if (!quest_music_file[v][i]) break;
break;
case TERM_XTRA_MUSIC_TOWN:
- for (i = 0; i < SAMPLE_MUSIC_MAX; i++) if(!town_music_file[v][i]) break;
+ for (i = 0; i < SAMPLE_MUSIC_MAX; i++) if (!town_music_file[v][i]) break;
break;
}
/* No sample */
if (i == 0)
{
- return (1);
+ return 1;
}
- switch(n)
+ switch (n)
{
case TERM_XTRA_MUSIC_BASIC:
path_build(buf, 1024, ANGBAND_DIR_XTRA_MUSIC, music_file[v][Rand_external(i)]);
break;
}
- if(current_music_type == n && current_music_id == v)
+ if (current_music_type == n && current_music_id == v)
{
- return (0);
+ return 0;
}
current_music_type = n;
current_music_id = v;
-#ifdef WIN32
-
- mop.lpstrDeviceType = mci_device_type;
+ mop.lpstrDeviceType = mci_device_type;
mop.lpstrElementName = buf;
mciSendCommand(mop.wDeviceID, MCI_STOP, 0, 0);
mciSendCommand(mop.wDeviceID, MCI_CLOSE, 0, 0);
mciSendCommand(mop.wDeviceID, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD)&mop);
mciSendCommand(mop.wDeviceID, MCI_SEEK, MCI_SEEK_TO_START, 0);
mciSendCommand(mop.wDeviceID, MCI_PLAY, MCI_NOTIFY, (DWORD)&mop);
- return (0);
-
-#endif /* WIN32 */
-
-#else /* USE_MUSIC */
-
- return (1);
-
-#endif /* USE_MUSIC */
-
+ return 0;
}
/*
* Delay for "x" milliseconds
*/
-static int Term_xtra_win_delay(int v)
+static int term_xtra_win_delay(int v)
{
-
-#ifdef WIN32
-
/* Sleep */
Sleep(v);
-#else /* WIN32 */
-
- DWORD t;
- MSG msg;
-
- /* Final count */
- t = GetTickCount() + v;
-
- /* Wait for it */
- while (GetTickCount() < t)
- {
- /* Handle messages */
- if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
-
-#endif /* WIN32 */
-
/* Success */
- return (0);
+ return 0;
}
/*
+ * todo z-termに影響があるのでplayer_typeの追加は保留
* Do a "special thing"
*/
-static errr Term_xtra_win(int n, int v)
+static errr term_xtra_win(int n, int v)
{
/* Handle a subset of the legal requests */
switch (n)
{
/* Make a bell sound */
- case TERM_XTRA_NOISE:
- {
- return (Term_xtra_win_noise());
- }
+ case TERM_XTRA_NOISE:
+ {
+ return (term_xtra_win_noise());
+ }
- /* Play a music */
- case TERM_XTRA_MUSIC_BASIC:
- case TERM_XTRA_MUSIC_DUNGEON:
- case TERM_XTRA_MUSIC_QUEST:
- case TERM_XTRA_MUSIC_TOWN:
- {
- return (Term_xtra_win_music(n, v));
- }
+ /* Play a music */
+ case TERM_XTRA_MUSIC_BASIC:
+ case TERM_XTRA_MUSIC_DUNGEON:
+ case TERM_XTRA_MUSIC_QUEST:
+ case TERM_XTRA_MUSIC_TOWN:
+ {
+ return (term_xtra_win_music(n, v));
+ }
- /* Make a special sound */
- case TERM_XTRA_SOUND:
- {
- return (Term_xtra_win_sound(v));
- }
+ /* Make a special sound */
+ case TERM_XTRA_SOUND:
+ {
+ return (term_xtra_win_sound(v));
+ }
- /* Process random events */
- case TERM_XTRA_BORED:
- {
- return (Term_xtra_win_event(0));
- }
+ /* Process random events */
+ case TERM_XTRA_BORED:
+ {
+ return (term_xtra_win_event(0));
+ }
- /* Process an event */
- case TERM_XTRA_EVENT:
- {
- return (Term_xtra_win_event(v));
- }
+ /* Process an event */
+ case TERM_XTRA_EVENT:
+ {
+ return (term_xtra_win_event(v));
+ }
- /* Flush all events */
- case TERM_XTRA_FLUSH:
- {
- return (Term_xtra_win_flush());
- }
+ /* Flush all events */
+ case TERM_XTRA_FLUSH:
+ {
+ return (term_xtra_win_flush());
+ }
- /* Clear the screen */
- case TERM_XTRA_CLEAR:
- {
- return (Term_xtra_win_clear());
- }
+ /* Clear the screen */
+ case TERM_XTRA_CLEAR:
+ {
+ return (term_xtra_win_clear());
+ }
- /* React to global changes */
- case TERM_XTRA_REACT:
- {
- return (Term_xtra_win_react());
- }
+ /* React to global changes */
+ case TERM_XTRA_REACT:
+ {
+ return (term_xtra_win_react(p_ptr));
+ }
- /* Delay for some milliseconds */
- case TERM_XTRA_DELAY:
- {
- return (Term_xtra_win_delay(v));
- }
+ /* Delay for some milliseconds */
+ case TERM_XTRA_DELAY:
+ {
+ return (term_xtra_win_delay(v));
+ }
}
return 1;
*
* Draw a "cursor" at (x,y), using a "yellow box".
*/
-static errr Term_curs_win(int x, int y)
+static errr term_curs_win(int x, int y)
{
term_data *td = (term_data*)(Term->data);
*
* Draw a "big cursor" at (x,y), using a "yellow box".
*/
-static errr Term_bigcurs_win(int x, int y)
+static errr term_bigcurs_win(int x, int y)
{
term_data *td = (term_data*)(Term->data);
if (td->map_active)
{
/* Normal cursor in map window */
- Term_curs_win(x, y);
+ term_curs_win(x, y);
return 0;
}
else
*
* Erase a "block" of "n" characters starting at (x,y).
*/
-static errr Term_wipe_win(int x, int y, int n)
+static errr term_wipe_win(int x, int y, int n)
{
term_data *td = (term_data*)(Term->data);
*
* Draw several ("n") chars, with an attr, at a given location.
*
- * All "graphic" data is handled by "Term_pict_win()", below.
+ * All "graphic" data is handled by "term_pict_win()", below.
*
* One would think there is a more efficient method for telling a window
* what color it should be using to draw with, but perhaps simply changing
- * it every time is not too inefficient.
+ * it every time is not too inefficient.
*/
-static errr Term_text_win(int x, int y, int n, TERM_COLOR a, concptr s)
+static errr term_text_win(int x, int y, int n, TERM_COLOR a, concptr s)
{
term_data *td = (term_data*)(Term->data);
RECT rc;
HDC hdc;
-#if 1 /* #ifdef JP */
static HBITMAP WALL;
static HBRUSH myBrush, oldBrush;
static HPEN oldPen;
static bool init_done = FALSE;
- if (!init_done){
+ if (!init_done) {
WALL = LoadBitmap(hInstance, AppName);
myBrush = CreatePatternBrush(WALL);
init_done = TRUE;
}
-#endif
/* Total rectangle */
rc.left = x * td->tile_wid + td->size_ow1;
}
else if (paletted)
{
- SetTextColor(hdc, win_clr[a&0x0F]);
+ SetTextColor(hdc, win_clr[a & 0x0F]);
}
else
{
/* Use the font */
SelectObject(hdc, td->font_id);
-
+
/* bg */
if (use_bg) SetBkMode(hdc, TRANSPARENT);
/* Bizarre size */
if (td->bizarre ||
- (td->tile_hgt != td->font_hgt) ||
- (td->tile_wid != td->font_wid))
+ (td->tile_hgt != td->font_hgt) ||
+ (td->tile_wid != td->font_wid))
{
int i;
/* Erase complete rectangle */
ExtTextOut(hdc, 0, 0, ETO_OPAQUE, &rc, NULL, 0, NULL);
-
+
/* bg */
if (use_bg) DrawBG(hdc, &rc);
for (i = 0; i < n; i++)
{
#ifdef JP
- if (use_bigtile && *(s+i)=="■"[0] && *(s+i+1)=="■"[1])
+ if (use_bigtile && *(s + i) == "■"[0] && *(s + i + 1) == "■"[1])
{
rc.right += td->font_wid;
oldBrush = SelectObject(hdc, myBrush);
- oldPen = SelectObject(hdc, GetStockObject(NULL_PEN) );
+ oldPen = SelectObject(hdc, GetStockObject(NULL_PEN));
/* Dump the wall */
- Rectangle(hdc, rc.left, rc.top, rc.right+1, rc.bottom+1);
+ Rectangle(hdc, rc.left, rc.top, rc.right + 1, rc.bottom + 1);
SelectObject(hdc, oldBrush);
SelectObject(hdc, oldPen);
rc.left += 2 * td->tile_wid;
rc.right += 2 * td->tile_wid;
}
- else if ( iskanji(*(s+i)) ) /* 2バイト文字 */
+ else if (iskanji(*(s + i))) /* 2バイト文字 */
{
rc.right += td->font_wid;
/* Dump the text */
ExtTextOut(hdc, rc.left, rc.top, ETO_CLIPPED, &rc,
- s+i, 2, NULL);
+ s + i, 2, NULL);
rc.right -= td->font_wid;
/* Advance */
i++;
rc.left += 2 * td->tile_wid;
rc.right += 2 * td->tile_wid;
- } else if (*(s+i)==127){
+ }
+ else if (*(s + i) == 127) {
oldBrush = SelectObject(hdc, myBrush);
- oldPen = SelectObject(hdc, GetStockObject(NULL_PEN) );
+ oldPen = SelectObject(hdc, GetStockObject(NULL_PEN));
/* Dump the wall */
- Rectangle(hdc, rc.left, rc.top, rc.right+1, rc.bottom+1);
+ Rectangle(hdc, rc.left, rc.top, rc.right + 1, rc.bottom + 1);
SelectObject(hdc, oldBrush);
SelectObject(hdc, oldPen);
/* Advance */
rc.left += td->tile_wid;
rc.right += td->tile_wid;
- } else {
+ }
+ else {
/* Dump the text */
- ExtTextOut(hdc, rc.left, rc.top, ETO_CLIPPED, &rc, s+i, 1, NULL);
+ ExtTextOut(hdc, rc.left, rc.top, ETO_CLIPPED, &rc, s + i, 1, NULL);
/* Advance */
rc.left += td->tile_wid;
rc.right += td->tile_wid;
}
#else
-#if 1
- if (*(s+i)==127){
+ if (*(s + i) == 127) {
oldBrush = SelectObject(hdc, myBrush);
- oldPen = SelectObject(hdc, GetStockObject(NULL_PEN) );
+ oldPen = SelectObject(hdc, GetStockObject(NULL_PEN));
/* Dump the wall */
- Rectangle(hdc, rc.left, rc.top, rc.right+1, rc.bottom+1);
+ Rectangle(hdc, rc.left, rc.top, rc.right + 1, rc.bottom + 1);
SelectObject(hdc, oldBrush);
SelectObject(hdc, oldPen);
/* Advance */
rc.left += td->tile_wid;
rc.right += td->tile_wid;
- } else {
+ }
+ else {
/* Dump the text */
ExtTextOut(hdc, rc.left, rc.top, ETO_CLIPPED, &rc,
- s+i, 1, NULL);
+ s + i, 1, NULL);
/* Advance */
rc.left += td->tile_wid;
rc.right += td->tile_wid;
}
-#else
- /* Dump the text */
- ExtTextOut(hdc, rc.left, rc.top, 0, &rc,
- s+i, 1, NULL);
-
- /* Advance */
- rc.left += td->tile_wid;
- rc.right += td->tile_wid;
-#endif
#endif
}
{
/* Dump the text */
ExtTextOut(hdc, rc.left, rc.top, ETO_OPAQUE | ETO_CLIPPED, &rc,
- s, n, NULL);
+ s, n, NULL);
}
/* Release DC */
*
* Draw an array of "special" attr/char pairs at the given location.
*
- * We use the "Term_pict_win()" function for "graphic" data, which are
+ * We use the "term_pict_win()" function for "graphic" data, which are
* encoded by setting the "high-bits" of both the "attr" and the "char"
* data. We use the "attr" to represent the "row" of the main bitmap,
* and the "char" to represent the "col" of the main bitmap. The use
*
* If "graphics" is not available, we simply "wipe" the given grids.
*/
-static errr Term_pict_win(TERM_LEN x, TERM_LEN y, int n, const TERM_COLOR *ap, concptr cp, const TERM_COLOR *tap, concptr tcp)
+static errr term_pict_win(TERM_LEN x, TERM_LEN y, int n, const TERM_COLOR *ap, concptr cp, const TERM_COLOR *tap, concptr tcp)
{
term_data *td = (term_data*)(Term->data);
-
-#ifdef USE_GRAPHICS
-
int i;
TERM_LEN x1, y1, w1, h1, tw1, th1;
TERM_LEN x2, y2, w2, h2, tw2 = 0;
if (!use_graphics)
{
/* Erase the grids */
- return (Term_wipe_win(x, y, n));
+ return (term_wipe_win(x, y, n));
}
/* Size of bitmap cell */
/* Release */
ReleaseDC(td->w, hdc);
-#else /* USE_GRAPHICS */
-
- /* Just erase this grid */
- return (Term_wipe_win(x, y, n));
-
-#endif /* USE_GRAPHICS */
-
/* Success */
return 0;
}
-static void windows_map(void)
+static void windows_map(player_type *player_ptr)
{
term_data *td = &data[0];
TERM_COLOR a;
/* Only in graphics mode */
if (!use_graphics) return;
- Term_xtra_win_clear();
+ term_xtra_win_clear();
td->map_tile_wid = (td->tile_wid * td->cols) / MAX_WID;
td->map_tile_hgt = (td->tile_hgt * td->rows) / MAX_HGT;
{
min_x = 0;
min_y = 0;
- max_x = p_ptr->current_floor_ptr->width;
- max_y = p_ptr->current_floor_ptr->height;
+ max_x = player_ptr->current_floor_ptr->width;
+ max_y = player_ptr->current_floor_ptr->height;
}
/* Draw the map */
{
for (y = min_y; y < max_y; y++)
{
- map_info(y, x, &a, (char*)&c, &ta, (char*)&tc);
+ map_info(player_ptr, y, x, &a, (char*)&c, &ta, (char*)&tc);
/* Ignore non-graphics */
if ((a & 0x80) && (c & 0x80))
{
- Term_pict_win(x - min_x, y - min_y, 1, &a, &c, &ta, &tc);
+ term_pict_win(x - min_x, y - min_y, 1, &a, &c, &ta, &tc);
}
}
}
/* Hilite the player */
- Term_curs_win(p_ptr->x - min_x, p_ptr->y - min_y);
+ term_curs_win(player_ptr->x - min_x, player_ptr->y - min_y);
/* Wait for a keypress, flush key buffer */
Term_inkey(&c, TRUE, TRUE);
td->map_active = FALSE;
/* Restore screen */
- Term_xtra_win_clear();
+ term_xtra_win_clear();
Term_redraw();
}
/* Use a "software" cursor */
t->soft_cursor = TRUE;
- /* Use "Term_pict" for "graphic" data */
+ /* Use "term_pict" for "graphic" data */
t->higher_pict = TRUE;
/* Erase with "white space" */
t->attr_blank = TERM_WHITE;
t->char_blank = ' ';
-#if 0
- /* Prepare the init/nuke hooks */
- t->init_hook = Term_init_win;
- t->nuke_hook = Term_nuke_win;
-#endif
-
/* Prepare the template hooks */
- t->user_hook = Term_user_win;
- t->xtra_hook = Term_xtra_win;
- t->curs_hook = Term_curs_win;
- t->bigcurs_hook = Term_bigcurs_win;
- t->wipe_hook = Term_wipe_win;
- t->text_hook = Term_text_win;
- t->pict_hook = Term_pict_win;
+ t->user_hook = term_user_win;
+ t->xtra_hook = term_xtra_win;
+ t->curs_hook = term_curs_win;
+ t->bigcurs_hook = term_bigcurs_win;
+ t->wipe_hook = term_wipe_win;
+ t->text_hook = term_text_win;
+ t->pict_hook = term_pict_win;
/* Remember where we came from */
t->data = (vptr)(td);
* to over-ride selected values, then create the windows, and fonts.
*
* Must use SW_SHOW not SW_SHOWNA, since on 256 color display
- * must make active to realize the palette.
+ * must make active to realize the palette.
*/
static void init_windows(void)
{
term_data *td;
-#if 0 /* #ifndef JP */
- char buf[1024];
-#endif
-
/* Main window */
td = &data[0];
WIPE(td, term_data);
td->pos_x = 7 * 30;
td->pos_y = 7 * 20;
td->posfix = FALSE;
-#if 1 /* #ifdef JP */
td->bizarre = TRUE;
-#endif
/* Sub windows */
for (i = 1; i < MAX_TERM_DATA; i++)
{
td->pos_x = (7 - i) * 30;
td->pos_y = (7 - i) * 20;
td->posfix = FALSE;
-#if 1 /* #ifdef JP */
- td->bizarre = TRUE;
-#endif
+ td->bizarre = TRUE;
}
-
/* Load prefs */
load_prefs();
-
/* Main window (need these before term_getsize gets called) */
td = &data[0];
td->dwStyle = (WS_OVERLAPPED | WS_THICKFRAME | WS_SYSMENU |
- WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION |
- WS_VISIBLE);
+ WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION |
+ WS_VISIBLE);
td->dwExStyle = 0;
td->visible = TRUE;
{
td = &data[i];
-#if 1 /* #ifdef JP */
strncpy(td->lf.lfFaceName, td->font_want, LF_FACESIZE);
td->lf.lfCharSet = DEFAULT_CHARSET;
td->lf.lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
/* Activate the chosen font */
term_force_font(td, NULL);
- if(!td->tile_wid) td->tile_wid = td->font_wid;
- if(!td->tile_hgt) td->tile_hgt = td->font_hgt;
-#else
- /* Access the standard font file */
- path_build(buf, sizeof(buf), ANGBAND_DIR_XTRA_FONT, td->font_want);
-
- /* Activate the chosen font */
- if (term_force_font(td, buf))
- {
- /* Access the standard font file */
- path_build(buf, sizeof(buf), ANGBAND_DIR_XTRA_FONT, "8X13.FON");
-
- /* Force the use of that font */
- (void)term_force_font(td, buf);
-
- td->tile_wid = 8;
- td->tile_hgt = 13;
-
- /* Assume not bizarre */
- td->bizarre = FALSE;
- }
-#endif
-
+ if (!td->tile_wid) td->tile_wid = td->font_wid;
+ if (!td->tile_hgt) td->tile_hgt = td->font_hgt;
/* Analyze the font */
term_getsize(td);
my_td = td;
td->w = CreateWindowEx(td->dwExStyle, AngList,
- td->s, td->dwStyle,
- td->pos_x, td->pos_y,
- td->size_wid, td->size_hgt,
- HWND_DESKTOP, NULL, hInstance, NULL);
+ td->s, td->dwStyle,
+ td->pos_x, td->pos_y,
+ td->size_wid, td->size_hgt,
+ HWND_DESKTOP, NULL, hInstance, NULL);
my_td = NULL;
if (!td->w) quit(_("サブウィンドウに作成に失敗しました", "Failed to create sub-window"));
/* Main window */
my_td = td;
td->w = CreateWindowEx(td->dwExStyle, AppName,
- td->s, td->dwStyle,
- td->pos_x, td->pos_y,
- td->size_wid, td->size_hgt,
- HWND_DESKTOP, NULL, hInstance, NULL);
+ td->s, td->dwStyle,
+ td->pos_x, td->pos_y,
+ td->size_wid, td->size_hgt,
+ HWND_DESKTOP, NULL, hInstance, NULL);
my_td = NULL;
if (!td->w) quit(_("メインウィンドウの作成に失敗しました", "Failed to create Angband window"));
/* Process pending messages */
- (void)Term_xtra_win_flush();
+ (void)term_xtra_win_flush();
}
/* Menu "File", Disable all */
EnableMenuItem(hm, IDM_FILE_NEW,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
EnableMenuItem(hm, IDM_FILE_OPEN,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
EnableMenuItem(hm, IDM_FILE_SAVE,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
EnableMenuItem(hm, IDM_FILE_EXIT,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
EnableMenuItem(hm, IDM_FILE_SCORE,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
/* No character available */
{
/* Menu "File", Item "Save" */
EnableMenuItem(hm, IDM_FILE_SAVE,
- MF_BYCOMMAND | MF_ENABLED);
+ MF_BYCOMMAND | MF_ENABLED);
}
/* Menu "File", Item "Exit" */
EnableMenuItem(hm, IDM_FILE_EXIT,
- MF_BYCOMMAND | MF_ENABLED);
+ MF_BYCOMMAND | MF_ENABLED);
EnableMenuItem(hm, IDM_FILE_SCORE,
- MF_BYCOMMAND | MF_ENABLED);
+ MF_BYCOMMAND | MF_ENABLED);
/* Menu "Window::Visibility" */
for (i = 0; i < MAX_TERM_DATA; i++)
{
EnableMenuItem(hm, IDM_WINDOW_VIS_0 + i,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
CheckMenuItem(hm, IDM_WINDOW_VIS_0 + i,
- (data[i].visible ? MF_CHECKED : MF_UNCHECKED));
+ (data[i].visible ? MF_CHECKED : MF_UNCHECKED));
EnableMenuItem(hm, IDM_WINDOW_VIS_0 + i,
- MF_BYCOMMAND | MF_ENABLED);
+ MF_BYCOMMAND | MF_ENABLED);
}
/* Menu "Window::Font" */
for (i = 0; i < MAX_TERM_DATA; i++)
{
EnableMenuItem(hm, IDM_WINDOW_FONT_0 + i,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
if (data[i].visible)
{
EnableMenuItem(hm, IDM_WINDOW_FONT_0 + i,
- MF_BYCOMMAND | MF_ENABLED);
+ MF_BYCOMMAND | MF_ENABLED);
}
}
for (i = 0; i < MAX_TERM_DATA; i++)
{
EnableMenuItem(hm, IDM_WINDOW_POS_0 + i,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
CheckMenuItem(hm, IDM_WINDOW_POS_0 + i,
- (data[i].posfix ? MF_CHECKED : MF_UNCHECKED));
+ (data[i].posfix ? MF_CHECKED : MF_UNCHECKED));
if (data[i].visible)
{
EnableMenuItem(hm, IDM_WINDOW_POS_0 + i,
- MF_BYCOMMAND | MF_ENABLED);
+ MF_BYCOMMAND | MF_ENABLED);
}
}
for (i = 0; i < MAX_TERM_DATA; i++)
{
EnableMenuItem(hm, IDM_WINDOW_BIZ_0 + i,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
CheckMenuItem(hm, IDM_WINDOW_BIZ_0 + i,
- (data[i].bizarre ? MF_CHECKED : MF_UNCHECKED));
+ (data[i].bizarre ? MF_CHECKED : MF_UNCHECKED));
if (data[i].visible)
{
EnableMenuItem(hm, IDM_WINDOW_BIZ_0 + i,
- MF_BYCOMMAND | MF_ENABLED);
+ MF_BYCOMMAND | MF_ENABLED);
}
}
for (i = 0; i < MAX_TERM_DATA; i++)
{
EnableMenuItem(hm, IDM_WINDOW_I_WID_0 + i,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
if (data[i].visible)
{
EnableMenuItem(hm, IDM_WINDOW_I_WID_0 + i,
- MF_BYCOMMAND | MF_ENABLED);
+ MF_BYCOMMAND | MF_ENABLED);
}
}
for (i = 0; i < MAX_TERM_DATA; i++)
{
EnableMenuItem(hm, IDM_WINDOW_D_WID_0 + i,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
if (data[i].visible)
{
EnableMenuItem(hm, IDM_WINDOW_D_WID_0 + i,
- MF_BYCOMMAND | MF_ENABLED);
+ MF_BYCOMMAND | MF_ENABLED);
}
}
for (i = 0; i < MAX_TERM_DATA; i++)
{
EnableMenuItem(hm, IDM_WINDOW_I_HGT_0 + i,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
if (data[i].visible)
{
EnableMenuItem(hm, IDM_WINDOW_I_HGT_0 + i,
- MF_BYCOMMAND | MF_ENABLED);
+ MF_BYCOMMAND | MF_ENABLED);
}
}
for (i = 0; i < MAX_TERM_DATA; i++)
{
EnableMenuItem(hm, IDM_WINDOW_D_HGT_0 + i,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
if (data[i].visible)
{
EnableMenuItem(hm, IDM_WINDOW_D_HGT_0 + i,
- MF_BYCOMMAND | MF_ENABLED);
+ MF_BYCOMMAND | MF_ENABLED);
}
}
/* Menu "Options", disable all */
EnableMenuItem(hm, IDM_OPTIONS_NO_GRAPHICS,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
EnableMenuItem(hm, IDM_OPTIONS_OLD_GRAPHICS,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
EnableMenuItem(hm, IDM_OPTIONS_NEW_GRAPHICS,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
EnableMenuItem(hm, IDM_OPTIONS_BIGTILE,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
EnableMenuItem(hm, IDM_OPTIONS_SOUND,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
-#ifndef JP
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+#ifdef JP
+#else
+
EnableMenuItem(hm, IDM_OPTIONS_SAVER,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
#endif
/* Menu "Options", Item "Map" */
EnableMenuItem(GetMenu(data[0].w), IDM_OPTIONS_MAP, MF_BYCOMMAND | MF_ENABLED);
else
EnableMenuItem(GetMenu(data[0].w), IDM_OPTIONS_MAP,
- MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
/* Menu "Options", update all */
CheckMenuItem(hm, IDM_OPTIONS_NO_GRAPHICS,
- (arg_graphics == GRAPHICS_NONE ? MF_CHECKED : MF_UNCHECKED));
+ (arg_graphics == GRAPHICS_NONE ? MF_CHECKED : MF_UNCHECKED));
CheckMenuItem(hm, IDM_OPTIONS_OLD_GRAPHICS,
- (arg_graphics == GRAPHICS_ORIGINAL ? MF_CHECKED : MF_UNCHECKED));
+ (arg_graphics == GRAPHICS_ORIGINAL ? MF_CHECKED : MF_UNCHECKED));
CheckMenuItem(hm, IDM_OPTIONS_NEW_GRAPHICS,
- (arg_graphics == GRAPHICS_ADAM_BOLT ? MF_CHECKED : MF_UNCHECKED));
+ (arg_graphics == GRAPHICS_ADAM_BOLT ? MF_CHECKED : MF_UNCHECKED));
CheckMenuItem(hm, IDM_OPTIONS_NEW2_GRAPHICS,
- (arg_graphics == GRAPHICS_HENGBAND ? MF_CHECKED : MF_UNCHECKED));
+ (arg_graphics == GRAPHICS_HENGBAND ? MF_CHECKED : MF_UNCHECKED));
CheckMenuItem(hm, IDM_OPTIONS_BIGTILE,
- (arg_bigtile ? MF_CHECKED : MF_UNCHECKED));
+ (arg_bigtile ? MF_CHECKED : MF_UNCHECKED));
CheckMenuItem(hm, IDM_OPTIONS_MUSIC,
- (arg_music ? MF_CHECKED : MF_UNCHECKED));
+ (arg_music ? MF_CHECKED : MF_UNCHECKED));
CheckMenuItem(hm, IDM_OPTIONS_SOUND,
- (arg_sound ? MF_CHECKED : MF_UNCHECKED));
+ (arg_sound ? MF_CHECKED : MF_UNCHECKED));
CheckMenuItem(hm, IDM_OPTIONS_BG,
- (use_bg ? MF_CHECKED : MF_UNCHECKED));
-#ifndef JP
+ (use_bg ? MF_CHECKED : MF_UNCHECKED));
+#ifdef JP
+#else
CheckMenuItem(hm, IDM_OPTIONS_SAVER,
- (hwndSaver ? MF_CHECKED : MF_UNCHECKED));
+ (hwndSaver ? MF_CHECKED : MF_UNCHECKED));
#endif
-
-#ifdef USE_GRAPHICS
- /* Menu "Options", Item "Graphics" */
EnableMenuItem(hm, IDM_OPTIONS_NO_GRAPHICS, MF_ENABLED);
- /* Menu "Options", Item "Graphics" */
EnableMenuItem(hm, IDM_OPTIONS_OLD_GRAPHICS, MF_ENABLED);
- /* Menu "Options", Item "Graphics" */
EnableMenuItem(hm, IDM_OPTIONS_NEW_GRAPHICS, MF_ENABLED);
- /* Menu "Options", Item "Graphics" */
EnableMenuItem(hm, IDM_OPTIONS_BIGTILE, MF_ENABLED);
-#endif /* USE_GRAPHICS */
-
-#ifdef USE_SOUND
- /* Menu "Options", Item "Sound" */
EnableMenuItem(hm, IDM_OPTIONS_SOUND, MF_ENABLED);
-#endif /* USE_SOUND */
-
-#ifdef USE_SAVER
- /* Menu "Options", Item "ScreenSaver" */
EnableMenuItem(hm, IDM_OPTIONS_SAVER,
- MF_BYCOMMAND | MF_ENABLED);
-#endif /* USE_SAVER */
+ MF_BYCOMMAND | MF_ENABLED);
}
* piece of the "command line string". Perhaps we should extract
* the "basename" of that filename and append it to the "save" dir.
*/
-static void check_for_save_file(LPSTR cmd_line)
+static void check_for_save_file(player_type *player_ptr, LPSTR cmd_line)
{
char *s;
game_in_progress = TRUE;
/* Play game */
- play_game(p_ptr, FALSE);
+ play_game(player_ptr, FALSE);
}
/*
* Process a menu command
*/
-static void process_menus(WORD wCmd)
+static void process_menus(player_type *player_ptr, WORD wCmd)
{
- int i;
-
term_data *td;
-
OPENFILENAME ofn;
-
- /* Analyze */
switch (wCmd)
{
- /* New game */
- case IDM_FILE_NEW:
+ case IDM_FILE_NEW:
+ {
+ if (!initialized)
{
- if (!initialized)
- {
- plog(_("まだ初期化中です...", "You cannot do that yet..."));
- }
- else if (game_in_progress)
- {
- plog(_("プレイ中は新しいゲームを始めることができません!", "You can't start a new game while you're still playing!"));
- }
- else
- {
- game_in_progress = TRUE;
- Term_flush();
- play_game(p_ptr, TRUE);
- quit(NULL);
- }
- break;
+ plog(_("まだ初期化中です...", "You cannot do that yet..."));
}
-
- /* Open game */
- case IDM_FILE_OPEN:
+ else if (game_in_progress)
{
- if (!initialized)
- {
- plog(_("まだ初期化中です...", "You cannot do that yet..."));
- }
- else if (game_in_progress)
- {
- plog(_("プレイ中はゲームをロードすることができません!", "You can't open a new game while you're still playing!"));
- }
- else
- {
- memset(&ofn, 0, sizeof(ofn));
- ofn.lStructSize = sizeof(ofn);
- ofn.hwndOwner = data[0].w;
- ofn.lpstrFilter = "Save Files (*.)\0*\0";
- ofn.nFilterIndex = 1;
- ofn.lpstrFile = savefile;
- ofn.nMaxFile = 1024;
- ofn.lpstrInitialDir = ANGBAND_DIR_SAVE;
- ofn.Flags = OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR | OFN_HIDEREADONLY;
-
- if (GetOpenFileName(&ofn))
- {
- /* Load 'savefile' */
- validate_file(savefile);
- game_in_progress = TRUE;
- Term_flush();
- play_game(p_ptr, FALSE);
- quit(NULL);
- }
- }
- break;
+ plog(_("プレイ中は新しいゲームを始めることができません!", "You can't start a new game while you're still playing!"));
}
-
- /* Save game */
- case IDM_FILE_SAVE:
+ else
{
- if (game_in_progress && current_world_ptr->character_generated)
- {
- if (!can_save)
- {
- plog(_("今はセーブすることは出来ません。", "You may not do that right now."));
- break;
- }
-
- /* Hack -- Forget messages */
- msg_flag = FALSE;
+ game_in_progress = TRUE;
+ Term_flush();
+ play_game(player_ptr, TRUE);
+ quit(NULL);
+ }
+ break;
+ }
+ case IDM_FILE_OPEN:
+ {
+ if (!initialized)
+ {
+ plog(_("まだ初期化中です...", "You cannot do that yet..."));
+ }
+ else if (game_in_progress)
+ {
+ plog(_("プレイ中はゲームをロードすることができません!", "You can't open a new game while you're still playing!"));
+ }
+ else
+ {
+ memset(&ofn, 0, sizeof(ofn));
+ ofn.lStructSize = sizeof(ofn);
+ ofn.hwndOwner = data[0].w;
+ ofn.lpstrFilter = "Save Files (*.)\0*\0";
+ ofn.nFilterIndex = 1;
+ ofn.lpstrFile = savefile;
+ ofn.nMaxFile = 1024;
+ ofn.lpstrInitialDir = ANGBAND_DIR_SAVE;
+ ofn.Flags = OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR | OFN_HIDEREADONLY;
- /* Save the game */
-#ifdef ZANGBAND
- do_cmd_save_game(p_ptr, FALSE);
-#else /* ZANGBAND */
- do_cmd_save_game();
-#endif /* ZANGBAND */
- }
- else
+ if (GetOpenFileName(&ofn))
{
- plog(_("今、セーブすることは出来ません。", "You may not do that right now."));
+ validate_file(savefile);
+ game_in_progress = TRUE;
+ Term_flush();
+ play_game(player_ptr, FALSE);
+ quit(NULL);
}
- break;
}
-
- case IDM_FILE_EXIT:
+ break;
+ }
+ case IDM_FILE_SAVE:
+ {
+ if (game_in_progress && current_world_ptr->character_generated)
{
- if (game_in_progress && current_world_ptr->character_generated)
+ if (!can_save)
{
- if (!can_save)
- {
- plog(_("今は終了できません。", "You may not do that right now."));
- break;
- }
-
- /* Hack -- Forget messages */
- msg_flag = FALSE;
-
- forget_lite(p_ptr->current_floor_ptr);
- forget_view(p_ptr->current_floor_ptr);
- clear_mon_lite(p_ptr->current_floor_ptr);
-
- /* Save the game */
-#ifdef ZANGBAND
- /* do_cmd_save_game(FALSE); */
-#else /* ZANGBAND */
- /* do_cmd_save_game(); */
-#endif /* ZANGBAND */
- Term_key_push(SPECIAL_KEY_QUIT);
+ plog(_("今はセーブすることは出来ません。", "You may not do that right now."));
break;
}
- quit(NULL);
- break;
- }
- /* Show scores */
- case IDM_FILE_SCORE:
+ msg_flag = FALSE;
+ do_cmd_save_game(player_ptr, FALSE);
+ }
+ else
{
- char buf[1024];
- path_build(buf, sizeof(buf), ANGBAND_DIR_APEX, "scores.raw");
-
- /* Open the binary high score file, for reading */
- highscore_fd = fd_open(buf, O_RDONLY);
+ plog(_("今、セーブすることは出来ません。", "You may not do that right now."));
+ }
- /* Paranoia -- No score file */
- if (highscore_fd < 0)
+ break;
+ }
+ case IDM_FILE_EXIT:
+ {
+ if (game_in_progress && current_world_ptr->character_generated)
+ {
+ if (!can_save)
{
- msg_print("Score file unavailable.");
+ plog(_("今は終了できません。", "You may not do that right now."));
+ break;
}
- else
- {
- screen_save();
- Term_clear();
-
- /* Display the scores */
- display_scores_aux(0, MAX_HISCORES, -1, NULL);
- /* Shut the high score file */
- (void)fd_close(highscore_fd);
-
- /* Forget the high score fd */
- highscore_fd = -1;
- screen_load();
-
- /* Hack - Flush it */
- Term_fresh();
- }
+ msg_flag = FALSE;
+ forget_lite(player_ptr->current_floor_ptr);
+ forget_view(player_ptr->current_floor_ptr);
+ clear_mon_lite(player_ptr->current_floor_ptr);
+ Term_key_push(SPECIAL_KEY_QUIT);
break;
}
- /* Open game */
- case IDM_FILE_MOVIE:
+ quit(NULL);
+ break;
+ }
+ case IDM_FILE_SCORE:
+ {
+ char buf[1024];
+ path_build(buf, sizeof(buf), ANGBAND_DIR_APEX, "scores.raw");
+ highscore_fd = fd_open(buf, O_RDONLY);
+ if (highscore_fd < 0)
{
- if (!initialized)
- {
- plog(_("まだ初期化中です...", "You cannot do that yet..."));
- }
- else if (game_in_progress)
- {
- plog(_("プレイ中はムービーをロードすることができません!", "You can't open a movie while you're playing!"));
- }
- else
- {
- memset(&ofn, 0, sizeof(ofn));
- ofn.lStructSize = sizeof(ofn);
- ofn.hwndOwner = data[0].w;
- ofn.lpstrFilter = "Angband Movie Files (*.amv)\0*.amv\0";
- ofn.nFilterIndex = 1;
- ofn.lpstrFile = savefile;
- ofn.nMaxFile = 1024;
- ofn.lpstrInitialDir = ANGBAND_DIR_USER;
- ofn.Flags = OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR;
-
- if (GetOpenFileName(&ofn))
- {
- /* Load 'savefile' */
- prepare_browse_movie_aux(savefile);
- play_game(p_ptr, FALSE);
- quit(NULL);
- return;
- }
- }
- break;
+ msg_print("Score file unavailable.");
}
-
-
- case IDM_WINDOW_VIS_0:
+ else
{
- plog(_("メインウィンドウは非表示にできません!", "You are not allowed to do that!"));
- break;
+ screen_save();
+ Term_clear();
+ display_scores_aux(0, MAX_HISCORES, -1, NULL);
+ (void)fd_close(highscore_fd);
+ highscore_fd = -1;
+ screen_load();
+ Term_fresh();
}
- /* Window visibility */
- case IDM_WINDOW_VIS_1:
- case IDM_WINDOW_VIS_2:
- case IDM_WINDOW_VIS_3:
- case IDM_WINDOW_VIS_4:
- case IDM_WINDOW_VIS_5:
- case IDM_WINDOW_VIS_6:
- case IDM_WINDOW_VIS_7:
+ break;
+ }
+ case IDM_FILE_MOVIE:
+ {
+ if (!initialized)
{
- i = wCmd - IDM_WINDOW_VIS_0;
-
- if ((i < 0) || (i >= MAX_TERM_DATA)) break;
-
- td = &data[i];
-
- if (!td->visible)
- {
- td->visible = TRUE;
- ShowWindow(td->w, SW_SHOW);
- term_data_redraw(td);
- }
- else
- {
- td->visible = FALSE;
- td->posfix = FALSE;
- ShowWindow(td->w, SW_HIDE);
- }
-
- break;
+ plog(_("まだ初期化中です...", "You cannot do that yet..."));
}
-
- /* Window fonts */
- case IDM_WINDOW_FONT_0:
- case IDM_WINDOW_FONT_1:
- case IDM_WINDOW_FONT_2:
- case IDM_WINDOW_FONT_3:
- case IDM_WINDOW_FONT_4:
- case IDM_WINDOW_FONT_5:
- case IDM_WINDOW_FONT_6:
- case IDM_WINDOW_FONT_7:
+ else if (game_in_progress)
{
- i = wCmd - IDM_WINDOW_FONT_0;
-
- if ((i < 0) || (i >= MAX_TERM_DATA)) break;
-
- td = &data[i];
-
- term_change_font(td);
-
- break;
+ plog(_("プレイ中はムービーをロードすることができません!", "You can't open a movie while you're playing!"));
}
-
- /* Window Z Position */
- case IDM_WINDOW_POS_1:
- case IDM_WINDOW_POS_2:
- case IDM_WINDOW_POS_3:
- case IDM_WINDOW_POS_4:
- case IDM_WINDOW_POS_5:
- case IDM_WINDOW_POS_6:
- case IDM_WINDOW_POS_7:
+ else
{
- i = wCmd - IDM_WINDOW_POS_0;
-
- if ((i < 0) || (i >= MAX_TERM_DATA)) break;
-
- td = &data[i];
+ memset(&ofn, 0, sizeof(ofn));
+ ofn.lStructSize = sizeof(ofn);
+ ofn.hwndOwner = data[0].w;
+ ofn.lpstrFilter = "Angband Movie Files (*.amv)\0*.amv\0";
+ ofn.nFilterIndex = 1;
+ ofn.lpstrFile = savefile;
+ ofn.nMaxFile = 1024;
+ ofn.lpstrInitialDir = ANGBAND_DIR_USER;
+ ofn.Flags = OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR;
- if (!td->posfix && td->visible)
- {
- td->posfix = TRUE;
- term_window_pos(td, HWND_TOPMOST);
- }
- else
+ if (GetOpenFileName(&ofn))
{
- td->posfix = FALSE;
- term_window_pos(td, data[0].w);
+ prepare_browse_movie_aux(savefile);
+ play_game(player_ptr, FALSE);
+ quit(NULL);
+ return;
}
-
- break;
}
+ break;
+ }
+ case IDM_WINDOW_VIS_0:
+ {
+ plog(_("メインウィンドウは非表示にできません!", "You are not allowed to do that!"));
+ break;
+ }
+ case IDM_WINDOW_VIS_1:
+ case IDM_WINDOW_VIS_2:
+ case IDM_WINDOW_VIS_3:
+ case IDM_WINDOW_VIS_4:
+ case IDM_WINDOW_VIS_5:
+ case IDM_WINDOW_VIS_6:
+ case IDM_WINDOW_VIS_7:
+ {
+ int i = wCmd - IDM_WINDOW_VIS_0;
+ if ((i < 0) || (i >= MAX_TERM_DATA)) break;
- /* Bizarre Display */
- case IDM_WINDOW_BIZ_0:
- case IDM_WINDOW_BIZ_1:
- case IDM_WINDOW_BIZ_2:
- case IDM_WINDOW_BIZ_3:
- case IDM_WINDOW_BIZ_4:
- case IDM_WINDOW_BIZ_5:
- case IDM_WINDOW_BIZ_6:
- case IDM_WINDOW_BIZ_7:
- {
- i = wCmd - IDM_WINDOW_BIZ_0;
-
- if ((i < 0) || (i >= MAX_TERM_DATA)) break;
-
- td = &data[i];
+ td = &data[i];
- td->bizarre = !td->bizarre;
+ if (!td->visible)
+ {
+ td->visible = TRUE;
+ ShowWindow(td->w, SW_SHOW);
+ term_data_redraw(player_ptr, td);
+ }
+ else
+ {
+ td->visible = FALSE;
+ td->posfix = FALSE;
+ ShowWindow(td->w, SW_HIDE);
+ }
- term_getsize(td);
+ break;
+ }
+ case IDM_WINDOW_FONT_0:
+ case IDM_WINDOW_FONT_1:
+ case IDM_WINDOW_FONT_2:
+ case IDM_WINDOW_FONT_3:
+ case IDM_WINDOW_FONT_4:
+ case IDM_WINDOW_FONT_5:
+ case IDM_WINDOW_FONT_6:
+ case IDM_WINDOW_FONT_7:
+ {
+ int i = wCmd - IDM_WINDOW_FONT_0;
+ if ((i < 0) || (i >= MAX_TERM_DATA)) break;
- term_window_resize(td);
+ td = &data[i];
+ term_change_font(td);
+ break;
+ }
+ case IDM_WINDOW_POS_1:
+ case IDM_WINDOW_POS_2:
+ case IDM_WINDOW_POS_3:
+ case IDM_WINDOW_POS_4:
+ case IDM_WINDOW_POS_5:
+ case IDM_WINDOW_POS_6:
+ case IDM_WINDOW_POS_7:
+ {
+ int i = wCmd - IDM_WINDOW_POS_0;
+ if ((i < 0) || (i >= MAX_TERM_DATA)) break;
- break;
+ td = &data[i];
+ if (!td->posfix && td->visible)
+ {
+ td->posfix = TRUE;
+ term_window_pos(td, HWND_TOPMOST);
}
-
- /* Increase Tile Width */
- case IDM_WINDOW_I_WID_0:
- case IDM_WINDOW_I_WID_1:
- case IDM_WINDOW_I_WID_2:
- case IDM_WINDOW_I_WID_3:
- case IDM_WINDOW_I_WID_4:
- case IDM_WINDOW_I_WID_5:
- case IDM_WINDOW_I_WID_6:
- case IDM_WINDOW_I_WID_7:
+ else
{
- i = wCmd - IDM_WINDOW_I_WID_0;
+ td->posfix = FALSE;
+ term_window_pos(td, data[0].w);
+ }
- if ((i < 0) || (i >= MAX_TERM_DATA)) break;
+ break;
+ }
+ case IDM_WINDOW_BIZ_0:
+ case IDM_WINDOW_BIZ_1:
+ case IDM_WINDOW_BIZ_2:
+ case IDM_WINDOW_BIZ_3:
+ case IDM_WINDOW_BIZ_4:
+ case IDM_WINDOW_BIZ_5:
+ case IDM_WINDOW_BIZ_6:
+ case IDM_WINDOW_BIZ_7:
+ {
+ int i = wCmd - IDM_WINDOW_BIZ_0;
+ if ((i < 0) || (i >= MAX_TERM_DATA)) break;
- td = &data[i];
+ td = &data[i];
+ td->bizarre = !td->bizarre;
+ term_getsize(td);
+ term_window_resize(td);
+ break;
+ }
+ case IDM_WINDOW_I_WID_0:
+ case IDM_WINDOW_I_WID_1:
+ case IDM_WINDOW_I_WID_2:
+ case IDM_WINDOW_I_WID_3:
+ case IDM_WINDOW_I_WID_4:
+ case IDM_WINDOW_I_WID_5:
+ case IDM_WINDOW_I_WID_6:
+ case IDM_WINDOW_I_WID_7:
+ {
+ int i = wCmd - IDM_WINDOW_I_WID_0;
+ if ((i < 0) || (i >= MAX_TERM_DATA)) break;
- td->tile_wid += 1;
+ td = &data[i];
+ td->tile_wid += 1;
+ term_getsize(td);
+ term_window_resize(td);
+ break;
+ }
+ case IDM_WINDOW_D_WID_0:
+ case IDM_WINDOW_D_WID_1:
+ case IDM_WINDOW_D_WID_2:
+ case IDM_WINDOW_D_WID_3:
+ case IDM_WINDOW_D_WID_4:
+ case IDM_WINDOW_D_WID_5:
+ case IDM_WINDOW_D_WID_6:
+ case IDM_WINDOW_D_WID_7:
+ {
+ int i = wCmd - IDM_WINDOW_D_WID_0;
+ if ((i < 0) || (i >= MAX_TERM_DATA)) break;
- term_getsize(td);
+ td = &data[i];
+ td->tile_wid -= 1;
+ term_getsize(td);
+ term_window_resize(td);
+ break;
+ }
+ case IDM_WINDOW_I_HGT_0:
+ case IDM_WINDOW_I_HGT_1:
+ case IDM_WINDOW_I_HGT_2:
+ case IDM_WINDOW_I_HGT_3:
+ case IDM_WINDOW_I_HGT_4:
+ case IDM_WINDOW_I_HGT_5:
+ case IDM_WINDOW_I_HGT_6:
+ case IDM_WINDOW_I_HGT_7:
+ {
+ int i = wCmd - IDM_WINDOW_I_HGT_0;
+ if ((i < 0) || (i >= MAX_TERM_DATA)) break;
- term_window_resize(td);
+ td = &data[i];
+ td->tile_hgt += 1;
+ term_getsize(td);
+ term_window_resize(td);
+ break;
+ }
+ case IDM_WINDOW_D_HGT_0:
+ case IDM_WINDOW_D_HGT_1:
+ case IDM_WINDOW_D_HGT_2:
+ case IDM_WINDOW_D_HGT_3:
+ case IDM_WINDOW_D_HGT_4:
+ case IDM_WINDOW_D_HGT_5:
+ case IDM_WINDOW_D_HGT_6:
+ case IDM_WINDOW_D_HGT_7:
+ {
+ int i = wCmd - IDM_WINDOW_D_HGT_0;
+ if ((i < 0) || (i >= MAX_TERM_DATA)) break;
+ td = &data[i];
+ td->tile_hgt -= 1;
+ term_getsize(td);
+ term_window_resize(td);
+ break;
+ }
+ case IDM_OPTIONS_NO_GRAPHICS:
+ {
+ if (!inkey_flag)
+ {
+ plog("You may not do that right now.");
break;
}
- /* Decrease Tile Height */
- case IDM_WINDOW_D_WID_0:
- case IDM_WINDOW_D_WID_1:
- case IDM_WINDOW_D_WID_2:
- case IDM_WINDOW_D_WID_3:
- case IDM_WINDOW_D_WID_4:
- case IDM_WINDOW_D_WID_5:
- case IDM_WINDOW_D_WID_6:
- case IDM_WINDOW_D_WID_7:
+ if (arg_graphics != GRAPHICS_NONE)
{
- i = wCmd - IDM_WINDOW_D_WID_0;
-
- if ((i < 0) || (i >= MAX_TERM_DATA)) break;
-
- td = &data[i];
-
- td->tile_wid -= 1;
-
- term_getsize(td);
-
- term_window_resize(td);
-
- break;
+ arg_graphics = GRAPHICS_NONE;
+ term_xtra_win_react(player_ptr);
+ Term_key_push(KTRL('R'));
}
- /* Increase Tile Height */
- case IDM_WINDOW_I_HGT_0:
- case IDM_WINDOW_I_HGT_1:
- case IDM_WINDOW_I_HGT_2:
- case IDM_WINDOW_I_HGT_3:
- case IDM_WINDOW_I_HGT_4:
- case IDM_WINDOW_I_HGT_5:
- case IDM_WINDOW_I_HGT_6:
- case IDM_WINDOW_I_HGT_7:
+ break;
+ }
+ case IDM_OPTIONS_OLD_GRAPHICS:
+ {
+ if (!inkey_flag)
{
- i = wCmd - IDM_WINDOW_I_HGT_0;
-
- if ((i < 0) || (i >= MAX_TERM_DATA)) break;
-
- td = &data[i];
-
- td->tile_hgt += 1;
-
- term_getsize(td);
-
- term_window_resize(td);
-
+ plog("You may not do that right now.");
break;
}
- /* Decrease Tile Height */
- case IDM_WINDOW_D_HGT_0:
- case IDM_WINDOW_D_HGT_1:
- case IDM_WINDOW_D_HGT_2:
- case IDM_WINDOW_D_HGT_3:
- case IDM_WINDOW_D_HGT_4:
- case IDM_WINDOW_D_HGT_5:
- case IDM_WINDOW_D_HGT_6:
- case IDM_WINDOW_D_HGT_7:
+ if (arg_graphics != GRAPHICS_ORIGINAL)
{
- i = wCmd - IDM_WINDOW_D_HGT_0;
-
- if ((i < 0) || (i >= MAX_TERM_DATA)) break;
-
- td = &data[i];
-
- td->tile_hgt -= 1;
-
- term_getsize(td);
-
- term_window_resize(td);
-
- break;
+ arg_graphics = GRAPHICS_ORIGINAL;
+ term_xtra_win_react(player_ptr);
+ Term_key_push(KTRL('R'));
}
- case IDM_OPTIONS_NO_GRAPHICS:
+ break;
+ }
+ case IDM_OPTIONS_NEW_GRAPHICS:
+ {
+ if (!inkey_flag)
{
- if (!inkey_flag)
- {
- plog("You may not do that right now.");
- break;
- }
-
- if (arg_graphics != GRAPHICS_NONE)
- {
- arg_graphics = GRAPHICS_NONE;
- Term_xtra_win_react();
- Term_key_push(KTRL('R'));
- }
-
+ plog("You may not do that right now.");
break;
}
- case IDM_OPTIONS_OLD_GRAPHICS:
+ if (arg_graphics != GRAPHICS_ADAM_BOLT)
{
- if (!inkey_flag)
- {
- plog("You may not do that right now.");
- break;
- }
-
- if (arg_graphics != GRAPHICS_ORIGINAL)
- {
- arg_graphics = GRAPHICS_ORIGINAL;
- Term_xtra_win_react();
- Term_key_push(KTRL('R'));
- }
-
- break;
+ arg_graphics = GRAPHICS_ADAM_BOLT;
+ term_xtra_win_react(player_ptr);
+ Term_key_push(KTRL('R'));
}
- case IDM_OPTIONS_NEW_GRAPHICS:
+ break;
+ }
+ case IDM_OPTIONS_NEW2_GRAPHICS:
+ {
+ if (!inkey_flag)
{
- if (!inkey_flag)
- {
- plog("You may not do that right now.");
- break;
- }
-
- if (arg_graphics != GRAPHICS_ADAM_BOLT)
- {
- arg_graphics = GRAPHICS_ADAM_BOLT;
- Term_xtra_win_react();
- Term_key_push(KTRL('R'));
- }
-
+ plog("You may not do that right now.");
break;
}
- case IDM_OPTIONS_NEW2_GRAPHICS:
+ if (arg_graphics != GRAPHICS_HENGBAND)
{
- if (!inkey_flag)
- {
- plog("You may not do that right now.");
- break;
- }
-
- if (arg_graphics != GRAPHICS_HENGBAND)
- {
- arg_graphics = GRAPHICS_HENGBAND;
- Term_xtra_win_react();
- Term_key_push(KTRL('R'));
- }
-
- break;
+ arg_graphics = GRAPHICS_HENGBAND;
+ term_xtra_win_react(player_ptr);
+ Term_key_push(KTRL('R'));
}
- case IDM_OPTIONS_BIGTILE:
+ break;
+ }
+ case IDM_OPTIONS_BIGTILE:
+ {
+ td = &data[0];
+ if (!inkey_flag)
{
- td = &data[0];
- if (!inkey_flag)
- {
- plog("You may not do that right now.");
- break;
- }
-
- arg_bigtile = !arg_bigtile;
- Term_activate(&td->t);
- Term_resize(td->cols, td->rows);
- InvalidateRect(td->w, NULL, TRUE);
+ plog("You may not do that right now.");
break;
}
- case IDM_OPTIONS_MUSIC:
+ arg_bigtile = !arg_bigtile;
+ Term_activate(&td->t);
+ Term_resize(td->cols, td->rows);
+ InvalidateRect(td->w, NULL, TRUE);
+ break;
+ }
+ case IDM_OPTIONS_MUSIC:
+ {
+ if (!inkey_flag)
{
- if (!inkey_flag)
- {
- plog("You may not do that right now.");
- break;
- }
-
- arg_music = !arg_music;
- Term_xtra_win_react();
- Term_key_push(KTRL('R'));
+ plog("You may not do that right now.");
break;
}
- case IDM_OPTIONS_SOUND:
+ arg_music = !arg_music;
+ term_xtra_win_react(player_ptr);
+ Term_key_push(KTRL('R'));
+ break;
+ }
+ case IDM_OPTIONS_SOUND:
+ {
+ if (!inkey_flag)
{
- if (!inkey_flag)
- {
- plog("You may not do that right now.");
- break;
- }
-
- arg_sound = !arg_sound;
- Term_xtra_win_react();
- Term_key_push(KTRL('R'));
+ plog("You may not do that right now.");
break;
}
- /* bg */
- case IDM_OPTIONS_BG:
+ arg_sound = !arg_sound;
+ term_xtra_win_react(player_ptr);
+ Term_key_push(KTRL('R'));
+ break;
+ }
+ case IDM_OPTIONS_BG:
+ {
+ if (!inkey_flag)
{
- if (!inkey_flag)
- {
- plog("You may not do that right now.");
- break;
- }
-
- use_bg = !use_bg;
- init_bg();
- Term_xtra_win_react();
- Term_key_push(KTRL('R'));
+ plog("You may not do that right now.");
break;
}
- /* bg */
- case IDM_OPTIONS_OPEN_BG:
+ use_bg = !use_bg;
+ init_bg();
+ term_xtra_win_react(player_ptr);
+ Term_key_push(KTRL('R'));
+ break;
+ }
+ case IDM_OPTIONS_OPEN_BG:
+ {
+ if (!inkey_flag)
{
- if (!inkey_flag)
- {
- plog("You may not do that right now.");
- break;
- }
- else
- {
- memset(&ofn, 0, sizeof(ofn));
- ofn.lStructSize = sizeof(ofn);
- ofn.hwndOwner = data[0].w;
- ofn.lpstrFilter = "Bitmap Files (*.bmp)\0*.bmp\0";
- ofn.nFilterIndex = 1;
- ofn.lpstrFile = bg_bitmap_file;
- ofn.nMaxFile = 1023;
- ofn.lpstrInitialDir = NULL;
- ofn.lpstrTitle = _("壁紙を選んでね。", "Choose wall paper.");
- ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
-
- if (GetOpenFileName(&ofn))
- {
- /* Load 'savefile' */
- use_bg = 1;
- init_bg();
- }
-
- /* React to changes */
- Term_xtra_win_react();
-
- /* Hack -- Force redraw */
- Term_key_push(KTRL('R'));
- }
+ plog("You may not do that right now.");
break;
}
-
- case IDM_DUMP_SCREEN_HTML:
+ else
{
- static char buf[1024] = "";
memset(&ofn, 0, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = data[0].w;
- ofn.lpstrFilter = "HTML Files (*.html)\0*.html\0";
+ ofn.lpstrFilter = "Bitmap Files (*.bmp)\0*.bmp\0";
ofn.nFilterIndex = 1;
- ofn.lpstrFile = buf;
+ ofn.lpstrFile = bg_bitmap_file;
ofn.nMaxFile = 1023;
- ofn.lpstrDefExt = "html";
ofn.lpstrInitialDir = NULL;
- ofn.lpstrTitle = _("HTMLでスクリーンダンプを保存", "Save screen dump as HTML.");
- ofn.Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
+ ofn.lpstrTitle = _("壁紙を選んでね。", "Choose wall paper.");
+ ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
- if (GetSaveFileName(&ofn))
+ if (GetOpenFileName(&ofn))
{
- do_cmd_save_screen_html_aux(buf, 0);
+ use_bg = 1;
+ init_bg();
}
- break;
- }
-#ifdef USE_SAVER
+ term_xtra_win_react(player_ptr);
+ Term_key_push(KTRL('R'));
+ }
- case IDM_OPTIONS_SAVER:
+ break;
+ }
+ case IDM_DUMP_SCREEN_HTML:
+ {
+ static char buf[1024] = "";
+ memset(&ofn, 0, sizeof(ofn));
+ ofn.lStructSize = sizeof(ofn);
+ ofn.hwndOwner = data[0].w;
+ ofn.lpstrFilter = "HTML Files (*.html)\0*.html\0";
+ ofn.nFilterIndex = 1;
+ ofn.lpstrFile = buf;
+ ofn.nMaxFile = 1023;
+ ofn.lpstrDefExt = "html";
+ ofn.lpstrInitialDir = NULL;
+ ofn.lpstrTitle = _("HTMLでスクリーンダンプを保存", "Save screen dump as HTML.");
+ ofn.Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
+
+ if (GetSaveFileName(&ofn))
+ {
+ do_cmd_save_screen_html_aux(buf, 0);
+ }
+ break;
+ }
+ case IDM_OPTIONS_SAVER:
+ {
+ if (hwndSaver)
+ {
+ DestroyWindow(hwndSaver);
+ hwndSaver = NULL;
+ }
+ else
{
+ hwndSaver = CreateWindowEx(WS_EX_TOPMOST, "WindowsScreenSaverClass",
+ "Angband Screensaver",
+ WS_POPUP | WS_MAXIMIZE | WS_VISIBLE,
+ 0, 0, GetSystemMetrics(SM_CXSCREEN),
+ GetSystemMetrics(SM_CYSCREEN),
+ NULL, NULL, hInstance, NULL);
+
if (hwndSaver)
{
- DestroyWindow(hwndSaver);
- hwndSaver = NULL;
+ SetWindowPos(hwndSaver, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
else
{
- /* Create a screen scaver window */
- hwndSaver = CreateWindowEx(WS_EX_TOPMOST, "WindowsScreenSaverClass",
- "Angband Screensaver",
- WS_POPUP | WS_MAXIMIZE | WS_VISIBLE,
- 0, 0, GetSystemMetrics(SM_CXSCREEN),
- GetSystemMetrics(SM_CYSCREEN),
- NULL, NULL, hInstance, NULL);
-
- if (hwndSaver)
- {
- /* Push the window to the bottom */
- SetWindowPos(hwndSaver, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
- }
- else
- {
- plog(_("ウィンドウを作成出来ません", "Failed to create saver window"));
- }
+ plog(_("ウィンドウを作成出来ません", "Failed to create saver window"));
}
- break;
}
-#endif
+ break;
+ }
+ case IDM_OPTIONS_MAP:
+ {
+ windows_map(player_ptr);
+ break;
+ }
- case IDM_OPTIONS_MAP:
+ case IDM_HELP_CONTENTS:
+ {
+ char buf[1024];
+ char tmp[1024];
+ path_build(tmp, sizeof(tmp), ANGBAND_DIR_XTRA_HELP, "zangband.hlp");
+ if (check_file(tmp))
{
- windows_map();
- break;
+ sprintf(buf, "winhelp.exe %s", tmp);
+ WinExec(buf, SW_NORMAL);
}
-
- case IDM_HELP_CONTENTS:
+ else
{
-#ifdef HTML_HELP
- char tmp[1024];
- path_build(tmp, sizeof(tmp), ANGBAND_DIR_XTRA_HELP, "zangband.chm");
- if (check_file(tmp))
- {
- HtmlHelp(data[0].w, tmp, HH_DISPLAY_TOPIC, 0);
- }
- else
- {
- plog_fmt(_("ヘルプファイル[%s]が見付かりません。", "Cannot find help file: %s"), tmp);
- plog(_("代わりにオンラインヘルプを使用してください。", "Use the online help files instead."));
- }
- break;
-#else /* HTML_HELP */
- char buf[1024];
- char tmp[1024];
- path_build(tmp, sizeof(tmp), ANGBAND_DIR_XTRA_HELP, "zangband.hlp");
- if (check_file(tmp))
- {
- sprintf(buf, "winhelp.exe %s", tmp);
- WinExec(buf, SW_NORMAL);
- }
- else
- {
- plog_fmt(_("ヘルプファイル[%s]が見付かりません。", "Cannot find help file: %s"), tmp);
- plog(_("代わりにオンラインヘルプを使用してください。", "Use the online help files instead."));
+ plog_fmt(_("ヘルプファイル[%s]が見付かりません。", "Cannot find help file: %s"), tmp);
+ plog(_("代わりにオンラインヘルプを使用してください。", "Use the online help files instead."));
- }
- break;
-#endif /* HTML_HELP */
}
+ break;
+ }
}
}
static bool process_keydown(WPARAM wParam, LPARAM lParam)
{
- int i;
bool mc = FALSE;
bool ms = FALSE;
bool ma = FALSE;
/* Extract the modifiers */
if (GetKeyState(VK_CONTROL) & 0x8000) mc = TRUE;
- if (GetKeyState(VK_SHIFT) & 0x8000) ms = TRUE;
- if (GetKeyState(VK_MENU) & 0x8000) ma = TRUE;
+ if (GetKeyState(VK_SHIFT) & 0x8000) ms = TRUE;
+ if (GetKeyState(VK_MENU) & 0x8000) ma = TRUE;
- Term_no_press = (ma) ? TRUE : FALSE;
+ term_no_press = (ma) ? TRUE : FALSE;
- /* Handle "special" keys */
- if (special_key[(byte)(wParam)] || (ma && !ignore_key[(byte)(wParam)]) )
+ if (special_key[(byte)(wParam)] || (ma && !ignore_key[(byte)(wParam)]))
{
bool ext_key = (lParam & 0x1000000L) ? TRUE : FALSE;
bool numpad = FALSE;
- /* Begin the macro trigger */
Term_keypress(31);
-
- /* Send the modifiers */
if (mc) Term_keypress('C');
if (ms) Term_keypress('S');
if (ma) Term_keypress('A');
- /* Extract "scan code" */
- i = LOBYTE(HIWORD(lParam));
-
- /* Introduce the scan code */
+ int i = LOBYTE(HIWORD(lParam));
Term_keypress('x');
-
- /* Extended key bit */
switch (wParam)
{
- /* Numpad Enter and '/' are extended key */
case VK_DIVIDE:
- Term_no_press = TRUE;
- case VK_RETURN: /* Enter */
+ term_no_press = TRUE;
+ case VK_RETURN:
numpad = ext_key;
break;
- /* Other extended keys are on full keyboard */
case VK_NUMPAD0:
case VK_NUMPAD1:
case VK_NUMPAD2:
case VK_SUBTRACT:
case VK_SEPARATOR:
case VK_DECIMAL:
- Term_no_press = TRUE;
+ term_no_press = TRUE;
case VK_CLEAR:
case VK_HOME:
case VK_END:
- case VK_PRIOR: /* Page Up */
- case VK_NEXT: /* Page Down */
+ case VK_PRIOR:
+ case VK_NEXT:
case VK_INSERT:
case VK_DELETE:
case VK_UP:
numpad = !ext_key;
}
- /* Special modifiers for keypad keys */
if (numpad) Term_keypress('K');
- /* Encode the hexidecimal scan code */
- Term_keypress(hexsym[i/16]);
- Term_keypress(hexsym[i%16]);
-
- /* End the macro trigger */
+ Term_keypress(hexsym[i / 16]);
+ Term_keypress(hexsym[i % 16]);
Term_keypress(13);
return 1;
}
-#ifdef __MWERKS__
-LRESULT FAR PASCAL AngbandWndProc(HWND hWnd, UINT uMsg,
- WPARAM wParam, LPARAM lParam);
-LRESULT FAR PASCAL AngbandWndProc(HWND hWnd, UINT uMsg,
- WPARAM wParam, LPARAM lParam)
-#else /* __MWERKS__ */
-LRESULT FAR PASCAL AngbandWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
-#endif /* __MWERKS__ */
+/*!
+ * todo WNDCLASSに影響があるのでplayer_type*の追加は保留
+ */
+LRESULT PASCAL AngbandWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
term_data *td;
-#if 0
- MINMAXINFO FAR *lpmmi;
- RECT rc;
-#endif
- int i;
-
-
- /* Acquire proper "term_data" info */
td = (term_data *)GetWindowLong(hWnd, 0);
- /* Handle message */
switch (uMsg)
{
- case WM_NCCREATE:
- {
- SetWindowLong(hWnd, 0, (LONG)(my_td));
- break;
- }
-
- case WM_CREATE:
- {
-#ifdef USE_MUSIC
- mop.dwCallback=(DWORD)hWnd;
-#endif
- return 0;
- }
-
- case WM_GETMINMAXINFO:
- {
- MINMAXINFO FAR *lpmmi;
- RECT rc;
-
- lpmmi = (MINMAXINFO FAR *)lParam;
-
- /* this message was sent before WM_NCCREATE */
- if (!td) return 1;
-
- /* Minimum window size is 80x24 */
- rc.left = rc.top = 0;
- rc.right = rc.left + 80 * td->tile_wid + td->size_ow1 + td->size_ow2;
- rc.bottom = rc.top + 24 * td->tile_hgt + td->size_oh1 + td->size_oh2 + 1;
-
- /* Adjust */
- AdjustWindowRectEx(&rc, td->dwStyle, TRUE, td->dwExStyle);
-
- /* Save minimum size */
- lpmmi->ptMinTrackSize.x = rc.right - rc.left;
- lpmmi->ptMinTrackSize.y = rc.bottom - rc.top;
+ case WM_NCCREATE:
+ {
+ SetWindowLong(hWnd, 0, (LONG)(my_td));
+ break;
+ }
+ case WM_CREATE:
+ {
+ mop.dwCallback = (DWORD)hWnd;
+ return 0;
+ }
+ case WM_GETMINMAXINFO:
+ {
+ MINMAXINFO *lpmmi;
+ RECT rc;
- return 0;
- }
+ lpmmi = (MINMAXINFO*)lParam;
+ if (!td) return 1;
- case WM_PAINT:
- {
- BeginPaint(hWnd, &ps);
- if (td) term_data_redraw(td);
- EndPaint(hWnd, &ps);
- ValidateRect(hWnd, NULL);
- return 0;
- }
+ rc.left = rc.top = 0;
+ rc.right = rc.left + 80 * td->tile_wid + td->size_ow1 + td->size_ow2;
+ rc.bottom = rc.top + 24 * td->tile_hgt + td->size_oh1 + td->size_oh2 + 1;
-#ifdef USE_MUSIC
- case MM_MCINOTIFY:
- {
- if(wParam == MCI_NOTIFY_SUCCESSFUL)
- {
- mciSendCommand(mop.wDeviceID, MCI_SEEK, MCI_SEEK_TO_START, 0);
- mciSendCommand(mop.wDeviceID, MCI_PLAY, MCI_NOTIFY, (DWORD)&mop);
- }
- return 0;
- }
-#endif
+ AdjustWindowRectEx(&rc, td->dwStyle, TRUE, td->dwExStyle);
- case WM_SYSKEYDOWN:
- case WM_KEYDOWN:
- {
- if (process_keydown(wParam, lParam))
- return 0;
- break;
- }
+ lpmmi->ptMinTrackSize.x = rc.right - rc.left;
+ lpmmi->ptMinTrackSize.y = rc.bottom - rc.top;
- case WM_CHAR:
+ return 0;
+ }
+ case WM_PAINT:
+ {
+ BeginPaint(hWnd, &ps);
+ if (td) term_data_redraw(p_ptr, td);
+ EndPaint(hWnd, &ps);
+ ValidateRect(hWnd, NULL);
+ return 0;
+ }
+ case MM_MCINOTIFY:
+ {
+ if (wParam == MCI_NOTIFY_SUCCESSFUL)
{
- if (Term_no_press) Term_no_press = FALSE;
- else Term_keypress(wParam);
- return 0;
+ mciSendCommand(mop.wDeviceID, MCI_SEEK, MCI_SEEK_TO_START, 0);
+ mciSendCommand(mop.wDeviceID, MCI_PLAY, MCI_NOTIFY, (DWORD)&mop);
}
- case WM_LBUTTONDOWN:
- {
- mousex = MIN(LOWORD(lParam) / td->tile_wid, td->cols - 1);
- mousey = MIN(HIWORD(lParam) / td->tile_hgt, td->rows - 1);
- mouse_down = TRUE;
- oldx = mousex;
- oldy = mousey;
+ return 0;
+ }
+ case WM_SYSKEYDOWN:
+ case WM_KEYDOWN:
+ {
+ if (process_keydown(wParam, lParam))
return 0;
- }
-
- case WM_LBUTTONUP:
- {
- HGLOBAL hGlobal;
- LPSTR lpStr;
- int j, sz;
- TERM_LEN dx = abs(oldx - mousex) + 1;
- TERM_LEN dy = abs(oldy - mousey) + 1;
- TERM_LEN ox = (oldx > mousex) ? mousex : oldx;
- TERM_LEN oy = (oldy > mousey) ? mousey : oldy;
+ break;
+ }
+ case WM_CHAR:
+ {
+ if (term_no_press) term_no_press = FALSE;
+ else Term_keypress(wParam);
+ return 0;
+ }
+ case WM_LBUTTONDOWN:
+ {
+ mousex = MIN(LOWORD(lParam) / td->tile_wid, td->cols - 1);
+ mousey = MIN(HIWORD(lParam) / td->tile_hgt, td->rows - 1);
+ mouse_down = TRUE;
+ oldx = mousex;
+ oldy = mousey;
+ return 0;
+ }
+ case WM_LBUTTONUP:
+ {
+ HGLOBAL hGlobal;
+ LPSTR lpStr;
+ TERM_LEN dx = abs(oldx - mousex) + 1;
+ TERM_LEN dy = abs(oldy - mousey) + 1;
+ TERM_LEN ox = (oldx > mousex) ? mousex : oldx;
+ TERM_LEN oy = (oldy > mousey) ? mousey : oldy;
- mouse_down = FALSE;
- paint_rect = FALSE;
+ mouse_down = FALSE;
+ paint_rect = FALSE;
#ifdef JP
- sz = (dx + 3) * dy;
+ int sz = (dx + 3) * dy;
#else
- sz = (dx + 2) * dy;
+ int sz = (dx + 2) * dy;
#endif
- hGlobal = GlobalAlloc(GHND, sz + 1);
- if (hGlobal == NULL) return 0;
- lpStr = (LPSTR)GlobalLock(hGlobal);
+ hGlobal = GlobalAlloc(GHND, sz + 1);
+ if (hGlobal == NULL) return 0;
+ lpStr = (LPSTR)GlobalLock(hGlobal);
- for (i = 0; i < dy; i++)
- {
+ for (int i = 0; i < dy; i++)
+ {
#ifdef JP
- char *s;
- char **scr = data[0].t.scr->c;
-
- C_MAKE(s, (dx + 1), char);
- strncpy(s, &scr[oy + i][ox], dx);
+ char *s;
+ char **scr = data[0].t.scr->c;
- if (ox > 0)
- {
- if (iskanji(scr[oy + i][ox - 1])) s[0] = ' ';
- }
-
- if (ox + dx < data[0].cols)
- {
- if (iskanji(scr[oy + i][ox + dx - 1])) s[dx - 1] = ' ';
- }
+ C_MAKE(s, (dx + 1), char);
+ strncpy(s, &scr[oy + i][ox], dx);
- for (j = 0; j < dx; j++)
- {
- if (s[j] == 127) s[j] = '#';
- *lpStr++ = s[j];
- }
-#else
- for (j = 0; j < dx; j++)
- {
- *lpStr++ = data[0].t.scr->c[oy + i][ox + j];
- }
-#endif
- if (dy > 1)
- {
- *lpStr++ = '\r';
- *lpStr++ = '\n';
- }
+ if (ox > 0)
+ {
+ if (iskanji(scr[oy + i][ox - 1])) s[0] = ' ';
}
- GlobalUnlock(hGlobal);
- if (OpenClipboard(hWnd) == 0)
+ if (ox + dx < data[0].cols)
{
- GlobalFree(hGlobal);
- return 0;
+ if (iskanji(scr[oy + i][ox + dx - 1])) s[dx - 1] = ' ';
}
- EmptyClipboard();
- SetClipboardData(CF_TEXT, hGlobal);
- CloseClipboard();
-
- Term_redraw();
-
- return 0;
- }
- case WM_MOUSEMOVE:
- {
- if (mouse_down)
+ for (int j = 0; j < dx; j++)
{
- int dx, dy;
- int cx = MIN(LOWORD(lParam) / td->tile_wid, td->cols - 1);
- int cy = MIN(HIWORD(lParam) / td->tile_hgt, td->rows - 1);
- int ox, oy;
-
- if (paint_rect)
- {
- dx = abs(oldx - mousex) + 1;
- dy = abs(oldy - mousey) + 1;
- ox = (oldx > mousex) ? mousex : oldx;
- oy = (oldy > mousey) ? mousey : oldy;
- Term_inversed_area(hWnd, ox, oy, dx, dy);
- }
- else
- {
- paint_rect = TRUE;
- }
-
- dx = abs(cx - mousex) + 1;
- dy = abs(cy - mousey) + 1;
- ox = (cx > mousex) ? mousex : cx;
- oy = (cy > mousey) ? mousey : cy;
- Term_inversed_area(hWnd, ox, oy, dx, dy);
-
- oldx = cx;
- oldy = cy;
+ if (s[j] == 127) s[j] = '#';
+ *lpStr++ = s[j];
}
- return 0;
- }
-
- case WM_INITMENU:
- {
- setup_menus();
- return 0;
- }
-
- case WM_CLOSE:
- {
- if (game_in_progress && current_world_ptr->character_generated)
+#else
+ for (int j = 0; j < dx; j++)
{
- if (!can_save)
- {
- plog(_("今は終了できません。", "You may not do that right now."));
- return 0;
- }
-
- /* Hack -- Forget messages */
- msg_flag = FALSE;
-
- forget_lite(p_ptr->current_floor_ptr);
- forget_view(p_ptr->current_floor_ptr);
- clear_mon_lite(p_ptr->current_floor_ptr);
-
- /* Save the game */
-#ifdef ZANGBAND
- /* do_cmd_save_game(FALSE); */
-#else /* ZANGBAND */
- /* do_cmd_save_game(); */
-#endif /* ZANGBAND */
- Term_key_push(SPECIAL_KEY_QUIT);
- return 0;
+ *lpStr++ = data[0].t.scr->c[oy + i][ox + j];
}
- quit(NULL);
- return 0;
- }
-
- case WM_QUERYENDSESSION:
- {
- if (game_in_progress && current_world_ptr->character_generated)
+#endif
+ if (dy > 1)
{
- /* Hack -- Forget messages */
- msg_flag = FALSE;
-
- /* Mega-Hack -- Delay death */
- if (p_ptr->chp < 0) p_ptr->is_dead = FALSE;
- exe_write_diary(p_ptr, NIKKI_GAMESTART, 0, _("----ゲーム中断----", "---- Save and Exit Game ----"));
-
- /* Hardcode panic save */
- p_ptr->panic_save = 1;
-
- /* Forbid suspend */
- signals_ignore_tstp();
-
- /* Indicate panic save */
- (void)strcpy(p_ptr->died_from, _("(緊急セーブ)", "(panic save)"));
-
- /* Panic save */
- (void)save_player(p_ptr);
+ *lpStr++ = '\r';
+ *lpStr++ = '\n';
}
- quit(NULL);
- return 0;
}
- case WM_QUIT:
+ GlobalUnlock(hGlobal);
+ if (OpenClipboard(hWnd) == 0)
{
- quit(NULL);
+ GlobalFree(hGlobal);
return 0;
}
+ EmptyClipboard();
+ SetClipboardData(CF_TEXT, hGlobal);
+ CloseClipboard();
- case WM_COMMAND:
- {
- process_menus(LOWORD(wParam));
- return 0;
- }
+ Term_redraw();
- case WM_SIZE:
+ return 0;
+ }
+ case WM_MOUSEMOVE:
+ {
+ if (mouse_down)
{
- /* this message was sent before WM_NCCREATE */
- if (!td) return 1;
-
- /* it was sent from inside CreateWindowEx */
- if (!td->w) return 1;
-
- /* was sent from WM_SIZE */
- if (td->size_hack) return 1;
+ int dx, dy;
+ int cx = MIN(LOWORD(lParam) / td->tile_wid, td->cols - 1);
+ int cy = MIN(HIWORD(lParam) / td->tile_hgt, td->rows - 1);
+ int ox, oy;
- switch (wParam)
+ if (paint_rect)
{
- case SIZE_MINIMIZED:
- {
- /* Hide sub-windows */
- for (i = 1; i < MAX_TERM_DATA; i++)
- {
- if (data[i].visible) ShowWindow(data[i].w, SW_HIDE);
- }
- return 0;
- }
-
- case SIZE_MAXIMIZED:
- {
- /* fall through */
- }
-
- case SIZE_RESTORED:
- {
- TERM_LEN cols = (LOWORD(lParam) - td->size_ow1) / td->tile_wid;
- TERM_LEN rows = (HIWORD(lParam) - td->size_oh1) / td->tile_hgt;
-
- /* New size */
- if ((td->cols != cols) || (td->rows != rows))
- {
- /* Save the new size */
- td->cols = cols;
- td->rows = rows;
-
- if (!IsZoomed(td->w) && !IsIconic(td->w))
- {
- normsize.x = td->cols;
- normsize.y = td->rows;
- }
-
- /* Activate */
- Term_activate(&td->t);
-
- /* Resize the term */
- Term_resize(td->cols, td->rows);
-
- /* Redraw later */
- InvalidateRect(td->w, NULL, TRUE);
- }
-
- td->size_hack = TRUE;
-
- /* Show sub-windows */
- for (i = 1; i < MAX_TERM_DATA; i++)
- {
- if (data[i].visible) ShowWindow(data[i].w, SW_SHOW);
- }
-
- td->size_hack = FALSE;
-
- return 0;
- }
+ dx = abs(oldx - mousex) + 1;
+ dy = abs(oldy - mousey) + 1;
+ ox = (oldx > mousex) ? mousex : oldx;
+ oy = (oldy > mousey) ? mousey : oldy;
+ term_inversed_area(hWnd, ox, oy, dx, dy);
+ }
+ else
+ {
+ paint_rect = TRUE;
}
- break;
- }
-
- case WM_PALETTECHANGED:
- {
- /* Ignore if palette change caused by itself */
- if ((HWND)wParam == hWnd) return 0;
-
- /* Fall through... */
- }
-
- case WM_QUERYNEWPALETTE:
- {
- if (!paletted) return 0;
-
- hdc = GetDC(hWnd);
-
- SelectPalette(hdc, hPal, FALSE);
-
- i = RealizePalette(hdc);
-
- /* if any palette entries changed, repaint the window. */
- if (i) InvalidateRect(hWnd, NULL, TRUE);
- ReleaseDC(hWnd, hdc);
+ dx = abs(cx - mousex) + 1;
+ dy = abs(cy - mousey) + 1;
+ ox = (cx > mousex) ? mousex : cx;
+ oy = (cy > mousey) ? mousey : cy;
+ term_inversed_area(hWnd, ox, oy, dx, dy);
- return 0;
+ oldx = cx;
+ oldy = cy;
}
- case WM_ACTIVATE:
+ return 0;
+ }
+ case WM_INITMENU:
+ {
+ setup_menus();
+ return 0;
+ }
+ case WM_CLOSE:
+ {
+ if (game_in_progress && current_world_ptr->character_generated)
{
- if (wParam && !HIWORD(lParam))
+ if (!can_save)
{
- /* Do something to sub-windows */
- for (i = 1; i < MAX_TERM_DATA; i++)
- {
- if (!data[i].posfix) term_window_pos(&data[i], hWnd);
- }
-
- /* Focus on main window */
- SetFocus(hWnd);
-
+ plog(_("今は終了できません。", "You may not do that right now."));
return 0;
}
- break;
+ msg_flag = FALSE;
+ forget_lite(p_ptr->current_floor_ptr);
+ forget_view(p_ptr->current_floor_ptr);
+ clear_mon_lite(p_ptr->current_floor_ptr);
+ Term_key_push(SPECIAL_KEY_QUIT);
+ return 0;
}
- case WM_ACTIVATEAPP:
- {
- if (IsIconic(td->w)) break;
-
- for (i = 1; i < MAX_TERM_DATA; i++)
- {
- if(data[i].visible)
- {
- if (wParam == TRUE)
- {
- ShowWindow(data[i].w, SW_SHOW);
- }
- else
- {
- ShowWindow(data[i].w, SW_HIDE);
- }
- }
- }
- }
+ quit(NULL);
+ return 0;
}
-
- return DefWindowProc(hWnd, uMsg, wParam, lParam);
-}
-
-
-#ifdef __MWERKS__
-LRESULT FAR PASCAL AngbandListProc(HWND hWnd, UINT uMsg,
- WPARAM wParam, LPARAM lParam);
-LRESULT FAR PASCAL AngbandListProc(HWND hWnd, UINT uMsg,
- WPARAM wParam, LPARAM lParam)
-#else /* __MWERKS__ */
-LRESULT FAR PASCAL AngbandListProc(HWND hWnd, UINT uMsg,
- WPARAM wParam, LPARAM lParam)
-#endif /* __MWERKS__ */
-{
- term_data *td;
-#if 0
- MINMAXINFO FAR *lpmmi;
- RECT rc;
-#endif
- PAINTSTRUCT ps;
- HDC hdc;
- int i;
-
-
- /* Acquire proper "term_data" info */
- td = (term_data *)GetWindowLong(hWnd, 0);
-
- /* Process message */
- switch (uMsg)
+ case WM_QUERYENDSESSION:
{
- case WM_NCCREATE:
+ if (game_in_progress && current_world_ptr->character_generated)
{
- SetWindowLong(hWnd, 0, (LONG)(my_td));
- break;
+ msg_flag = FALSE;
+ if (p_ptr->chp < 0) p_ptr->is_dead = FALSE;
+ exe_write_diary(p_ptr, DIARY_GAMESTART, 0, _("----ゲーム中断----", "---- Save and Exit Game ----"));
+
+ p_ptr->panic_save = 1;
+ signals_ignore_tstp();
+ (void)strcpy(p_ptr->died_from, _("(緊急セーブ)", "(panic save)"));
+ (void)save_player(p_ptr);
}
- case WM_CREATE:
- {
- return 0;
- }
+ quit(NULL);
+ return 0;
+ }
+ case WM_QUIT:
+ {
+ quit(NULL);
+ return 0;
+ }
+ case WM_COMMAND:
+ {
+ process_menus(p_ptr, LOWORD(wParam));
+ return 0;
+ }
+ case WM_SIZE:
+ {
+ if (!td) return 1;
+ if (!td->w) return 1;
+ if (td->size_hack) return 1;
- case WM_GETMINMAXINFO:
+ switch (wParam)
{
- MINMAXINFO FAR *lpmmi;
- RECT rc;
-
- lpmmi = (MINMAXINFO FAR *)lParam;
-
- /* this message was sent before WM_NCCREATE */
- if (!td) return 1;
-
- /* Minimum window size is 80x24 */
- rc.left = rc.top = 0;
- rc.right = rc.left + 20 * td->tile_wid + td->size_ow1 + td->size_ow2;
- rc.bottom = rc.top + 3 * td->tile_hgt + td->size_oh1 + td->size_oh2 + 1;
-
- /* Adjust */
- AdjustWindowRectEx(&rc, td->dwStyle, TRUE, td->dwExStyle);
-
- /* Save minimum size */
- lpmmi->ptMinTrackSize.x = rc.right - rc.left;
- lpmmi->ptMinTrackSize.y = rc.bottom - rc.top;
+ case SIZE_MINIMIZED:
+ {
+ /* Hide sub-windows */
+ for (int i = 1; i < MAX_TERM_DATA; i++)
+ {
+ if (data[i].visible) ShowWindow(data[i].w, SW_HIDE);
+ }
return 0;
}
-
- case WM_SIZE:
+ case SIZE_MAXIMIZED:
{
- TERM_LEN cols;
- TERM_LEN rows;
-
- /* this message was sent before WM_NCCREATE */
- if (!td) return 1;
-
- /* it was sent from inside CreateWindowEx */
- if (!td->w) return 1;
-
- /* was sent from inside WM_SIZE */
- if (td->size_hack) return 1;
-
- td->size_hack = TRUE;
-
- cols = (LOWORD(lParam) - td->size_ow1) / td->tile_wid;
- rows = (HIWORD(lParam) - td->size_oh1) / td->tile_hgt;
-
- /* New size */
+ /* fall through */
+ }
+ case SIZE_RESTORED:
+ {
+ TERM_LEN cols = (LOWORD(lParam) - td->size_ow1) / td->tile_wid;
+ TERM_LEN rows = (HIWORD(lParam) - td->size_oh1) / td->tile_hgt;
if ((td->cols != cols) || (td->rows != rows))
{
- /* Save old term */
- term *old_term = Term;
-
- /* Save the new size */
td->cols = cols;
td->rows = rows;
+ if (!IsZoomed(td->w) && !IsIconic(td->w))
+ {
+ normsize.x = td->cols;
+ normsize.y = td->rows;
+ }
- /* Activate */
Term_activate(&td->t);
-
- /* Resize the term */
Term_resize(td->cols, td->rows);
-
- /* Activate */
- Term_activate(old_term);
-
- /* Redraw later */
InvalidateRect(td->w, NULL, TRUE);
+ }
- /* HACK - Redraw all windows */
- p_ptr->window = 0xFFFFFFFF;
- handle_stuff(p_ptr);
+ td->size_hack = TRUE;
+ for (int i = 1; i < MAX_TERM_DATA; i++)
+ {
+ if (data[i].visible) ShowWindow(data[i].w, SW_SHOW);
}
td->size_hack = FALSE;
return 0;
}
-
- case WM_PAINT:
- {
- BeginPaint(hWnd, &ps);
- if (td) term_data_redraw(td);
- EndPaint(hWnd, &ps);
- return 0;
}
- case WM_SYSKEYDOWN:
- case WM_KEYDOWN:
- {
- if (process_keydown(wParam, lParam))
- return 0;
- break;
- }
+ break;
+ }
+ case WM_PALETTECHANGED:
+ {
+ if ((HWND)wParam == hWnd) return 0;
+ }
+ case WM_QUERYNEWPALETTE:
+ {
+ if (!paletted) return 0;
- case WM_CHAR:
- {
- if (Term_no_press) Term_no_press = FALSE;
- else Term_keypress(wParam);
- return 0;
- }
+ hdc = GetDC(hWnd);
+ SelectPalette(hdc, hPal, FALSE);
+ int i = RealizePalette(hdc);
+ if (i) InvalidateRect(hWnd, NULL, TRUE);
- case WM_PALETTECHANGED:
+ ReleaseDC(hWnd, hdc);
+ return 0;
+ }
+ case WM_ACTIVATE:
+ {
+ if (wParam && !HIWORD(lParam))
{
- /* ignore if palette change caused by itself */
- if ((HWND)wParam == hWnd) return FALSE;
- /* otherwise, fall through!!! */
- }
+ for (int i = 1; i < MAX_TERM_DATA; i++)
+ {
+ if (!data[i].posfix) term_window_pos(&data[i], hWnd);
+ }
- case WM_QUERYNEWPALETTE:
- {
- if (!paletted) return 0;
- hdc = GetDC(hWnd);
- SelectPalette(hdc, hPal, FALSE);
- i = RealizePalette(hdc);
- /* if any palette entries changed, repaint the window. */
- if (i) InvalidateRect(hWnd, NULL, TRUE);
- ReleaseDC(hWnd, hdc);
+ SetFocus(hWnd);
return 0;
}
- case WM_NCLBUTTONDOWN:
- {
-
-#ifdef HTCLOSE
- if (wParam == HTCLOSE) wParam = HTSYSMENU;
-#endif /* HTCLOSE */
+ break;
+ }
+ case WM_ACTIVATEAPP:
+ {
+ if (IsIconic(td->w)) break;
- if (wParam == HTSYSMENU)
+ for (int i = 1; i < MAX_TERM_DATA; i++)
+ {
+ if (data[i].visible)
{
- if (td->visible)
+ if (wParam == TRUE)
{
- td->visible = FALSE;
- ShowWindow(td->w, SW_HIDE);
+ ShowWindow(data[i].w, SW_SHOW);
+ }
+ else
+ {
+ ShowWindow(data[i].w, SW_HIDE);
}
-
- return 0;
}
-
- break;
}
}
+ }
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
-#ifdef USE_SAVER
+/*!
+ * todo WNDCLASSに影響があるのでplayer_type*の追加は保留
+ */
+LRESULT PASCAL AngbandListProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ term_data *td;
+ PAINTSTRUCT ps;
+ HDC hdc;
+ td = (term_data *)GetWindowLong(hWnd, 0);
-#define MOUSE_SENS 40
+ switch (uMsg)
+ {
+ case WM_NCCREATE:
+ {
+ SetWindowLong(hWnd, 0, (LONG)(my_td));
+ break;
+ }
+ case WM_CREATE:
+ {
+ return 0;
+ }
+ case WM_GETMINMAXINFO:
+ {
+ MINMAXINFO *lpmmi;
+ RECT rc;
-#ifdef __MWERKS__
-LRESULT FAR PASCAL AngbandSaverProc(HWND hWnd, UINT uMsg,
- WPARAM wParam, LPARAM lParam);
-LRESULT FAR PASCAL AngbandSaverProc(HWND hWnd, UINT uMsg,
- WPARAM wParam, LPARAM lParam)
-#else /* __MWERKS__ */
-LRESULT FAR PASCAL AngbandSaverProc(HWND hWnd, UINT uMsg,
- WPARAM wParam, LPARAM lParam)
-#endif /* __MWERKS__ */
-{
- static int iMouse = 0;
- static WORD xMouse = 0;
- static WORD yMouse = 0;
+ lpmmi = (MINMAXINFO*)lParam;
+ if (!td) return 1;
- int dx, dy;
+ rc.left = rc.top = 0;
+ rc.right = rc.left + 20 * td->tile_wid + td->size_ow1 + td->size_ow2;
+ rc.bottom = rc.top + 3 * td->tile_hgt + td->size_oh1 + td->size_oh2 + 1;
+ AdjustWindowRectEx(&rc, td->dwStyle, TRUE, td->dwExStyle);
+ lpmmi->ptMinTrackSize.x = rc.right - rc.left;
+ lpmmi->ptMinTrackSize.y = rc.bottom - rc.top;
- /* Process */
- switch (uMsg)
+ return 0;
+ }
+ case WM_SIZE:
{
- case WM_NCCREATE:
- {
- break;
- }
+ if (!td) return 1;
+ if (!td->w) return 1;
+ if (td->size_hack) return 1;
- case WM_SETCURSOR:
- {
- SetCursor(NULL);
- return 0;
- }
+ td->size_hack = TRUE;
-#if 0
- case WM_ACTIVATE:
+ TERM_LEN cols = (LOWORD(lParam) - td->size_ow1) / td->tile_wid;
+ TERM_LEN rows = (HIWORD(lParam) - td->size_oh1) / td->tile_hgt;
+ if ((td->cols != cols) || (td->rows != rows))
{
- if (LOWORD(wParam) == WA_INACTIVE) break;
-
- /* else fall through */
+ term *old_term = Term;
+ td->cols = cols;
+ td->rows = rows;
+ Term_activate(&td->t);
+ Term_resize(td->cols, td->rows);
+ Term_activate(old_term);
+ InvalidateRect(td->w, NULL, TRUE);
+ p_ptr->window = 0xFFFFFFFF;
+ handle_stuff(p_ptr);
}
-#endif
- case WM_LBUTTONDOWN:
- case WM_MBUTTONDOWN:
- case WM_RBUTTONDOWN:
- case WM_KEYDOWN:
- {
- SendMessage(hWnd, WM_CLOSE, 0, 0);
+ td->size_hack = FALSE;
+
+ return 0;
+ }
+ case WM_PAINT:
+ {
+ BeginPaint(hWnd, &ps);
+ if (td) term_data_redraw(p_ptr, td);
+ EndPaint(hWnd, &ps);
+ return 0;
+ }
+ case WM_SYSKEYDOWN:
+ case WM_KEYDOWN:
+ {
+ if (process_keydown(wParam, lParam))
return 0;
- }
+ break;
+ }
+ case WM_CHAR:
+ {
+ if (term_no_press) term_no_press = FALSE;
+ else Term_keypress(wParam);
+ return 0;
+ }
+ case WM_PALETTECHANGED:
+ {
+ if ((HWND)wParam == hWnd) return FALSE;
+ }
+ case WM_QUERYNEWPALETTE:
+ {
+ if (!paletted) return 0;
+ hdc = GetDC(hWnd);
+ SelectPalette(hdc, hPal, FALSE);
+ int i = RealizePalette(hdc);
+ if (i) InvalidateRect(hWnd, NULL, TRUE);
+ ReleaseDC(hWnd, hdc);
+ return 0;
+ }
+ case WM_NCLBUTTONDOWN:
+ {
+#ifdef HTCLOSE
+ if (wParam == HTCLOSE) wParam = HTSYSMENU;
+#endif /* HTCLOSE */
- case WM_MOUSEMOVE:
+ if (wParam == HTSYSMENU)
{
- if (iMouse)
+ if (td->visible)
{
- dx = LOWORD(lParam) - xMouse;
- dy = HIWORD(lParam) - yMouse;
-
- if (dx < 0) dx = -dx;
- if (dy < 0) dy = -dy;
-
- if ((dx > MOUSE_SENS) || (dy > MOUSE_SENS))
- {
- SendMessage(hWnd, WM_CLOSE, 0, 0);
- }
+ td->visible = FALSE;
+ ShowWindow(td->w, SW_HIDE);
}
- /* Save last location */
- iMouse = 1;
- xMouse = LOWORD(lParam);
- yMouse = HIWORD(lParam);
-
return 0;
}
- case WM_CLOSE:
- {
- DestroyWindow(hwndSaver);
- hwndSaver = NULL;
- return 0;
- }
+ break;
+ }
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
-#endif /* USE_SAVER */
+#define MOUSE_SENS 40
+
+LRESULT PASCAL AngbandSaverProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ static int iMouse = 0;
+ static WORD xMouse = 0;
+ static WORD yMouse = 0;
+
+ switch (uMsg)
+ {
+ case WM_NCCREATE:
+ {
+ break;
+ }
+
+ case WM_SETCURSOR:
+ {
+ SetCursor(NULL);
+ return 0;
+ }
+
+ case WM_LBUTTONDOWN:
+ case WM_MBUTTONDOWN:
+ case WM_RBUTTONDOWN:
+ case WM_KEYDOWN:
+ {
+ SendMessage(hWnd, WM_CLOSE, 0, 0);
+ return 0;
+ }
+ case WM_MOUSEMOVE:
+ {
+ if (iMouse)
+ {
+ int dx = LOWORD(lParam) - xMouse;
+ int dy = HIWORD(lParam) - yMouse;
+
+ if (dx < 0) dx = -dx;
+ if (dy < 0) dy = -dy;
+ if ((dx > MOUSE_SENS) || (dy > MOUSE_SENS))
+ {
+ SendMessage(hWnd, WM_CLOSE, 0, 0);
+ }
+ }
+ iMouse = 1;
+ xMouse = LOWORD(lParam);
+ yMouse = HIWORD(lParam);
+ return 0;
+ }
+ case WM_CLOSE:
+ {
+ DestroyWindow(hwndSaver);
+ hwndSaver = NULL;
+ return 0;
+ }
+ }
-/*** Temporary Hooks ***/
+ return DefWindowProc(hWnd, uMsg, wParam, lParam);
+}
/*
*/
static void hack_plog(concptr str)
{
- /* Give a warning */
if (str)
{
#ifdef JP
MessageBox(NULL, str, "警告!",
- MB_ICONEXCLAMATION | MB_OK);
+ MB_ICONEXCLAMATION | MB_OK);
#else
MessageBox(NULL, str, "Warning",
- MB_ICONEXCLAMATION | MB_OK);
+ MB_ICONEXCLAMATION | MB_OK);
#endif
}
*/
static void hack_quit(concptr str)
{
- /* Give a warning */
if (str)
{
#ifdef JP
MessageBox(NULL, str, "エラー!",
- MB_ICONEXCLAMATION | MB_OK | MB_ICONSTOP);
+ MB_ICONEXCLAMATION | MB_OK | MB_ICONSTOP);
#else
MessageBox(NULL, str, "Error",
- MB_ICONEXCLAMATION | MB_OK | MB_ICONSTOP);
+ MB_ICONEXCLAMATION | MB_OK | MB_ICONSTOP);
#endif
}
- /* Unregister the classes */
UnregisterClass(AppName, hInstance);
-
- /* Destroy the icon */
if (hIcon) DestroyIcon(hIcon);
exit(0);
}
-
-/*** Various hooks ***/
-
-
/*
* Display warning message (see "z-util.c")
*/
static void hook_plog(concptr str)
{
- /* Warning */
if (str)
{
#ifdef JP
MessageBox(data[0].w, str, "警告!",
- MB_ICONEXCLAMATION | MB_OK);
+ MB_ICONEXCLAMATION | MB_OK);
#else
MessageBox(data[0].w, str, "Warning",
- MB_ICONEXCLAMATION | MB_OK);
+ MB_ICONEXCLAMATION | MB_OK);
#endif
}
*/
static void hook_quit(concptr str)
{
- int i;
-
-
- /* Give a warning */
if (str)
{
#ifdef JP
MessageBox(data[0].w, str, "エラー!",
- MB_ICONEXCLAMATION | MB_OK | MB_ICONSTOP);
+ MB_ICONEXCLAMATION | MB_OK | MB_ICONSTOP);
#else
MessageBox(data[0].w, str, "Error",
- MB_ICONEXCLAMATION | MB_OK | MB_ICONSTOP);
+ MB_ICONEXCLAMATION | MB_OK | MB_ICONSTOP);
#endif
-
}
-
- /* Save the preferences */
save_prefs();
-
-
- /*** Could use 'Term_nuke_win()' */
-
- /* Destroy all windows */
- for (i = MAX_TERM_DATA - 1; i >= 0; --i)
+ for (int i = MAX_TERM_DATA - 1; i >= 0; --i)
{
term_force_font(&data[i], NULL);
if (data[i].font_want) string_free(data[i].font_want);
data[i].w = 0;
}
- /* Free the bitmap stuff */
-#ifdef USE_GRAPHICS
if (infGraph.hPalette) DeleteObject(infGraph.hPalette);
if (infGraph.hBitmap) DeleteObject(infGraph.hBitmap);
-
if (infMask.hPalette) DeleteObject(infMask.hPalette);
if (infMask.hBitmap) DeleteObject(infMask.hBitmap);
-#endif /* USE_GRAPHICS */
-
- /*** Free some other stuff ***/
-
DeleteObject(hbrYellow);
-
- /* bg */
delete_bg();
if (hPal) DeleteObject(hPal);
UnregisterClass(AppName, hInstance);
-
if (hIcon) DestroyIcon(hIcon);
exit(0);
}
-
-/*** Initialize ***/
-
-
/*
* Init some stuff
*/
static void init_stuff(void)
{
- int i;
-
char path[1024];
-
-
- /* Get program name with full path */
GetModuleFileName(hInstance, path, 512);
-
- /* Save the "program name" */
argv0 = path;
-
- /* Get the name of the "*.ini" file */
strcpy(path + strlen(path) - 4, ".INI");
-
- /* Save the the name of the ini-file */
ini_file = string_make(path);
+ int i = strlen(path);
- /* Analyze the path */
- i = strlen(path);
-
- /* Get the path */
for (; i > 0; i--)
{
if (path[i] == '\\')
{
- /* End of path */
break;
}
}
- /* Add "lib" to the path */
strcpy(path + i + 1, "lib\\");
-
- /* Validate the path */
validate_dir(path, TRUE);
-
- /* Init the file paths */
init_file_paths(path);
-
- /* Hack -- Validate the paths */
validate_dir(ANGBAND_DIR_APEX, FALSE);
validate_dir(ANGBAND_DIR_BONE, FALSE);
-
- /* Allow missing 'edit' directory */
if (!check_dir(ANGBAND_DIR_EDIT))
{
- /* Must have 'data'! */
validate_dir(ANGBAND_DIR_DATA, TRUE);
}
else
{
- /* Don't need 'data' */
validate_dir(ANGBAND_DIR_DATA, FALSE);
}
validate_dir(ANGBAND_DIR_XTRA, TRUE);
path_build(path, sizeof(path), ANGBAND_DIR_FILE, _("news_j.txt", "news.txt"));
- /* Hack -- Validate the "news.txt" file */
- validate_file(path);
-
-
-#if 0 /* #ifndef JP */
- /* Build the "font" path */
- path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "font");
-
- /* Allocate the path */
- ANGBAND_DIR_XTRA_FONT = string_make(path);
-
- /* Validate the "font" directory */
- validate_dir(ANGBAND_DIR_XTRA_FONT, TRUE);
- path_build(path, sizeof(path), ANGBAND_DIR_XTRA_FONT, "8X13.FON");
-
- /* Hack -- Validate the basic font */
validate_file(path);
-#endif
-
-
-#ifdef USE_GRAPHICS
-
- /* Build the "graf" path */
path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "graf");
-
- /* Allocate the path */
ANGBAND_DIR_XTRA_GRAF = string_make(path);
-
- /* Validate the "graf" directory */
validate_dir(ANGBAND_DIR_XTRA_GRAF, TRUE);
-#endif /* USE_GRAPHICS */
-
-
-#ifdef USE_SOUND
-
- /* Build the "sound" path */
path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "sound");
-
- /* Allocate the path */
ANGBAND_DIR_XTRA_SOUND = string_make(path);
-
- /* Validate the "sound" directory */
validate_dir(ANGBAND_DIR_XTRA_SOUND, FALSE);
-#endif /* USE_SOUND */
-
-#ifdef USE_MUSIC
-
- /* Build the "music" path */
path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "music");
-
- /* Allocate the path */
ANGBAND_DIR_XTRA_MUSIC = string_make(path);
-
- /* Validate the "music" directory */
validate_dir(ANGBAND_DIR_XTRA_MUSIC, FALSE);
-#endif /* USE_MUSIC */
-
- /* Build the "help" path */
path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "help");
-
- /* Allocate the path */
ANGBAND_DIR_XTRA_HELP = string_make(path);
-
- /* Validate the "help" directory */
- /* validate_dir(ANGBAND_DIR_XTRA_HELP); */
}
+
/*!
+ * todo よく見るとhMutexはちゃんと使われていない……?
* @brief (Windows固有)変愚蛮怒が起動済かどうかのチェック
*/
static bool is_already_running(void)
{
- bool result = FALSE;
HANDLE hMutex;
-
hMutex = CreateMutex(NULL, TRUE, VERSION_NAME);
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
- result = TRUE;
+ return TRUE;
}
- return result;
+
+ return FALSE;
}
/*!
* @brief (Windows固有)Windowsアプリケーションとしてのエントリポイント
*/
-int FAR PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,
- LPSTR lpCmdLine, int nCmdShow)
+int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{
- int i;
-
WNDCLASS wc;
HDC hdc;
MSG msg;
- setlocale(LC_ALL, "ja_JP.utf8");
-
- /* Unused */
+ setlocale(LC_ALL, "ja_JP");
(void)nCmdShow;
-
- /* Save globally */
hInstance = hInst;
-
-
- /* Prevent multiple run */
if (is_already_running())
{
MessageBox(NULL,
- _("変愚蛮怒はすでに起動しています。", "Hengband is already running."),
- _("エラー!", "Error") ,
- MB_ICONEXCLAMATION | MB_OK | MB_ICONSTOP);
+ _("変愚蛮怒はすでに起動しています。", "Hengband is already running."),
+ _("エラー!", "Error"),
+ MB_ICONEXCLAMATION | MB_OK | MB_ICONSTOP);
return FALSE;
}
if (hPrevInst == NULL)
{
- wc.style = CS_CLASSDC;
- wc.lpfnWndProc = AngbandWndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 4; /* one long pointer to term_data */
- wc.hInstance = hInst;
- wc.hIcon = hIcon = LoadIcon(hInst, AppName);
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
+ wc.style = CS_CLASSDC;
+ wc.lpfnWndProc = AngbandWndProc;
+ wc.cbClsExtra = 0;
+ wc.cbWndExtra = 4;
+ wc.hInstance = hInst;
+ wc.hIcon = hIcon = LoadIcon(hInst, AppName);
+ wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = GetStockObject(BLACK_BRUSH);
- wc.lpszMenuName = AppName;
+ wc.lpszMenuName = AppName;
wc.lpszClassName = AppName;
if (!RegisterClass(&wc)) exit(1);
- wc.lpfnWndProc = AngbandListProc;
- wc.lpszMenuName = NULL;
+ wc.lpfnWndProc = AngbandListProc;
+ wc.lpszMenuName = NULL;
wc.lpszClassName = AngList;
if (!RegisterClass(&wc)) exit(2);
-#ifdef USE_SAVER
-
- wc.style = CS_VREDRAW | CS_HREDRAW | CS_SAVEBITS | CS_DBLCLKS;
- wc.lpfnWndProc = AngbandSaverProc;
- wc.hCursor = NULL;
- wc.lpszMenuName = NULL;
- wc.lpszClassName = "WindowsScreenSaverClass";
+ wc.style = CS_VREDRAW | CS_HREDRAW | CS_SAVEBITS | CS_DBLCLKS;
+ wc.lpfnWndProc = AngbandSaverProc;
+ wc.hCursor = NULL;
+ wc.lpszMenuName = NULL;
+ wc.lpszClassName = "WindowsScreenSaverClass";
if (!RegisterClass(&wc)) exit(3);
-
-#endif
-
}
- /* Temporary hooks */
plog_aux = hack_plog;
quit_aux = hack_quit;
core_aux = hack_quit;
- /* Prepare the filepaths */
init_stuff();
-
- /* Initialize the keypress analyzer */
- for (i = 0; special_key_list[i]; ++i)
+ for (int i = 0; special_key_list[i]; ++i)
{
special_key[special_key_list[i]] = TRUE;
}
- /* Initialize the keypress analyzer */
- for (i = 0; ignore_key_list[i]; ++i)
+
+ for (int i = 0; ignore_key_list[i]; ++i)
{
ignore_key[ignore_key_list[i]] = TRUE;
}
- /* Determine if display is 16/256/true color */
hdc = GetDC(NULL);
colors16 = (GetDeviceCaps(hdc, BITSPIXEL) == 4);
paletted = ((GetDeviceCaps(hdc, RASTERCAPS) & RC_PALETTE) ? TRUE : FALSE);
ReleaseDC(NULL, hdc);
- /* Initialize the colors */
- for (i = 0; i < 256; i++)
+ for (int i = 0; i < 256; i++)
{
- byte rv, gv, bv;
-
- /* Extract desired values */
- rv = angband_color_table[i][1];
- gv = angband_color_table[i][2];
- bv = angband_color_table[i][3];
-
- /* Extract the "complex" code */
+ byte rv = angband_color_table[i][1];
+ byte gv = angband_color_table[i][2];
+ byte bv = angband_color_table[i][3];
win_clr[i] = PALETTERGB(rv, gv, bv);
-
- /* Save the "simple" code */
angband_color_table[i][0] = win_pal[i];
}
- /* Prepare the windows */
init_windows();
-
- /* bg */
init_bg();
- /* Activate hooks */
plog_aux = hook_plog;
quit_aux = hook_quit;
core_aux = hook_quit;
- /* Set the system suffix */
ANGBAND_SYS = "win";
-
- /* Set the keyboard suffix */
if (7 != GetKeyboardType(0))
ANGBAND_KEYBOARD = "0";
else
{
- /* Japanese keyboard */
+ /* todo PC-98のサポートは打ち切ったので削除したい */
switch (GetKeyboardType(1))
{
case 0x0D01: case 0x0D02:
}
}
- /* Catch nasty signals */
signals_init();
-
Term_activate(term_screen);
init_angband(p_ptr);
-
- /* We are now initialized */
initialized = TRUE;
#ifdef CHUUKEI
- if(lpCmdLine[0] == '-'){
- switch(lpCmdLine[1])
- {
- case 'p':
- case 'P':
- {
- if (!lpCmdLine[2]) break;
- chuukei_server = TRUE;
- if(connect_chuukei_server(&lpCmdLine[2])<0){
- msg_print("connect fail");
- return 0;
- }
- msg_print("connect");
- msg_print(NULL);
- break;
- }
-
- case 'c':
- case 'C':
- {
- if (!lpCmdLine[2]) break;
- chuukei_client = TRUE;
- connect_chuukei_server(&lpCmdLine[2]);
- play_game(p_ptr, FALSE);
- quit(NULL);
- return 0;
- }
- case 'X':
- case 'x':
- {
- if (!lpCmdLine[2]) break;
- prepare_browse_movie(&lpCmdLine[2]);
- play_game(p_ptr, FALSE);
- quit(NULL);
- return 0;
- }
- }
+ if (lpCmdLine[0] == '-') {
+ switch (lpCmdLine[1])
+ {
+ case 'p':
+ case 'P':
+ {
+ if (!lpCmdLine[2]) break;
+ chuukei_server = TRUE;
+ if (connect_chuukei_server(&lpCmdLine[2]) < 0) {
+ msg_print("connect fail");
+ return 0;
+ }
+ msg_print("connect");
+ msg_print(NULL);
+ break;
+ }
+
+ case 'c':
+ case 'C':
+ {
+ if (!lpCmdLine[2]) break;
+ chuukei_client = TRUE;
+ connect_chuukei_server(&lpCmdLine[2]);
+ play_game(player_ptr, FALSE);
+ quit(NULL);
+ return 0;
+ }
+ case 'X':
+ case 'x':
+ {
+ if (!lpCmdLine[2]) break;
+ prepare_browse_movie(&lpCmdLine[2]);
+ play_game(player_ptr, FALSE);
+ quit(NULL);
+ return 0;
+ }
+ }
}
#endif
#ifdef CHUUKEI
- /* Did the user double click on a save file? */
- if(!chuukei_server) check_for_save_file(lpCmdLine);
+ if (!chuukei_server) check_for_save_file(lpCmdLine);
#else
- /* Did the user double click on a save file? */
- check_for_save_file(lpCmdLine);
+ check_for_save_file(p_ptr, lpCmdLine);
#endif
- /* Prompt the user */
prt(_("[ファイル] メニューの [新規] または [開く] を選択してください。", "[Choose 'New' or 'Open' from the 'File' menu]"), 23, _(8, 17));
-
Term_fresh();
-
- /* Process messages forever */
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
+
quit(NULL);
- return (0);
+ return 0;
}
-
-
#endif /* WINDOWS */
-