package org.open2jam.game.position; import java.util.Random; import org.open2jam.parsers.Event; import org.open2jam.render.entities.NoteEntity; /** * * @author Thai Pangsakulyanont */ public class XRSpeed implements NoteDistanceCalculator { private final NoteDistanceCalculator base; private double[] values = new double[7]; public XRSpeed(NoteDistanceCalculator base) { this.base = base; Random rnd = new Random(); for(int i = 0; i < 7; i++) { values[i] = rnd.nextDouble(); } } @Override public void update(double now, double delta) { base.update(now, delta); } @Override public double calculate(double now, double target, double speed, NoteEntity noteEntity) { double factor = 1; Event.Channel chan = noteEntity == null ? null : noteEntity.getChannel(); if (chan != null) switch (chan) { case NOTE_1: factor += values[0]; break; case NOTE_2: factor += values[1]; break; case NOTE_3: factor += values[2]; break; case NOTE_4: factor += values[3]; break; case NOTE_5: factor += values[4]; break; case NOTE_6: factor += values[5]; break; case NOTE_7: factor += values[6]; break; } return base.calculate(now, target, speed, noteEntity) * factor; } @Override public String toString() { return "xR-SPEED"; } }