Commit Graph

1187 Commits

Author SHA1 Message Date
Jeffrey Han
7536056a59 Initial replay writing support.
- Added Replay.save() method to save replays to a file.
- Separated Replay loading from the constructor into a load() method.
- Added OsuWriter class to write replays.
- Parse replay seeds (what do they do?).
- Added Updater.getBuildDate() method to retrieve the current build date (for the replay 'version' field).
- Added osu! mode constants in OsuFile.
- Added methods to retrieve raw ReplayFrame coordinates.
- Added replay fields/methods to GameData and Game state.
- Added jponge/lzma-java dependency for LZMA compression, since it isn't implemented in Apache commons-compress...

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-10 18:10:51 -04:00
Jeffrey Han
3da7b320f0 Follow-up to 1f8c150: fixed an error with checkpoint loading.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-10 01:29:08 -04:00
Jeffrey Han
1f8c150e6c Update replay frames in a new thread.
This drops less frames, but is still pretty bad.  See #42.
- Changed some LinkedList classes to LinkedBlockingDeques and added some synchronized methods.
- Slight modifications to OpenALStreamPlayer (may or may not be slightly more accurate).

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-10 00:48:04 -04:00
Jeffrey Han
39caf30770 Updatead to JarSplicePlus v1.2.
Passes command-line arguments.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-09 20:09:36 -04:00
Jeffrey Han
fa6132808e Show the default mouse cursor during replays.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-09 19:54:28 -04:00
Jeffrey Han
f6412f06e8 Initial replay parsing support.
- Basic implementation of viewing replays in the Game state.
- Added OsuReader class for reading certain osu! file types. (author: Markus Jarderot)
- Added Replay, ReplayFrame, and LifeFrame classes to capture replay data. (author: smoogipooo)
- Added 'keyPressed' parameter to HitObject.update().
- Added cursor-drawing methods in UI that take the mouse coordinates and pressed state as parameters.
- Added GameMod methods to retrieve/load the active mods state as a bitmask.
- Added Apache commons-compress dependency for handling LZMA decompression.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-09 18:32:43 -04:00
Jeffrey Han
ef67387674 Follow-up to 40476d4.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-08 20:38:51 -04:00
Jeffrey Han
40476d4f31 Catch all exceptions in OsuDB. (fixes #41)
Also added checks for missing audioFilename fields.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-08 20:26:37 -04:00
Jeffrey Han
400f9395e7 Updating version to 0.7.0.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-08 17:53:24 -04:00
Jeffrey Han
dc26f6c131 TextField updates, and bug fixes from some recent commits.
- Added modified copy of slick.gui.TextField: added CTRL+BACKSPACE for word deletion, and disabled left/right arrows to move cursor and CTRL+Z to undo.
- Fixed musicEnded() incorrectly setting the "trackEnded" upon swapping tracks.  This has caused some nasty loops since #38.
- Fixed a null pointer exception in OsuDB from 0b03912.
- Fixed the song menu search bar transition being incorrectly reset when hitting backspace on a 0-length query.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-08 16:34:28 -04:00
Jeffrey Han
0b03912b7a Keep track of beatmap cache size.
The minimum batch loading size is now based on the beatmap cache size instead of an arbitrary constant.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-08 13:36:26 -04:00
Jeffrey Han
f9878f4fa4 More optimizations: don't load OsuFile array fields until needed.
When cached, defer loading of timing points, breaks, and combo colors until directly before a game.  Potentially cuts loading time by 50%, and saves a bit of memory.

Other changes:
- Don't store the default combo colors in the cache.
- Removed some PreparedStatements that only get executed once.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-08 03:05:01 -04:00
Jeffrey Han
f8e91cba64 Added error() method to DownloadListener interface.
Downloads failing due to connection errors will now send a bar notification instead of throwing an ErrorHandler dialog.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-07 23:57:18 -05:00
Jeffrey Han
cfd335de88 Merge pull request #39 from fluddokt/omaster
Fixes some sliders with too much control points. / Attempts to load music with incorrect file names. #33
2015-03-07 23:28:28 -05:00
Jeffrey Han
40a800eb76 Changed cached OsuFile loading.
Instead of being loaded individually from the database, OsuFiles are now loaded in batch by traversing the database.  In most cases, this should cause a ~10% loading speed improvement.  Defaults to the previous approach if few OsuFiles are being loaded.

Other changes:
- Don't drop indexes upon batch insertion if few entries are being inserted.
- Trying to increase fetch size with setFetchSize(100).
- Added more parser statuses.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-07 23:24:19 -05:00
fd
421cfad6ad Fixes some sliders with too much control points. 2015-03-07 20:54:16 -05:00
Jeffrey Han
c6041d8cba Added more checks for failed database connections.
Should prevent unnecessary null pointer exceptions if anything goes wrong.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-07 20:39:27 -05:00
fd
64755bbc5c Attempts to load music with incorrect file names. #33 2015-03-07 19:46:56 -05:00
Jeffrey Han
8c24ef97c7 Follow-up to #38: loop tracks on states by default.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-07 19:04:45 -05:00
Jeffrey Han
447fd93e60 Merge pull request #38 from fluddokt/omaster
Next track on trackEnded
2015-03-07 18:43:58 -05:00
Jeffrey Han
5e9d9a491c SQLite optimizations. (addressing #34)
- Added indexes.
- Only call OsuDB.insert() if necessary.
- Drop/recreate indexes for batch inserts.
- Added pragmas for "locking_mode" and "journal_mode".

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-07 18:05:18 -05:00
Jeffrey Han
4718cb9aa5 Follow-up to #37.
- Removed 'currentObject' parameter from HitObject.draw() since it's no longer used.
- Changed "spun out" rpm.
- Formatting changes.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-07 15:38:59 -05:00
fd
11b5c41b46 Next track on trackEnded
(but checks trackended every update...)
Continue playing while minimized(does not fix moving)
start from preview time in songMenu on repeat
2015-03-07 15:31:21 -05:00
Jeffrey Han
f4d17b9148 Merge pull request #37 from fluddokt/SpinnerTest
Spinner Changes
- frame independent spin up/average
- rpm for Auto/SpunOut
- CCW rotation
- fade in
- addition
2015-03-07 15:11:16 -05:00
Jeffrey Han
133608dd43 Follow-up to #31: added more reserved keys.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-07 14:24:26 -05:00
Jeffrey Han
04cca79b46 Merge pull request #31 from ScoreUnder/tweak-remove-key-restriction
Remove restriction from left/right click keys
2015-03-07 14:10:28 -05:00
Jeffrey Han
cf6e87f6f2 Support case-insensitive audio file names. (fixes #33)
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-07 13:13:32 -05:00
fd
75361e21e3 Spinner Changes
frame independent spin up/average
rpm for Auto/SpunOut
CCW rotation
fade in
addition
2015-03-07 13:03:21 -05:00
fd
b13787527a Spinner Changes
frame independent spin up/average
rpm for Auto/SpunOut
CCW rotation
fade in
addition
2015-03-07 12:40:14 -05:00
fd
f4969de438 Spinner Changes
frame independent spin up/average
rpm for Auto/SpunOut
CCW rotation
fade in
addition
2015-03-07 12:36:24 -05:00
Jeffrey Han
078b765143 Added an automatic updater for new releases.
opsu! will now check for updates upon launching, and will prompt the user to download and run a newer version, if available.
- The remote version file is just the filled "version" file, currently located in the gh-pages branch.
- The new version is downloaded to the working directory, and launched with ProcessBuilder.

Related changes:
- Added "file" property (containing the download URL) to "version" file.
- Added maven-artifact dependency for version comparisons.
- Added methods in Downloads class to retrieve the constructor parameters.
- Moved method for showing exit confirmation dialogs into UI.
- Moved method for reading from URLs into Utils.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-07 04:17:19 -05:00
Score_Under
9271e0d473 Disallow escape as click key, move validity checks into Options.java 2015-03-07 04:49:59 +00:00
Score_Under
765aa21dfb Remove restriction from left/right click keys 2015-03-07 04:30:48 +00:00
Jeffrey Han
9138b70a24 Minor GameContainer changes.
Added copy of GameContainer.java:
- updateAndRender() no longer calls Log.error(), and re-throws the original exception as a SlickException.  This prevents errors from being logged twice, and now the relevant one is shown in the error popup (instead of a useless "failure" message).
- getBuildVersion() no longer calls Log.error(), and removed slick build information from "version" file.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-06 19:16:43 -05:00
Jeffrey Han
3df08e5357 Write build information to "version" file and auto-fill error forms.
- Maven version and build date are now written to "res/version".
- The GitHub Issues form is auto-filled with error information if available. (reference: fluddokt/opsu@53fe3d9)

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-06 15:55:15 -05:00
Jeffrey Han
6cd6938ea5 Preload game images directly before a game. (undo 95775d8)
Not noticing any bad effects from this anymore.  The application should load faster again.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-06 14:39:49 -05:00
Jeffrey Han
7fb326d870 Merge pull request #28 from fluddokt/omaster
Attempt to fix jitter by using a higher precision timer.
2015-03-06 02:41:32 -05:00
Jeffrey Han
81601d41aa Implemented various keyboard shortcuts.
- Main menu:
-- 'd': opens downloads menu
-- 'r': plays random track
- Song menu:
-- SHIFT+DEL: opens beatmap deletion menu

Other changes:
- In the main menu, tracks now play from the beginning instead of the preview time.
- Fixed "next page" icon sometimes showing in the downloads menu when a next page didn't exist.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-06 01:29:50 -05:00
Jeffrey Han
0a1b10fbdb Implemented "relax" mod.
Also added a few checks for related "autopilot" mod (probably incomplete).

Fixed the wrong default background being shown in the ranking screen.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-06 00:25:48 -05:00
Jeffrey Han
b80764f3eb Added a DownloadListener interface and more bar notifications.
Notifications are now sent when a download is complete and when new songs are imported in the downloads menu.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-05 15:36:36 -05:00
Jeffrey Han
cf9b22442f Added global F7 and F10 shortcuts.
- F7: cycles through FPS settings.
- F10: toggles mouse enable/disable state during gameplay.

Also added bar notifications for saving/loading checkpoints.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-05 14:40:57 -05:00
Jeffrey Han
235adc539e Extracted UI components from Utils into a separate UI class.
Added draw(), update(), and enter() methods in UI to do all the necessary calls (instead of letting the states handle them).

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-05 13:27:45 -05:00
Jeffrey Han
fb5515efb8 Added bar notifications.
Currently used in main menu music buttons.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-05 12:44:10 -05:00
Jeffrey Han
ebf629d261 Updated to JarSplicePlus v1.1.
Fixed an issue where the META-INF directory was not being copied, causing problems with mp3spi.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-04 23:26:49 -05:00
Jeffrey Han
f515924b8d Added gh-pages link in README.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-04 22:36:48 -05:00
Jeffrey Han
dbc24c403b Added a Slick2d 'version' file to silence the errors.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-04 22:08:40 -05:00
Jeffrey Han
4959510b5d Deleting beatmaps/groups now also deletes them from the cache.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-04 21:45:44 -05:00
Jeffrey Han
3216c4d1ac Minor improvements in tab appearance.
Centered the text and spread out the tabs in the options menu.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-04 21:21:53 -05:00
Jeffrey Han
bf04083ebd Added a beatmap cache database.
- New database ".opsu.db" stores a cached copy of all parsed beatmaps.  All data will be read from this database unless the last modified time of a beatmap file does not match the one in the table.
- OsuParser inserts all new entries to the database in batch after parsing.
- Added *toString()/*fromString() methods for 'breaks', 'timingPoints', and 'combo' fields in OsuFile for use with the database.
- For any database format changes, update the DATABASE_VERSION field in OsuDB.
- Reloading beatmaps (F5) will now clear the beatmap cache.

Related changes:
- Added small DBController class for convenience.
- Changed 'bg' field of OsuFile to only contain the image file name, instead of the full path.
- Deleted printDatabase() method from ScoreDB.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-04 21:03:06 -05:00
Jeffrey Han
5626cd1699 Added a "pop" effect to the combo counter.
Also changed drawSymbolString() and drawFixedSizeSymbolString() methods slightly: coordinates are now floats, and drawSymbolString() takes an 'alpha' argument.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-03-04 01:30:28 -05:00