From 9286763692077d9b10f87264ae29f5cd2d936952 Mon Sep 17 00:00:00 2001 From: AlberttFrgk Date: Mon, 1 May 2023 08:42:09 +0700 Subject: [PATCH 1/9] Optimization, Adjustment, and Add icon Readme.md Mit License Now every 25 combo cool get 1 jam Life now start with 100 More wiggle on Combo Number Combo Logo wiggle divided by 2 from Combo Number wiggle --- Game/Engine/ScoreManager.cpp | 4 ++-- Game/Game.vcxproj | 1 + Game/GameplayScene.cpp | 12 ++++++------ Game/Icon.ico | Bin 0 -> 34494 bytes Game/Icon.rc | 3 +++ README.md | 22 +++++++++++++++++++++- 6 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 Game/Icon.ico create mode 100644 Game/Icon.rc diff --git a/Game/Engine/ScoreManager.cpp b/Game/Engine/ScoreManager.cpp index ea8833b8..d51c22f6 100644 --- a/Game/Engine/ScoreManager.cpp +++ b/Game/Engine/ScoreManager.cpp @@ -19,7 +19,7 @@ ScoreManager::ScoreManager() { m_maxJamCombo = 0; m_numOfPills = 0; - m_life = 80; + m_life = 100; m_lnCombo = 0; m_lnMaxCombo = 0; @@ -33,7 +33,7 @@ void ScoreManager::OnHit(NoteHitInfo info) { switch (info.Result) { case NoteResult::COOL: { AddLife(1); - m_jamGauge += 5; + m_jamGauge += 4; m_score += 100; m_cool++; break; diff --git a/Game/Game.vcxproj b/Game/Game.vcxproj index 720f3e87..f00af850 100644 --- a/Game/Game.vcxproj +++ b/Game/Game.vcxproj @@ -209,6 +209,7 @@ + diff --git a/Game/GameplayScene.cpp b/Game/GameplayScene.cpp index 058605b6..fdaae2a9 100644 --- a/Game/GameplayScene.cpp +++ b/Game/GameplayScene.cpp @@ -64,7 +64,7 @@ void GameplayScene::Render(double delta) { if (m_drawCombo) { if (std::get<7>(scores) > 0) { - m_comboLogo->Position2 = UDim2::fromOffset(0, m_wiggleAdd); + m_comboLogo->Position2 = UDim2::fromOffset(0, m_wiggleAdd / 2); m_comboLogo->Draw(delta); m_comboNum->Position2 = UDim2::fromOffset(0, m_wiggleAdd); @@ -154,7 +154,7 @@ void GameplayScene::Render(double delta) { SceneManager::GetInstance()->StopGame(); } - m_wiggleAdd = std::clamp(m_wiggleAdd + delta * -0.5, 0.0, 10.0); + m_wiggleAdd = std::clamp(m_wiggleAdd + delta * -0.5, 0.0, 25.0); m_lnWiggleAdd = std::clamp(m_lnWiggleAdd + delta * -0.5, 0.0, 10.0); } @@ -172,7 +172,7 @@ void GameplayScene::OnKeyUp(const KeyState& state) { bool GameplayScene::Attach() { auto SkinName = Configuration::Load("Game", "Skin"); - int LaneOffset = 3; + int LaneOffset = 5; int HitPos = 480; try { @@ -496,8 +496,8 @@ bool GameplayScene::Attach() { m_holdEffect[i]->Repeat = true; int pos = lanePos[i] + (laneSize[i] / 2); - m_hitEffect[i]->Position = UDim2::fromOffset(pos, 480); - m_holdEffect[i]->Position = UDim2::fromOffset(pos, 480); + m_hitEffect[i]->Position = UDim2::fromOffset(pos, 465); + m_holdEffect[i]->Position = UDim2::fromOffset(pos, 465); m_hitEffect[i]->AnchorPoint = { .5, .45 }; m_holdEffect[i]->AnchorPoint = { .5, .45 }; } @@ -510,7 +510,7 @@ bool GameplayScene::Attach() { m_drawCombo = true; m_drawJudge = true; - m_wiggleAdd = 10; + m_wiggleAdd = 25; m_comboLogo->Reset(); m_judgeIndex = (int)info.Result; diff --git a/Game/Icon.ico b/Game/Icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b29cf413bdfebfbdaae93a2ecf27f97d87ae8be8 GIT binary patch literal 34494 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 literal 0 HcmV?d00001 diff --git a/Game/Icon.rc b/Game/Icon.rc new file mode 100644 index 00000000..80ecaf4b --- /dev/null +++ b/Game/Icon.rc @@ -0,0 +1,3 @@ +// Icon Resource Definition +#define MAIN_ICON 102 +MAIN_ICON ICON "Icon.ico" \ No newline at end of file diff --git a/README.md b/README.md index 9db417eb..8654b45a 100644 --- a/README.md +++ b/README.md @@ -38,4 +38,24 @@ Written in C++ with SDL + BASS + DirectX11 (and Vulkan through DXVK) - To able use Vulkan, download and extract D3D11.dll and DXGI.dll into vulkan folder. # License -MIT License. +MIT License + +Copyright (c) 2023 Estrol Mendex + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file From 900d5fad9c8486bf607005b4ee14a121eac5bf0c Mon Sep 17 00:00:00 2001 From: AlberttFrgk Date: Mon, 1 May 2023 12:52:15 +0700 Subject: [PATCH 2/9] Small Animation Changes Shorter Timer Draw stats by 50% --- Game/GameplayScene.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Game/GameplayScene.cpp b/Game/GameplayScene.cpp index fdaae2a9..f2b944f7 100644 --- a/Game/GameplayScene.cpp +++ b/Game/GameplayScene.cpp @@ -72,7 +72,7 @@ void GameplayScene::Render(double delta) { } m_comboTimer += delta; - if (m_comboTimer > 2.0) { + if (m_comboTimer > 1) { m_drawCombo = false; } } @@ -83,7 +83,7 @@ void GameplayScene::Render(double delta) { m_judgement[m_judgeIndex]->Draw(); m_judgeSize = std::clamp(m_judgeSize + (delta * 3), 0.5, 1.0); - if ((m_judgeTimer += delta) > 1) { + if ((m_judgeTimer += delta) > 0.60) { m_drawJudge = false; } } @@ -94,7 +94,7 @@ void GameplayScene::Render(double delta) { m_jamLogo->Draw(delta); } - if ((m_jamTimer += delta) > 1) { + if ((m_jamTimer += delta) > 0.60) { m_drawJam = false; } } @@ -107,7 +107,7 @@ void GameplayScene::Render(double delta) { m_lnLogo->Draw(delta); } - if ((m_lnTimer += delta) > 1) { + if ((m_lnTimer += delta) > 0.60) { m_drawLN = false; } } From b0c8618eaaeea0d8fb1e758b0df4189f46869b9f Mon Sep 17 00:00:00 2001 From: AlberttFrgk <75172149+AlberttFrgk@users.noreply.github.com> Date: Mon, 1 May 2023 13:04:42 +0700 Subject: [PATCH 3/9] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8654b45a..7c53d6c3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Unnamed O2 Clone Game +# Unnamed O2 Clone Game (Forked from Estrol/O2Game) This is experimental software for playing rhythm games. Written in C++ with SDL + BASS + DirectX11 (and Vulkan through DXVK) @@ -58,4 +58,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. From f7de1ace6128fbdf3eaf787a7eee20609b11349f Mon Sep 17 00:00:00 2001 From: AlberttFrgk Date: Mon, 1 May 2023 19:12:58 +0700 Subject: [PATCH 4/9] Small Animation Changes (again) Combo Logo wiggle divided by 2 from Combo Number --- Game/GameplayScene.cpp | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Game/GameplayScene.cpp b/Game/GameplayScene.cpp index f2b944f7..13a52766 100644 --- a/Game/GameplayScene.cpp +++ b/Game/GameplayScene.cpp @@ -64,7 +64,7 @@ void GameplayScene::Render(double delta) { if (m_drawCombo) { if (std::get<7>(scores) > 0) { - m_comboLogo->Position2 = UDim2::fromOffset(0, m_wiggleAdd / 2); + m_comboLogo->Position2 = UDim2::fromOffset(0, m_wiggleAdd / 2.5); m_comboLogo->Draw(delta); m_comboNum->Position2 = UDim2::fromOffset(0, m_wiggleAdd); diff --git a/README.md b/README.md index 7c53d6c3..5d7c00d9 100644 --- a/README.md +++ b/README.md @@ -58,4 +58,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +SOFTWARE. \ No newline at end of file From 763631337dedf28dbf6a596ebe0ba2328f63d0e8 Mon Sep 17 00:00:00 2001 From: AlberttFrgk Date: Mon, 1 May 2023 19:21:59 +0700 Subject: [PATCH 5/9] Small Animation Changes (again) Combo Logo wiggle divided by 2.5 from Combo Number --- Game/GameplayScene.cpp | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Game/GameplayScene.cpp b/Game/GameplayScene.cpp index f2b944f7..13a52766 100644 --- a/Game/GameplayScene.cpp +++ b/Game/GameplayScene.cpp @@ -64,7 +64,7 @@ void GameplayScene::Render(double delta) { if (m_drawCombo) { if (std::get<7>(scores) > 0) { - m_comboLogo->Position2 = UDim2::fromOffset(0, m_wiggleAdd / 2); + m_comboLogo->Position2 = UDim2::fromOffset(0, m_wiggleAdd / 2.5); m_comboLogo->Draw(delta); m_comboNum->Position2 = UDim2::fromOffset(0, m_wiggleAdd); diff --git a/README.md b/README.md index 7c53d6c3..5d7c00d9 100644 --- a/README.md +++ b/README.md @@ -58,4 +58,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +SOFTWARE. \ No newline at end of file From f84ac7977e53a409d2fef7bbd6e3cefbc138a2d1 Mon Sep 17 00:00:00 2001 From: AlberttFrgk Date: Mon, 1 May 2023 21:31:54 +0700 Subject: [PATCH 6/9] Readme.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d7c00d9..8654b45a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Unnamed O2 Clone Game (Forked from Estrol/O2Game) +# Unnamed O2 Clone Game This is experimental software for playing rhythm games. Written in C++ with SDL + BASS + DirectX11 (and Vulkan through DXVK) From 7233b5c98e8ad6f440ed40fd84e665fea1de8c6e Mon Sep 17 00:00:00 2001 From: AlberttFrgk Date: Wed, 3 May 2023 10:01:24 +0700 Subject: [PATCH 7/9] Improvement Improve accuracy frame limiter (idk if dev want uncap fps later) Merge all option ofn.lpstrFilter into one --- Engine/Game.cpp | 10 ++++++++-- Engine/Sprite2D.cpp | 6 +++--- Game/main.cpp | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Engine/Game.cpp b/Engine/Game.cpp index 1a0e054f..f8ed4107 100644 --- a/Engine/Game.cpp +++ b/Engine/Game.cpp @@ -13,12 +13,18 @@ namespace { return SDL_Init(SDL_INIT_EVERYTHING) == 0; } + //Improve accuracy frame limiter double FrameLimit(double MaxFrameRate) { double newTick = SDL_GetTicks(); double deltaTick = 1000.0 / MaxFrameRate - (newTick - lastTick); - if (floor(deltaTick) > 0) { - SDL_Delay((DWORD)floor(deltaTick)); + if (deltaTick > 0.0) { + int delayTicks = (int)deltaTick; + if (delayTicks > 0) { + SDL_Delay(delayTicks); + newTick += delayTicks; + deltaTick -= delayTicks; + } } if (deltaTick < -30.0) { diff --git a/Engine/Sprite2D.cpp b/Engine/Sprite2D.cpp index 7b192cbe..b3e92d71 100644 --- a/Engine/Sprite2D.cpp +++ b/Engine/Sprite2D.cpp @@ -18,7 +18,7 @@ Sprite2D::Sprite2D(std::vector textures, float delay) { AnchorPoint = { 0, 0 }; for (auto& it : textures) { - m_textures.push_back(new Texture2D(it)); + m_textures.emplace_back(new Texture2D(it)); } } @@ -29,7 +29,7 @@ Sprite2D::Sprite2D(std::vector textures, float delay) { AnchorPoint = { 0, 0 }; for (auto& it : textures) { - m_textures.push_back(new Texture2D(it)); + m_textures.emplace_back(new Texture2D(it)); } } @@ -40,7 +40,7 @@ Sprite2D::Sprite2D(std::vector textures, float delay) AnchorPoint = { 0, 0 }; for (auto& it : textures) { - m_textures.push_back(new Texture2D(it)); + m_textures.emplace_back(new Texture2D(it)); } } diff --git a/Game/main.cpp b/Game/main.cpp index 2bc89be5..cd98e9b8 100644 --- a/Game/main.cpp +++ b/Game/main.cpp @@ -24,7 +24,7 @@ std::filesystem::path prompt() { ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = NULL; - ofn.lpstrFilter = L"O2-JAM files (*.ojn)\0*.ojn\0Osu files (*.osu)\0*.osu\0BMS files (*.bms|*.bme|*.bml)\0*.bms;*.bme;*.bml\0All files (*.*)\0*.*\0"; // set the file filter + ofn.lpstrFilter = L"All Supported Files (*.ojn;*.osu;*.bms;*.bme;*.bml;*)\0*.ojn;*.osu;*.bms;*.bme;*.bml\0"; ofn.lpstrFile = szFile; ofn.nMaxFile = MAX_PATH; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; From 47d8fdacc6056515a688b351b5a60b7ffd5548bb Mon Sep 17 00:00:00 2001 From: AlberttFrgk Date: Wed, 3 May 2023 10:01:24 +0700 Subject: [PATCH 8/9] Improvement Improve accuracy frame limiter reduce shuttering (idk if dev want uncap fps later) Merge all option ofn.lpstrFilter into one --- Engine/Game.cpp | 10 ++++++++-- Engine/Sprite2D.cpp | 6 +++--- Game/main.cpp | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Engine/Game.cpp b/Engine/Game.cpp index 1a0e054f..f8ed4107 100644 --- a/Engine/Game.cpp +++ b/Engine/Game.cpp @@ -13,12 +13,18 @@ namespace { return SDL_Init(SDL_INIT_EVERYTHING) == 0; } + //Improve accuracy frame limiter double FrameLimit(double MaxFrameRate) { double newTick = SDL_GetTicks(); double deltaTick = 1000.0 / MaxFrameRate - (newTick - lastTick); - if (floor(deltaTick) > 0) { - SDL_Delay((DWORD)floor(deltaTick)); + if (deltaTick > 0.0) { + int delayTicks = (int)deltaTick; + if (delayTicks > 0) { + SDL_Delay(delayTicks); + newTick += delayTicks; + deltaTick -= delayTicks; + } } if (deltaTick < -30.0) { diff --git a/Engine/Sprite2D.cpp b/Engine/Sprite2D.cpp index 7b192cbe..b3e92d71 100644 --- a/Engine/Sprite2D.cpp +++ b/Engine/Sprite2D.cpp @@ -18,7 +18,7 @@ Sprite2D::Sprite2D(std::vector textures, float delay) { AnchorPoint = { 0, 0 }; for (auto& it : textures) { - m_textures.push_back(new Texture2D(it)); + m_textures.emplace_back(new Texture2D(it)); } } @@ -29,7 +29,7 @@ Sprite2D::Sprite2D(std::vector textures, float delay) { AnchorPoint = { 0, 0 }; for (auto& it : textures) { - m_textures.push_back(new Texture2D(it)); + m_textures.emplace_back(new Texture2D(it)); } } @@ -40,7 +40,7 @@ Sprite2D::Sprite2D(std::vector textures, float delay) AnchorPoint = { 0, 0 }; for (auto& it : textures) { - m_textures.push_back(new Texture2D(it)); + m_textures.emplace_back(new Texture2D(it)); } } diff --git a/Game/main.cpp b/Game/main.cpp index 2bc89be5..cd98e9b8 100644 --- a/Game/main.cpp +++ b/Game/main.cpp @@ -24,7 +24,7 @@ std::filesystem::path prompt() { ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = NULL; - ofn.lpstrFilter = L"O2-JAM files (*.ojn)\0*.ojn\0Osu files (*.osu)\0*.osu\0BMS files (*.bms|*.bme|*.bml)\0*.bms;*.bme;*.bml\0All files (*.*)\0*.*\0"; // set the file filter + ofn.lpstrFilter = L"All Supported Files (*.ojn;*.osu;*.bms;*.bme;*.bml;*)\0*.ojn;*.osu;*.bms;*.bme;*.bml\0"; ofn.lpstrFile = szFile; ofn.nMaxFile = MAX_PATH; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; From d2394afc57a525f4a5363d452551bedb651cc99c Mon Sep 17 00:00:00 2001 From: AlberttFrgk Date: Thu, 4 May 2023 11:27:32 +0700 Subject: [PATCH 9/9] HOT Fix Fixed Animation Combo and LongCombo so it will not affect by framerate --- Game/GameplayScene.cpp | 57 ++++++++++++++++++++++++++++++------------ Game/GameplayScene.h | 6 +++-- 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/Game/GameplayScene.cpp b/Game/GameplayScene.cpp index 13a52766..c9f5e6a6 100644 --- a/Game/GameplayScene.cpp +++ b/Game/GameplayScene.cpp @@ -20,8 +20,8 @@ GameplayScene::GameplayScene() : Scene::Scene() { m_keyState = {}; m_game = nullptr; m_drawJam = false; - m_wiggleAdd = 0; - m_lnWiggleAdd = 0; + m_wiggleTime = 0; + m_wiggleOffsets = 0; } void GameplayScene::Update(double delta) { @@ -64,11 +64,25 @@ void GameplayScene::Render(double delta) { if (m_drawCombo) { if (std::get<7>(scores) > 0) { - m_comboLogo->Position2 = UDim2::fromOffset(0, m_wiggleAdd / 2.5); - m_comboLogo->Draw(delta); + double m_wiggleTime = m_comboTimer * 50; // Combo animated by Frame per second + double m_wiggleOffset = std::sin(m_wiggleTime) * 25.0; // Amplitude - m_comboNum->Position2 = UDim2::fromOffset(0, m_wiggleAdd); - m_comboNum->DrawNumber(std::get<7>(scores)); + if (m_wiggleTime < M_PI) { + m_comboLogo->Size = UDim2::fromScale(1.0, 1.0); // set fixed size + m_comboLogo->Position2 = UDim2::fromOffset(0, m_wiggleOffset / 2.5); + m_comboLogo->Draw(delta); + + m_comboNum->Position2 = UDim2::fromOffset(0, m_wiggleOffset); + m_comboNum->DrawNumber(std::get<7>(scores)); + } + else { + m_comboLogo->Size = UDim2::fromScale(1.0, 1.0); // set fixed size + m_comboLogo->Position2 = UDim2::fromOffset(0, 0); + m_comboLogo->Draw(delta); + + m_comboNum->Position2 = UDim2::fromOffset(0, 0); + m_comboNum->DrawNumber(std::get<7>(scores)); + } } m_comboTimer += delta; @@ -101,13 +115,29 @@ void GameplayScene::Render(double delta) { if (m_drawLN) { if (std::get<9>(scores) > 0) { - m_lnComboNum->Position2 = UDim2::fromOffset(0, m_lnWiggleAdd); - m_lnComboNum->DrawNumber(std::get<9>(scores)); - m_lnLogo->Position2 = UDim2::fromOffset(0, m_lnWiggleAdd); - m_lnLogo->Draw(delta); + double m_wiggleTime = m_lnTimer * 100; // LNCombo animated by Frame per second + double m_wiggleOffset = std::sin(m_wiggleTime) * 10.0; // Amplitude + + if (m_wiggleTime < M_PI) { + m_lnLogo->Size = UDim2::fromScale(1.0, 1.0); // set fixed size + m_lnLogo->Position2 = UDim2::fromOffset(0, m_wiggleOffset); + m_lnLogo->Draw(delta); + + m_lnComboNum->Position2 = UDim2::fromOffset(0, m_wiggleOffset); + m_lnComboNum->DrawNumber(std::get<9>(scores)); + } + else { + m_lnLogo->Size = UDim2::fromScale(1.0, 1.0); // set fixed size + m_lnLogo->Position2 = UDim2::fromOffset(0, 0); + m_lnLogo->Draw(delta); + + m_lnComboNum->Position2 = UDim2::fromOffset(0, 0); + m_lnComboNum->DrawNumber(std::get<9>(scores)); + } } - if ((m_lnTimer += delta) > 0.60) { + m_lnTimer += delta; + if (m_lnTimer > 0.60) { m_drawLN = false; } } @@ -153,9 +183,6 @@ void GameplayScene::Render(double delta) { if (m_game->GetState() == GameState::PosGame) { SceneManager::GetInstance()->StopGame(); } - - m_wiggleAdd = std::clamp(m_wiggleAdd + delta * -0.5, 0.0, 25.0); - m_lnWiggleAdd = std::clamp(m_lnWiggleAdd + delta * -0.5, 0.0, 10.0); } void GameplayScene::Input(double delta) { @@ -510,7 +537,6 @@ bool GameplayScene::Attach() { m_drawCombo = true; m_drawJudge = true; - m_wiggleAdd = 25; m_comboLogo->Reset(); m_judgeIndex = (int)info.Result; @@ -523,7 +549,6 @@ bool GameplayScene::Attach() { m_game->GetScoreManager()->ListenLongNote([&] { m_lnTimer = 0; - m_lnWiggleAdd = 10; m_drawLN = true; }); diff --git a/Game/GameplayScene.h b/Game/GameplayScene.h index a7c9658c..f70afe55 100644 --- a/Game/GameplayScene.h +++ b/Game/GameplayScene.h @@ -57,8 +57,6 @@ class GameplayScene : public Scene { bool m_starting; int m_judgeIndex; - int m_wiggleAdd; - int m_lnWiggleAdd; /* Scoring */ bool m_drawJam; @@ -80,4 +78,8 @@ class GameplayScene : public Scene { /* Hit/Hold Effect */ bool m_drawHold[7]; bool m_drawHit[7]; + + /* Fixed Animation*/ + double m_wiggleTime; + double m_wiggleOffsets; }; \ No newline at end of file