操作
機能 #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テーブルのレーダー列へ保存済み。
つまり本チケットで本体を改修すれば、一括インポートにない新譜面もスコア提出時に自動でレーダーが埋まる。
操作