All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Practice mode crash when finishing level (thanks @Vulm)
- Android crash
- Android not saving cache.json
- Roulette would only show the same levels from page 1
- Weird blink transition when exiting Roulette layer
The GD-Roulette UI update, featuring new UI, new UI and even more new UI! This update took a lot of time, so if you like it and would like more, consider donating by clicking the gift box icon below :D I will omit coding related changes from now on in CHANGELOG.md
- New UI! Main Roulette menu was completely overhauled, and new UI when playing as well!
- View statistics while playing and after finishing a round
- When the round started
- How many skips were used
- Current and total level attempts
- How many levels played
- Total playtime
- View played levels
- Percentage is colored when the goal is reached
- Big button option again
- Caching of max pages of normal list difficulties every 7 days
- peggy
- Target Geode v4.2.0 (green)
- A lot of the internals and how stuff is managed
- Demon List now fetches all pages
- Challenge List now fetches all pages
- A lot of bugs
- Android crash/invalid list ID bug
- Roulette resetting to easy demon difficulty after pausing and resuming a demon round
- Ability to play any demon difficulty
- Ability to refresh if an error occurs
- Save data bug
- Incompatibility with Ninxout's Overcharged Menu
- Fixed Android crashing
- Target Windows and Mac only, until I find a fix for Android later
- Renamed GD List ID key to "gd-list-id"
- Integer input layer crash on android
- Resuming round of roulette after game shutdown
- Exclamation Mark when a round of roulette is paused
- Target Geode v4.0.1
- How target percentage is displayed: it is now always the current goal, not the current percentage + 1
- Target Geode v3.0.0-beta.1
- Use new Geode Web API
- Potential MacOS bug
- Alphalaneous github page to their new profile
RLDifficultyNode
wrong position when playing rouletteRLLoadingCircle
wrong position for a split second when offline- Some miscellaneous bugs (#21)
RLLoadingCircle
, a better LoadingCircle lol
- Cleaned up
#include
s in header files
- 5 Character limit in
RLIntegerInputLayer
LoadingCircle
in wrong position on Android
- No longer use
geode::Notification
, now userl::utils::createNotificationToast
- How levelIDs are stored when in LevelInfoLayer (they no longer are)
- Weird 5th arg in
TextAlertPopup::create
#include
directives to the/custom_layers
- Platform name to
RLRouletteInfoLayer
RLDifficultyNode
supports epic, legendary and mythic nowrl::utils::getFeatureStateFromResponse
- Renamed RLDemonSelectLayer to RLDifficultySelectLayer
- Made RLDifficultySelectLayer dynamically made (RLDifficultySelectInfo)
- How touch prio is handled in RLRouletteLayer
- Made the difficulty buttons in RLDifficultySelectLayer in another menu
- Refactored RLDifficultySelectLayer.cpp
- Use structured bindings (i forgor they existed)
RLDifficultyNode
now inherits from CCNodeRGBA (rookie mistake)
- Empty list id crash on Android (probably)
- Show options sprite being set even if the info icon was never clicked
RLDifficultyNode::setColor
being weird- Difficulty not being highlighted when changing the list multiple times
RouletteManager
not getting new keys because it just assumed they existed prior
GD-Roulette commit everything at once challenge (mildly possible)
Notable changes:
- MacOS support
- GD Lists option
- Ability to pause when in a round of roulette
- Bugs & crashes
- rtrp library, that parses Geometry Dash's server responses, made by yours truly
- MacOS support
RLDemonSelectLayer
, a layer that lets you select a demon difficulty (appears when clicking the demon plus button)IntegerInputInfo::show_arrows
boolRLDifficultyNode
, a custom node that's basicallyGJDifficultySprite
but better IMOListFetcher::level_pair_t
, anstd::pair
of a LevelObject and a CreatorObjectListFetcher::getRandomGDListLevel
ListFetcher::GJ_SECRET
,ListFetcher::GJ_LEVELS_URL
,ListFetcher::GJ_LISTS_URL
,ListFetcher::GJ_LEN_QUERY
,ListFetcher::DEMONLIST_URL
,ListFetcher::CHALLENGELIST_URL
,ListFetcher::m_cDemonDiffToFilter
,ListFetcher::m_cachedGDListID
,ListFetcher::m_cachedGDListLevelIDs
,ListFetcher::getDifficultyQuery(GJDifficulty)
RWDI_MODE
macro when compiling in RelWithDebInfo- GD Lists as a list option
- Info icons to list checkboxes in
RLRouletteInfoLayer
- Visual indicator of selected list (except GD List)
- Node IDs to RLRouletteInfoLayer
- Node IDs to RLRouletteLayer
- Ability to Pause or Quit when closing RLRouletteLayer
RLRouletteLayer::getDifficultyButton
,RLRouletteLayer::setDifficultyButtonColor
- JSON arrays are checked on launch in
RouletteManager
's ctor RouletteManager::isPaused
,RouletteManager::gdListID
,RouletteManager::previousDifficulty
,RouletteManager::previousDemonDifficulty
,RouletteManager::getDifficultyFromSaveContainer()
rl::constants
namespacerl::utils::createLevelFromResponse()
,rl::utils::getCreatorFromLevelResponse()
,rl::utils::getDifficultyFromResponse()
- Geode 2.0.0-beta.21 support
- Some missing node IDs to
RLRouletteLayer
- Some colors to some layers
- Rely on Geometry Dash's servers instead of GDBrowser's API (this was long overdue)
- Renamed
BaseCustomLayer
toBaseCustomAlertLayer
- Prefixed all custom layers/nodes with
RL
- Renamed
ConfirmationAlertInfo::onYes
toRLConfirmationAlertInfo::onBtn1
- Renamed
ConfirmationAlertInfo::onNo
toRLConfirmationAlertInfo::onBtn2
- Renamed
RLRouletteLayer::onDifficultyChosen
toRLRouletteLayer::onDifficultyButton
- Renamed
roulette
namespace torl
- Pass
ConfirmationAlertInfo
into thecreate
method instead ofsetup
IntegerInputInfo::starting_value
is now anstd::optional<int>
- rouletteButton
CreatorLayer
's CCMenu is now positioned based on the window's size - All
as
back tostatic_cast
s because yes - Renamed
ListFetcher::normalListMaxPage
toListFetcher::m_cNormalListMaxPage
- Updated
ListFetcher::m_cNormalListMaxPage
- All
ListFetcher
's methods take aListFetcher::level_pair_t
instead of amatjson::Value
ListFetcher::getRandomNormalListLevel
is passed a GJDifficulty instead of an int- How
RLRouletteLayer::onDifficultyButton
handles stuff RLRouletteLayer::getRandomListLevel
is passed a GJDifficulty instead of an int- How coins are positioned in
RLRouletteLayer
(they're now based on the difficulty node's position) - Some info about the info icons in ABOUT.md
- How touch priority is handled in BaseCustomAlertLayer
- No longer use
geode::cocos::handleTouchPriority
- Made the rouletteButton a bit better code-wise (still sucks)
- Potential crash when modifying
LevelInfoLayer
of a platformer level - Potential crash when modifying
PauseLayer
of a platformer level - Invalid page when searching for a level in
ListFetcher::getRandomNormalListLevel
- Dev macro (RWDI_MODE)
- Demon plus button visible in Demon List and Challenge List modes
- Weird static variable swap stuff in
RLConfirmationAlertLayer
andRLIntegerInputLayer
- Odd way of resetting all
CCMenuItemToggler
s after being toggled - Clicking the level's name/creator/id not copying it to the clipboard
- Potential crash if
RLRouletteLayer::m_level
is empty (highly situational) - Geode invalid tags
- Touch Prio on android ❤️
- Crash when leaving LevelInfoLayer
- No longer target any Node-IDs version because that's broken. Instead, target v1.3.0
- Actually target any Node-IDs version that matches or is greater than 1.3.0, previous version targeted v1.1.4
- Auto pause option
- Some IDs to layers that are modified
- Target Geode 2.0.0-beta.16
- Some
static_cast
s toas
- CHANGELOG.md layout to "Added", "Changed" then "Fixed"
- Target any Node-IDs version that matches or is greater than 1.3.0
- Changed some for loops to getChildByID
- Renamed RouletteManager::lastLevelID to currentLevelID
- Renamed RouletteManager::lastLevelPercentage to currentLevelPercentage
- Removed Node-IDs dependency in CMakeLists.txt
- Removed RouletteManager::levelCreatorName
- Renamed about.md to ABOUT.md
- Goal percentage appearing in a level that isn't the current roulette level
- Platformer levels appearing in the roulette
- Geode 2.0.0-beta.15 support
- assets/GD-Roulette.png
- Removed 1 unnecessary objectAtIndex
- Crash when on a fresh install of GD-Roulette
- Android support (?)
- Error text when ListFetcher fails to fetch a link
- RouletteLayer pointer member to RouletteManager
- Array verifier to assure selected difficulty/list is correct (cant select multiple at once, maybe for a future update?)
- Choosing a list highlights a difficulty that matches said list
- about.md
- Logo
- RouletteManager to be an inline global variable instead of that broken define system
- Removed CustomDirector
- Made selecting a list change the selected difficulty (only visual)
- Renamed RouletteManagerStruct to RouletteManager
- Renamed RouletteManager's variable name to g_rouletteManager
- Cleaned up include directives
- Crash when clicking Reset after ListFetcher fails
- Bugs
- CURL for Geode's web::AsyncWebRequest
- nlohmann::json for matjson
- Move from CCString::createWithFormat to fmt::format
- Move from JsonManager to Geode settings/save data
- Crashes
This release is very unstable and doesn't get past the "Start" button.
- 2.2 support
- Geode support
Last update before 2.2. I might update this to 2.2 if I have enough free time.
- Added a confirmation dialogue layer that is used when closing the RouletteLayer while playing
- Added a reset method to the RouletteManager struct
- Added an OK button to the IntegerInputLayer
- Moved CustomLayer and its inheriting classes to /src/custom_layers
- Separated each bunch of nodes to unique CCMenus
- Changed RouletteInfoLayer's text nodes from CCLabelBMFont to TextArea
- Repositioned the RouletteInfoLayer's toggles
- Renamed RouletteInfoLayer::onSkipsButton to onNumSkipsButton
- Renamed RouletteManager::skipsCount to skipsUsed
- RouletteLayer.difficultyToTag is now const
- Phased out use of std::to_string in favor of CCString::createWithFormat (with the exception of ListFetcher)
- Removed unused parameters' names in onXButton functions
- IntegerInputLayer's information is dynamic instead of hard coded
- Renamed CreatorLayer's ButtonsClass to RouletteButton
- Refactored CreatorLayer.cpp
- Fixed ConfirmationAlertLayer result getting ignored
- Fixed touch events not getting dispatched from the nested RouletteLayer CCMenus
- Fixed RouletteButton's CCSprite being too big on resolutions other than High
- Fixed the roulette level's author name being removed
- Added a 1s pause after player death while playing a level
- RouletteInfoLayer::createToggler's definition from RouletteLayer.cpp to RouletteInfoLayer.cpp
- Removed duplicate code ln. 402-403 -- ln. 409-410 in RouletteLayer.cpp
- Removed duplicate code ln. 436-437 -- ln. 447-448 in RouletteLayer.cpp
- Fixed JsonManager overriding saved values
- Added a json manager (to save options)
- Added a percentage goal besides the LevelInfoLayer percentage text
- Added a percentage goal in the PauseLayer
- Separated the layers contained in the RouletteLayer.cpp file into sub-files
- Fixed RouletteManager not managing data correctly after JSON saving was added
- Fixed demonDiffArr resetting everything to false when RouletteLayer::onClose is called
- Added a DEV_CONSOLE macro enabled only when compiling RelWithDebInfo
- Added a check for MegaHack v7 to change the roulette button's position