Commit Graph

248 Commits

Author SHA1 Message Date
yugecin
5989c50456 fix #94 2016-12-07 13:35:29 +01:00
yugecin
601280cfa3 increase curve density for more beautiful sliders 2016-12-05 18:45:30 +01:00
yugecin
d5296d51fa fix shrinking sliders for fallback sliders 2016-12-05 00:35:11 +01:00
yugecin
766e3657c7 hide sliderticks that the ball already passed 2016-12-04 22:16:25 +01:00
yugecin
8171cfdec6 also use splice for non-merging sliders instead of reverse 2016-12-04 22:03:09 +01:00
yugecin
0eb09d4e0d shrink the slider faster 2016-12-04 21:53:10 +01:00
yugecin
a3af1c71b8 attemt to fix shrinking sliders with odd amount of repeats with merged slider rendering 2016-12-04 21:52:15 +01:00
yugecin
50f475e0f7 correct shrinking sliders for slider with odd amount of repeats 2016-12-04 21:12:22 +01:00
yugecin
00fcf0ebc1 add options for slider styles and make it all work 2016-12-04 17:35:55 +01:00
yugecin
06445e59c4 fix slider leftovers being drawn 2016-12-03 20:13:58 +01:00
yugecin
580f11a3d3 draw sliders on correct times 2016-12-03 19:11:36 +01:00
yugecin
022035dce5 Merge branch 'knorkesliders' into knorkemergingsliders
# Conflicts:
#	src/itdelatrisu/opsu/objects/Slider.java
2016-12-03 18:54:09 +01:00
Matteo Signer
9991364077 Improve slider rendering.
Significantly improves looks and performance of sliders, especially on
shared memory graphics models like integegrated GPUs.
No longer renders using cones and a framebuffer, instead renders quads
and triangles for curves, using much less geometry.
2016-12-03 18:46:13 +01:00
yugecin
89245d9976 first attempt at merging sliders 2016-12-03 18:39:20 +01:00
yugecin
08834471fc first attemt at shrinking sliders 2016-12-03 18:18:18 +01:00
yugecin
e025fd70d5 make reversearrows expand more like in osu! (close #50) 2016-11-20 13:05:37 +01:00
yugecin
e2e1ee2dfc fix first slidertick after repeats not working 2016-11-18 01:09:04 +01:00
yugecin
d3552bc3ad add followcircle expand on ticks (close #49) 2016-11-18 00:50:20 +01:00
yugecin
8d9e7aba94 Merge branch 'sb' 2016-11-13 01:39:41 +01:00
yugecin
cf14bca4a5 prevent hue shifting when hue inc or obj color override is changed by sb 2016-11-13 01:39:30 +01:00
yugecin
992655ff10 only show arrow when slider has been clicked initially 2016-11-13 01:19:59 +01:00
yugecin
711fd0a03e fix object color override for sb 2016-11-13 00:58:50 +01:00
yugecin
3dc0ad8c68 get tick points from slider 2016-11-12 18:25:44 +01:00
yugecin
6a5ba7cd9e add option to force fallback sliders (#24) 2016-10-15 00:09:52 +02:00
yugecin
99c5f9b407 New hidden slider style 2016-10-04 13:01:24 +02:00
yugecin
3a30087929 Fix selecting "IAHN - Transform [Aspire]" map crashing the game (#5) 2016-10-01 21:21:33 +02:00
yugecin
f15ead1476 better sliderball scale 2016-10-01 15:57:41 +02:00
yugecin
9d6c413eb7 Implement circleslowsliders 2016-10-01 14:46:39 +02:00
yugecin
58b22cadd6 remove debug println 2016-10-01 13:14:58 +02:00
yugecin
9dc566ca4e always use white reversearrows 2016-10-01 13:14:31 +02:00
yugecin
70d006b645 make reversearrows scale to the bpm 2016-10-01 13:12:02 +02:00
yugecin
ea45767fa1 Onyl show mirrored object hitresults if autopilot is active >.< 2016-10-01 12:39:52 +02:00
yugecin
eee65a589e fix first object movement 2016-10-01 11:34:32 +02:00
yugecin
5a899e29cb don't play the hitsounds twice >.< 2016-10-01 00:25:55 +02:00
yugecin
230dd6d98f put common stuff in utils 2016-09-30 23:56:07 +02:00
yugecin
ad370fd8fb Show mirrored result for slider ends 2016-09-30 23:53:48 +02:00
yugecin
4409d538fd Show mirrored results for hitcircles 2016-09-30 23:51:28 +02:00
yugecin
b1d69cf9f4 Instantly show hitresult on slider initial circle, don't show the other end when finishing. Also show results in mirrored circles 2016-09-30 23:48:02 +02:00
yugecin
2f5f2a610d add opposite combo color as override option 2016-09-30 21:32:24 +02:00
yugecin
ae9bdcd68f implement sliderballtint 2016-09-30 21:11:16 +02:00
yugecin
f6b791cf25 Option to apply last object color to cursor 2016-09-30 19:38:02 +02:00
yugecin
add5e96af1 Options to use object color overrides 2016-09-30 19:05:53 +02:00
yugecin
46e2b7069f option for rgb objs 2016-09-30 09:17:39 +02:00
yugecin
0d77d7f56a remove debug println, whoops 2016-09-30 09:13:10 +02:00
yugecin
0c16802523 use shifthue 2016-09-30 09:12:54 +02:00
yugecin
e126edbff7 shift hue on each new object 2016-09-30 09:09:14 +02:00
yugecin
fa57e63a2f option to hide approach circles 2016-09-29 23:34:11 +02:00
yugecin
0d89c2612d attempt to make sliderbody look better 2016-09-29 23:22:41 +02:00
yugecin
923f8dcb49 black sliders 2016-09-29 22:45:16 +02:00
yugecin
d3af3c17d0 move shit to utils 2016-09-29 22:41:56 +02:00
yugecin
33895b24c8 mirrored objects +180° hue 2016-09-29 21:55:23 +02:00
yugecin
9a73ab23e9 render mirrored 2016-09-29 21:40:42 +02:00
yugecin
72aa856818 don't draw sliderend 2016-09-28 22:03:45 +02:00
yugecin
43548fa058 implement lazy sliders 2016-09-27 22:23:14 +02:00
yugecin
eb696077a2 we want to dance 2016-09-27 21:29:03 +02:00
yugecin
857118accb update forgotten dummyobj 2016-09-27 19:56:02 +02:00
yugecin
b842a564f7 add isSpinner, isCircle etc in GameObject 2016-09-27 18:26:53 +02:00
yugecin
e7e33cd406 put more information in gameobject 2016-09-27 18:17:53 +02:00
MatteoS
78511737ce Draw reversing arrow in black if the slider is lightly colored 2015-11-21 15:30:25 +01:00
MatteoS
3e285e05fc Add falling game objects on fail 2015-11-18 22:29:18 +01:00
Jeffrey Han
14496050ea Minor style changes from #134.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-09-18 16:02:19 -04:00
Peter Tissen
131138ea8c Snaking sliders initial implementation.
Draws curves in a range from 0 to x (where x is a value between 0 and 1) while blending them in (if enabled in the options)
Cache a unit-cone once and re-use that with scaling and translation instead of generating it each time again.
This is more for readability than performance (since presumably feeding it mostly constants like before would be faster)

Only draws the cones in the curve once if possible
(only possible if consective calls to draw with the intervals x_1 before x_2 are made and [0, x_1] [0, x_2] with x_1 < x_2 holds true)

minor refactoring and cleanup

Omg my code is such a mess. I feel like I've committed a crime against humanity by just randomly putting that
random vbo id into the class called "Rendertarget". But there's really no good place for it now (that has a way to clean it up).
But if "Rendertarget" will ever be used by anything else but the sliders I'm gonna pull that out.

added blending in for return arrows and ticks
2015-09-18 20:21:37 +02:00
Jeffrey Han
01fb9c50c9 Replace xy float[] arrays with Vec2f (mostly in game objects).
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-09-05 12:53:42 -05:00
Jeffrey Han
c516d93d1e Check for parallel vectors before constructing a CircumscribedCircle.
If the check fails, use a LinearBezier instead. (e.g. in map 45471).

Moved slider time and curve calculations into HitObject so that they can be reused.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-09-02 10:51:52 -05:00
Jeffrey Han
d360b73bf5 Specify whether Curve uses scaled or unscaled coordinates.
Unscaled coordinates will be used in a future commit (hopefully).

Added a normalize() method to Vec2f.

Throw RuntimeExceptions for any Curve initialization errors; the game would crash anyway, and this way the objects can be substituted for DummyObjects for a graceful failure.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-09-02 01:47:15 -05:00
Jeffrey Han
fdd70a81c4 Removed leftover/unused 'color' parameter in Curve constructor.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-09-01 21:57:37 -05:00
Jeffrey Han
df3e662865 Marked a couple more members as 'final'. (continuation of 441bb95)
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-08-31 22:54:35 -05:00
Jeffrey Han
8892973d98 Now using official formulas for circle diameter and timing offsets.
The previous formulas were extremely close, so you shouldn't notice any gameplay differences at all.

Circle diameter:
- Previously: 104 - (CS * 8)
- Now: 108.848 - (CS * 8.9646)

Timing offsets: added 1.5ms to 300, 100, and 50 hit result offsets.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-08-30 19:01:40 -05:00
Jeffrey Han
34c7942f4b Fixed "Hidden" mod timing issues. (fixes #121)
This introduces more accurate timing formulas associated with the "Hidden" mod (previously, in #115, these values were hardcoded).  The values seem somewhat close to the values in osu!, but were not extensively tested.

Also set an upper bound on the fade in time for hit objects proportional to the approach time, or else the timing values in the "Hidden" mod would be too inconsistent.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-08-28 21:12:47 -05:00
Jeffrey Han
b54886a379 Follow-up to #126.
- Fix the XDG directory flag that got removed with JarSplice. To enable XDG directories, set the 'Use-XDG' property in either build file to 'true'.
- Always re-build jars in the Gradle script (disable "up to date" for the task).
- Delete JarSplicePlus.jar since it's no longer being used.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-08-27 14:14:04 -05:00
Lemmmy
dea0104c4d Added the Gradle build system and added a new native loader 2015-08-27 15:50:36 +01:00
Szunti
017150233b Rewrote shaders for GLSL 110 (openGL2.0). 2015-08-24 22:18:11 +02:00
Jeffrey Han
b83d6be5fd Clarified GameImage "skinnable" field as "beatmap-skinnable".
Renamed some methods and modified comments to avoid this confusion, as game skins were implemented much later than beatmap skins.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-08-23 20:41:09 -05:00
Jeffrey Han
ae149a61f6 HP is now drained while holding sliders. (fixes #103)
Slider ticks now give HP, and the HP for SLIDER30 results is doubled.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-08-20 21:24:58 -05:00
Jeffrey Han
91f07855a7 Moved all Utils.COLOR_* into new class opsu.ui.Colors.*.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-08-20 20:02:23 -05:00
Peter Tissen
f0b87c99ab Lower GLSL version requirement
I didn't really use any of the newer features anyway.
This should accomodate open source drivers that use older versions of MESA.
2015-08-13 11:28:04 +02:00
Jeffrey Han
0909377d14 Follow-up to #115: some fixes and whitespace changes.
- Hide the spinner approach circle instead of the spinner circle.
- Show the slider ball.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-08-08 19:15:49 -05:00
MatteoS
a13ea9308d Corrections for 'hidden' mod 2015-08-09 01:20:45 +02:00
MatteoS
34356d9c08 Implement 'hidden' game mod 2015-08-08 21:12:02 +02:00
MatteoS
940e9baa41 Correct detection of GLSL version for curve rendering 2015-08-08 14:43:56 +02:00
Jeffrey Han
c0b3da37c2 Changed more messy animations to use AnimatedValue.
Also finally refactored the main menu logo controller code...

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-08-06 00:53:30 -05:00
Jeffrey Han
05c7ac0a02 Minor follow-up to #108.
Set minimum OpenGL version for mmsliders to 3.0 (from 3.2) and removed an unused variable.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-07-09 11:59:53 -05:00
Jeffrey Han
d860a30aed Follow-up to #99.
- Many code style changes.
- Don't increment combo if missing the last slider circle.
- Added player name in ranking screen.
- Don't show null/default player names.
- Only import replays with .osr extension.
- Display loading status for importing replays.
- Moved MD5InputStreamWrapper to package "opsu.io".

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-06-29 19:22:38 -05:00
Jeffrey Han
7d08a7d391 Merge pull request #99 from fluddokt/ReplayTest
Replay importing, spinner fixes (fixes #67), replay seeking, in-place MD5 calculation, pitch change time sync (fixes #86).
2015-06-28 21:14:10 -05:00
fd
55628038fe Restores drainRate
Single file read md5

pitch change synctime
2015-06-22 01:14:36 -04:00
Jeffrey Han
392df79596 Properly check if new slider rendering is supported. (#98)
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-06-21 21:32:00 -05:00
fd
df07c62609 Merge remote-tracking branch 'org/master' into ReplayTest
Conflicts:
	src/itdelatrisu/opsu/GameData.java
	src/itdelatrisu/opsu/states/Game.java
2015-06-21 21:36:44 -04:00
fd
3675a25c44 Spinner Test 3
Clean up
2015-06-21 19:45:38 -04:00
Jeffrey Han
81d9421d74 Score formula update - still very wrong, but slightly closer. (see #43)
Added the "difficulty multiplier" as given by the osu! wiki.  Please note that this will invalidate all of your saved scores.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-06-14 11:59:12 -05:00
fd
038a5d5779 WIPTest Merge Fixes 2015-06-14 12:29:15 -04:00
fd
fd3f7fdabe Merge remote-tracking branch 'org/master' into ReplayTest
Conflicts:
	src/itdelatrisu/opsu/GameData.java
	src/itdelatrisu/opsu/Options.java
	src/itdelatrisu/opsu/OsuFile.java
	src/itdelatrisu/opsu/OsuGroupList.java
	src/itdelatrisu/opsu/OsuHitObject.java
	src/itdelatrisu/opsu/OsuParser.java
	src/itdelatrisu/opsu/UI.java
	src/itdelatrisu/opsu/db/OsuDB.java
	src/itdelatrisu/opsu/objects/Circle.java
	src/itdelatrisu/opsu/objects/HitObject.java
	src/itdelatrisu/opsu/objects/Slider.java
	src/itdelatrisu/opsu/objects/Spinner.java
	src/itdelatrisu/opsu/states/Game.java
	src/itdelatrisu/opsu/states/Splash.java
2015-06-13 20:28:30 -04:00
fd
40e67cedc9 Spinner Test2
Improves Score accuracy
(still mostly wrong)

inital replay seek
2015-06-13 18:35:30 -04:00
Jeffrey Han
b1b1664e11 Follow-up to #91.
Pass the border color into CurveRenderState instead of determining it there; store the color as a static field in Curve (since it shouldn't change per-beatmap).

Also removed the leftover FrameBufferCache warning from #64.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-06-08 16:42:54 -04:00
Jeffrey Han
b6f208a47d Follow-up to #64.
- Removed NEW_SLIDER option, and use the skin "SliderStyle" instead.  Uses the new style by default, unless STYLE_PEPPYSLIDER is specified.
- Check if OpenGL 3.0 is supported before trying to draw new style sliders.
- Fixed compilation warnings; removed unneeded fields and imports.
- Filled in some missing Javadocs.
- Style changes.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-06-08 15:02:28 -04:00
Peter Tissen
2970972456 pass screen size in instead of polling it later
and add some comments
2015-06-08 15:52:37 +02:00
Peter Tissen
41c7825728 New optional slider style
New slider rendering works by rendering the slider to an
offscreen buffer

Add CurveRenderState.java and FrameBufferCache.java that were forgotten in the last commit
2015-06-08 15:52:06 +02:00
Jeffrey Han
c1b38b2306 Skin options: HitCircleOverlayAboveNumber, LayeredHitSounds.
Also includes a cursor fix: beatmap-skinned cursors are now always treated like new-style cursors (as in osu!), and no longer render cursormiddle unless also skinned.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-05-25 05:33:12 -04:00
Jeffrey Han
b804a4d154 Skin options: CursorRotate, CursorExpand, SpinnerFadePlayfield, CursorTrailRotate, ComboBurstRandom, Combo[1-8], SongSelect(Active|Inactive)Text.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-05-24 22:17:45 -04:00
Jeffrey Han
250f7acc93 Continuation of 53c79c5 - HitObject name changes.
Attempts to eliminate any confusion between OsuHitObject (raw, parsed hit objects) and HitObject (interface for game object types).
- Renamed "HitObject" interface to "GameObject", since these objects are specific to gameplay.
- Renamed "OsuHitObject" to "HitObject", since these objects are primarily containers for parsed data.

Sorry if the name-swapping is confusing; these should be better names in the long run.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-05-16 21:42:03 -04:00
Jeffrey Han
53c79c5d85 Major refactoring - now using far more logical class names.
- Renamed "OsuFile" to "Beatmap".  All related variables and methods with "osu" have also been renamed to "beatmap" (or variants of each).
- Renamed "OsuGroupNode" to "BeatmapSetNode".  Avoids confusion since groups are identified by a "set ID", not a "group ID".
- Renamed "OsuGroupList" to "BeatmapSetList", for the same reason as above.
- Renamed "OsuDB" to "BeatmapDB", for the same reason as above.
- Moved classes directly related to parsed beatmaps (Beatmap, BeatmapSetList, BeatmapSetNode, OsuHitObject, and TimingPoint) into a new "beatmap" package.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
2015-05-16 21:25:19 -04:00