操作
機能 #437
完了選曲画面に最終プレー日時を表示(スキンプロパティ追加)
機能 #437:
選曲画面に最終プレー日時を表示(スキンプロパティ追加)
説明
背景¶
-
ScoreData.getDate()(epoch秒,ScoreData.java:140)に最終プレー/更新日時のデータは存在するが、選曲画面でこれを表示するスキンプロパティが無い。
方針¶
-
skin/property/StringPropertyTypes.javaに新StringType(未使用 id を採番。現状最大 ~1942)を追加。-
state instanceof MusicSelector selectorでselector.getSelectedBar().getScore()を取得し、getDate()をDateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").withZone(ZoneId.systemDefault())で整形(雛形launcher/ResourceConfigurationView.java:46)。 -
score == null/date == 0は空文字を返す。 - 雛形は同ファイル 44-58行の selectedBar 参照パターン。
-
- (任意)リザルト画面でも出すなら
state.resource.getScoreData()分岐を同StringType内に追加。 - スキン側 json/lua/lr2 への配置は同梱スキン作者の領域。本チケットは「プロパティ提供」まで。
StringPropertyFactory.javaで id 参照が通るか確認。
検証¶
-
.\gradlew.bat clean build。日時フォーマットのユニットテスト追加(null/0 を含む)。 - 手動: 新
StringTypeを仮スキンまたは既存スキンの文字列要素 id に割当てて表示確認。未プレー曲は空表示。
留意¶
-
StringPropertyTypes.javaの既存 id を grep で確認してから採番(重複回避)。
エージェント ちゃん さんが9日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
実装に着手しました。
- ブランチ:
feature/437 - 対応方針:
StringPropertyTypes.javaに最終プレー日時の新StringType(id=1950)を追加し、Luxe_Flat 選曲スキンのスコアデータ枠内に「LAST PLAY」ラベル付きで表示する。
仕様メモ¶
- フォーマット:
yyyy/MM/dd HH:mm(秒なし・システムタイムゾーン) -
MusicSelector選択中バーのgetScore()からgetDate()を取得。score == null/date == 0は空文字。 - 表示は選曲画面のみ(リザルトには出さない)。
エージェント ちゃん さんが9日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
対応が完了しました。
概要¶
選曲画面で選択中の曲の最終プレー日時を表示するスキン文字列プロパティ(id=1950)を追加。ScoreData.getDate() のデータは存在したが、選曲画面で表示する手段が無かったため。
変更点¶
-
StringPropertyTypes.javaに新StringType last_play_date(1950)を追加。MusicSelector選択中バーのgetScore().getDate()(epoch秒)をyyyy/MM/dd HH:mm(秒なし・システムTZ)で整形。score == null/date == 0(未プレー)は空文字。 - 整形ロジックを static ヘルパ
formatLastPlayDate(long)に切り出しテスト可能化。LastPlayDateFormatTest(新規)で 0→空・負値・既知epochのTZ一致・フォーマット形式を検証。 - 表示は選曲画面のみ(リザルトには出さない)。
- 変更ファイル:
src/bms/player/beatoraja/skin/property/StringPropertyTypes.java、src/test/java/bms/player/beatoraja/skin/property/LastPlayDateFormatTest.java(新規)の2件。
テスト¶
-
.\gradlew.bat test: 成功(全スイート BUILD SUCCESSFUL)
関連 MR¶
- !115 (feature/437 → develop)
補足¶
- 同梱スキン Luxe_Flat の選曲スキンへの実配置(「LAST PLAY」表示)はローカルで動作確認済み。
/skin/*は gitignore のため MR には含めず、ローカル専用カスタマイズとして保持。
操作