X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fmain-win.c;h=0b9f856c3289e23f7567e7dc0ef651dbbe11790e;hb=d40a371b6d4957984217ad9ea04e96a2dd873651;hp=e04f7bd50ce34a06cdc710e71bb02aa7c4f63b21;hpb=8217937eb54938eae931568577da175587cad327;p=hengband%2Fhengband.git
diff --git a/src/main-win.c b/src/main-win.c
index e04f7bd50..0b9f856c3 100644
--- a/src/main-win.c
+++ b/src/main-win.c
@@ -4,7 +4,7 @@
* @brief Windowsçåºæå®è£
(ã¡ã¤ã³ã¨ã³ããªãã¤ã³ãå«ã)
* @date 2018/03/16
* @author Hengband Team
- * @detail
+ * @details
*
*
æ¦è¦
* Windows98ããã®åå¾ã®é ãèµ·ç¹ã¨ããAPIå®è£
ã
@@ -103,16 +103,17 @@
#include "floor/floor-events.h"
#include "game-option/runtime-arguments.h"
#include "game-option/special-options.h"
-#include "io/chuukei.h"
#include "io/files-util.h"
#include "io/inet.h"
#include "io/input-key-acceptor.h"
+#include "io/record-play-movie.h"
#include "io/signal-handlers.h"
#include "io/write-diary.h"
-#include "main/init.h"
+#include "main/angband-initializer.h"
#include "main/music-definitions-table.h"
#include "main/sound-definitions-table.h"
#include "main/sound-of-music.h"
+#include "monster-floor/monster-lite.h"
#include "system/angband-version.h"
#include "system/angband.h"
#include "system/floor-type-definition.h"
@@ -129,8 +130,7 @@
#ifdef WINDOWS
#include "dungeon/dungeon.h"
-#include "savedata/save.h"
-#include "term/z-term.h"
+#include "save/save.h"
#include
#include
#include
@@ -695,21 +695,26 @@ static void term_getsize(term_data *td)
TERM_LEN wid = td->cols * td->tile_wid + td->size_ow1 + td->size_ow2;
TERM_LEN hgt = td->rows * td->tile_hgt + td->size_oh1 + td->size_oh2;
- RECT rc;
- rc.left = 0;
- rc.right = rc.left + wid;
- rc.top = 0;
- rc.bottom = rc.top + hgt;
-
- AdjustWindowRectEx(&rc, td->dwStyle, TRUE, td->dwExStyle);
- td->size_wid = rc.right - rc.left;
- td->size_hgt = rc.bottom - rc.top;
- if (!td->w)
- return;
+ RECT rw, rc;
+ if (td->w) {
+ GetWindowRect(td->w, &rw);
+ GetClientRect(td->w, &rc);
- GetWindowRect(td->w, &rc);
- td->pos_x = rc.left;
- td->pos_y = rc.top;
+ td->size_wid = (rw.right - rw.left) - (rc.right - rc.left) + wid;
+ td->size_hgt = (rw.bottom - rw.top) - (rc.bottom - rc.top) + hgt;
+
+ td->pos_x = rw.left;
+ td->pos_y = rw.top;
+ } else {
+ /* Tempolary calculation */
+ rc.left = 0;
+ rc.right = wid;
+ rc.top = 0;
+ rc.bottom = hgt;
+ AdjustWindowRectEx(&rc, td->dwStyle, TRUE, td->dwExStyle);
+ td->size_wid = rc.right - rc.left;
+ td->size_hgt = rc.bottom - rc.top;
+ }
}
/*
@@ -812,6 +817,7 @@ static void save_prefs(void)
strcpy(buf, use_bg ? "1" : "0");
WritePrivateProfileString("Angband", "BackGround", buf, ini_file);
WritePrivateProfileString("Angband", "BackGroundBitmap", bg_bitmap_file[0] != '\0' ? bg_bitmap_file : "bg.bmp", ini_file);
+ WritePrivateProfileString("Angband", "SaveFile", savefile, ini_file);
for (int i = 0; i < MAX_TERM_DATA; ++i) {
save_prefs_aux(i);
@@ -887,6 +893,7 @@ static void load_prefs(void)
arg_music = (GetPrivateProfileInt("Angband", "Music", 0, ini_file) != 0);
use_bg = GetPrivateProfileInt("Angband", "BackGround", 0, ini_file);
GetPrivateProfileString("Angband", "BackGroundBitmap", "bg.bmp", bg_bitmap_file, 1023, ini_file);
+ GetPrivateProfileString("Angband", "SaveFile", "", savefile, 1023, ini_file);
for (int i = 0; i < MAX_TERM_DATA; ++i) {
load_prefs_aux(i);
}
@@ -940,15 +947,17 @@ static void load_sound_prefs(void)
char wav_path[1024];
char *zz[SAMPLE_SOUND_MAX];
- path_build(ini_path, 1024, ANGBAND_DIR_XTRA_SOUND, "sound.cfg");
+ path_build(ini_path, 1024, ANGBAND_DIR_XTRA_SOUND, "sound_debug.cfg");
+ if (GetPrivateProfileString("Device", "type", "", mci_device_type, 256, ini_path) == 0) {
+ path_build(ini_path, 1024, ANGBAND_DIR_XTRA_SOUND, "sound.cfg");
+ GetPrivateProfileString("Device", "type", "", mci_device_type, 256, ini_path);
+ }
+
for (int i = 0; i < SOUND_MAX; i++) {
GetPrivateProfileString("Sound", angband_sound_name[i], "", tmp, 1024, ini_path);
int num = tokenize_whitespace(tmp, SAMPLE_SOUND_MAX, zz);
for (int j = 0; j < num; j++) {
- /* Access the sound */
path_build(wav_path, 1024, ANGBAND_DIR_XTRA_SOUND, zz[j]);
-
- /* Save the sound filename, if it exists */
if (check_file(wav_path))
sound_file[i][j] = string_make(zz[j]);
}
@@ -963,8 +972,12 @@ static void load_music_prefs(void)
char *zz[SAMPLE_MUSIC_MAX];
char key[80];
- path_build(ini_path, 1024, ANGBAND_DIR_XTRA_MUSIC, "music.cfg");
- GetPrivateProfileString("Device", "type", "", mci_device_type, 256, ini_path);
+ path_build(ini_path, 1024, ANGBAND_DIR_XTRA_MUSIC, "music_debug.cfg");
+ if (GetPrivateProfileString("Device", "type", "", mci_device_type, 256, ini_path) == 0) {
+ path_build(ini_path, 1024, ANGBAND_DIR_XTRA_MUSIC, "music.cfg");
+ GetPrivateProfileString("Device", "type", "", mci_device_type, 256, ini_path);
+ }
+
for (int i = 0; i < MUSIC_BASIC_MAX; i++) {
GetPrivateProfileString("Basic", angband_music_basic_name[i], "", tmp, 1024, ini_path);
int num = tokenize_whitespace(tmp, SAMPLE_MUSIC_MAX, zz);
@@ -1967,7 +1980,7 @@ static void windows_map(player_type *player_ptr)
static void term_data_link(term_data *td)
{
term_type *t = &td->t;
- term_init(t, td->cols, td->rows, td->keys);
+ term_init(t, td->cols, td->rows, FILE_READ_BUFF_SIZE);
t->soft_cursor = TRUE;
t->higher_pict = TRUE;
t->attr_blank = TERM_WHITE;
@@ -2034,17 +2047,21 @@ static void init_windows(void)
}
load_prefs();
+
+ /* Atrributes of main window */
td = &data[0];
td->dwStyle = (WS_OVERLAPPED | WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION | WS_VISIBLE);
td->dwExStyle = 0;
td->visible = TRUE;
+ /* Attributes of sub windows */
for (int i = 1; i < MAX_TERM_DATA; i++) {
td = &data[i];
td->dwStyle = (WS_OVERLAPPED | WS_THICKFRAME | WS_SYSMENU);
td->dwExStyle = (WS_EX_TOOLWINDOW);
}
+ /* Font of each window */
for (int i = 0; i < MAX_TERM_DATA; i++) {
td = &data[i];
strncpy(td->lf.lfFaceName, td->font_want, LF_FACESIZE);
@@ -2055,11 +2072,11 @@ static void init_windows(void)
td->tile_wid = td->font_wid;
if (!td->tile_hgt)
td->tile_hgt = td->font_hgt;
-
term_getsize(td);
term_window_resize(td);
}
+ /* Create sub windows */
for (int i = MAX_TERM_DATA - 1; i >= 1; --i) {
td = &data[i];
@@ -2067,14 +2084,18 @@ static void init_windows(void)
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);
my_td = NULL;
+
if (!td->w)
quit(_("ãµãã¦ã£ã³ãã¦ã«ä½æã«å¤±æãã¾ãã", "Failed to create sub-window"));
+ td->size_hack = TRUE;
+ term_getsize(td);
+ term_window_resize(td);
+
if (td->visible) {
- td->size_hack = TRUE;
ShowWindow(td->w, SW_SHOW);
- td->size_hack = FALSE;
}
+ td->size_hack = FALSE;
term_data_link(td);
angband_term[i] = &td->t;
@@ -2084,20 +2105,28 @@ static void init_windows(void)
SetActiveWindow(td->w);
}
- if (data[i].posfix) {
- term_window_pos(&data[i], HWND_TOPMOST);
+ if (td->posfix) {
+ term_window_pos(td, HWND_TOPMOST);
} else {
- term_window_pos(&data[i], td->w);
+ term_window_pos(td, td->w);
}
}
+ /* Create main window */
td = &data[0];
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);
my_td = NULL;
+
if (!td->w)
quit(_("ã¡ã¤ã³ã¦ã£ã³ãã¦ã®ä½æã«å¤±æãã¾ãã", "Failed to create Angband window"));
+ /* Resize */
+ td->size_hack = TRUE;
+ term_getsize(td);
+ term_window_resize(td);
+ td->size_hack = FALSE;
+
term_data_link(td);
angband_term[0] = &td->t;
normsize.x = td->cols;
@@ -2249,7 +2278,7 @@ static void check_for_save_file(player_type *player_ptr, LPSTR cmd_line)
strcat(savefile, s);
validate_file(savefile);
game_in_progress = TRUE;
- play_game(player_ptr, FALSE);
+ play_game(player_ptr, FALSE, FALSE);
}
/*
@@ -2268,7 +2297,7 @@ static void process_menus(player_type *player_ptr, WORD wCmd)
} else {
game_in_progress = TRUE;
term_flush();
- play_game(player_ptr, TRUE);
+ play_game(player_ptr, TRUE, FALSE);
quit(NULL);
}
@@ -2294,7 +2323,7 @@ static void process_menus(player_type *player_ptr, WORD wCmd)
validate_file(savefile);
game_in_progress = TRUE;
term_flush();
- play_game(player_ptr, FALSE);
+ play_game(player_ptr, FALSE, FALSE);
quit(NULL);
}
}
@@ -2370,8 +2399,8 @@ static void process_menus(player_type *player_ptr, WORD wCmd)
ofn.Flags = OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR;
if (GetOpenFileName(&ofn)) {
- prepare_browse_movie_aux(savefile);
- play_game(player_ptr, FALSE);
+ prepare_browse_movie_without_path_build(savefile);
+ play_game(player_ptr, FALSE, TRUE);
quit(NULL);
return;
}
@@ -3029,7 +3058,7 @@ LRESULT PASCAL AngbandWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
p_ptr->panic_save = 1;
signals_ignore_tstp();
(void)strcpy(p_ptr->died_from, _("(ç·æ¥ã»ã¼ã)", "(panic save)"));
- (void)save_player(p_ptr);
+ (void)save_player(p_ptr, SAVE_TYPE_NORMAL);
quit(NULL);
return 0;
}
@@ -3238,10 +3267,8 @@ LRESULT PASCAL AngbandListProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara
return 0;
}
case WM_NCLBUTTONDOWN: {
-#ifdef HTCLOSE
if (wParam == HTCLOSE)
wParam = HTSYSMENU;
-#endif /* HTCLOSE */
if (wParam == HTSYSMENU) {
if (td->visible) {
@@ -3426,7 +3453,7 @@ static void init_stuff(void)
strcpy(path + i + 1, "lib\\");
validate_dir(path, TRUE);
- init_file_paths(path);
+ init_file_paths(path, path);
validate_dir(ANGBAND_DIR_APEX, FALSE);
validate_dir(ANGBAND_DIR_BONE, FALSE);
if (!check_dir(ANGBAND_DIR_EDIT)) {
@@ -3440,6 +3467,7 @@ static void init_stuff(void)
validate_dir(ANGBAND_DIR_INFO, FALSE);
validate_dir(ANGBAND_DIR_PREF, TRUE);
validate_dir(ANGBAND_DIR_SAVE, FALSE);
+ validate_dir(ANGBAND_DIR_DEBUG_SAVE, FALSE);
validate_dir(ANGBAND_DIR_USER, TRUE);
validate_dir(ANGBAND_DIR_XTRA, TRUE);
path_build(path, sizeof(path), ANGBAND_DIR_FILE, _("news_j.txt", "news.txt"));
@@ -3583,53 +3611,7 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nC
term_activate(term_screen);
init_angband(p_ptr, process_autopick_file_command);
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(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
- if (!chuukei_server)
- check_for_save_file(lpCmdLine);
-#else
check_for_save_file(p_ptr, lpCmdLine);
-#endif
-
prt(_("[ãã¡ã¤ã«] ã¡ãã¥ã¼ã® [æ°è¦] ã¾ã㯠[éã] ãé¸æãã¦ãã ããã", "[Choose 'New' or 'Open' from the 'File' menu]"), 23, _(8, 17));
term_fresh();
while (GetMessage(&msg, NULL, 0, 0)) {