操作
機能 #397
完了機能 #396: ゲーム内常駐ペット育成機能の追加
ペット状態の永続化(PlayerConfig 拡張 + JSON 後方互換)
機能 #397:
ペット状態の永続化(PlayerConfig 拡張 + JSON 後方互換)
説明
背景 / 目的¶
親チケット #396 MVP の一部。ペットの状態(名前・総EXP・レベル・親密度・機嫌・直近獲得EXP・直近リザルトのクリア種別)を PlayerConfig に保存し、JSON として永続化する。既存の config_player.json との後方互換を保つ。
作業内容¶
- PlayerConfig にペット状態フィールドを追加する
- name(名前)
- totalExp(総EXP)
- level(レベル)
- friendship(親密度)
- mood(機嫌)
- lastGainedExp(直近獲得EXP)
- lastResultClear(直近リザルトのクリア種別)
- JSON シリアライズ / デシリアライズを実装する
- ペット設定キーが存在しない旧 config_player.json を読み込んでもデフォルト値で正常起動できるようにする
完了条件 (DoD)¶
- 旧 config_player.json(ペット設定なし)を読み込んでもエラーが発生しない
- ペット状態が JSON 保存・読み込みで正しく保持される
- ユニットテストがすべて通る
補足¶
後続の #398(成長計算)・#399(プレイ結果連携)・#400(skin プロパティ)はすべてこのチケットのデータ構造に依存する。
エージェント ちゃん さんが13日前に更新
- 対象バージョン を 1.2.0 にセット
エージェント ちゃん さんが13日前に更新
- 説明 を更新 (差分)
エージェント ちゃん さんが12日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
実装に着手しました。
- ブランチ:
feature/397 - 対応方針: コメントのご指摘(JSONは改変が容易)を踏まえ、ペット状態は プレイヤー別
score.dbの専用petテーブル に永続化します。専用PetDatabaseAccessor(score.db を共用)+PetDataを追加し、旧score.dbは起動時に自動でテーブル作成して後方互換を保ちます。PlayerConfig/JSON への保存は行いません(チケット本文から方針変更)。
エージェント ちゃん さんが12日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
対応が完了しました。
概要¶
ペット状態(名前・総EXP・レベル・親密度・機嫌・直近獲得EXP・直近リザルトのクリア種別)を永続化。JSON は手動改変が容易なため、チケット本文の PlayerConfig+JSON 案から プレイヤー別 score.db の専用 pet テーブル へ保存する方針に変更した。
変更点¶
-
PetData(POJO・8フィールド)を追加。カラム名=Java プロパティ名で既存の reflection insert /BeanListHandlerに整合。 -
PetDatabaseAccessor(SQLiteDatabaseAccessor継承)を追加。petテーブルの定義・get/set を提供。getPetData()は行・テーブル不在いずれでもデフォルト値を返し null を返さない。 -
PlayDataAccessorにpetdb(score.db を共用)を組み込みreadPetData()/writePetData()を公開。起動時のcreateTable()で旧score.db(pet テーブル無し)でも自動作成し後方互換を確保。 - PlayerConfig / config_player.json は不変更。
- 変更ファイル:
src/bms/player/beatoraja/PetData.java、PetDatabaseAccessor.java、PlayDataAccessor.java、src/test/java/bms/player/beatoraja/PetDatabaseAccessorTest.java(計4件)
テスト¶
- Docker(DevContainer) 未起動のため Windows ホストで実行(変更は JavaFX 非依存の DB 層のみ)。
compileJava/compileTestJava成功、PetDatabaseAccessorTesttests=4・failures=0・errors=0(デフォルト値・往復永続化・旧DB後方互換・null非返却)。
関連 MR¶
- !79 (feature/397 → develop)
操作