- Allows loading an undetermined number of files using a format string (e.g. combo bursts, slider balls).
- Fixes bug with those images not being properly reloaded.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Renamed Options state into OptionsMenu, and created Options class for solely handling user options. Moved everything unrelated to the actual options menu into the static Options class.
- OptionsMenu no longer has static fields.
- Refactored option tabs into an enum, which makes the code much cleaner.
Also fixed a bug where global volume wasn't being used on container initialization.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Pressing Ctrl+Shift+F5 in the options menu restarts the game. Beatmaps and sounds are not reloaded.
- Use GameContainer.setForceExit(false) to trigger a restart after exiting.
Other changes:
- Fixed general issues with track pausing/pause states.
- Store all background images loaded in OsuFiles in a static hash table, instead of in individual objects. This allows easier access to the allocated memory.
- Only delete OSZ files if they were unzipped. (They were previously deleted in all cases.)
- Moved more images (mods, playfield, lighting) into GameImage.
- Moved OsuHitObject initialization inside Utils.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- All sounds are now multiplied by a master volume setting.
- Changed all default volume levels.
- Scrolling in the main menu and game states changes the master volume and displays a volume bar on the right side of the screen.
- "volume-bg.png" image by @kouyang.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
Reverted earlier change to load images immediately before a game begins, since there is a noticeable lag in some cases.
Other changes:
- Added 'preload' field to GameImage.
- Changed 'gameImage' field in GameImage to 'skinnable' (more suitable name).
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
GitHub "mark" image is from: https://github.com/logos
Also changed default screen resolution to 1024x768 since it's more likely to be supported.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
This mostly replaces the Slick2D Log class for error reporting. Most game errors will now trigger the error popup.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
Specifically, the main menu background and pause/fail backgrounds now accept JPGs as well as PNGs.
Other changes:
- Don't draw the default pause/fail background if the buttons are skinned and the background is unskinned.
- Preload logo and main menu background.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- MusicController.getPosition() now returns time even when track is paused. (e.g. song progress bar in main menu won't reset when paused)
- Force unpause track when entering the song menu.
- Rewrote Game.RESTART_* constants as enums.
- Cleaned up logo play/exit button scaling.
- MainMenu.previous is now non-static.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Stop loading all images on startup.
- Game images are preloaded before the song starts.
- Destroy skin images immediately after finishing a beatmap, potentially saving lots of memory.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Only retrieve song information String[] when needed.
- Don't try to load glyphs if Unicode metadata is disabled.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- To scale an image, override process_sub() in its enum definition. All GameImages call the process() method when loaded.
- Skin GameImage overrides will now call process() immediately, so there's no more need for the hackish scaling status.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Added a new tab in Game Options screen containing the values.
Other changes:
- Corrected "Hard Rock" difficulty modifiers.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- GameImage now stores both a default image and skin image, returning the skin image whenever available.
- Default images are loaded once on startup, instead of before every game.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Added a GameImage enum for more organized loading of image resources.
- Game image loading now takes place directly before each beatmap is loaded.
- Added option 'IGNORE_BEATMAP_SKINS' to disable this feature.
Other changes:
- Slight correction in readme file: apparently the JAR will not run in the osu! program folder.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>