From 0f937e2e02ae50c03a226570845045feb0c30971 Mon Sep 17 00:00:00 2001 From: Ariari04 Date: Tue, 9 Dec 2025 21:12:54 +0600 Subject: [PATCH] added music volume bar, without logic --- Game.cpp | 105 ++++++++++++++++++++++++++++ Game.h | 10 +++ resources/button.png | 3 + resources/musicVolumeBarButton.png | 3 + resources/musicVolumeBarTexture.png | 3 + 5 files changed, 124 insertions(+) create mode 100644 resources/button.png create mode 100644 resources/musicVolumeBarButton.png create mode 100644 resources/musicVolumeBarTexture.png diff --git a/Game.cpp b/Game.cpp index d19757a..d0f3956 100755 --- a/Game.cpp +++ b/Game.cpp @@ -193,7 +193,68 @@ void Game::setup() { boxRenderArr[i].RefreshVBO(); } + + buttonTexture = std::make_unique(CreateTextureDataFromPng("./resources/button.png", CONST_ZIP_FILE)); + + button.data.PositionData.push_back({ 100, 100, 0 }); + button.data.PositionData.push_back({ 100, 150, 0 }); + button.data.PositionData.push_back({ 300, 150, 0 }); + button.data.PositionData.push_back({ 100, 100, 0 }); + button.data.PositionData.push_back({ 300, 150, 0 }); + button.data.PositionData.push_back({ 300, 100, 0 }); + + button.data.TexCoordData.push_back({ 0,0 }); + button.data.TexCoordData.push_back({ 0,1 }); + button.data.TexCoordData.push_back({ 1,1 }); + button.data.TexCoordData.push_back({ 0,0 }); + button.data.TexCoordData.push_back({ 1,1 }); + button.data.TexCoordData.push_back({ 1,0 }); + + button.RefreshVBO(); + + musicVolumeBarTexture = std::make_unique(CreateTextureDataFromPng("./resources/musicVolumeBarTexture.png", CONST_ZIP_FILE)); + + musicVolumeBar.data.PositionData.push_back({ 1190, 100, 0 }); + musicVolumeBar.data.PositionData.push_back({ 1190, 600, 0 }); + musicVolumeBar.data.PositionData.push_back({ 1200, 600, 0 }); + musicVolumeBar.data.PositionData.push_back({ 1190, 100, 0 }); + musicVolumeBar.data.PositionData.push_back({ 1200, 600, 0 }); + musicVolumeBar.data.PositionData.push_back({ 1200, 100, 0 }); + + musicVolumeBar.data.TexCoordData.push_back({ 0,0 }); + musicVolumeBar.data.TexCoordData.push_back({ 0,1 }); + musicVolumeBar.data.TexCoordData.push_back({ 1,1 }); + musicVolumeBar.data.TexCoordData.push_back({ 0,0 }); + musicVolumeBar.data.TexCoordData.push_back({ 1,1 }); + musicVolumeBar.data.TexCoordData.push_back({ 1,0 }); + + musicVolumeBar.RefreshVBO(); + + + musicVolumeBarButtonTexture = std::make_unique(CreateTextureDataFromPng("./resources/musicVolumeBarButton.png", CONST_ZIP_FILE)); + + float musicVolumeBarButtonButtonCenterX = 1195.0f; + float musicVolumeBarButtonButtonCenterY = 350.0f; + float musicVolumeBarButtonButtonRadius = 25.0f; + + musicVolumeBarButton.data.PositionData.push_back({ musicVolumeBarButtonButtonCenterX - musicVolumeBarButtonButtonRadius, musicVolumeBarButtonButtonCenterY - musicVolumeBarButtonButtonRadius, 0 }); + musicVolumeBarButton.data.PositionData.push_back({ musicVolumeBarButtonButtonCenterX - musicVolumeBarButtonButtonRadius, musicVolumeBarButtonButtonCenterY + musicVolumeBarButtonButtonRadius, 0 }); + musicVolumeBarButton.data.PositionData.push_back({ musicVolumeBarButtonButtonCenterX + musicVolumeBarButtonButtonRadius, musicVolumeBarButtonButtonCenterY + musicVolumeBarButtonButtonRadius, 0 }); + musicVolumeBarButton.data.PositionData.push_back({ musicVolumeBarButtonButtonCenterX - musicVolumeBarButtonButtonRadius, musicVolumeBarButtonButtonCenterY - musicVolumeBarButtonButtonRadius, 0 }); + musicVolumeBarButton.data.PositionData.push_back({ musicVolumeBarButtonButtonCenterX + musicVolumeBarButtonButtonRadius, musicVolumeBarButtonButtonCenterY + musicVolumeBarButtonButtonRadius, 0 }); + musicVolumeBarButton.data.PositionData.push_back({ musicVolumeBarButtonButtonCenterX + musicVolumeBarButtonButtonRadius, musicVolumeBarButtonButtonCenterY - musicVolumeBarButtonButtonRadius, 0 }); + + musicVolumeBarButton.data.TexCoordData.push_back({ 0,0 }); + musicVolumeBarButton.data.TexCoordData.push_back({ 0,1 }); + musicVolumeBarButton.data.TexCoordData.push_back({ 1,1 }); + musicVolumeBarButton.data.TexCoordData.push_back({ 0,0 }); + musicVolumeBarButton.data.TexCoordData.push_back({ 1,1 }); + musicVolumeBarButton.data.TexCoordData.push_back({ 1,0 }); + + musicVolumeBarButton.RefreshVBO(); renderer.InitOpenGL(); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); } @@ -230,6 +291,7 @@ void Game::drawCubemap() renderer.shaderManager.PopShader(); CheckGlError(); } + void Game::drawShip() { static const std::string defaultShaderName = "default"; @@ -305,6 +367,46 @@ void Game::drawBoxes() CheckGlError(); } +void Game::drawUI() +{ + static const std::string defaultShaderName = "default"; + static const std::string envShaderName = "env"; + static const std::string vPositionName = "vPosition"; + static const std::string vTexCoordName = "vTexCoord"; + static const std::string textureUniformName = "Texture"; + + + glClear(GL_DEPTH_BUFFER_BIT); + + renderer.shaderManager.PushShader(defaultShaderName); + renderer.RenderUniform1i(textureUniformName, 0); + renderer.EnableVertexAttribArray(vPositionName); + renderer.EnableVertexAttribArray(vTexCoordName); + + renderer.PushProjectionMatrix(Environment::width, Environment::height, -1, 1); + renderer.PushMatrix(); + + renderer.LoadIdentity(); + + + glBindTexture(GL_TEXTURE_2D, buttonTexture->getTexID()); + renderer.DrawVertexRenderStruct(button); + + glBindTexture(GL_TEXTURE_2D, musicVolumeBarTexture->getTexID()); + renderer.DrawVertexRenderStruct(musicVolumeBar); + + glBindTexture(GL_TEXTURE_2D, musicVolumeBarButtonTexture->getTexID()); + renderer.DrawVertexRenderStruct(musicVolumeBarButton); + + renderer.PopMatrix(); + renderer.PopProjectionMatrix(); + renderer.DisableVertexAttribArray(vPositionName); + renderer.DisableVertexAttribArray(vTexCoordName); + + renderer.shaderManager.PopShader(); + CheckGlError(); +} + void Game::drawScene() { static const std::string defaultShaderName = "default"; static const std::string envShaderName = "env"; @@ -322,6 +424,8 @@ void Game::drawScene() { drawCubemap(); drawShip(); drawBoxes(); + + drawUI(); CheckGlError(); } @@ -406,6 +510,7 @@ void Game::update() { } else if (event.type == SDL_MOUSEBUTTONDOWN) { // 1. Обработка нажатия кнопки мыши + std::cout << event.button.x << " " << event.button.y << '\n'; Environment::tapDownHold = true; // Координаты начального нажатия Environment::tapDownStartPos.v[0] = event.button.x; diff --git a/Game.h b/Game.h index b97d62e..852df0c 100755 --- a/Game.h +++ b/Game.h @@ -32,6 +32,7 @@ private: void drawCubemap(); void drawShip(); void drawBoxes(); + void drawUI(); SDL_Window* window; SDL_GLContext glContext; @@ -55,7 +56,16 @@ private: std::vector boxCoordsArr; std::vector boxRenderArr; + + std::shared_ptr buttonTexture; + VertexRenderStruct button; + + std::shared_ptr musicVolumeBarTexture; + VertexRenderStruct musicVolumeBar; + + std::shared_ptr musicVolumeBarButtonTexture; + VertexRenderStruct musicVolumeBarButton; }; } // namespace ZL \ No newline at end of file diff --git a/resources/button.png b/resources/button.png new file mode 100644 index 0000000..1a7ed12 --- /dev/null +++ b/resources/button.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db17a81ad6da6b62c1ecbe688bf18c5a45ef6351eadad5031c1ec694875257f8 +size 2025 diff --git a/resources/musicVolumeBarButton.png b/resources/musicVolumeBarButton.png new file mode 100644 index 0000000..156ffe5 --- /dev/null +++ b/resources/musicVolumeBarButton.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a1bf17f2e6006ef9002d1abd2dc13addc9a78544d65627923683ebc7504404b +size 863 diff --git a/resources/musicVolumeBarTexture.png b/resources/musicVolumeBarTexture.png new file mode 100644 index 0000000..a0b03e4 --- /dev/null +++ b/resources/musicVolumeBarTexture.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85871e9d63fb83badf14c011adca37fa223b1c375c14728a43edc277f1ef69fb +size 777