فهرست منبع

Add new logo

It's not very good, but it's better than nothing
Clément Wolf 2 هفته پیش
والد
کامیت
31aa4eb78a

BIN
resources/materials/McEngine.png


BIN
resources/materials/asteroidb1.png


BIN
resources/materials/asteroidb2.png


BIN
resources/materials/asteroidb3.png


BIN
resources/materials/asteroidm1.png


BIN
resources/materials/asteroidm2.png


BIN
resources/materials/asteroidm3.png


BIN
resources/materials/asteroids1.png


BIN
resources/materials/asteroids2.png


BIN
resources/materials/asteroids3.png


BIN
resources/materials/block.png


BIN
resources/materials/bullet.png


BIN
resources/materials/mcosuvr_controls_1.png


BIN
resources/materials/mcosuvr_controls_2.png


BIN
resources/materials/neosu.png


BIN
resources/materials/ship.png


BIN
resources/materials/thruster.png


+ 74 - 121
src/App/Osu/MainMenu.cpp

@@ -134,7 +134,7 @@ ConVar osu_toggle_preview_music("osu_toggle_preview_music");
 
 ConVar osu_draw_menu_background("osu_draw_menu_background", false, FCVAR_NONE);
 ConVar osu_main_menu_startup_anim_duration("osu_main_menu_startup_anim_duration", 0.25f, FCVAR_NONE);
-ConVar osu_main_menu_alpha("osu_main_menu_alpha", 1.0f, FCVAR_NONE);
+ConVar osu_main_menu_alpha("osu_main_menu_alpha", 0.8f, FCVAR_NONE);
 ConVar osu_main_menu_friend("osu_main_menu_friend", true, FCVAR_NONE);
 
 ConVar osu_main_menu_banner_always_text("osu_main_menu_banner_always_text", "", FCVAR_NONE);
@@ -210,10 +210,7 @@ MainMenu::MainMenu(Osu *osu) : OsuScreen(osu) {
 
     m_fBackgroundFadeInTime = 0.0f;
 
-    const int baseDPI = 96;
-    const int newDPI = Osu::getUIScale(osu) * baseDPI;
-    m_titleFont =
-        engine->getResourceManager()->loadFont("SourceSansPro-Semibold.otf", "FONT_OSU_MAINMENU", 150, true, newDPI);
+    logo_img = engine->getResourceManager()->loadImage("neosu.png", "NEOSU_LOGO");
 
     // check if the user has never clicked the changelog for this update
     m_bDidUserUpdateFromOlderVersion = false;
@@ -459,9 +456,11 @@ void MainMenu::draw(Graphics *g) {
     }
 
     // draw main button
+    bool drawing_full_cube = (m_fMainMenuAnim > 0.0f && m_fMainMenuAnim != 1.0f) ||
+                             (haveTimingpoints && m_fMainMenuAnimFriendPercent > 0.0f);
+
     float inset = 0.0f;
-    if((m_fMainMenuAnim > 0.0f && m_fMainMenuAnim != 1.0f) ||
-       (haveTimingpoints && m_fMainMenuAnimFriendPercent > 0.0f)) {
+    if(drawing_full_cube) {
         inset = 1.0f - 0.5 * m_fMainMenuAnimFriendPercent;
 
         g->setDepthBuffer(true);
@@ -508,18 +507,16 @@ void MainMenu::draw(Graphics *g) {
                                          lerp<float>(1.0f, 0.965f, m_fMainMenuAnimFriendPercent));
 
     // front side
+    g->pushTransform();
+    g->translate(0, 0, inset);
     g->setColor(cubeColor);
     g->setAlpha(osu_main_menu_alpha.getFloat());
-    g->pushTransform();
-    {
-        g->translate(0, 0, inset);
-        g->fillRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset, mainButtonRect.getWidth() - 2 * inset,
-                    mainButtonRect.getHeight() - 2 * inset);
-    }
-    g->popTransform();
+    g->fillRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset, mainButtonRect.getWidth() - 2 * inset,
+                mainButtonRect.getHeight() - 2 * inset);
     g->setColor(cubeBorderColor);
-    g->setAlpha(osu_main_menu_alpha.getFloat());
-    g->drawRect(mainButtonRect.getX(), mainButtonRect.getY(), mainButtonRect.getWidth(), mainButtonRect.getHeight());
+    g->drawRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset, mainButtonRect.getWidth() - 2 * inset,
+                mainButtonRect.getHeight() - 2 * inset);
+    g->popTransform();
 
     // friend
     if(m_fMainMenuAnimFriendPercent > 0.0f) {
@@ -762,32 +759,18 @@ void MainMenu::draw(Graphics *g) {
         }
     }
 
-    // main text
-    if(bancho.server_icon == nullptr || !bancho.server_icon->isReady()) {
-        const float title_width = m_titleFont->getStringWidth(NEOSU_MAIN_BUTTON_TEXT);
-        const float title_scale = mainButtonRect.getWidth() / title_width * 0.6f;
-        const float font_scale = title_scale * (1.0f - pulseSub + m_fSizeAddAnim) * m_fStartupAnim;
-
-        float alpha = (1.0f - m_fMainMenuAnimFriendPercent) * (1.0f - m_fMainMenuAnimFriendPercent) *
-                      (1.0f - m_fMainMenuAnimFriendPercent);
-
-        g->setColor(0xffffffff);
-        g->setAlpha(alpha);
-        g->pushTransform();
-        {
-            g->scale(font_scale, font_scale);
-            g->translate(m_vCenter.x - m_fCenterOffsetAnim -
-                             (m_titleFont->getStringWidth(NEOSU_MAIN_BUTTON_TEXT) / 2.0f) * font_scale,
-                         m_vCenter.y + (m_titleFont->getHeight() * font_scale) / 2.25f, -1.0f);
-            g->drawString(m_titleFont, NEOSU_MAIN_BUTTON_TEXT);
+    // neosu/server logo
+    {
+        auto logo = logo_img;
+        if(bancho.server_icon != nullptr && bancho.server_icon->isReady()) {
+            logo = bancho.server_icon;
         }
-        g->popTransform();
-    } else {
+
         float alpha = (1.0f - m_fMainMenuAnimFriendPercent) * (1.0f - m_fMainMenuAnimFriendPercent) *
                       (1.0f - m_fMainMenuAnimFriendPercent);
 
-        float xscale = mainButtonRect.getWidth() / bancho.server_icon->getWidth();
-        float yscale = mainButtonRect.getHeight() / bancho.server_icon->getHeight();
+        float xscale = mainButtonRect.getWidth() / logo->getWidth();
+        float yscale = mainButtonRect.getHeight() / logo->getHeight();
         float scale = std::min(xscale, yscale) * 0.8f;
 
         g->pushTransform();
@@ -795,122 +778,91 @@ void MainMenu::draw(Graphics *g) {
         g->setAlpha(alpha);
         g->scale(scale, scale);
         g->translate(m_vCenter.x - m_fCenterOffsetAnim, m_vCenter.y);
-        g->drawImage(bancho.server_icon);
+        g->drawImage(logo);
         g->popTransform();
     }
 
-    if((m_fMainMenuAnim > 0.0f && m_fMainMenuAnim != 1.0f) ||
-       (haveTimingpoints && m_fMainMenuAnimFriendPercent > 0.0f)) {
+    if(drawing_full_cube) {
         // back side
         g->rotate3DScene(0, -180, 0);
+        g->pushTransform();
+        g->translate(0, 0, inset);
         g->setColor(cubeColor);
         g->setAlpha(osu_main_menu_alpha.getFloat());
-        g->pushTransform();
-        {
-            g->translate(0, 0, inset);
-            g->fillRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset,
-                        mainButtonRect.getWidth() - 2 * inset, mainButtonRect.getHeight() - 2 * inset);
-        }
-        g->popTransform();
+        g->fillRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset, mainButtonRect.getWidth() - 2 * inset,
+                    mainButtonRect.getHeight() - 2 * inset);
         g->setColor(cubeBorderColor);
-        g->setAlpha(osu_main_menu_alpha.getFloat());
-        g->drawRect(mainButtonRect.getX(), mainButtonRect.getY(), mainButtonRect.getWidth(),
-                    mainButtonRect.getHeight());
+        g->drawRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset, mainButtonRect.getWidth() - 2 * inset,
+                    mainButtonRect.getHeight() - 2 * inset);
+        g->popTransform();
 
         // right side
         g->offset3DScene(0, 0, mainButtonRect.getWidth() / 2);
         g->rotate3DScene(0, 90, 0);
-        {
-            // g->setColor(0xff00ff00);
-            g->setColor(cubeColor);
-            g->setAlpha(osu_main_menu_alpha.getFloat());
-            g->pushTransform();
-            {
-                g->translate(0, 0, inset);
-                g->fillRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset,
-                            mainButtonRect.getWidth() - 2 * inset, mainButtonRect.getHeight() - 2 * inset);
-            }
-            g->popTransform();
-
-            g->setColor(cubeBorderColor);
-            g->setAlpha(osu_main_menu_alpha.getFloat());
-            g->drawRect(mainButtonRect.getX(), mainButtonRect.getY(), mainButtonRect.getWidth(),
-                        mainButtonRect.getHeight());
-        }
+        g->pushTransform();
+        g->translate(0, 0, inset);
+        g->setColor(cubeColor);
+        g->setAlpha(osu_main_menu_alpha.getFloat());
+        g->fillRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset, mainButtonRect.getWidth() - 2 * inset,
+                    mainButtonRect.getHeight() - 2 * inset);
+        g->setColor(cubeBorderColor);
+        g->drawRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset, mainButtonRect.getWidth() - 2 * inset,
+                    mainButtonRect.getHeight() - 2 * inset);
+        g->popTransform();
         g->rotate3DScene(0, -90, 0);
         g->offset3DScene(0, 0, 0);
 
         // left side
         g->offset3DScene(0, 0, mainButtonRect.getWidth() / 2);
         g->rotate3DScene(0, -90, 0);
-        {
-            // g->setColor(0xffffff00);
-            g->setColor(cubeColor);
-            g->setAlpha(osu_main_menu_alpha.getFloat());
-            g->pushTransform();
-            {
-                g->translate(0, 0, inset);
-                g->fillRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset,
-                            mainButtonRect.getWidth() - 2 * inset, mainButtonRect.getHeight() - 2 * inset);
-            }
-            g->popTransform();
-
-            g->setColor(cubeBorderColor);
-            g->setAlpha(osu_main_menu_alpha.getFloat());
-            g->drawRect(mainButtonRect.getX(), mainButtonRect.getY(), mainButtonRect.getWidth(),
-                        mainButtonRect.getHeight());
-        }
+        g->pushTransform();
+        g->translate(0, 0, inset);
+        g->setColor(cubeColor);
+        g->setAlpha(osu_main_menu_alpha.getFloat());
+        g->fillRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset, mainButtonRect.getWidth() - 2 * inset,
+                    mainButtonRect.getHeight() - 2 * inset);
+        g->setColor(cubeBorderColor);
+        g->drawRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset, mainButtonRect.getWidth() - 2 * inset,
+                    mainButtonRect.getHeight() - 2 * inset);
+        g->popTransform();
         g->rotate3DScene(0, 90, 0);
         g->offset3DScene(0, 0, 0);
 
         // top side
         g->offset3DScene(0, 0, mainButtonRect.getHeight() / 2);
         g->rotate3DScene(90, 0, 0);
-        {
-            // g->setColor(0xff00ffff);
-            g->setColor(cubeColor);
-            g->setAlpha(osu_main_menu_alpha.getFloat());
-            g->pushTransform();
-            {
-                g->translate(0, 0, inset);
-                g->fillRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset,
-                            mainButtonRect.getWidth() - 2 * inset, mainButtonRect.getHeight() - 2 * inset);
-            }
-            g->popTransform();
-
-            g->setColor(cubeBorderColor);
-            g->setAlpha(osu_main_menu_alpha.getFloat());
-            g->drawRect(mainButtonRect.getX(), mainButtonRect.getY(), mainButtonRect.getWidth(),
-                        mainButtonRect.getHeight());
-        }
+        g->pushTransform();
+        g->translate(0, 0, inset);
+        g->setColor(cubeColor);
+        g->setAlpha(osu_main_menu_alpha.getFloat());
+        g->fillRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset, mainButtonRect.getWidth() - 2 * inset,
+                    mainButtonRect.getHeight() - 2 * inset);
+        g->setColor(cubeBorderColor);
+        g->drawRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset, mainButtonRect.getWidth() - 2 * inset,
+                    mainButtonRect.getHeight() - 2 * inset);
+        g->popTransform();
         g->rotate3DScene(-90, 0, 0);
         g->offset3DScene(0, 0, 0);
 
         // bottom side
         g->offset3DScene(0, 0, mainButtonRect.getHeight() / 2);
         g->rotate3DScene(-90, 0, 0);
-        {
-            // g->setColor(0xffff0000);
-            g->setColor(cubeColor);
-            g->setAlpha(osu_main_menu_alpha.getFloat());
-            g->pushTransform();
-            {
-                g->translate(0, 0, inset);
-                g->fillRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset,
-                            mainButtonRect.getWidth() - 2 * inset, mainButtonRect.getHeight() - 2 * inset);
-            }
-            g->popTransform();
-
-            g->setColor(cubeBorderColor);
-            g->setAlpha(osu_main_menu_alpha.getFloat());
-            g->drawRect(mainButtonRect.getX(), mainButtonRect.getY(), mainButtonRect.getWidth(),
-                        mainButtonRect.getHeight());
-        }
+        g->pushTransform();
+        g->translate(0, 0, inset);
+        g->setColor(cubeColor);
+        g->setAlpha(osu_main_menu_alpha.getFloat());
+        g->fillRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset, mainButtonRect.getWidth() - 2 * inset,
+                    mainButtonRect.getHeight() - 2 * inset);
+        g->setColor(cubeBorderColor);
+        g->drawRect(mainButtonRect.getX() + inset, mainButtonRect.getY() + inset, mainButtonRect.getWidth() - 2 * inset,
+                    mainButtonRect.getHeight() - 2 * inset);
+        g->popTransform();
         g->rotate3DScene(90, 0, 0);
         g->offset3DScene(0, 0, 0);
 
         g->pop3DScene();
 
+        g->setCulling(true);
         g->setDepthBuffer(false);
     }
 }
@@ -1225,9 +1177,10 @@ void MainMenu::updateLayout() {
         m_menuElements[i]->setSize(m_cube->getSize().x + menuElementExtraWidth * offsetPercent -
                                        2.0f * menuElementExtraWidth * (1.0f - offsetPercent),
                                    menuElementHeight);
-        m_menuElements[i]->setTextColor(COLORf(offsetPercent, 1.0f, 1.0f, 1.0f));
+        m_menuElements[i]->setTextColor(
+            COLORf(offsetPercent * offsetPercent * offsetPercent * offsetPercent, 1.0f, 1.0f, 1.0f));
         m_menuElements[i]->setFrameColor(COLORf(offsetPercent, 1.0f, 1.0f, 1.0f));
-        m_menuElements[i]->setBackgroundColor(COLORf(offsetPercent, 0.0f, 0.0f, 0.0f));
+        m_menuElements[i]->setBackgroundColor(COLORf(offsetPercent * osu_main_menu_alpha.getFloat(), 0.0f, 0.0f, 0.0f));
     }
 
     setSize(m_osu->getScreenSize() + Vector2(1, 1));

+ 2 - 2
src/App/Osu/MainMenu.h

@@ -12,7 +12,7 @@
 #include "MouseListener.h"
 #include "OsuScreen.h"
 
-class McFont;
+class Image;
 class Osu;
 
 class Beatmap;
@@ -169,7 +169,7 @@ class MainMenu : public OsuScreen, public MouseListener {
     float m_fPrevShuffleTime;
     float m_fBackgroundFadeInTime;
 
-    McFont *m_titleFont;
+    Image *logo_img;
 };
 
 #endif

+ 0 - 14
src/GUI/CBaseUIButton.cpp

@@ -40,20 +40,6 @@ void CBaseUIButton::draw(Graphics *g) {
 
     // draw frame
     if(m_bDrawFrame) {
-        /*
-        ///const float lineThickness = std::round((float)m_font->getDPI() / 96.0f); // NOTE: abusing font dpi
-        const float lineThickness = 9.0f;
-
-        const float lineOffset = std::floor(lineThickness / 2.0f);
-
-        g->setColor(m_frameColor);
-        g->setAlpha(0.5f);
-        g->fillRect(m_vPos.x - lineOffset, m_vPos.y - lineOffset, lineThickness, m_vSize.y);
-        g->fillRect(m_vPos.x + lineThickness - lineOffset, m_vPos.y - lineOffset, m_vSize.x - lineThickness,
-        lineThickness); g->fillRect(m_vPos.x + m_vSize.x - lineOffset, m_vPos.y - lineOffset, lineThickness, m_vSize.y);
-        g->fillRect(m_vPos.x - lineOffset, m_vPos.y + m_vSize.y - lineOffset, m_vSize.x + lineThickness, lineThickness);
-        */
-
         g->setColor(m_frameColor);
         g->drawRect(m_vPos.x, m_vPos.y, m_vSize.x, m_vSize.y);
     }

+ 1 - 1
src/Util/cbase.h

@@ -75,7 +75,7 @@ typedef unsigned char COLORPART;
 #define COLOR_GET_Af(color) (((COLORPART)(color >> 24)) / 255.0f)
 
 #define COLOR_INVERT(color) \
-    (COLOR(255, 255 - COLOR_GET_Ri(color), 255 - COLOR_GET_Gi(color), 255 - COLOR_GET_Bi(color)))
+    (COLOR(COLOR_GET_Ai(color), 255 - COLOR_GET_Ri(color), 255 - COLOR_GET_Gi(color), 255 - COLOR_GET_Bi(color)))
 
 #define COLOR_MULTIPLY(color1, color2)                                                                      \
     (COLORf(1.0f, COLOR_GET_Rf(color1) * COLOR_GET_Rf(color2), COLOR_GET_Gf(color1) * COLOR_GET_Gf(color2), \