操作
機能 #231
完了beatoraja本体: スコア提出時に IRChartData へノーツレーダーを同梱する
機能 #231:
beatoraja本体: スコア提出時に IRChartData へノーツレーダーを同梱する
説明
背景¶
#213 (ノーツレーダー機能の移管)で、IR側にノーツレーダー値(6軸)を保存・Web表示する基盤を実装した。ただし beatoraja標準の IR API はスコア提出時にプラグインへレーダーを渡さない という制約がある。
-
bms.player.beatoraja.ir.IRChartDataのコンストラクタはvaluesを空のHashMapで初期化するだけで、SongDataのfeature_*(ノーツレーダー)を一切コピーしない。 - izu-IR プラグインは
IRConnection.sendPlayData(IRChartData, IRScoreData)経由でIRChartDataしか受け取らず、Config/SongDatabaseAccessorへの参照を持たないため、提出時にレーダーを取得できない。
ゴール¶
beatoraja本体を改修し、スコア提出時に生成される IRChartData.values にノーツレーダー6軸を詰める。
実装方針¶
IRChartData(SongData) コンストラクタ(またはスコア提出経路)で、SongData から以下の6値を values に格納する(キー名は songdata.db の列名と同一):
| values キー | SongData アクセサ |
|---|---|
feature_notes_density |
getFeatureNotesDensity() |
feature_peak_density |
getFeaturePeakDensity() |
feature_scratch_density |
getFeatureScratchDensity() |
feature_soflan |
getFeatureSoflan() |
feature_charge |
getFeatureCharge() |
feature_chord |
getFeatureChord() |
値は double を文字列化して格納。
izu-IR 側の受け口(#213で実装済)¶
- izu-IR プラグイン
IzuIRConnection.toChartDataDtoはnew HashMap<>(chart.values)でvaluesをそのまま転送するため、izu-IRプラグインは無改修でよい。 - サーバ
upsertSongがChartDataDto.valuesの上記キーを読んでsongsテーブルのレーダー列へ保存済み。
つまり本チケットで本体を改修すれば、一括インポートにない新譜面もスコア提出時に自動でレーダーが埋まる。
エージェント ちゃん さんが20日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
実装に着手しました。
- ブランチ:
feature/231 - 対応方針:
IRChartData(SongData, int)コンストラクタでSongDataのノーツレーダー6軸をvaluesに文字列化して格納し、スコア提出時に izu-IR へ同梱する。
エージェント ちゃん さんが20日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
対応が完了しました。
概要¶
スコア提出時に生成される IRChartData.values に SongData のノーツレーダー6軸を同梱するよう beatoraja 本体を改修。一括インポートにない新譜面もスコア提出時に自動でレーダーが埋まる。izu-IR プラグイン/サーバは #213 実装済のため無改修。
変更点¶
-
IRChartData(SongData, int)コンストラクタで、values.putAll(model.getValues())の後に6軸(feature_notes_density/feature_peak_density/feature_scratch_density/feature_soflan/feature_charge/feature_chord)をDouble.toString(...)でvaluesへ格納。 - 6軸は
SongData(NotesRadarFeature)由来のためmodel != nullガードの外側で無条件に格納し、衝突時は上書き。 - 変更ファイル:
src/bms/player/beatoraja/ir/IRChartData.java、src/test/java/bms/player/beatoraja/ir/IRChartDataTest.java(新規)の2件。
テスト¶
-
xvfb-run -a ./gradlew test: 成功(新規テスト単体・フルスイートとも green、回帰なし)
関連 MR¶
- !49 (feature/231 → develop)
操作