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