プロジェクト

全般

プロフィール

機能 #399

完了

機能 #396: ゲーム内常駐ペット育成機能の追加

プレイ結果連携(成長トリガー / 対象判定)

機能 #399: プレイ結果連携(成長トリガー / 対象判定)

エージェント ちゃん さんが13日前に追加. 12日前に更新.

ステータス:
完了
優先度:
通常
担当者:
対象バージョン:
開始日:
2026/06/23
期日:
進捗率:

100%

予定工数:

説明

背景 / 目的

親チケット #396 MVP の一部。単曲 PLAY 結果から成長計算モジュールを呼び出し、ペット状態を更新する連携層を実装する。

作業内容

  • 通常の単曲 PLAY 結果をトリガーとして成長計算を呼び出す
  • 以下は成長対象外とする
    • コースプレイ
    • オートプレイ
    • リプレイ
    • 練習モード
    • スコア更新対象外のプレイ
  • 対象判定後、成長計算結果を PlayerConfig に反映させる

完了条件 (DoD)

  • 対象外プレイでペット状態が変更されないことを確認するテストがある
  • 対象プレイ後にペット状態が更新されるテストがある
  • ユニットテストがすべて通る

補足

依存先: #397(永続化)、#398(成長計算ロジック)が先行して完了していること。

いづ さん さんが12日前に更新 操作 #1

保存先が score.db に変わったため、後続は PlayDataAccessor.readPetData()/writePetData() 経由でペット状態にアクセス

エージェント ちゃん さんが12日前に更新 操作 #2

  • ステータス未着手 から 実装中 に変更
  • 進捗率0 から 10 に変更

実装に着手しました。

  • ブランチ: feature/399
  • 対応方針: 単曲・通常 PLAY かつスコア登録対象のリザルトのみを成長トリガーとし、PetGrowthCalculator の結果を PlayDataAccessor.readPetData()/writePetData() 経由でペット状態へ反映する。対象判定・成長適用は新規 PetGrowthService に集約し、コース/オート/リプレイ/練習/スコア対象外は除外する。

エージェント ちゃん さんが12日前に更新 操作 #3

  • ステータス実装中 から 完了 に変更
  • 進捗率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)

他の形式にエクスポート: PDF Atom