Game mod refactoring.

- Created "GameMod" enum to handle all mod-related actions and store all related data.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
This commit is contained in:
Jeffrey Han
2014-07-16 16:01:36 -04:00
parent d5b7ff3516
commit 7a187c4e4f
10 changed files with 223 additions and 134 deletions

View File

@@ -19,12 +19,12 @@
package itdelatrisu.opsu.objects;
import itdelatrisu.opsu.GameImage;
import itdelatrisu.opsu.GameMod;
import itdelatrisu.opsu.GameScore;
import itdelatrisu.opsu.MusicController;
import itdelatrisu.opsu.OsuHitObject;
import itdelatrisu.opsu.Utils;
import itdelatrisu.opsu.states.Game;
import itdelatrisu.opsu.states.Options;
import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
@@ -161,7 +161,7 @@ public class Circle {
public boolean update(boolean overlap) {
int trackPosition = MusicController.getPosition();
int[] hitResultOffset = game.getHitResultOffsets();
boolean isAutoMod = Options.isModActive(Options.MOD_AUTO);
boolean isAutoMod = GameMod.AUTO.isActive();
if (overlap || trackPosition > hitObject.time + hitResultOffset[GameScore.HIT_50]) {
if (isAutoMod) // "auto" mod: catch any missed notes due to lag

View File

@@ -19,13 +19,13 @@
package itdelatrisu.opsu.objects;
import itdelatrisu.opsu.GameImage;
import itdelatrisu.opsu.GameMod;
import itdelatrisu.opsu.GameScore;
import itdelatrisu.opsu.MusicController;
import itdelatrisu.opsu.OsuFile;
import itdelatrisu.opsu.OsuHitObject;
import itdelatrisu.opsu.Utils;
import itdelatrisu.opsu.states.Game;
import itdelatrisu.opsu.states.Options;
import java.io.File;
@@ -497,7 +497,7 @@ public class Slider {
int trackPosition = MusicController.getPosition();
int[] hitResultOffset = game.getHitResultOffsets();
int lastIndex = hitObject.sliderX.length - 1;
boolean isAutoMod = Options.isModActive(Options.MOD_AUTO);
boolean isAutoMod = GameMod.AUTO.isActive();
if (!sliderClicked) {
// start circle time passed

View File

@@ -19,13 +19,13 @@
package itdelatrisu.opsu.objects;
import itdelatrisu.opsu.GameImage;
import itdelatrisu.opsu.GameMod;
import itdelatrisu.opsu.GameScore;
import itdelatrisu.opsu.MusicController;
import itdelatrisu.opsu.OsuHitObject;
import itdelatrisu.opsu.SoundController;
import itdelatrisu.opsu.Utils;
import itdelatrisu.opsu.states.Game;
import itdelatrisu.opsu.states.Options;
import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
@@ -154,8 +154,7 @@ public class Spinner {
int result;
float ratio = rotations / rotationsNeeded;
if (ratio >= 1.0f ||
Options.isModActive(Options.MOD_AUTO) ||
Options.isModActive(Options.MOD_SPUN_OUT)) {
GameMod.AUTO.isActive() || GameMod.SPUN_OUT.isActive()) {
result = GameScore.HIT_300;
SoundController.playSound(SoundController.SOUND_SPINNEROSU);
} else if (ratio >= 0.8f)
@@ -190,12 +189,12 @@ public class Spinner {
}
// spin automatically (TODO: correct rotation angles)
if (Options.isModActive(Options.MOD_AUTO)) {
if (GameMod.AUTO.isActive()) {
// "auto" mod (fast)
score.changeHealth(delta / 200f); // maintain health (TODO)
rotate(delta / 20f);
return false;
} else if (Options.isModActive(Options.MOD_SPUN_OUT)) {
} else if (GameMod.SPUN_OUT.isActive()) {
// "spun out" mod (slow)
score.changeHealth(delta / 200f); // maintain health (TODO)
rotate(delta / 32f);