exch-bms2 / beatoraja

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

SUD+の計算方法の変更 #795

Closed k0gane closed 1 month ago

k0gane commented 3 months ago

現状

現在のbeatorajaのSUD+の計算式は表示部分(全体からLIFTを除いた部分)を1000分割して表示するようになっている。

        final double hu = lanes[0].region.y + lanes[0].region.height;
        final double hl = playconfig.isEnablelift() ? lanes[0].region.y + lanes[0].region.height * playconfig.getLift() : lanes[0].region.y;
        final double rxhs = (hu - hl) * hispeed;
        double y = hl;

        final float lanecover = playconfig.isEnablelanecover() ? playconfig.getLanecover() : 0;
        currentduration = (int) Math.round(region * (1 - lanecover));

        main.main.getOffset(OFFSET_LIFT).y = (float) (hl - lanes[0].region.y);
        main.main.getOffset(OFFSET_LANECOVER).y = (float) ((hl - hu) * lanecover);
        // TODO HIDDENとLIFT混在の必要性とHIDDENの必要性
        final SkinOffset hidden = main.main.getOffset(OFFSET_HIDDEN_COVER);
        if (playconfig.isEnablehidden()) {
            hidden.a = 0;
            if (playconfig.isEnablelift()) {
                hidden.y =  (1 - playconfig.getLift()) * playconfig.getHidden()
                        * skin.getLaneRegion()[0].height;
            } else {
                hidden.y = playconfig.getHidden() * skin.getLaneRegion()[0].height;
            }
        } else {
            hidden.a = -255;
        }

ただ、この方法だとLIFTとSUD+で計算方法が異なり、違和感がある

beatmaniaとそろえるならば下はSUD+が500になるべきである。

SUD+の計算式を

従来...表示部分を1000分割 新規...全体を1000分割し、LIFTと合算して1000以下になるように縛りをつける

上記のように変更するほうが望ましい