• R/O
  • HTTP
  • SSH
  • HTTPS

hengband: コミット

変愚蛮怒のメインリポジトリです


コミットメタ情報

リビジョン235dec773df1e697e9fb7a5cd11dcc3b185b0670 (tree)
日時2020-02-24 19:59:52
作者Hourier <hourier@user...>
コミッターHourier

ログメッセージ

[Refactor] #39962 make_character_dump() にupdate_playtime() のコールバックを追加 / Added call-back update_playtime() to make_character_dump()

変更サマリ

差分

--- a/src/core.c
+++ b/src/core.c
@@ -4326,7 +4326,7 @@ void play_game(player_type *player_ptr, bool new_game)
43264326
43274327 /* 町名消失バグ対策(#38205)のためここで世界マップ情報を読み出す */
43284328 process_dungeon_file(player_ptr, "w_info.txt", 0, 0, current_world_ptr->max_wild_y, current_world_ptr->max_wild_x);
4329- success = send_world_score(player_ptr, TRUE);
4329+ success = send_world_score(player_ptr, TRUE, update_playtime);
43304330
43314331 if (!success && !get_check_strict(_("スコア登録を諦めますか?", "Do you give up score registration? "), CHECK_NO_HISTORY))
43324332 {
@@ -4703,7 +4703,7 @@ void close_game(player_type *player_ptr)
47034703
47044704 if (check_score(player_ptr))
47054705 {
4706- if ((!send_world_score(player_ptr, do_send)))
4706+ if ((!send_world_score(player_ptr, do_send, update_playtime)))
47074707 {
47084708 if (get_check_strict(_("後でスコアを登録するために待機しますか?", "Stand by for later score registration? "),
47094709 (CHECK_NO_ESCAPE | CHECK_NO_HISTORY)))
--- a/src/files.c
+++ b/src/files.c
@@ -3769,7 +3769,7 @@ static void dump_aux_home_museum(player_type *creature_ptr, FILE *fff)
37693769 * @param fff ファイルポインタ
37703770 * @return エラーコード
37713771 */
3772-errr make_character_dump(player_type *creature_ptr, FILE *fff)
3772+errr make_character_dump(player_type *creature_ptr, FILE *fff, void(*update_playtime)(void))
37733773 {
37743774 #ifdef JP
37753775 fprintf(fff, " [変愚蛮怒 %d.%d.%d キャラクタ情報]\n\n",
@@ -3778,7 +3778,7 @@ errr make_character_dump(player_type *creature_ptr, FILE *fff)
37783778 fprintf(fff, " [Hengband %d.%d.%d Character Dump]\n\n",
37793779 FAKE_VER_MAJOR - 10, FAKE_VER_MINOR, FAKE_VER_PATCH);
37803780 #endif
3781- update_playtime();
3781+ (*update_playtime)();
37823782
37833783 dump_aux_display_player(creature_ptr, fff);
37843784 dump_aux_last_message(creature_ptr, fff);
@@ -3838,7 +3838,11 @@ errr file_character(player_type *creature_ptr, concptr name)
38383838 return -1;
38393839 }
38403840
3841- (void)make_character_dump(creature_ptr, fff);
3841+ /*
3842+ * todo view-mainwindow への依存があるが、file_character() 自体関数ポインタなのでよそから呼び出されるので何とかするのは辛い
3843+ * ついでに他の関数でもview(略) は参照されているので、簡単に除去することはできない…
3844+ */
3845+ (void)make_character_dump(creature_ptr, fff, update_playtime);
38423846 my_fclose(fff);
38433847 msg_print(_("キャラクタ情報のファイルへの書き出しに成功しました。", "Character dump successful."));
38443848 msg_print(NULL);
--- a/src/files.h
+++ b/src/files.h
@@ -21,7 +21,7 @@ extern concptr ANGBAND_DIR_XTRA;
2121
2222 extern s16b tokenize(char *buf, s16b num, char **tokens, BIT_FLAGS mode);
2323 extern void display_player(player_type *creature_ptr, int mode);
24-extern errr make_character_dump(player_type *creature_ptr, FILE *fff);
24+extern errr make_character_dump(player_type *creature_ptr, FILE *fff, void(*update_playtime)(void));
2525 extern errr file_character(player_type *creature_ptr, concptr name);
2626 extern errr process_pref_file_command(player_type *creature_ptr, char *buf);
2727 extern concptr process_pref_file_expr(player_type *creature_ptr, char **sp, char *fp);
--- a/src/report.c
+++ b/src/report.c
@@ -220,7 +220,7 @@ static bool http_post(int sd, concptr url, BUF *buf)
220220 * @param dumpbuf 伝送内容バッファ
221221 * @return エラーコード
222222 */
223-static errr make_dump(player_type *creature_ptr, BUF* dumpbuf)
223+static errr make_dump(player_type *creature_ptr, BUF* dumpbuf, void(*update_playtime)(void))
224224 {
225225 char buf[1024];
226226 FILE *fff;
@@ -240,7 +240,7 @@ static errr make_dump(player_type *creature_ptr, BUF* dumpbuf)
240240 }
241241
242242 /* 一旦一時ファイルを作る。通常のダンプ出力と共通化するため。 */
243- (void)make_character_dump(creature_ptr, fff);
243+ (void)make_character_dump(creature_ptr, fff, update_playtime);
244244 my_fclose(fff);
245245
246246 /* Open for read */
@@ -385,7 +385,7 @@ concptr make_screen_dump(player_type *creature_ptr)
385385 * @param creature_ptr プレーヤーへの参照ポインタ
386386 * @return 正常終了の時0、異常があったら1
387387 */
388-errr report_score(player_type *creature_ptr)
388+errr report_score(player_type *creature_ptr, void(*update_playtime)(void))
389389 {
390390 #ifdef WINDOWS
391391 WSADATA wsaData;
@@ -426,7 +426,7 @@ errr report_score(player_type *creature_ptr)
426426 buf_sprintf(score, "killer: %s\n", creature_ptr->died_from);
427427 buf_sprintf(score, "-----charcter dump-----\n");
428428
429- make_dump(creature_ptr, score);
429+ make_dump(creature_ptr, score, update_playtime);
430430
431431 if (screen_dump)
432432 {
--- a/src/report.h
+++ b/src/report.h
@@ -3,7 +3,6 @@
33 extern concptr screen_dump;
44
55 #ifdef WORLD_SCORE
6-/* report.c */
7-extern errr report_score(player_type *creature_ptr);
6+extern errr report_score(player_type *creature_ptr, void(*update_playtime)(void));
87 extern concptr make_screen_dump(player_type *creature_ptr);
98 #endif
--- a/src/scores.c
+++ b/src/scores.c
@@ -429,7 +429,7 @@ void display_scores(int from, int to)
429429 * @param do_send 実際に転送ア処置を行うか否か
430430 * @return 転送が成功したらTRUEを返す
431431 */
432-bool send_world_score(player_type *current_player_ptr, bool do_send)
432+bool send_world_score(player_type *current_player_ptr, bool do_send, void(*update_playtime)(void))
433433 {
434434 #ifdef WORLD_SCORE
435435 if (send_score && do_send)
@@ -449,7 +449,7 @@ bool send_world_score(player_type *current_player_ptr, bool do_send)
449449 prt(_("送信中..", "Sending..."), 0, 0);
450450 Term_fresh();
451451 screen_save();
452- err = report_score(current_player_ptr);
452+ err = report_score(current_player_ptr, update_playtime);
453453 screen_load();
454454 if (err) return FALSE;
455455
--- a/src/scores.h
+++ b/src/scores.h
@@ -40,7 +40,7 @@ extern int highscore_fd;
4040 extern void display_scores_aux(int from, int to, int note, high_score *score);
4141 extern void display_scores(int from, int to);
4242 extern void kingly(player_type *winner_ptr);
43-extern bool send_world_score(player_type *current_player_ptr, bool do_send);
43+extern bool send_world_score(player_type *current_player_ptr, bool do_send, void(*update_playtime)(void));
4444 extern errr top_twenty(player_type *current_player_ptr);
4545 extern errr predict_score(player_type *current_player_ptr);
4646 extern void race_legends(player_type *current_player_ptr);
旧リポジトリブラウザで表示