Commit Graph

791 Commits

Author SHA1 Message Date
Jeffrey Han
97f3aad772 Enable VSync when target FPS is 60.
Other changes:
- Write actual resolution and FPS values to config file instead of array indexes.
- Rewrote resolutions[][] array as an enum.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-01-15 01:52:16 -05:00
Jeffrey Han
b856e2924c Minor updates and code improvements.
- 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>
2015-01-15 00:56:30 -05:00
Jeffrey Han
03095733df Removed static fields in Game state.
Mostly merged from #8 (72e8a7e).

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-01-14 23:57:50 -05:00
Jeffrey Han
64d961a8f9 Only load image resources when needed.
- 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>
2015-01-14 23:10:19 -05:00
Jeffrey Han
05a671e627 Quick fix for countdown displays. (blame: 9e69afa)
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-01-14 22:31:48 -05:00
Jeffrey Han
dfeb981361 Some memory optimizations.
- 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>
2015-01-14 21:48:24 -05:00
Jeffrey Han
62b7ecd648 Fixed a small bug with hovering over song buttons.
The left/right arrow keys no longer reset hover data if the start node hasn't changed.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-01-13 23:00:09 -05:00
Jeffrey Han
71f614c90a Automated the fat jar creation process.
- 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>
2015-01-12 21:05:58 -05:00
Jeffrey Han
4152af4977 Made OsuGroupList a singleton.
(This makes a lot more sense than storing the single pointer in Opsu.groups.)

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-01-11 14:17:33 -05:00
Jeffrey Han
af8512c080 Moved scattered GameOption code into the enum. 2015-01-11 13:05:32 -05:00
Jeffrey Han
6f7b2b6554 Moved score multiplier field into GameMod enum.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-01-11 00:29:26 -05:00
Jeffrey Han
5a09689b4c Added mouse hover effects for tabs.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-01-10 23:14:22 -05:00
Jeffrey Han
6e434e9709 Improved appearance of tabs.
- 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>
2015-01-10 22:49:23 -05:00
Jeffrey Han
1e59819f3a Dim theme song volume when window is not focused.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-01-10 20:14:39 -05:00
Jeffrey Han
b525ab4533 Updated README.md with a link to the "releases" page.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-01-08 20:10:30 -05:00
Jeffrey Han
ab0d3d1528 Added mouse hover effects for song buttons in song menu.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-01-08 16:28:49 -05:00
Jeffrey Han
db4ca5f1d5 Minor optimizations.
- 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>
2015-01-08 12:03:39 -05:00
Jeffrey Han
f6eac71643 Moved most Image creation into GameImage enum.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-01-07 23:45:21 -05:00
Jeffrey Han
8671718ce3 Moved most GameImage scaling/processing to a single file.
- 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>
2015-01-07 22:36:39 -05:00
Jeffrey Han
1e806bc9c6 SoundController refactoring.
- 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>
2015-01-07 19:29:51 -05:00
Jeffrey Han
3127571886 Smoother health bar changes.
Also merged GameScore update calls into a single method.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-12-30 01:17:05 -05:00
Jeffrey Han
b0649541eb Better emulation of main menu behavior.
- 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>
2014-12-30 00:41:32 -05:00
Jeffrey Han
2592faec44 Renamed GUIMenuButton class to MenuButton.
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>
2014-12-30 00:00:58 -05:00
Jeffrey Han
9e69afac91 Added retry counter.
Display number of retries (after retrying at least twice).

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-12-29 23:35:31 -05:00
Jeffrey Han
cc84d4a3e4 Subtle fade in effect for circles and sliders. (#9)
Also resize the "skip" button on hover. (follow-up 33f5df0)

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-12-24 02:45:43 -05:00
Jeffrey Han
068a844e1f Fixed music player issues with handling repeat tracks.
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>
2014-12-24 00:25:26 -05:00
Jeffrey Han
33f5df030c Expand menu buttons when hovering.
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>
2014-12-23 23:41:37 -05:00
Jeffrey Han
ce8ae40f79 Quick follow-up to #10.
Don't play a sound upon exiting.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-12-21 23:20:17 -05:00
Jeffrey Han
31d8b77217 Merge pull request #10 from iceblade112/master
Mimic original osu! exit button: exit immediately instead of entering the exit menu.
2014-12-21 23:02:30 -05:00
Raymonf
4b17f28cf2 Undo offset 2014-12-21 17:11:31 -05:00
Raymonf
068b40a86a Mimic osu! exit button
On osu!, clicking the exit button closes the game after clicking. Pressing ESC on osu! brings up the exit menu.
2014-12-21 17:02:11 -05:00
Raymonf
bc7d19295b Make default offset 0ms 2014-12-21 16:46:11 -05:00
Jeffrey Han
5083229572 Fixed theme song loading in JAR files. (follow-up ce0eccd)
Removed theme.osu, replaced with a comma-deliminated line in the configuration file.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-12-20 21:35:18 -05:00
Jeffrey Han
ce0eccd32b Implemented skinnable theme songs.
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>
2014-12-20 18:17:04 -05:00
Jeffrey Han
9d3a12ad9c Display checkpoint time on game screen after loading.
Also fixed some indentation issues.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-12-20 15:30:20 -05:00
Jeffrey Han
47cf4f4af3 Fix hidden mouse cursor.
Cursor is now properly hidden, instead of being a single black pixel.  Credits to davedes.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-12-20 15:10:46 -05:00
Jeffrey Han
169e9c192a Updated readme with Maven build information. (follow-up 54b5469, #7)
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-09-11 17:36:43 -04:00
Jeffrey Han
54b5469b02 Merge pull request #7 from Tillerino/modularMaven
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.
2014-09-11 17:03:17 -04:00
Till
40e08fd498 eclipse/ant -> maven
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.
2014-09-11 11:22:32 +02:00
Jeffrey Han
51b50843e5 Added "Kochi Gothic" font.
- Provides cross-platform CJK support. (follow-up to 904a54d)

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-08-25 12:47:10 -04:00
Jeffrey Han
904a54df26 Added support for Unicode (non-English) metadata.
- 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>
2014-08-24 23:48:52 -04:00
Jeffrey Han
9a94c03b4e Use UnicodeFont instead of TrueTypeFont.
- Fixes issue #4.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-08-24 14:48:27 -04:00
Jeffrey Han
83e486054f Catch (nearly) all exceptions thrown by OsuParser.
- 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>
2014-07-24 13:38:59 -04:00
Jeffrey Han
39dcdf6dee Reorganized libs.
- 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>
2014-07-20 13:21:13 -04:00
Jeffrey Han
ddcbed20b2 Added error message when running JAR in path containing '!'. (issue #5)
- See: http://bugs.java.com/view_bug.do?bug_id=4523159

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-19 13:01:23 -04:00
Jeffrey Han
fe293827e6 More small bug fixes.
- 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>
2014-07-19 03:31:54 -04:00
Jeffrey Han
834682a6ca Minor bug fixes.
- 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>
2014-07-18 21:33:07 -04:00
Jeffrey Han
c0870afb77 Fixed issue where slider end distance calculations ignored repeats.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-18 21:13:17 -04:00
Jeffrey Han
64788b2832 Song sort refactoring.
- Created "SongSort" enum to handle everything related to sorting OsuGroupNode objects.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-18 20:33:41 -04:00
Jeffrey Han
717605564d Hit object refactoring.
- 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>
2014-07-18 15:11:57 -04:00