@@ -12,17 +12,68 @@ using namespace geode::prelude;
1212class $modify(AutoLevelRate, LevelInfoLayer) {
1313 void levelDownloadFinished (GJGameLevel* p0) {
1414 LevelInfoLayer::levelDownloadFinished (p0); // Run the original levelDownloadFinished code before running our custom code.
15-
16- // Make sure we haven't rated the level yet.
17- if (!m_starRateBtn) return ;
18- if (!m_starRateBtn->isEnabled ()) return ;
1915
2016 // Make sure the user has the feature enabled.
2117 if (!Mod::get ()->getSettingValue <bool >(" enable-auto-rater" )) return ;
2218
2319 std::string rateMode = Mod::get ()->getSettingValue <std::string>(" rate-mode-selection" );
2420 int overrideDifficultyRate = Mod::get ()->getSettingValue <int >(" override-difficulty-rate" );
2521 std::string naOverride = Mod::get ()->getSettingValue <std::string>(" na-override" );
22+ bool overrideDemonRate = Mod::get ()->getSettingValue <bool >(" override-demon-rate" );
23+ std::string overrideDifficultyDemonRate = Mod::get ()->getSettingValue <std::string>(" override-difficulty-demon-rate" );
24+
25+ // Rate demon difficulty if it is available.
26+ if (m_demonRateBtn && m_demonRateBtn->isEnabled ()) {
27+ // no comments here because screw you :troll:
28+ std::string demonRated = " " ;
29+ RateDemonLayer* rateDemonLayer = RateDemonLayer::create (m_level->m_levelID );
30+
31+ if (overrideDemonRate) {
32+ demonRated = overrideDifficultyDemonRate;
33+ if (overrideDifficultyDemonRate == " Easy Demon" ) {
34+ rateDemonLayer->m_demonRate = 1 ;
35+ } else if (overrideDifficultyDemonRate == " Medium Demon" ) {
36+ rateDemonLayer->m_demonRate = 2 ;
37+ } else if (overrideDifficultyDemonRate == " Hard Demon" ) {
38+ rateDemonLayer->m_demonRate = 3 ;
39+ } else if (overrideDifficultyDemonRate == " Insane Demon" ) {
40+ rateDemonLayer->m_demonRate = 4 ;
41+ } else {
42+ rateDemonLayer->m_demonRate = 5 ;
43+ }
44+ } else {
45+ switch (m_level->m_demonDifficulty ) {
46+ case 3 :
47+ rateDemonLayer->m_demonRate = 1 ;
48+ demonRated = " Easy Demon" ;
49+ break ;
50+ case 4 :
51+ rateDemonLayer->m_demonRate = 2 ;
52+ demonRated = " Medium Demon" ;
53+ break ;
54+ case 0 :
55+ rateDemonLayer->m_demonRate = 3 ;
56+ demonRated = " Hard Demon" ;
57+ break ;
58+ case 5 :
59+ rateDemonLayer->m_demonRate = 4 ;
60+ demonRated = " Insane Demon" ;
61+ break ;
62+ case 6 :
63+ rateDemonLayer->m_demonRate = 5 ;
64+ demonRated = " Extreme Demon" ;
65+ break ;
66+ }
67+ }
68+
69+ rateDemonLayer->onRate (rateDemonLayer->m_submitButton );
70+
71+ log::info (" Successfully rated the level {}!" , demonRated);
72+ }
73+
74+ // Make sure we haven't rated the level yet.
75+ if (!m_starRateBtn) return ;
76+ if (!m_starRateBtn->isEnabled ()) return ;
2677
2778 RateStarsLayer* rateStarsLayer = RateStarsLayer::create (m_level->m_levelID , p0->isPlatformer (), false );
2879
0 commit comments