Commit Graph

  • 8e6ecd2326 Removed extra debug code PizzaLovers007 2015-02-13 17:18:48 -0600
  • 6b85354eeb Merge pull request #1 from PizzaLovers007/PizzaLovers007-patch-1 PizzaLovers007 2015-02-13 17:15:43 -0600
  • 548e389724 Completely reworked how the spinner spins PizzaLovers007 2015-02-13 17:12:04 -0600
  • ed2d3058ba Merge pull request #16 from SuperNascher/master Implemented XDG base directory support for Unix-like operating systems. This is disabled by default. To use these directories, uncomment the line in pom.xml that sets the "XDG" system property when packaging opsu!. Jeffrey Han 2015-02-13 15:03:17 -0500
  • 7cc4ff51d0 Follow-up to c6791c4. - Added score management menu for deleting individual scores. - Store generated title string lists in the beatmap menus to prevent performance issues. Jeffrey Han 2015-02-13 03:45:38 -0500
  • c6791c4714 Added new menus, implemented using a generic ButtonMenu state. New menus: beatmap options (erase scores/delete), delete beatmaps (single/all), reload songs. - Pressing F3 or right-clicking in the song menu state will open the beatmap options menu. - Pressing F5 in the song menu now opens a confirmation menu before reloading beatmaps. - Deleted MainMenuExit state, which is replaced by MenuState.EXIT in ButtonMenu. - Decreased Utils.FONT_XLARGE size (to fit in buttons). Jeffrey Han 2015-02-13 02:43:34 -0500
  • 4920508060 Quick fix for song groups with different preview times. Also moved some negative track position checks around to catch more cases. Jeffrey Han 2015-02-12 14:52:51 -0500
  • f6eec5cd6c Follow-up to #15. - Removed the temporary directory (Options.TMP_DIR), which is no longer needed. - Excluded original Slick2D classes that were overridden in pom.xml. - Formatting changes and documentation. Jeffrey Han 2015-02-12 03:52:19 -0500
  • 800014ed4c Merge pull request #15 from fluddokt/omaster Jeffrey Han 2015-02-12 02:47:32 -0500
  • b69ff68d7c Added methods to delete songs and song groups. - OsuGroupList.get().deleteSongGroup() will delete a song group from the list. - OsuGroupList.get().deleteSong() will delete an individual song from the list (must be expanded), and will delete the song group if there are no remaining songs in the group. - If possible, deleted beatmap files are moved to system trash (using JNA); otherwise, they are deleted immediately. This is done through Utils.deleteToTrash(). Jeffrey Han 2015-02-12 02:27:33 -0500
  • a0bf2293cf Clean up and it doesn't throw that slick exception anymore. fd 2015-02-11 22:41:20 -0500
  • 484bb1ba31 Added 48x48dp icon. (by @kouyang) (For Android app launcher icon.) Jeffrey Han 2015-02-11 17:44:20 -0500
  • 99bc944ed6 Minor updates. - Draw the playfield background in the song menu if a background cannot be drawn for the focused beatmap. - Added ScoreDB.deleteScore() method to delete a score from the database. - Added @author tags for curve-related classes (by fluddokt, #12). Jeffrey Han 2015-02-11 02:56:02 -0500
  • 63271c125c Quick fix: rotate spinner circle. (fluddokt/opsu@da475df) Jeffrey Han 2015-02-10 00:26:48 -0500
  • be3b94f5db Prevent downloading songs that are already loaded. (base: fluddokt/opsu/76778f8) - All beatmap set IDs are now stored in a set in OsuGroupList. - OsuParser now checks the directory name for beatmap set IDs if the OsuFile doesn't contain one (for older beatmap formats). Jeffrey Han 2015-02-09 23:22:58 -0500
  • f56c02864b Updates and fixes from fluddokt/opsu@76778f8 and fluddokt/opsu@cf321e9. - Rotate slider ball image along the curve. - Show download speed and time remaining when hovering over the download info button. - Maintain aspect ratio of beatmap background image during gameplay. - Clear beatmap background image cache after reaching OsuFile.MAX_CACHE_SIZE. - Multiply hit circle size by OsuHitObject.getXMultiplier(). - Scale MENU_BUTTON_BG based on SongMenu.MAX_SONG_BUTTONS. - Fixed download search TextField retaining focus even after leaving the downloads menu. - Include Unicode title/artist strings in searches. - Parse x,y beatmap coordinates as floats (instead of integers), and only read Kiai time if present. - Added 1600x1200 resolution. Jeffrey Han 2015-02-09 21:40:38 -0500
  • 08406ac038 Changed some methods in OpenALStreamPlayer to synchornized methods. Seems to work with ogg now too. fd 2015-02-09 21:33:37 -0500
  • 6c7aac53f4 Revert "Revert "Further implementation of "weighted" spinner"" Terrence 2015-02-09 17:58:04 -0600
  • 582af96e12 Revert "Further implementation of "weighted" spinner" Terrence 2015-02-09 17:57:49 -0600
  • 7ec6e81e8f Further implementation of "weighted" spinner Terrence 2015-02-09 17:57:20 -0600
  • 826376a127 Initial Implementation of a "weighted" spinner PizzaLovers007 2015-02-09 17:11:49 -0600
  • 6883e2ab44 MP3 Audio Streaming through modifying some of slick's openal files fd 2015-02-08 23:48:55 -0500
  • 8d00a0f81e Merge pull request #14 from BOHverkill/master Jeffrey Han 2015-02-07 19:29:00 -0500
  • 4fb5f3bb3f Fixed pom.xml Burkhard Hampl 2015-02-07 23:43:31 +0100
  • 29189fddff Changed theme song. New track is "On the Bach" by Jingle Punks, from the YouTube Audio Library (https://www.youtube.com/audiolibrary/music). Jeffrey Han 2015-02-04 03:43:23 -0500
  • c87cc96c07 Updating version to 0.5.0. Jeffrey Han 2015-02-02 01:42:15 -0500
  • b96a20e23f Small fixes. Jeffrey Han 2015-02-02 01:39:19 -0500
  • ec90d6fd03 Beatmap downloader improvements and fixes. Updates: - Added some buttons to downloads menu: clear inactive downloads, import beatmaps, reset search, and show/hide unranked maps. - Small changes to OsuParser, OszUnpacker, and OsuGroupList (mostly adding return values) to allow parsing only newly unpacked beatmaps. - Added alpha fade hover effect to MenuButton, as an alternative to expanding (used for 3-part menu buttons). - Added text rendering fields to MenuButton (also for the 3-part menu buttons). - Added sound effects to downloads menu. Jeffrey Han 2015-02-02 00:15:16 -0500
  • cfc0449ab2 Small follow-up to 70c70fd. - Page back/forward are now expanding buttons instead of static images. - Fixed a mistake in DownloadList. Jeffrey Han 2015-02-01 02:53:01 -0500
  • 70c70fd812 Implemented an internal beatmap downloader (using Bloodcat). The downloads menu can be accessed through the button on the right side of the main menu. The downloader supports searching and concurrent downloads (NOTE: this is limited by the download server!). Double-click any search result to begin downloading it to the SongPacks directory; cancel the download by hitting the red 'x' in the upper-right corner. A confirmation will appear if trying to quit opsu! while downloads are running. Jeffrey Han 2015-02-01 02:10:17 -0500
  • cb5a7d6a4b Added description for game mods. These will appear on the bottom of the screen when hovering over the buttons in the options menu. Jeffrey Han 2015-01-30 03:45:06 -0500
  • 84e463e8fb Added a listener for the end of music tracks. Fixes a bug during gameplay where if the music track ends before the last hit object is processed (esp. spinners), the game would hang. Jeffrey Han 2015-01-29 21:24:21 -0500
  • e93fe25834 Code style cleanup from #12. - Moved all curve-related classes into a new package. - Added some fields and methods to Curve abstract class. - Removed the old (no longer used) Bezier subclass. - Changed Error throwing to ErrorHandler.error() calls. - Formatted code. Jeffrey Han 2015-01-29 20:36:23 -0500
  • 94d7ff37eb Merge pull request #12 from fluddokt/omaster Jeffrey Han 2015-01-29 15:04:44 -0500
  • 6fa8df955f Minor theme song fix. Prevents a bug due to threading where the theme song can still be playing in the song menu (when songs are loaded) if the user clicks fast enough. Jeffrey Han 2015-01-29 03:57:55 -0500
  • baba1540a5 Javadoc fixes. Jeffrey Han 2015-01-29 03:17:53 -0500
  • f0858f657b Display time since achieving recent scores. - Added history icon by Google: https://www.iconfinder.com/icons/326655/ - Draw history icon and elapsed time next to score buttons if they were achieved within 24 hours. Conforming to osu! behavior, the elapsed time is not updated in real-time. Jeffrey Han 2015-01-29 03:05:09 -0500
  • 0165abde56 Many quick bug fixes. - Fixed bug when having "Sudden Death" and Easy "mods" enabled at the same time. Additional "lives" are no longer granted. - Fixed bug where GameMod active states weren't being reset upon restart. - Fixed bug where GameMods were drawn as if inactive when viewing scores. Alpha levels are now only set when drawing the button (i.e. calling GameMod.draw()). - Moved large grade scaling into GameImage, and slightly padded the right side when drawing. Jeffrey Han 2015-01-29 01:50:26 -0500
  • 0e9fd24754 Minor Fixes for beziers angles fd 2015-01-29 01:08:23 -0500
  • 1ddeb3461d Moved ScoreData to separate file and renamed Scores to ScoreDB. Jeffrey Han 2015-01-29 00:56:30 -0500
  • 07f6ef9479 Comments for previous commit fd 2015-01-29 00:37:25 -0500
  • 2007058eb1 Quick fixes. - Fixed a crash when closing the application in the ranking screen when viewing a score. - Fixed a minor bug where OsuGroupList fields were not being erased upon restart. - Dim the track volume by 50% when viewing a score. Jeffrey Han 2015-01-28 20:57:43 -0500
  • ce15f25ca1 Added score-viewing components to the song menu. [Completes 0bd72e7] Added a scrollable score history area in the song menu. Clicking on any score button will open the ranking screen. Jeffrey Han 2015-01-28 19:23:02 -0500
  • 0bd72e731a Save game scores to an SQLite database. [Incomplete!] Implemented basic features (mostly stable). The remaining features are mostly graphical. - Added package org.xerial.sqlite-jdbc. All scores are saved to .opsu_scores.db on table scores after a game completes. - Added "Scores" class to handle all game score data (including database connections). The "Score" subclass encapsulates all database fields. - Added "score viewing" constructor to GameData, for use only in the ranking screen. - Draw the grade of the highest score next to expanded song buttons in the song menu. - Added "bit" and "abbrev" fields to GameMod, used in storing/displaying scores. - Hide the retry/exit buttons in the ranking screen when viewing a score. Jeffrey Han 2015-01-28 03:47:24 -0500
  • 33f2207881 CircumscribedCircle, LinearBezier Curves, multi repeats arrows, CircleColorOrdering fd 2015-01-28 00:30:51 -0500
  • f71b2c25f2 Quick fix: 'Esc' key not properly checked in splash screen. Jeffrey Han 2015-01-27 15:20:03 -0500
  • 71edef2fa9 Fixed server socket being closed after a restart. Prevents a bug where multiple program instances can be run. Jeffrey Han 2015-01-27 05:49:58 -0500
  • 44bdf70c98 Renamed GameScore class to GameData. Makes more sense, since the class is responsible for more than just the score. Jeffrey Han 2015-01-27 03:19:39 -0500
  • ef9e38bf2d Minor scorebar updates. - Support loading scorebar-bg animations. - Slight changes to scaling and positioning of scorebar-bg. This still isn't quite correct (TODO). Jeffrey Han 2015-01-25 18:36:54 -0500
  • 0c1b86de62 Cursor updates. - Supported loading beatmap-skinned cursors. - Moved cursor loading into GameImage. - Removed unnecessary scalings/rotations when drawing. Jeffrey Han 2015-01-24 22:23:49 -0500
  • d2b3249e2c Follow-up to 924f528: small fix. Jeffrey Han 2015-01-23 16:11:10 -0500
  • 924f528881 Don't reset track to preview position unless game is complete. (conforming to osu! behavior) Jeffrey Han 2015-01-23 16:06:57 -0500
  • 423866c222 Replaced GameScore.GRADE_* constants with an enum. Jeffrey Han 2015-01-22 15:12:15 -0500
  • c9e14bfc70 Comment format changes. - Collapsed Javadoc comments for all fields. - OsuFile now has proper Javadoc comments. - Fixed various mistakes with comments. Jeffrey Han 2015-01-22 00:44:45 -0500
  • d6c7476b88 Removed some unnecessary SlickException throwing/catching. Mostly leftovers from moving Image creation to GameImage. Jeffrey Han 2015-01-21 18:56:53 -0500
  • e02cf60312 Added multi-image support to GameImage. - 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. Jeffrey Han 2015-01-21 17:10:31 -0500
  • 131c8a5637 Quick fix: lighting images weren't being reloaded properly. Jeffrey Han 2015-01-21 03:47:47 -0500
  • 873d913424 Quick fix: prevent search from executing on beatmap reload. Jeffrey Han 2015-01-21 03:25:19 -0500
  • ee617c0710 Updating version to 0.4.0. Jeffrey Han 2015-01-21 02:37:02 -0500
  • a48f8bd54d Implemented in-game beatmap reloading. - Press F5 to reload beatmaps in the song menu (resets OsuGroupList, then invokes OSZ unpacker and OsuFile parser). - Many components reused from Splash screen (progress display, 'Esc' interrupt). Jeffrey Han 2015-01-21 01:38:02 -0500
  • 19476993f9 Options state refactoring. - 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. Jeffrey Han 2015-01-20 23:56:10 -0500
  • e2c1f2f937 Small memory optimization: reuse audio File objects in song groups. Each song group references the same audio file probably 100% of the time, so don't create duplicate objects. Jeffrey Han 2015-01-20 22:19:14 -0500
  • 2bc45bec0a Follow-up to f98edf8: better checks for application restart. - Fixes resource reloading when OsuGroupList is empty (i.e. if user has no beatmaps installed). - OsuGroupList is no longer initialized with a class instance; OsuGroupList.create() is called by OsuParser. - Also clear 'lastOsu' field in MusicController.reset(). Fixes theme song not playing on restart if it was the last track played (i.e. if no beatmaps installed). - Call MusicController.reset() last so that more garbage is collected. Jeffrey Han 2015-01-20 19:24:59 -0500
  • f98edf8fc8 Enabled application restarts. - 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. Jeffrey Han 2015-01-20 19:01:18 -0500
  • 3b13cc794b Implemented volume-bg and master volume setting. - 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. Jeffrey Han 2015-01-20 14:52:02 -0500
  • f9c0794693 Save screenshots in a new thread. Use BufferedImage/ImageIO instead of ImageOut (not threadable). Jeffrey Han 2015-01-20 00:54:12 -0500
  • 95775d8e73 Preload game images when program initializes. Reverted earlier change to load images immediately before a game begins, since there is a noticeable lag in some cases. Jeffrey Han 2015-01-18 17:01:13 -0500
  • 53158fd310 Interrupt OsuParser by pressing 'ESC' in Splash state. Allows parsing only a subset of OsuFiles, in case parsing takes too long. Jeffrey Han 2015-01-18 15:26:00 -0500
  • ee17b20b25 Added wrapper around AppGameContainer to catch critical errors. Critical game errors (detected in Game.updateAndRender()) are now passed through ErrorHandler. Note that the actual exception is not displayed in the ErrorHandler window, only the log. Jeffrey Han 2015-01-18 14:29:48 -0500
  • 2f56bca9f7 Small GUI tweaks. - FPS display is now much more subtle. - A couple of main menu tweaks. Jeffrey Han 2015-01-18 12:39:30 -0500
  • d92e67e5f1 More quick fixes. - Minor typo in ErrorHandler. - Prevent more than one music control button in the main menu from being hovered over at once. Jeffrey Han 2015-01-17 00:44:23 -0500
  • f5df00255f Moved track volume dimming into MusicController. - Fixes an issue where the first few milliseconds of the theme song would always play at full volume, even if container is not focused. - Allows easier application to any song. Jeffrey Han 2015-01-16 16:02:02 -0500
  • 31a97fbc5d Minor graphical updates and code cleaning. - Padded game score display, and always display 2 digits in front of the decimal (e.g. 00.00% instead of 0.00%). - Keep map progress circle at a fixed location instead of basing it off the score length. - Moved some track resets (pause + restart at preview) to trigger upon loading the song menu. Fixes weird behaviors when leaving the game state. - Cleaned up trailing whitespace and added missing overrides. Jeffrey Han 2015-01-16 15:44:13 -0500
  • be1ec64f28 Eliminated unneeded calls to Graphics.setColor(). The method creates a new Color object each call, so set color in UnicodeFont.drawString() instead. Jeffrey Han 2015-01-16 14:46:45 -0500
  • 816c9bb659 Quick bug fixes. - Checkpoint loading now works again. (blame: 9e69afa) - Forgot to check for VSync when application initializes. (blame: 97f3aad) - Also clear game data after finishing a checkpoint game. Jeffrey Han 2015-01-16 14:10:42 -0500
  • 09a5979475 Added a button to link to GitHub repository in main menu. GitHub "mark" image is from: https://github.com/logos Jeffrey Han 2015-01-16 13:42:54 -0500
  • b54eb95747 Updated copyright notices for 2015. Jeffrey Han 2015-01-16 12:05:44 -0500
  • 7bd9eba2f5 Added HitObject interface for OsuHitObjects during gameplay. This greatly simplifies object-handling code, and is slightly more time and memory efficient. Jeffrey Han 2015-01-16 03:47:37 -0500
  • bcf1fa301a Implemented mod shortcut keys in options menu. See for details: http://osu.ppy.sh/wiki/Shortcut_Key_Reference#Mods_screen Jeffrey Han 2015-01-16 02:26:13 -0500
  • 38b3621c29 Implemented Ctrl+Enter in song menu (play with "auto" mod). Also made 'Esc' during gameplay return to the song menu immediately if the "auto" mod is active. Jeffrey Han 2015-01-16 02:00:42 -0500
  • 78aabaa43e Implemented Shift+F2 in song menu (undo random map). Jeffrey Han 2015-01-16 01:40:34 -0500
  • 90c10d21da Follow-up to 516e628: Fix resetting game data too soon. Instead of resetting immediately, set a variable in SongMenu to reset data when entering the state. Fixes some weird behaviors, and also allows resetting in more scenarios. Jeffrey Han 2015-01-16 00:36:05 -0500
  • 553f091693 Added ErrorHandler class to handle all critical errors. This mostly replaces the Slick2D Log class for error reporting. Most game errors will now trigger the error popup. Jeffrey Han 2015-01-15 21:55:26 -0500
  • f8dad2889f Added support for multiple GameImage file extensions. Specifically, the main menu background and pause/fail backgrounds now accept JPGs as well as PNGs. Jeffrey Han 2015-01-15 18:16:46 -0500
  • 516e6280c7 Call System.gc() on track changes and game resets. This causes a noticeable drop in memory usage in most cases. Jeffrey Han 2015-01-15 16:47:55 -0500
  • 9db9c2f3ad Add more options to crash popup. Options: "Send Report" (opens GitHub issues and log file), "View Error Log" (opens log file), "Close" (does nothing). Jeffrey Han 2015-01-15 04:16:20 -0500
  • 09d96f3f08 Automatically open the log file when opsu! crashes. - Sends a JOptionPane message dialogue if java.awt.Desktop is supported. Jeffrey Han 2015-01-15 02:47:48 -0500
  • 97f3aad772 Enable VSync when target FPS is 60. Jeffrey Han 2015-01-15 01:52:16 -0500
  • 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. Jeffrey Han 2015-01-15 00:56:30 -0500
  • 03095733df Removed static fields in Game state. Mostly merged from #8 (72e8a7e). Jeffrey Han 2015-01-14 23:57:50 -0500
  • 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. Jeffrey Han 2015-01-14 23:10:19 -0500
  • 05a671e627 Quick fix for countdown displays. (blame: 9e69afa) Jeffrey Han 2015-01-14 22:31:48 -0500
  • 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. Jeffrey Han 2015-01-14 21:48:24 -0500
  • 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. Jeffrey Han 2015-01-13 23:00:09 -0500
  • 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". Jeffrey Han 2015-01-12 21:05:58 -0500
  • 4152af4977 Made OsuGroupList a singleton. (This makes a lot more sense than storing the single pointer in Opsu.groups.) Jeffrey Han 2015-01-11 14:17:33 -0500
  • af8512c080 Moved scattered GameOption code into the enum. Jeffrey Han 2015-01-11 13:05:32 -0500
  • 6f7b2b6554 Moved score multiplier field into GameMod enum. Jeffrey Han 2015-01-11 00:29:26 -0500
  • 5a09689b4c Added mouse hover effects for tabs. Jeffrey Han 2015-01-10 23:14:22 -0500
  • 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. Jeffrey Han 2015-01-10 22:49:23 -0500