From 7544862422db1585a1685ebfcc1ff8e8863d8ee2 Mon Sep 17 00:00:00 2001 From: caiohsr14 Date: Tue, 24 Jan 2017 14:46:20 -0300 Subject: [PATCH] Added a score judge changer to eval screen, usage through effect up/down, small fix to RescoreToDPJudge --- Installer/install.ico | Bin 67646 -> 0 bytes .../ScreenEvaluation decorations/default.lua | 49 ++++++++++++++++-- Themes/Til Death/metrics.ini | 5 ++ src/HighScore.cpp | 34 ++++++++++-- src/HighScore.h | 7 +-- src/PlayerStageStats.cpp | 2 + 6 files changed, 88 insertions(+), 9 deletions(-) delete mode 100644 Installer/install.ico diff --git a/Installer/install.ico b/Installer/install.ico deleted file mode 100644 index 7985c7d636842c8f7475f7f9719fb08dac1749e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67646 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 Jy1v}c{}0m9>U01A diff --git a/Themes/Til Death/BGAnimations/ScreenEvaluation decorations/default.lua b/Themes/Til Death/BGAnimations/ScreenEvaluation decorations/default.lua index 17d515175d..3e4e403ccf 100644 --- a/Themes/Til Death/BGAnimations/ScreenEvaluation decorations/default.lua +++ b/Themes/Til Death/BGAnimations/ScreenEvaluation decorations/default.lua @@ -83,6 +83,7 @@ function scoreBoard(pn,position) end } + local judge = GetTimingDifficulty() local pss = STATSMAN:GetCurStageStats():GetPlayerStageStats(pn) local score = getScoreFromTable(getScoreList(PLAYER_1),pss:GetPersonalHighScoreIndex()+1) @@ -118,6 +119,20 @@ function scoreBoard(pn,position) self:diffuse(getGradeColor(pss:GetWifeGrade())) self:settextf("%05.2f%% (%s)",notShit.floor(pss:GetWifeScore()*10000)/100, "Wife") end, + CodeMessageCommand=function(self,params) + if params.Name == "PrevJudge" and judge > 1 then + judge = judge - 1 + self:settextf("%05.2f%% (%s)", notShit.floor(score:RescoreToWifeJudge(judge)*10000)/100, "Wife J"..judge) + elseif params.Name == "NextJudge" and judge < 9 then + judge = judge + 1 + if judge == 9 then + self:settextf("%05.2f%% (%s)", notShit.floor(score:RescoreToWifeJudge(judge)*10000)/100, "Wife Justice") + else + self:settextf("%05.2f%% (%s)", notShit.floor(score:RescoreToWifeJudge(judge)*10000)/100, "Wife J"..judge) + end + + end + end, }; -- DP percent @@ -128,6 +143,16 @@ function scoreBoard(pn,position) self:diffuse(getGradeColor(pss:GetGrade())) self:settextf("%05.2f%% (%s)",GetPercentDP(score), "DP") end, + CodeMessageCommand=function(self,params) + if params.Name == "PrevJudge" or params.Name == "NextJudge" then + if judge == 9 then + self:settextf("%05.2f%% (%s)", notShit.floor(score:RescoreToDPJudge(judge)*10000)/100, "DP Justice") + else + self:settextf("%05.2f%% (%s)", notShit.floor(score:RescoreToDPJudge(judge)*10000)/100, "DP J"..judge) + end + + end + end, } t[#t+1] = LoadFont("Common Normal")..{ @@ -142,7 +167,13 @@ function scoreBoard(pn,position) t[#t+1] = Def.Quad{InitCommand=cmd(xy,frameX,frameY+80+((k-1)*22);zoomto,frameWidth,18;halign,0;diffuse,byJudgment(v);diffusealpha,0.5)}; t[#t+1] = Def.Quad{ InitCommand=cmd(xy,frameX,frameY+80+((k-1)*22);zoomto,0,18;halign,0;diffuse,byJudgment(v);diffusealpha,0.5;), - BeginCommand=cmd(glowshift;effectcolor1,color("1,1,1,"..tostring(pss:GetPercentageOfTaps(v)*0.4));effectcolor2,color("1,1,1,0");sleep,0.5;decelerate,2;zoomx,frameWidth*pss:GetPercentageOfTaps(v)) + BeginCommand=cmd(glowshift;effectcolor1,color("1,1,1,"..tostring(pss:GetPercentageOfTaps(v)*0.4));effectcolor2,color("1,1,1,0");sleep,0.5;decelerate,2;zoomx,frameWidth*pss:GetPercentageOfTaps(v)), + CodeMessageCommand=function(self,params) + if params.Name == "PrevJudge" or params.Name == "NextJudge" then + local rescoreJudges = score:RescoreJudges(judge) + self:zoomx(frameWidth*rescoreJudges[k]/pss:GetTotalTaps()) + end + end, }; t[#t+1] = LoadFont("Common Large")..{ InitCommand=cmd(xy,frameX+10,frameY+80+((k-1)*22);zoom,0.25;halign,0), @@ -156,14 +187,26 @@ function scoreBoard(pn,position) BeginCommand=cmd(queuecommand,"Set"), SetCommand=function(self) self:settext(pss:GetTapNoteScores(v)) - end + end, + CodeMessageCommand=function(self,params) + if params.Name == "PrevJudge" or params.Name == "NextJudge" then + local rescoreJudges = score:RescoreJudges(judge) + self:settext(rescoreJudges[k]) + end + end, }; t[#t+1] = LoadFont("Common Normal")..{ InitCommand=cmd(xy,frameX+frameWidth-38,frameY+80+((k-1)*22);zoom,0.3;halign,0), BeginCommand=cmd(queuecommand,"Set"), SetCommand=function(self) self:settextf("(%03.2f%%)",pss:GetPercentageOfTaps(v)*100) - end + end, + CodeMessageCommand=function(self,params) + if params.Name == "PrevJudge" or params.Name == "NextJudge" then + local rescoreJudges = score:RescoreJudges(judge) + self:settextf("(%03.2f%%)",rescoreJudges[k]/pss:GetTotalTaps()*100) + end + end, }; end diff --git a/Themes/Til Death/metrics.ini b/Themes/Til Death/metrics.ini index c97ab04215..dbdc192a51 100644 --- a/Themes/Til Death/metrics.ini +++ b/Themes/Til Death/metrics.ini @@ -448,6 +448,11 @@ Appearance,5="mod,stealth;name,Stealth" Appearance,6="mod,blink;name,Blink" [ScreenEvaluation] +# judge changer listener i guess +CodeNames="PrevJudge,NextJudge" +CodeNextJudge="EffectUp" +CodePrevJudge="EffectDown" + # banner LargeBannerX=SCREEN_CENTER_X LargeBannerY=88 diff --git a/src/HighScore.cpp b/src/HighScore.cpp index 42a448fdbb..fc33d0c52c 100644 --- a/src/HighScore.cpp +++ b/src/HighScore.cpp @@ -32,6 +32,7 @@ struct HighScoreImpl bool bEtternaValid; vector vOffsetVector; vector vNoteRowVector; + vector vRescoreJudgeVector; unsigned int iMaxCombo; // maximum combo obtained [SM5 alpha 1a+] StageAward stageAward; // stage award [SM5 alpha 1a+] PeakComboAward peakComboAward; // peak combo award [SM5 alpha 1a+] @@ -183,6 +184,7 @@ HighScoreImpl::HighScoreImpl() bEtternaValid = true; vOffsetVector.clear(); vNoteRowVector.clear(); + vRescoreJudgeVector.clear(); fSurviveSeconds = 0.f; iMaxCombo = 0; stageAward = StageAward_Invalid; @@ -475,8 +477,9 @@ void HighScore::SetWifeScore(float f) {m_Impl->fWifeScore = f;} void HighScore::SetMusicRate(float f) { m_Impl->fMusicRate = f; } void HighScore::SetJudgeScale(float f) { m_Impl->fJudgeScale = f; } void HighScore::SetEtternaValid(bool b) { m_Impl->bEtternaValid = b; } -void HighScore::SetOffsetVector(vector& v) { m_Impl->vOffsetVector = v; } -void HighScore::SetNoteRowVector(vector& v) { m_Impl->vNoteRowVector = v; } +void HighScore::SetOffsetVector(const vector& v) { m_Impl->vOffsetVector = v; } +void HighScore::SetNoteRowVector(const vector& v) { m_Impl->vNoteRowVector = v; } +void HighScore::SetRescoreJudgeVector(const vector& v) { m_Impl->vRescoreJudgeVector = v; } void HighScore::SetAliveSeconds( float f ) { m_Impl->fSurviveSeconds = f; } void HighScore::SetModifiers( const RString &s ) { m_Impl->sModifiers = s; } void HighScore::SetDateTime( DateTime d ) { m_Impl->dateTime = d; } @@ -749,6 +752,7 @@ float HighScoreImpl::RescoreToWifeTS(float ts) { float HighScore::RescoreToDPJudge(int x) { const float tso[] = { 1.50f,1.33f,1.16f,1.00f,0.84f,0.66f,0.50f,0.33f,0.20f }; float ts = tso[x - 1]; + vector vRescoreJudgeVector; int marv = 0; int perf = 0; int great = 0; @@ -759,7 +763,7 @@ float HighScore::RescoreToDPJudge(int x) { FOREACH_CONST(float, m_Impl->vOffsetVector, f) { m2 += 2; float x = abs(*f * 1000.f); - if (x <= 22.5f) + if (x <= ts * 22.5f) ++marv; else if (x <= ts * 45.f) ++perf; @@ -774,6 +778,13 @@ float HighScore::RescoreToDPJudge(int x) { } //LOG->Trace("Marv: %i Perf: %i, Great: %i, Good: %i, Boo: %i, Miss: %i", marv, perf, great, good, boo, miss); + vRescoreJudgeVector.push_back(marv); + vRescoreJudgeVector.push_back(perf); + vRescoreJudgeVector.push_back(great); + vRescoreJudgeVector.push_back(good); + vRescoreJudgeVector.push_back(boo); + vRescoreJudgeVector.push_back(miss); + SetRescoreJudgeVector(vRescoreJudgeVector); int p = 0; p += (marv + perf) * 2; @@ -787,6 +798,11 @@ float HighScore::RescoreToDPJudge(int x) { return p / m; } +vector HighScore::GetRescoreJudgeVector(int x) { + RescoreToDPJudge(x); + return m_Impl->vRescoreJudgeVector; +} + Grade HighScore::GetWifeGrade() { if (GetGrade() == Grade_Failed) return Grade_Failed; @@ -860,6 +876,17 @@ class LunaHighScore: public Luna static int GetHoldNoteScore( T* p, lua_State *L ) { lua_pushnumber(L, p->GetHoldNoteScore( Enum::Check(L, 1) ) ); return 1; } static int RescoreToWifeJudge(T* p, lua_State *L) { lua_pushnumber(L, p->RescoreToWifeJudge(IArg(1))); return 1; } static int RescoreToDPJudge(T* p, lua_State *L) { lua_pushnumber(L, p->RescoreToDPJudge(IArg(1))); return 1; } + static int RescoreJudges( T* p, lua_State *L ) + { + lua_newtable(L); + for( int i = 0; i < 6; ++i ) + { + lua_pushnumber(L, p->GetRescoreJudgeVector(IArg(1))[i]); + lua_rawseti( L, -2 , i+1 ); + } + + return 1; + } static int GetRadarValues( T* p, lua_State *L ) { RadarValues &rv = const_cast(p->GetRadarValues()); @@ -892,6 +919,7 @@ class LunaHighScore: public Luna ADD_METHOD( GetWifeScore ); ADD_METHOD( RescoreToWifeJudge ); ADD_METHOD( RescoreToDPJudge ); + ADD_METHOD( RescoreJudges ); ADD_METHOD( GetSkillsetSSR ); ADD_METHOD( GetMusicRate ); ADD_METHOD( GetJudgeScale ); diff --git a/src/HighScore.h b/src/HighScore.h index 1993a00a6b..c9b530a6c2 100644 --- a/src/HighScore.h +++ b/src/HighScore.h @@ -83,8 +83,9 @@ struct HighScore void SetMusicRate(float f); void SetJudgeScale(float f); void SetEtternaValid(bool b); - void SetOffsetVector(vector& v); - void SetNoteRowVector(vector& v); + void SetOffsetVector(const vector& v); + void SetNoteRowVector(const vector& v); + void SetRescoreJudgeVector(const vector& v); void SetAliveSeconds( float f ); void SetMaxCombo( unsigned int i ); void SetStageAward( StageAward a ); @@ -122,7 +123,7 @@ struct HighScore float RescoreToDPJudge(int x); float GetSkillsetSSR(Skillset ss) const; void SetSkillsetSSR(Skillset ss, float ssr); - + vector GetRescoreJudgeVector(int x); // Lua void PushSelf( lua_State *L ); private: diff --git a/src/PlayerStageStats.cpp b/src/PlayerStageStats.cpp index 641922866c..c4eb89873b 100644 --- a/src/PlayerStageStats.cpp +++ b/src/PlayerStageStats.cpp @@ -812,6 +812,7 @@ class LunaPlayerStageStats: public Luna DEFINE_METHOD( GetPeakComboAward, m_PeakComboAward ) DEFINE_METHOD( IsDisqualified, IsDisqualified() ) DEFINE_METHOD( GetAliveSeconds, m_fAliveSeconds ) + DEFINE_METHOD( GetTotalTaps, GetTotalTaps() ) DEFINE_METHOD( GetPercentageOfTaps, GetPercentageOfTaps( Enum::Check(L, 1) ) ) DEFINE_METHOD( GetBestFullComboTapNoteScore, GetBestFullComboTapNoteScore() ) DEFINE_METHOD( GetFailed, m_bFailed ) @@ -985,6 +986,7 @@ class LunaPlayerStageStats: public Luna ADD_METHOD( GetLifeRecord ); ADD_METHOD( GetAliveSeconds ); ADD_METHOD( GetPercentageOfTaps ); + ADD_METHOD( GetTotalTaps ); ADD_METHOD( GetRadarActual ); ADD_METHOD( GetRadarPossible ); ADD_METHOD( GetBestFullComboTapNoteScore );