- 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>
- Load all OsuFile String objects into a hash table while parsing, to eliminate duplicate strings.
- Trim all ArrayList objects in OsuFiles.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Added a modified version of JarSplice in the tools/ directory, which can run using system properties as well as the GUI. The project is located here: https://github.com/itdelatrisu/JarSplicePlus
- To create a fat jar, execute the Maven goal "install -Djar". The output file will be in the target/ directory and suffixed "-runnable".
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Replaced 'selection-tab.png' with a new image (by @kouyang).
- Simulate osu! color scheme (tab color/font color changes instead of alpha changes for selected tab).
- Added Utils.drawTab() method to avoid code duplication for Option menu tabs.
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 enum classes SoundEffect and HitSound.
- Added a SoundComponent interface for sound effects and hit sounds, and extended playSound() and playHitSound() methods to play any SoundComponent.
- Moved features related to sample sets to the HitSound class, and rewrote sample sets as an internal enum class.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Pressing 'Esc' will now always enter the MainMenuExit state.
- Returning from MainMenuExit state does not reset button states: these must be manually reset by calling the reset() method.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
The class was originally named with the intent of adding many other GUI classes, but this never happened.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
When pressing the "next" button, songs will only be pushed when a new track plays. Fixes a potential null pointer crash.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
Added hovering capabilities to GUIMenuButton. The max scale and direction to expand the image can be modified per object.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
Plays a theme song when opsu! starts (can be disabled in options). The default song is "welcome to osu!" by nekodex, uploaded by CyberKitsune.
To change the song, place a new "theme.osu" in the skins folder and edit the file name, metadata, and song length (at minimum).
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
Switched to maven project.
- Eclipse files have been removed from repository. jar and native dependencies have been removed from repository.
- Use maven goals "compile exec:exec" to run the project.
- Use maven goals "package shade:shade" to create a single jar file, which contains java, but not native dependencies. This jar file can then be used with jarsplice to create a fat jar. Natives will be extracted to /target/natives.
eclipse files have been removed from repository. jar and native
dependencies have been removed from repository.
use maven goals "compile exec:exec" to run the project.
use maven goals "package shade:shade" to create a single jar file, which
contains java, but not native dependencies. this jar
file can then be used with jarsplice to create a fat jar. natives will
be extracted to /target/natives.
- Setting is off by default, and can be switched on in the options menu.
- Changed default font to "Arial Unicode MS" (CJK), with fallback to "Lucida Sans Console" (non-CJK). Cross-platform support may be added later.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Properly handle bad input and log a warning. The game may run with some gameplay errors (ex. if no base TimingPoint is parsed), but it should not crash.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- All libraries are now packed as JARs, with sources and docs also packed and separated.
- Added .classpath and .project to version control.
- Updated ant build script.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Always use '.' as decimal separator in options file, regardless of locale.
- Properly handle bad input when initially parsing hit objects.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Fixed null pointer in "Main Menu" state if no tracks loaded. (since b0c0b44)
- Fixed "keyOsuLeft" and "keyOsuRight" writing KEY_NONE to configuration file on first run (instead of default values).
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Moved the bulk of hit object parsing into the OsuHitObject constructor, and made all fields private. Only combo-related data is still set by OsuParser.
- Added 'isCircle()', 'isSlider()', 'isSpinner()', and 'isNewCombo()' methods for convenience.
Other changes:
- Fixed difficulty overrides are no longer affected by game mods.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>