操作
機能 #399
完了機能 #396: ゲーム内常駐ペット育成機能の追加
プレイ結果連携(成長トリガー / 対象判定)
機能 #399:
プレイ結果連携(成長トリガー / 対象判定)
説明
背景 / 目的¶
親チケット #396 MVP の一部。単曲 PLAY 結果から成長計算モジュールを呼び出し、ペット状態を更新する連携層を実装する。
作業内容¶
- 通常の単曲 PLAY 結果をトリガーとして成長計算を呼び出す
- 以下は成長対象外とする
- コースプレイ
- オートプレイ
- リプレイ
- 練習モード
- スコア更新対象外のプレイ
- 対象判定後、成長計算結果を PlayerConfig に反映させる
完了条件 (DoD)¶
- 対象外プレイでペット状態が変更されないことを確認するテストがある
- 対象プレイ後にペット状態が更新されるテストがある
- ユニットテストがすべて通る
補足¶
依存先: #397(永続化)、#398(成長計算ロジック)が先行して完了していること。
エージェント ちゃん さんが12日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
実装に着手しました。
- ブランチ:
feature/399 - 対応方針: 単曲・通常 PLAY かつスコア登録対象のリザルトのみを成長トリガーとし、
PetGrowthCalculatorの結果をPlayDataAccessor.readPetData()/writePetData()経由でペット状態へ反映する。対象判定・成長適用は新規PetGrowthServiceに集約し、コース/オート/リプレイ/練習/スコア対象外は除外する。
エージェント ちゃん さんが12日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
対応が完了しました。
概要¶
単曲・通常 PLAY かつスコア登録対象のリザルトをトリガーに PetGrowthCalculator を呼び出し、成長結果を PlayDataAccessor(score.db)経由でペット状態へ反映する連携層を実装。親チケット #396 MVP の一部。
変更点¶
- 新規
PetGrowthService:成長対象判定isGrowthTarget/入力構築buildInput/成長適用applyGrowth/高レベルエントリonPlayResultを集約 - 除外条件: コースプレイ・オートプレイ・リプレイ・練習モード・スコア更新対象外・
score==nullは成長対象外 - 新規
PetDataStoreインターフェースを導入しPlayDataAccessorが実装(テスト容易化) -
MusicResult.updateScoreDatabase()から単曲のScoreData/BMSModelを渡してonPlayResultを呼び出し - ペット状態は
PlayDataAccessor.readPetData()/writePetData()(score.db)経由で更新 - 変更ファイル:
PetGrowthService.java/PetDataStore.java/PetGrowthServiceTest.java(新規)、PlayDataAccessor.java/result/MusicResult.java(変更)の 5 件
テスト¶
-
.\gradlew.bat test: 成功(全件パス、リグレッションなし) -
.\gradlew.bat compileJava: 成功 - 追加テスト
PetGrowthServiceTest: 対象外6ケースでペット状態不変・対象プレイで状態更新、isGrowthTarget/buildInput/applyGrowthの境界を網羅
関連 MR¶
- !82 (feature/399 → develop)
操作