-/* File: save.c */
-
-/*
+/*!
+ * @file save.c
+ * @brief セーブファイル書き込み処理 / Purpose: interact with savefiles
+ * @date 2014/07/12
+ * @author
+ * <pre>
* Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke
- *
* This software may be copied and distributed for educational, research,
* and not for profit purposes provided that this copyright and statement
* are included in all such copies. Other copyrights may also apply.
+ * </pre>
*/
-/* Purpose: interact with savefiles */
-
#include "angband.h"
-/*
- * These functions place information into a savefile a byte at a time
+/*!
+ * @brief 1バイトをファイルに書き込む / These functions place information into a savefile a byte at a time
+ * @param v 書き込むバイト値
+ * @return なし
*/
-
static void sf_put(byte v)
{
/* Encode the value, write a character */
x_stamp += xor_byte;
}
+/*!
+ * @brief 1バイトをファイルに書き込む(sf_put()の糖衣)
+ * @param v 書き込むバイト
+ * @return なし
+ */
static void wr_byte(byte v)
{
sf_put(v);
}
+/*!
+ * @brief 符号なし16ビットをファイルに書き込む
+ * @param v 書き込む符号なし16bit値
+ * @return なし
+ */
static void wr_u16b(u16b v)
{
sf_put((byte)(v & 0xFF));
sf_put((byte)((v >> 8) & 0xFF));
}
+/*!
+ * @brief 符号あり16ビットをファイルに書き込む
+ * @param v 書き込む符号あり16bit値
+ * @return なし
+ */
static void wr_s16b(s16b v)
{
wr_u16b((u16b)v);
}
+/*!
+ * @brief 符号なし32ビットをファイルに書き込む
+ * @param v 書き込む符号なし32bit値
+ * @return なし
+ */
static void wr_u32b(u32b v)
{
sf_put((byte)(v & 0xFF));
sf_put((byte)((v >> 24) & 0xFF));
}
+/*!
+ * @brief 符号あり32ビットをファイルに書き込む
+ * @param v 書き込む符号あり32bit値
+ * @return なし
+ */
static void wr_s32b(s32b v)
{
wr_u32b((u32b)v);
}
+/*!
+ * @brief 文字列をファイルに書き込む
+ * @param str 書き込む文字列
+ * @return なし
+ */
static void wr_string(cptr str)
{
while (*str)
*/
-/*
- * Write an "item" record
+/*!
+ * @brief アイテムオブジェクトを書き込む / Write an "item" record
+ * @param o_ptr アイテムオブジェクト保存元ポインタ
+ * @return なし
*/
static void wr_item(object_type *o_ptr)
{
}
-/*
- * Write a "monster" record
+/*!
+ * @brief モンスター情報を書き込む / Write a "monster" record
+ * @param m_ptr モンスター情報保存元ポインタ
+ * @return なし
*/
static void wr_monster(monster_type *m_ptr)
{
}
-/*
- * Write a "lore" record
+/*!
+ * @brief モンスターの思い出を書き込む / Write a "lore" record
+ * @param r_idx モンスター種族ID
+ * @return なし
*/
static void wr_lore(int r_idx)
{
wr_byte(0);
}
-
-/*
- * Write an "xtra" record
+/*!
+ * @brief その他のゲーム情報を書き込む(実質はアイテムの鑑定情報のみ) / Write an "xtra" record
+ * @param k_idx ベースアイテムのID
+ * @return なし
*/
static void wr_xtra(int k_idx)
{
}
-/*
- * Write a "store" record
+/*!
+ * @brief 店舗情報を書き込む / Write a "store" record
+ * @param st_ptr 店舗情報の参照ポインタ
+ * @return なし
*/
static void wr_store(store_type *st_ptr)
{
}
-/*
- * Write RNG state
+/*!
+ * @brief 乱数情報を書き込む / Write RNG state
+ * @return なし
*/
static errr wr_randomizer(void)
{
}
-/*
- * Write the "options"
+/*!
+ * @brief ゲームオプション情報を書き込む / Write the "options"
+ * @return なし
*/
static void wr_options(void)
{
}
-/*
- * Hack -- Write the "ghost" info
+/*!
+ * @brief ダミー情報スキップを書き込む / Hack -- Write the "ghost" info
+ * @return なし
*/
static void wr_ghost(void)
{
int i;
/* Name */
-#ifdef JP
- wr_string("不正なゴースト");
-#else
- wr_string("Broken Ghost");
-#endif
-
+ wr_string(_("不正なゴースト", "Broken Ghost"));
/* Hack -- stupid data */
for (i = 0; i < 60; i++) wr_byte(0);
}
-/*
- * Save quick start data
+/*!
+ * @brief クイック・スタート情報を書き込む / Save quick start data
+ * @return なし
*/
static void save_quick_start(void)
{
wr_byte((byte)previous_char.quick_ok);
}
-/*
- * Write some "extra" info
+
+/*!
+ * @brief その他の情報を書き込む / Write some "extra" info
+ * @return なし
*/
static void wr_extra(void)
{
int i,j;
byte tmp8u;
- wr_string(player_name);
+ wr_string(p_ptr->name);
wr_string(p_ptr->died_from);
for (i = 0; i < 64; i++) wr_s16b(p_ptr->spell_exp[i]);
for (i = 0; i < 5; i++) for (j = 0; j < 64; j++) wr_s16b(p_ptr->weapon_exp[i][j]);
- for (i = 0; i < 10; i++) wr_s16b(p_ptr->skill_exp[i]);
+ for (i = 0; i < GINOU_MAX; i++) wr_s16b(p_ptr->skill_exp[i]);
for (i = 0; i < 108; i++) wr_s32b(p_ptr->magic_num1[i]);
for (i = 0; i < 108; i++) wr_byte(p_ptr->magic_num2[i]);
}
-
-/*
- * hook function to sort monsters by level
+/*!
+ * @brief フロア保存時のcave情報テンプレートをソートするための比較処理
+ * @param u caveテンプレートの参照ポインタ
+ * @param v 未使用
+ * @param a スワップするモンスター種族のID1
+ * @param b スワップするモンスター種族のID2
+ * @return aの方が大きければtrue
*/
static bool ang_sort_comp_cave_temp(vptr u, vptr v, int a, int b)
{
}
-/*
- * Sorting hook -- Swap function
+/*!
+ * @brief フロア保存時のcave情報テンプレートをソートするためのスワップ処理 / Sorting hook -- Swap function
+ * @param u caveテンプレートの参照ポインタ
+ * @param v 未使用
+ * @param a スワップするモンスター種族のID1
+ * @param b スワップするモンスター種族のID2
+ * @return なし
*/
static void ang_sort_swap_cave_temp(vptr u, vptr v, int a, int b)
{
}
-/*
- * Actually write a saved floor data
- * using effectively compressed format.
+/*!
+ * @brief 保存フロアの書き込み / Actually write a saved floor data using effectively compressed format.
+ * @param sf_ptr 保存したいフロアの参照ポインタ
+ * @return なし
*/
static void wr_saved_floor(saved_floor_type *sf_ptr)
{
wr_u16b(base_level);
wr_u16b(num_repro);
- wr_u16b((u16b)py);
- wr_u16b((u16b)px);
+ wr_u16b((u16b)p_ptr->y);
+ wr_u16b((u16b)p_ptr->x);
wr_u16b(cur_hgt);
wr_u16b(cur_wid);
wr_byte(p_ptr->feeling);
}
-/*
+/*!
+ * @brief 現在フロアの書き込み /
* Write the current dungeon (new method)
+ * @return なし
*/
static bool wr_dungeon(void)
{
}
-
-/*
+/*!
+ * @brief セーブデータの書き込み /
* Actually write a save-file
+ * @return 成功すればtrue
*/
static bool wr_savefile_new(void)
{
}
-/*
+/*!
+ * @brief セーブデータ書き込みのサブルーチン /
* Medium level player saver
- *
+ * @return 成功すればtrue
+ * @details
* XXX XXX XXX Angband 2.8.0 will use "fd" instead of "fff" if possible
*/
static bool save_player_aux(char *name)
-/*
+/*!
+ * @brief セーブデータ書き込みのメインルーチン /
* Attempt to save the player in a savefile
+ * @return 成功すればtrue
*/
bool save_player(void)
{
strcpy(safe, savefile);
strcat(safe, ".new");
-#ifdef VM
- /* Hack -- support "flat directory" usage on VM/ESA */
- strcpy(safe, savefile);
- strcat(safe, "n");
-#endif /* VM */
-
/* Grab permissions */
safe_setuid_grab();
strcpy(temp, savefile);
strcat(temp, ".old");
-#ifdef VM
- /* Hack -- support "flat directory" usage on VM/ESA */
- strcpy(temp, savefile);
- strcat(temp, "o");
-#endif /* VM */
-
/* Grab permissions */
safe_setuid_grab();
}
-
-/*
+/*!
+ * @brief セーブデータ読み込みのメインルーチン /
* Attempt to Load a "savefile"
- *
+ * @return 成功すればtrue
+ * @details
+ * <pre>
* Version 2.7.0 introduced a slightly different "savefile" format from
* older versions, requiring a completely different parsing method.
*
*
* Note that we always try to load the "current" savefile, even if
* there is no such file, so we must check for "empty" savefile names.
+ * </pre>
*/
bool load_player(void)
{
if (!savefile[0]) return (TRUE);
-#if !defined(MACINTOSH) && !defined(WINDOWS) && !defined(VM)
+#if !defined(MACINTOSH) && !defined(WINDOWS)
/* XXX XXX XXX Fix this */
if (access(savefile, 0) < 0)
{
/* Give a message */
-#ifdef JP
- msg_print("セーブファイルがありません。");
-#else
- msg_print("Savefile does not exist.");
-#endif
+ msg_print(_("セーブファイルがありません。", "Savefile does not exist."));
msg_print(NULL);
my_fclose(fkk);
/* Message */
-#ifdef JP
- msg_print("セーブファイルは現在使用中です。");
-#else
- msg_print("Savefile is currently in use.");
-#endif
-
+ msg_print(_("セーブファイルは現在使用中です。", "Savefile is currently in use."));
msg_print(NULL);
/* Oops */
if (fd < 0) err = -1;
/* Message (below) */
-#ifdef JP
- if (err) what = "セーブファイルを開けません。";
-#else
- if (err) what = "Cannot open savefile";
-#endif
-
+ if (err) what = _("セーブファイルを開けません。", "Cannot open savefile");
}
/* Process file */
if (fd_read(fd, (char*)(vvv), 4)) err = -1;
/* What */
-#ifdef JP
- if (err) what = "セーブファイルを読めません。";
-#else
- if (err) what = "Cannot read savefile";
-#endif
-
+ if (err) what = _("セーブファイルを読めません。", "Cannot read savefile");
/* Close the file */
(void)fd_close(fd);
err = rd_savefile_new();
/* Message (below) */
-#ifdef JP
- if (err) what = "セーブファイルを解析出来ません。";
-#else
- if (err) what = "Cannot parse savefile";
-#endif
-
+ if (err) what = _("セーブファイルを解析出来ません。", "Cannot parse savefile");
}
/* Paranoia */
if (!turn) err = -1;
/* Message (below) */
-#ifdef JP
- if (err) what = "セーブファイルが壊れています";
-#else
- if (err) what = "Broken savefile";
-#endif
-
+ if (err) what = _("セーブファイルが壊れています", "Broken savefile");
}
#ifdef VERIFY_TIMESTAMP
sf_when < (statbuf.st_ctime - 100))
{
/* Message */
-#ifdef JP
- what = "無効なタイム・スタンプです";
-#else
- what = "Invalid timestamp";
-#endif
-
+ what = _("無効なタイム・スタンプです", "Invalid timestamp");
/* Oops */
err = -1;
{
if (z_major == 2 && z_minor == 0 && z_patch == 6)
{
-#ifdef JP
- msg_print("バージョン 2.0.* 用のセーブファイルを変換しました。");
-#else
- msg_print("Converted a 2.0.* savefile.");
-#endif
-
+ msg_print(_("バージョン 2.0.* 用のセーブファイルを変換しました。", "Converted a 2.0.* savefile."));
}
else
{
return (FALSE);
}
-
+/*!
+ * @brief ファイルロック処理
+ * @return なし
+ */
void remove_loc(void)
{
#ifdef VERIFY_SAVEFILE
}
-/*
- * Actually write a temporal saved floor file
+/*!
+ * @brief ゲームプレイ中のフロア一時保存出力処理サブルーチン / Actually write a temporal saved floor file
+ * @param sf_ptr 保存フロア参照ポインタ
+ * @return なし
*/
static bool save_floor_aux(saved_floor_type *sf_ptr)
{
}
-/*
- * Attempt to save the temporally saved-floor data
+/*!
+ * @brief ゲームプレイ中のフロア一時保存出力処理メインルーチン / Attempt to save the temporally saved-floor data
+ * @param sf_ptr 保存フロア参照ポインタ
+ * @param mode 保存オプション
+ * @return なし
*/
bool save_floor(saved_floor_type *sf_ptr, u32b mode)
{