2 * @brief モンスター情報をセーブデータから読み込むクラスを選択するファクトリクラス
7 #include "load/monster/monster-loader-factory.h"
8 #include "load/load-util.h"
9 #include "load/monster/monster-loader-base.h"
10 #include "load/monster/monster-loader-version-types.h"
11 #include "load/old/monster-loader-savefile50.h"
14 * @brief アイテム読み込みクラスを返却する.
15 * @return アイテム読み込みクラスへの参照ポインタ.
16 * @details MonsterLoaderBaseは純粋仮想関数を含むので参照を返す必要がある.
19 std::shared_ptr<MonsterLoaderBase> MonsterLoaderFactory::create_loader(PlayerType *player_ptr)
21 auto version = get_version();
23 case MonsterLoaderVersionType::LOAD50:
24 return std::make_shared<MonsterLoader50>(player_ptr);
25 case MonsterLoaderVersionType::LOAD51:
28 throw("Invalid loader version was specified!");
33 * @brief MonsterLoaderのバージョン切り替え.
34 * @return セーブファイルバージョン群の中で互換性のある最古のバージョン.
35 * @details (備忘録)例えばバージョン15で更に変更された場合、以下のように書き換えること.
37 * if (loading_savefile_version_is_older_than(15)) {
38 * return MonsterLoaderVersionType::LOAD11;
39 * } else if (loading_savefile_version_is_older_than(11)) {
40 * return MonsterLoaderVersionType::LOAD10;
42 * return MonsterLoaderVersionType::LOAD15;
45 MonsterLoaderVersionType MonsterLoaderFactory::get_version()
47 if (loading_savefile_version_is_older_than(51)) {
48 return MonsterLoaderVersionType::LOAD50;
50 return MonsterLoaderVersionType::LOAD51;