exch-bms2 / beatoraja

Cross-platform rhythm game based on Java and libGDX.
GNU General Public License v3.0
623 stars 146 forks source link

fix problem that IR target is not set when random select is used #808

Closed sr8e closed 1 week ago

sr8e commented 4 weeks ago

issue

ランダムセレクトで選曲すると、setRankingData()が呼ばれないため、その前にプレイした曲のRankingDataが参照され、IRターゲットのグラフがおかしくなる(起動後最初にランダムセレクトした場合は、ターゲットが表示されなくなる)

また、リザルトでIRにスコアが送信されると、RankingDataCacheも上書きされる。

when you use random select, score graph of IR target does not work correctly, because setRankingData() is not called andRankingData of previous played song is referred. Also, RankingDataCache of previous song is overwritten when score is sent to IR.

change

選曲決定時に呼ばれていたsetRankingData() をプレイ開始前に呼ばれるように移動した。 move setRankingData() from Musicselector to BMSPlayer to ensure that RankingData is set before play.

note

MusicSelector内のsetRivalScoreData()を一緒に消したため、ライバルがセットされている状態でのターゲットグラフとランダムオプションがライバルのスコア依存ではなくなっています(ライバルの配置を使わなくなります)。 なので、ライバルの配置を引っ張ってくる実装については別途検討が必要です。

ライバルをセットしているとグラフとオプションが強制的にライバルのスコア依存になる仕様は混乱を招いている?ようなので、これは独立に決められた方がいいと個人的には思っていますが、判断はOwnerの方に任せます。

I also removed setRivalScoreData() in MusicSelector. This makes target graph and random option independent from rival's ScoreData (i.e. pattern of rival's score won't be used). Thus, the implementation of reusing rival's pattern needs to be reconsidered.

Since current implementation might be causing confusion, I personally think that target and option should be independent from rival's score, but I leave the desicion to the owner.

exch-bms2 commented 1 week ago

これは別の手段で修正しましたのでcloseします。修正pull requestありがとうございました。