1
0

3 Коммитууд d26da1df68 ... 4588a80ca8

Эзэн SHA1 Мессеж Огноо
  kiwec 4588a80ca8 Add submit_after_pause convar 4 сар өмнө
  kiwec 2fb0c61f49 Add instafade checkbox 4 сар өмнө
  kiwec c4e6d307ff Add cursor trail customization settings 4 сар өмнө

+ 5 - 0
src/App/Osu/Beatmap.cpp

@@ -1116,6 +1116,11 @@ void Beatmap::pause(bool quitIfWaiting) {
     }
 
     if(m_bIsPaused && isFirstPause) {
+        if(!convar->getConVarByName("submit_after_pause")->getBool()) {
+            debugLog("Disabling score submission due to pausing\n");
+            vanilla = false;
+        }
+
         m_vContinueCursorPoint = getMousePos();
         if(GameRules::osu_mod_fps.getBool()) {
             m_vContinueCursorPoint = GameRules::getPlayfieldCenter();

+ 3 - 0
src/App/Osu/Changelog.cpp

@@ -29,7 +29,10 @@ Changelog::Changelog() : ScreenBackable() {
     CHANGELOG latest;
     latest.title =
         UString::format("%.2f (%s, %s)", convar->getConVarByName("osu_version")->getFloat(), __DATE__, __TIME__);
+    latest.changes.push_back("- Added cursor trail customization settings");
+    latest.changes.push_back("- Added instafade checkbox");
     latest.changes.push_back("- Added more UI sounds");
+    latest.changes.push_back("- Added submit_after_pause convar");
     latest.changes.push_back("- Chat: added support for /me command");
     latest.changes.push_back("- Chat: added support for links");
     latest.changes.push_back("- Chat: added support for map links (auto-downloads)");

+ 2 - 1
src/App/Osu/Circle.cpp

@@ -429,7 +429,8 @@ void Circle::draw(Graphics *g) {
     Skin *skin = osu->getSkin();
 
     // draw hit animation
-    if(m_fHitAnimation > 0.0f && m_fHitAnimation != 1.0f && !osu->getModHD()) {
+    bool is_instafade = convar->getConVarByName("instafade")->getBool();
+    if(!is_instafade && m_fHitAnimation > 0.0f && m_fHitAnimation != 1.0f && !osu->getModHD()) {
         float alpha = 1.0f - m_fHitAnimation;
 
         float scale = m_fHitAnimation;

+ 12 - 7
src/App/Osu/HUD.cpp

@@ -40,9 +40,9 @@ ConVar osu_cursor_expand_duration("osu_cursor_expand_duration", 0.1f, FCVAR_DEFA
 ConVar osu_cursor_trail_scale("osu_cursor_trail_scale", 1.0f, FCVAR_DEFAULT);
 ConVar osu_cursor_trail_length("osu_cursor_trail_length", 0.17f, FCVAR_DEFAULT,
                                "how long unsmooth cursortrails should be, in seconds");
-ConVar osu_cursor_trail_spacing(
-    "osu_cursor_trail_spacing", 0.015f, FCVAR_DEFAULT,
-    "how big the gap between consecutive unsmooth cursortrail images should be, in seconds");
+ConVar cursor_trail_spacing(
+    "cursor_trail_spacing", 15.f, FCVAR_DEFAULT,
+    "how big the gap between consecutive unsmooth cursortrail images should be, in milliseconds");
 ConVar osu_cursor_trail_alpha("osu_cursor_trail_alpha", 1.0f, FCVAR_DEFAULT);
 ConVar osu_cursor_trail_smooth_force("osu_cursor_trail_smooth_force", false, FCVAR_DEFAULT);
 ConVar osu_cursor_trail_smooth_length("osu_cursor_trail_smooth_length", 0.5f, FCVAR_DEFAULT,
@@ -55,6 +55,8 @@ ConVar osu_cursor_trail_max_size("osu_cursor_trail_max_size", 2048, FCVAR_DEFAUL
 ConVar osu_cursor_trail_expand(
     "osu_cursor_trail_expand", true, FCVAR_DEFAULT,
     "if \"CursorExpand: 1\" in your skin.ini, whether the trail should then also expand or not");
+ConVar always_render_cursor_trail("always_render_cursor_trail", true, FCVAR_DEFAULT,
+                                  "always render the cursor trail, even when not moving the cursor");
 ConVar osu_cursor_ripple_duration("osu_cursor_ripple_duration", 0.7f, FCVAR_DEFAULT,
                                   "time in seconds each cursor ripple is visible");
 ConVar osu_cursor_ripple_alpha("osu_cursor_ripple_alpha", 1.0f, FCVAR_DEFAULT);
@@ -2830,18 +2832,21 @@ void HUD::addCursorTrailPosition(std::vector<CURSORTRAIL> &trail, Vector2 pos, b
                     trail.push_back(mid);
                 }
             }
-        } else
+        } else {
             trail.push_back(ct);
+        }
     } else if((trail.size() > 0 && engine->getTime() > trail[trail.size() - 1].time -
                                                            osu_cursor_trail_length.getFloat() +
-                                                           osu_cursor_trail_spacing.getFloat()) ||
+                                                           cursor_trail_spacing.getFloat() / 1000.f) ||
               trail.size() == 0) {
-        if(trail.size() > 0 && trail[trail.size() - 1].pos == pos) {
+        if(trail.size() > 0 && trail[trail.size() - 1].pos == pos &&
+           !convar->getConVarByName("always_render_cursor_trail")->getBool()) {
             trail[trail.size() - 1].time = ct.time;
             trail[trail.size() - 1].alpha = 1.0f;
             trail[trail.size() - 1].scale = ct.scale;
-        } else
+        } else {
             trail.push_back(ct);
+        }
     }
 
     // early cleanup

+ 6 - 0
src/App/Osu/OptionsMenu.cpp

@@ -847,6 +847,7 @@ OptionsMenu::OptionsMenu() : ScreenBackable() {
     hitResultScaleSlider->setKeyDelta(0.01f);
     addCheckbox("Draw Numbers", convar->getConVarByName("osu_draw_numbers"));
     addCheckbox("Draw Approach Circles", convar->getConVarByName("osu_draw_approach_circles"));
+    addCheckbox("Instafade", convar->getConVarByName("instafade"));
     addSpacer();
     addCheckbox("Ignore Beatmap Sample Volume",
                 "Ignore beatmap timingpoint effect volumes.\nQuiet hitsounds can destroy accuracy and concentration, "
@@ -863,6 +864,11 @@ OptionsMenu::OptionsMenu() : ScreenBackable() {
                 "Usually, the presence of the cursormiddle.png skin image enables smooth cursortrails.\nThis option "
                 "allows you to force enable smooth cursortrails for all skins.",
                 convar->getConVarByName("osu_cursor_trail_smooth_force"));
+    addCheckbox("Always draw Cursor Trail", "Draw the cursor trail even when the cursor isn't moving",
+                convar->getConVarByName("always_render_cursor_trail"));
+    addSlider("Cursor trail spacing:", 0.f, 30.f, convar->getConVarByName("cursor_trail_spacing"), -1.f, true)
+        ->setAnimated(false)
+        ->setKeyDelta(0.01f);
     m_cursorSizeSlider =
         addSlider("Cursor Size:", 0.01f, 5.0f, convar->getConVarByName("osu_cursor_scale"), -1.0f, true);
     m_cursorSizeSlider->setAnimated(false);

+ 2 - 0
src/App/Osu/Osu.cpp

@@ -145,12 +145,14 @@ ConVar instant_replay_duration("instant_replay_duration", 15.f, FCVAR_DEFAULT,
 ConVar normalize_loudness("normalize_loudness", false, FCVAR_DEFAULT, "normalize loudness across songs");
 ConVar restart_sound_engine_before_playing("restart_sound_engine_before_playing", false, FCVAR_DEFAULT,
                                            "jank fix for users who experience sound issues after playing for a while");
+ConVar instafade("instafade", false, FCVAR_DEFAULT, "don't draw hitcircle fadeout animations");
 
 ConVar use_https("use_https", true, FCVAR_DEFAULT);
 ConVar mp_server("mp_server", "ez-pp.farm", FCVAR_DEFAULT);
 ConVar mp_password("mp_password", "", FCVAR_DEFAULT | FCVAR_HIDDEN);
 ConVar mp_autologin("mp_autologin", false, FCVAR_DEFAULT);
 ConVar submit_scores("submit_scores", false, FCVAR_DEFAULT);
+ConVar submit_after_pause("submit_after_pause", true, FCVAR_DEFAULT);
 
 // If catboy.best doesn't work for you, here are some alternatives:
 // - https://api.osu.direct/d/

+ 6 - 5
src/App/Osu/Slider.cpp

@@ -368,8 +368,9 @@ void Slider::draw(Graphics *g) {
     }
 
     // slider body fade animation, draw start/end circle hit animation
-
-    if(m_fEndSliderBodyFadeAnimation > 0.0f && m_fEndSliderBodyFadeAnimation != 1.0f && !osu->getModHD()) {
+    bool is_instafade = convar->getConVarByName("instafade")->getBool();
+    if(!is_instafade && m_fEndSliderBodyFadeAnimation > 0.0f && m_fEndSliderBodyFadeAnimation != 1.0f &&
+       !osu->getModHD()) {
         std::vector<Vector2> emptyVector;
         std::vector<Vector2> alwaysPoints;
         alwaysPoints.push_back(m_beatmap->osuCoords2Pixels(m_curve->pointAt(m_fSlidePercent)));
@@ -381,8 +382,8 @@ void Slider::draw(Graphics *g) {
                                  1.0f - m_fEndSliderBodyFadeAnimation, getTime());
     }
 
-    if(osu_slider_sliderhead_fadeout.getBool() && m_fStartHitAnimation > 0.0f && m_fStartHitAnimation != 1.0f &&
-       !osu->getModHD()) {
+    if(!is_instafade && osu_slider_sliderhead_fadeout.getBool() && m_fStartHitAnimation > 0.0f &&
+       m_fStartHitAnimation != 1.0f && !osu->getModHD()) {
         float alpha = 1.0f - m_fStartHitAnimation;
 
         float scale = m_fStartHitAnimation;
@@ -420,7 +421,7 @@ void Slider::draw(Graphics *g) {
         g->popTransform();
     }
 
-    if(m_fEndHitAnimation > 0.0f && m_fEndHitAnimation != 1.0f && !osu->getModHD()) {
+    if(!is_instafade && m_fEndHitAnimation > 0.0f && m_fEndHitAnimation != 1.0f && !osu->getModHD()) {
         float alpha = 1.0f - m_fEndHitAnimation;
 
         float scale = m_fEndHitAnimation;