Commit Graph

777 Commits

Author SHA1 Message Date
Jeffrey Han
5a1972a2bd Some code cleanup.
- Overhauled OsuTimingPoint class: parsing is done in the constructor, and fields are no longer public.
- Improved consistency of static/non-static fields in a couple of classes.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-09 13:36:42 -04:00
Jeffrey Han
50fb71e353 Implemented saving/loading from checkpoints.
- A checkpoint (track position) can be set in the options screen, and also while playing by pressing "CTRL+S".
- A checkpoint can be loaded by pressing "CTRL+L" while playing.  This will reset all game data and begin from the checkpoint time; the ranking screen will be skipped upon song completion.

Other changes:
- Don't draw grade if no objects have been processed (previously defaulted to GRADE_D).
- Calculate slider start/end angles based on a step difference (previously an arbitrary 0.01 difference).
- Always end a slider curve base on the last control point.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-08 22:17:48 -04:00
Jeffrey Han
2ed8e66bbf Minor search feature fixes.
- Search textfield now properly retains focus in song selection menu.
- Clearing an invalid search no longer changes the current song.

Other changes:
- Fixed skip image not being resized correctly.
- Added menuclick sounds when selecting a new song.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-08 19:03:43 -04:00
Jeffrey Han
e7f74d8dd6 Added loading progress for sound files in splash screen.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-08 14:08:06 -04:00
Jeffrey Han
331f374a5b Better positioning of mod icons and song menu header text.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-08 13:38:16 -04:00
Jeffrey Han
83c475cdc1 Java Sound crash fixes for Linux. (issue #1)
- Explicitly supply the AudioFormat when creating a Clip.
- Disable Master Gain if unsupported (e.g. in PulseAudio).
- Do not try to play uninitialized sounds (e.g. LineUnavailableException during creation, seems to happen regularly with PulseAudio).

Other changes:
- Errors replaced with debugs in 'getTrackLength()' if audio fields inaccessible.
- Do not log ThreadDeath exceptions (it's a known issue, and only clutters the log file).

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-08 00:42:50 -04:00
Jeffrey Han
a9cc7a3deb Scale and rotate the cursor.
- Cursor is now scaled based on window size.
- Cursor now rotates slowly (new style only).
- Cursor now expands upon mouse press.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-06 23:13:33 -04:00
Jeffrey Han
6d3c333a3f Minor follow-up to d9c251e.
- Added 'zip4j' library to ant build script.

Other changes:
- Added 'esc' hotkey to exit from splash screen.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-06 02:27:53 -04:00
Jeffrey Han
d9c251ef82 Added a module for unpacking OSZ archives.
- Included 'zip4j' library to extract the ZIP archives. (Homepage: http://www.lingala.net/zip4j/)
- OSZ files are unpacked from the root directory by default, and the path can be changed in the configuration file.

Other changes:
- Fixed a critical issue in splash screen where thread would running before other states loaded. (blame: dea7e94)

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-06 01:58:44 -04:00
Jeffrey Han
dea7e942a3 Created a splash screen state for loading resources.
- Game now boots to splash screen, which displays parser progress.
- Added option "LoadVerbose" to disable rendering the progress text.
- Main Menu backgrounds now fade in regardless of DynamicBackground setting (as a transition from the splash screen).

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-05 21:00:52 -04:00
Jeffrey Han
0dbfd18c5f Added a few missing keyboard shortcuts.
- Main Menu: "P" (play), "Q" (quit)
- Game: Ctrl + "R" (restart)

Other changes:
- Song Menu search textfield no longer retains focus in different states.
2014-07-05 14:29:48 -04:00
Jeffrey Han
83f13a8879 Added options for global fixed difficulty settings (CS, HP, AR, OD).
- 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>
2014-07-05 01:24:01 -04:00
Jeffrey Han
06f8dae037 Reduced unnecessary reloading of default images. (follow-up 16afcaf)
- 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>
2014-07-04 19:59:57 -04:00
Jeffrey Han
16afcaf3e6 Added initial support for loading beatmap skins.
- 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>
2014-07-04 16:41:52 -04:00
Jeffrey Han
c72b9b955a Quick fix for parsing invalid *.osu files.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-03 18:50:44 -04:00
Jeffrey Han
0b471fa1cc Animated the score display.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-03 02:03:56 -04:00
Jeffrey Han
f195ffb861 Added support for default playfield image and an override option.
- Credits: https://osu.ppy.sh/forum/t/198483 (image by Xiaounlimited)

Other changes:
- Added "Unranked" text image, currently displayed for "Auto" mod plays only (image by XinCrin).
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-03 01:05:23 -04:00
Jeffrey Han
03be29307f Misc. bug fixes and improvements.
- Fixed Game not loading OsuFile for maps in a song group. (blame: 5612336)
- Implemented rotations for reverse arrows, and added a new one by Alic1a.
- "Auto" mod: pausing no longer requires click to unpause, and mod images are permanently drawn.
- Program now loads from Main Menu instead of Options (unnecessary complications for the sake of a transition).

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-02 23:38:30 -04:00
Jeffrey Han
2c2f28b441 Game options overhaul & new options.
- Separated options into "Display", "Music", and "Gameplay" tabs.
- New options: VolumeHitSound, DimLevel, PerfectHit
- Added options that were previously missing from Game Options screen.
- Added sounds to Game Options screen.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-02 18:24:19 -04:00
Jeffrey Han
812b83af45 Added extra checks in the parser for invalid line.
Credits to xasuma for the report.
2014-07-02 10:14:15 -04:00
Jeffrey Han
56123363b3 Implemented dynamic main menu backgrounds.
- This can be switched off in the configuration file.
- Credits: https://osu.ppy.sh/forum/t/98954

Other changes:
- Removed OsuFile setters/getters from Game state, replaced with a 'getOsuFile()' method in MusicController (a more logical location).

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-02 03:02:11 -04:00
Jeffrey Han
bcd0c23961 Added initial support for loading user skins.
- "Skins" directory is created in the root folder, and reads files directly from there (for now).  NOT ALL FILES ARE SUPPORTED.
- To change the path (e.g. to an installed skin), edit the path in the configuration file.

Other changes:
- Renamed some files: directories now begin with a capital letter (to match osu! naming), and '.osu_tmp' renamed to '.opsu_tmp'.
- Disabled mouse grabbing, as this does not seem to work properly for touchscreen devices. (partial revert of ab487c5)

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-02 01:53:42 -04:00
Jeffrey Han
ab487c5e80 Replaced native cursors with skinnable ones.
- Added support for both the new (2013+) and old cursor styles.  These can be toggled on/off in the configuration file.
- Added cursor images by XinCrin (old style) and teinecthel (new style).

Other changes:
- Refactoring: Created a "Utils" module, containing methods and constants that didn't belong in the "Options" state and some duplicated drawing methods.
- Mouse is now grabbed during gameplay.
- Removed 'optionsChanged' switch, simplifying adding new options.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-01 19:32:03 -04:00
Jeffrey Han
0604a25822 Added initial sound effect support.
- Added SoundController module, which uses Java Sound since OpenAL has a slight delay on playing sounds.
- Uploaded all effect WAVs. (credits: WWWskin, AL's IA, Fantasy's Skin, Minimalist Miku)
- Added a missing entry in credits.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-07-01 01:14:03 -04:00
Jeffrey Han
60eaa42997 Only allow a single program instance to be run.
Creates a ServerSocket instance on a port (default: 49250).
Credits to marcostudios for the suggestion.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2014-06-30 12:37:37 -04:00
Jeffrey Han
6bdb026447 Added support for floating-point difficulty values (v13).
Thanks to Marcin for the info and FieryLight for the report.
2014-06-30 04:03:39 -04:00
Jeffrey Han
9da166f60f Initial commit. 2014-06-29 22:17:04 -04:00