操作
機能 #277
完了IRプラグインにプレー時間(totalDuration)を露出する
機能 #277:
IRプラグインにプレー時間(totalDuration)を露出する
説明
背景¶
izu-ir 側チケット IR機能 #263「その日のプレー時間を取得して表示」で、プレーヤーのその日の合計プレー時間を IR サーバへ送信・集計・表示したい。
beatoraja 内部の bms.player.beatoraja.ScoreData には既に getTotalDuration()/setTotalDuration(long)(ミリ秒単位の実プレー経過時間:完走なら曲丸々、途中終了ならそこまで、選曲画面等は除外)が存在するが、IR プラグインが受け取る bms.player.beatoraja.ir.IRScoreData にはこの値が露出されていない(IRScoreData(ScoreData) コンストラクタが totalDuration をコピーしていない)。
対応内容¶
-
bms.player.beatoraja.ir.IRScoreDataにpublic final long totalDuration;フィールドを追加し、IRScoreData(ScoreData score)コンストラクタでthis.totalDuration = score.getTotalDuration();を設定する。 - 単位はミリ秒(long)。単一プレー分の経過時間となることを確認(リプレイなどで累積された値ではないこと)。
izu-ir 側の状態¶
- izu-ir #263 で protocol(
ScoreDataDto.totalDuration) / server / DB(chart_score_logs.total_duration,course_score_logs.total_duration) / web(レシートサマリー表示) を先行実装済み。プラグインは現状 0 を送信するプレースホルダ配線のみ。 - 本チケットで IRScoreData に totalDuration が露出され、更新版 beatoraja.jar が izu-ir 側に取り込まれた後、izu-ir プラグインの
IzuIRConnection.toScoreDataDtoを0L→score.totalDurationに差し替える(別途 izu-ir 側のフォローアップ)。
関連¶
- IR機能 #263(izu-ir)
エージェント ちゃん さんが18日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
実装に着手しました。
- ブランチ:
feature/277 - 対応方針:
IRScoreDataにpublic final long totalDuration;を追加し、IRScoreData(ScoreData)コンストラクタでscore.getTotalDuration()(ミリ秒)をコピーして IR プラグインへ露出する。
エージェント ちゃん さんが18日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
対応が完了しました。
概要¶
IR プラグインが受け取る IRScoreData に、単一プレーの実プレー経過時間(ミリ秒)を露出。izu-ir #263「その日のプレー時間を取得して表示」の集計に必要なデータ配線を beatoraja 側で完了させた。
変更点¶
-
IRScoreDataにpublic final long totalDuration;(実プレー経過時間・ミリ秒単位)を追加。 -
IRScoreData(ScoreData)コンストラクタでscore.getTotalDuration()をコピー。 - 単位はミリ秒(long)、単一プレー分の経過時間(リプレイ累積値ではない)。
- 変更ファイル:
src/bms/player/beatoraja/ir/IRScoreData.java、src/test/java/bms/player/beatoraja/ir/IRScoreDataTest.java(新規)の 2 件。 - izu-ir 側の
IzuIRConnection.toScoreDataDtoを0L→score.totalDurationに差し替えるのは、更新版 beatoraja.jar 取り込み後の別フォローアップ(本チケット範囲外)。
テスト¶
-
xvfb-run -a ./gradlew test --tests "bms.player.beatoraja.ir.IRScoreDataTest": 成功(2テスト合格 / BUILD SUCCESSFUL)- 値コピー検証(
setTotalDuration(123456L)→ir.totalDuration == 123456L) - 未設定時のデフォルト 0 検証
- 値コピー検証(
関連 MR¶
- !58 (feature/277 → develop)
エージェント ちゃん さんが18日前に更新
完了。 IRScoreData に totalDuration を露出する改造が beatoraja リポジトリの develop ブランチに取り込まれた。
izu-ir 側(#263)では更新版 beatoraja.jar を取り込み、プラグインの IzuIRConnection.toScoreDataDto を 0L プレースホルダから score.totalDuration の実配線に差し替える。
操作