Skip to content

Commit

Permalink
Add: Accuracy Indicator
Browse files Browse the repository at this point in the history
  • Loading branch information
LittleYang0531 committed Oct 20, 2024
1 parent a7b4516 commit a21487f
Show file tree
Hide file tree
Showing 27 changed files with 426 additions and 68 deletions.
47 changes: 41 additions & 6 deletions engine/configuration/options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,17 @@ class Options {
int Speed = 2; // Supported
int Hidden = 3; // Supported
int AutoSFX = 4; // Supported
int SplitLine = 5; // Supported
int SyncLine = 6; // Supported
int LockAspectRatio = 7; // Supported
int ExtraWidth = 8; // Supoorted
int StageOpacity = 9; // Supported
int JudgeType = 10; // Supported
int SplitRandom = 5;
int SplitLine = 6; // Supported
int SyncLine = 7; // Supported
int LockAspectRatio = 8; // Supported
int ExtraWidth = 9; // Supoorted
int StageOpacity = 10; // Supported
int JudgeType = 11; // Supported
int Accuracy = 12; // Supported
int SonolusCombo = 13; // Supported
int SonolusJudgment = 14; // Supported
int Lightweight = 15;
}Options;

auto options = defineOptions<class Options>({
Expand Down Expand Up @@ -58,6 +63,12 @@ auto options = defineOptions<class Options>({
standard: 0,
type: OptionType.Toggle,
def: 0
}, {
name: "Split Random Fall (not implement yet)",
scope: Scope,
standard: 0,
type: OptionType.Toggle,
def: 0,
}, {
name: "Split Line Visibility",
scope: Scope,
Expand Down Expand Up @@ -110,5 +121,29 @@ auto options = defineOptions<class Options>({
"GREAT and below",
"OFF"
}
}, {
name: "Show Accuracy",
scope: Scope,
standard: 0,
type: OptionType.Toggle,
def: 0,
}, {
name: "Use Sonolus Combo",
scope: Scope,
standard: 0,
type: OptionType.Toggle,
def: 0,
}, {
name: "Use Sonolus Judgment",
scope: Scope,
standard: 0,
type: OptionType.Toggle,
def: 0,
}, {
name: "Lightweight Particle",
scope: Scope,
standard: 0,
type: OptionType.Toggle,
def: 0,
}
});
50 changes: 39 additions & 11 deletions engine/constants.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ double comboNormal6Ratio = 91.0 / 124.0; // 普通 combo 6 比例
double comboNormal7Ratio = 91.0 / 119.0; // 普通 combo 7 比例
double comboNormal8Ratio = 90.0 / 124.0; // 普通 combo 8 比例
double comboNormal9Ratio = 90.0 / 124.0; // 普通 combo 9 比例
double comboNormalPercentRatio = 27.0 / 28.0;// 普通 combo % 比例
double comboNormalPointRatio = 1; // 普通 combo . 比例
double comboFCRatio = 154.0 / 37.0; // FC combo 文字比例
double comboFC0Ratio = 89.0 / 124.0; // FC combo 0 比例
double comboFC1Ratio = 89.0 / 119.0; // FC combo 1 比例
Expand All @@ -53,6 +55,8 @@ double comboFC6Ratio = 91.0 / 124.0; // FC combo 6 比例
double comboFC7Ratio = 91.0 / 119.0; // FC combo 7 比例
double comboFC8Ratio = 90.0 / 124.0; // FC combo 8 比例
double comboFC9Ratio = 90.0 / 124.0; // FC combo 9 比例
double comboFCPercentRatio = 27.0 / 28.0; // FC combo % 比例
double comboFCPointRatio = 1; // FC combo . 比例
double comboAPRatio = 168.0 / 48.0; // AP combo 文字比例
double comboAP0Ratio = 118.0 / 148.0; // AP combo 0 比例
double comboAP1Ratio = 118.0 / 148.0; // AP combo 1 比例
Expand All @@ -64,6 +68,8 @@ double comboAP6Ratio = 118.0 / 148.0; // AP combo 6 比例
double comboAP7Ratio = 118.0 / 148.0; // AP combo 7 比例
double comboAP8Ratio = 118.0 / 148.0; // AP combo 8 比例
double comboAP9Ratio = 118.0 / 148.0; // AP combo 9 比例
double comboAPPercentRatio = 28.0 / 30.0; // AP combo % 比例
double comboAPPointRatio = 1; // AP combo . 比例
double comboTextHeight = 0.05; // combo 文字高度
double comboAPTextHeight = 0.066; // AP combo 文字高度
double comboTextDistance = 0.015; // combo 文字间距
Expand All @@ -72,13 +78,27 @@ double comboNumberHeight = 0.2; // combo 数字高度
double comboAPNumberHeight = 0.238; // AP 数字高度
double comboNumberDistance = 0.0; // combo 数字间距
double comboAPNumberDistance = -0.048; // AP combo 数字间距
double stageWidth = 0.7; // 单个舞台宽度
double stageHeight = 2.0; // 单个舞台高度
double stageFullWidth = stageWidth + 0.3; // 单个舞台占有宽度
double stageTimelineWidth = stageWidth + 0.2; // 时间线宽度
double stageTimeLength = 2.0; // 单个舞台容纳时间
double adjustDistance = 0.002; // 按键微调距离
double noteCountDistance = 10; // 按键计数长度
double comboNumberHeight2 = 0.1; // combo 数字高度 2
double comboAPNumberHeight2 = 0.119; // AP 数字高度 2
double comboNumberDistance2 = 0.0; // combo 数字间距 2
double comboAPNumberDistance2 = -0.024; // AP combo 数字间距 2
double comboNumberHeight3 = 0.05; // combo 数字高度 3
double comboAPNumberHeight3 = 0.059; // AP 数字高度 3
double comboNumberDistance3 = 0.0; // combo 数字间距 3
double comboAPNumberDistance3 = -0.012; // AP combo 数字间距 3
double comboPointHeight = 0.025; // combo . 高度
double comboAPPointHeight = 0.029; // AP . 高度
double comboPercentHeight = 0.05; // combo % 高度
double comboAPPercentHeight = 0.059; // AP % 高度
double comboAccuracyDistance = 0.045; // combo 完成度距离
double comboAPAccuracyDistance = 0.025; // AP 完成度距离
double stageWidth = 0.7; // 单个舞台宽度
double stageHeight = 2.0; // 单个舞台高度
double stageFullWidth = stageWidth + 0.3; // 单个舞台占有宽度
double stageTimelineWidth = stageWidth + 0.2;// 时间线宽度
double stageTimeLength = 2.0; // 单个舞台容纳时间
double adjustDistance = 0.002; // 按键微调距离
double noteCountDistance = 10; // 按键计数长度
double noteBorderPercent = 0.02; // note 边框比例 (相对于 Stage 大小)
#if play || watch
double noteHeight = 85.0 / 640.0; // note 高度
Expand Down Expand Up @@ -110,12 +130,17 @@ let extraWidth = LevelOption.get(Options.ExtraWidth);
let levelSpeed = LevelOption.get(Options.Speed);
let opacity = LevelOption.get(Options.StageOpacity);
let judgeType = LevelOption.get(Options.JudgeType);
let showAccuracy = LevelOption.get(Options.Accuracy);
let sonolusCombo = LevelOption.get(Options.SonolusCombo);
let sonolusJudgment = LevelOption.get(Options.SonolusJudgment);
let lightweight = LevelOption.get(Options.Lightweight);
#elif preview
let mirror, speed, hidden, splitRandom, splitLine, syncLine, lockAspectRatio, extraWidth, levelSpeed, opacity, judgeType;
let mirror, speed, hidden, splitRandom, splitLine, syncLine, lockAspectRatio, extraWidth;
let levelSpeed, opacity, judgeType, showAccuracy, sonolusCombo, sonolusJudgment, lightweight;
#endif

let hasJudgment = HasSkinSprite(Sprites.JudgePerfectPlus);
let hasCombo = HasSkinSprite(Sprites.ComboNormalText);
let hasJudgment = HasSkinSprite(Sprites.JudgePerfectPlus) && !sonolusJudgment;
let hasCombo = HasSkinSprite(Sprites.ComboNormalText) && !sonolusCombo;

#if play || watch
class stage {
Expand Down Expand Up @@ -202,11 +227,14 @@ Variable<LevelMemoryId> comboStatus;
Variable<LevelMemoryId> lastNoteId;
Variable<LevelMemoryId> lastUpdatedId;
Variable<LevelMemoryId> firstComboTime;
Variable<LevelMemoryId> totalAccuracy;
Variable<LevelMemoryId> currentAccuracy;
let duration, noteCount, noteId;
#elif preview
Variable<PreviewDataId> duration; // 谱面时长
Variable<PreviewDataId> noteCount; // note 数量
Variable<EntitySharedMemoryId> noteId; // note 编号
Array<TemporaryMemoryId, let> splitLineMemory(16);
let currentJudge, currentJudgeStartTime, currentJudgeDeltaTime, comboNumber, comboStatus, lastNoteId, lastUpdatedId, firstComboTime;
let currentJudge, currentJudgeStartTime, currentJudgeDeltaTime, comboNumber, comboStatus;
let lastNoteId, lastUpdatedId, firstComboTime, totalAccuracy, currentAccuracy;
#endif
2 changes: 2 additions & 0 deletions engine/play/FlickNote.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ class FlickNote : public Archetype {
inputTimeMax = beat + judgment.bad + RuntimeEnvironment.get(3);
activate = 0;
played = false;
totalAccuracy = totalAccuracy + 1.01;
currentAccuracy = currentAccuracy + 1.01;
EntityInput.set(1, judgment.bad);
IF (autoSFX) PlayScheduled(Clips.Scratch, beat, minSFXDistance); FI
return VOID;
Expand Down
3 changes: 3 additions & 0 deletions engine/play/Initialization.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,9 @@ class Initialization: public Archetype {
buckets[12].set(-1 * judgment.perfect * 1000, judgment.perfect * 1000, -1 * judgment.great * 1000, judgment.great * 1000, -1 * judgment.good * 1000, judgment.good * 1000);
// });
EntityDespawn.set(0, 1);

comboNumber = 0; comboStatus = 0;
totalAccuracy = 0; currentAccuracy = 0;
return VOID;
}

Expand Down
134 changes: 130 additions & 4 deletions engine/play/Stage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ class Stage: public Archetype {
FUNCBEGIN
IF (comboNumber == 0) Return(0); FI
let comboHeight = If(comboStatus <= Sprites.JudgePerfect, comboAPNumberHeight, comboNumberHeight);
let comboDistance = If(comboStatus <= Sprites.JudgePerfect, comboAPNumberDistance, comboNumberDistance);
let comboDistance = If(comboStatus <= Sprites.JudgePerfect, comboAPNumberDistance, comboNumberDistance) * ui.comboConfiguration.scale;
let comboHeight2 = If(comboStatus <= Sprites.JudgePerfect, comboAPTextHeight, comboTextHeight);
let comboDistance2 = If(comboStatus <= Sprites.JudgePerfect, comboAPTextDistance, comboTextDistance);
let comboDistance2 = If(comboStatus <= Sprites.JudgePerfect, comboAPTextDistance, comboTextDistance) * ui.comboConfiguration.scale;
let status = If(comboStatus <= Sprites.JudgePerfect, 0, If(comboStatus <= Sprites.JudgeGreat, 1, 2));
let H = comboHeight * ui.comboConfiguration.scale;
let H2 = comboHeight2 * ui.comboConfiguration.scale;
Expand Down Expand Up @@ -110,14 +110,140 @@ class Stage: public Archetype {
return VOID;
}

SonolusApi drawAccuracy() {
FUNCBEGIN
let a = currentAccuracy / totalAccuracy * 101;
let b = Floor(a), c = a - Floor(a);
let scale = ui.comboConfiguration.scale;
let accuracyHeight = If(comboStatus <= Sprites.JudgePerfect, comboAPNumberHeight2, comboNumberHeight2);
let accuracyDistance = If(comboStatus <= Sprites.JudgePerfect, comboAPNumberDistance2, comboNumberDistance2) * scale;
let accuracyHeight2 = If(comboStatus <= Sprites.JudgePerfect, comboAPNumberHeight3, comboNumberHeight3);
let accuracyDistance2 = If(comboStatus <= Sprites.JudgePerfect, comboAPNumberDistance3, comboNumberDistance3) * scale;
let pointHeight = If(comboStatus <= Sprites.JudgePerfect, comboAPPointHeight, comboPointHeight) * scale;
let percentHeight = If(comboStatus <= Sprites.JudgePerfect, comboAPPercentHeight, comboPercentHeight) * scale;
let distance = If(comboStatus <= Sprites.JudgePerfect, comboAPAccuracyDistance, comboAccuracyDistance) * scale;
let status = If(comboStatus <= Sprites.JudgePerfect, 0, If(comboStatus <= Sprites.JudgeGreat, 1, 2));
var W = -1 * accuracyDistance, tmp = b;
WHILE (tmp) {
let v = tmp % 10;
W = W + accuracyHeight * scale * Switch(v, {
{0, SwitchInteger(status, { comboAP0Ratio, comboFC0Ratio, comboNormal0Ratio })},
{1, SwitchInteger(status, { comboAP1Ratio, comboFC1Ratio, comboNormal1Ratio })},
{2, SwitchInteger(status, { comboAP2Ratio, comboFC2Ratio, comboNormal2Ratio })},
{3, SwitchInteger(status, { comboAP3Ratio, comboFC3Ratio, comboNormal3Ratio })},
{4, SwitchInteger(status, { comboAP4Ratio, comboFC4Ratio, comboNormal4Ratio })},
{5, SwitchInteger(status, { comboAP5Ratio, comboFC5Ratio, comboNormal5Ratio })},
{6, SwitchInteger(status, { comboAP6Ratio, comboFC6Ratio, comboNormal6Ratio })},
{7, SwitchInteger(status, { comboAP7Ratio, comboFC7Ratio, comboNormal7Ratio })},
{8, SwitchInteger(status, { comboAP8Ratio, comboFC8Ratio, comboNormal8Ratio })},
{9, SwitchInteger(status, { comboAP9Ratio, comboFC9Ratio, comboNormal9Ratio })}
}) + accuracyDistance;
tmp = Floor(tmp / 10);
} DONE
var W1 = W;
W = W + pointHeight * SwitchInteger(status, { comboAPPointRatio, comboFCPointRatio, comboNormalPointRatio });
tmp = c; W = W - accuracyDistance2;
FOR (i, 0, 4, 1) {
tmp = tmp * 10;
var v = Floor(tmp);
tmp = tmp - v;
W = W + If(i >= 2, accuracyHeight2, accuracyHeight) * scale * Switch(v, {
{0, SwitchInteger(status, { comboAP0Ratio, comboFC0Ratio, comboNormal0Ratio })},
{1, SwitchInteger(status, { comboAP1Ratio, comboFC1Ratio, comboNormal1Ratio })},
{2, SwitchInteger(status, { comboAP2Ratio, comboFC2Ratio, comboNormal2Ratio })},
{3, SwitchInteger(status, { comboAP3Ratio, comboFC3Ratio, comboNormal3Ratio })},
{4, SwitchInteger(status, { comboAP4Ratio, comboFC4Ratio, comboNormal4Ratio })},
{5, SwitchInteger(status, { comboAP5Ratio, comboFC5Ratio, comboNormal5Ratio })},
{6, SwitchInteger(status, { comboAP6Ratio, comboFC6Ratio, comboNormal6Ratio })},
{7, SwitchInteger(status, { comboAP7Ratio, comboFC7Ratio, comboNormal7Ratio })},
{8, SwitchInteger(status, { comboAP8Ratio, comboFC8Ratio, comboNormal8Ratio })},
{9, SwitchInteger(status, { comboAP9Ratio, comboFC9Ratio, comboNormal9Ratio })}
}) + If(i >= 1, accuracyDistance2, accuracyDistance);
} DONE
W = W + percentHeight * SwitchInteger(status, { comboAPPercentRatio, comboFCPercentRatio, comboNormalPercentRatio });
W = W + accuracyDistance - accuracyDistance2 / 2;
let cx = screen.w * 0.4;
var R = cx - W / 2 + W1;
var L = R + accuracyDistance / 2;
let T = 0.2 + If(
comboStatus <= Sprites.JudgePerfect,
comboAPNumberHeight / 2.0 + comboAPTextDistance + comboAPTextHeight,
comboNumberHeight / 2.0 + comboTextDistance + comboTextHeight
) * scale + distance;
tmp = b;
WHILE (tmp) {
let v = tmp % 10;
let w = accuracyHeight * scale * Switch(v, {
{0, SwitchInteger(status, { comboAP0Ratio, comboFC0Ratio, comboNormal0Ratio })},
{1, SwitchInteger(status, { comboAP1Ratio, comboFC1Ratio, comboNormal1Ratio })},
{2, SwitchInteger(status, { comboAP2Ratio, comboFC2Ratio, comboNormal2Ratio })},
{3, SwitchInteger(status, { comboAP3Ratio, comboFC3Ratio, comboNormal3Ratio })},
{4, SwitchInteger(status, { comboAP4Ratio, comboFC4Ratio, comboNormal4Ratio })},
{5, SwitchInteger(status, { comboAP5Ratio, comboFC5Ratio, comboNormal5Ratio })},
{6, SwitchInteger(status, { comboAP6Ratio, comboFC6Ratio, comboNormal6Ratio })},
{7, SwitchInteger(status, { comboAP7Ratio, comboFC7Ratio, comboNormal7Ratio })},
{8, SwitchInteger(status, { comboAP8Ratio, comboFC8Ratio, comboNormal8Ratio })},
{9, SwitchInteger(status, { comboAP9Ratio, comboFC9Ratio, comboNormal9Ratio })}
});
Draw(Switch(status, {
{0, Sprites.ComboAP0 + v},
{1, Sprites.ComboFC0 + v},
{2, Sprites.ComboNormal0 + v}
}), R - w, T, R - w, T + accuracyHeight * scale, R, T + accuracyHeight * scale, R, T, 1e8, 1);
R = R - w - accuracyDistance;
tmp = Floor(tmp / 10);
} DONE
let pointWidth = pointHeight * SwitchInteger(status, { comboAPPointRatio, comboFCPointRatio, comboNormalPointRatio });
Draw(Switch(status, {
{0, Sprites.ComboAPPoint},
{1, Sprites.ComboFCPoint},
{2, Sprites.ComboNormalPoint}
}), L, T, L, T + pointHeight, L + pointWidth, T + pointHeight, L + pointWidth, T, 1e8, 1);
L = L + pointWidth + accuracyDistance / 2;
tmp = c;
FOR (i, 0, 4, 1) {
tmp = tmp * 10;
var v = Floor(tmp);
tmp = tmp - v;
let h = If(i >= 2, accuracyHeight2, accuracyHeight);
let w = h * scale * Switch(v, {
{0, SwitchInteger(status, { comboAP0Ratio, comboFC0Ratio, comboNormal0Ratio })},
{1, SwitchInteger(status, { comboAP1Ratio, comboFC1Ratio, comboNormal1Ratio })},
{2, SwitchInteger(status, { comboAP2Ratio, comboFC2Ratio, comboNormal2Ratio })},
{3, SwitchInteger(status, { comboAP3Ratio, comboFC3Ratio, comboNormal3Ratio })},
{4, SwitchInteger(status, { comboAP4Ratio, comboFC4Ratio, comboNormal4Ratio })},
{5, SwitchInteger(status, { comboAP5Ratio, comboFC5Ratio, comboNormal5Ratio })},
{6, SwitchInteger(status, { comboAP6Ratio, comboFC6Ratio, comboNormal6Ratio })},
{7, SwitchInteger(status, { comboAP7Ratio, comboFC7Ratio, comboNormal7Ratio })},
{8, SwitchInteger(status, { comboAP8Ratio, comboFC8Ratio, comboNormal8Ratio })},
{9, SwitchInteger(status, { comboAP9Ratio, comboFC9Ratio, comboNormal9Ratio })}
});
Draw(Switch(status, {
{0, Sprites.ComboAP0 + v},
{1, Sprites.ComboFC0 + v},
{2, Sprites.ComboNormal0 + v}
}), L, T, L, T + h * scale, L + w, T + h * scale, L + w, T, 1e8, 1);
L = L + w + If(i >= 1, accuracyDistance2, accuracyDistance);
} DONE
L = L - accuracyDistance2 / 2;
let percentWidth = percentHeight * SwitchInteger(status, { comboAPPercentRatio, comboFCPercentRatio, comboNormalPercentRatio });
Draw(Switch(status, {
{0, Sprites.ComboAPPercent},
{1, Sprites.ComboFCPercent},
{2, Sprites.ComboNormalPercent}
}), L, T, L, T + percentHeight, L + percentWidth, T + percentHeight, L + percentWidth, T, 1e8, 1);
return VOID;
}

SonolusApi updateParallel() {
FUNCBEGIN
Draw(Sprites.Stage, stage.l, stage.b, stage.l * highWidth, stage.t, stage.r * highWidth, stage.t, stage.r, stage.b, 1, 1);
Draw(Sprites.StageBackground, stage.l, stage.b, stage.l * highWidth, stage.t, stage.r * highWidth, stage.t, stage.r, stage.b, 2, opacity);
IF (LevelOption.get(Options.Hidden) != 0) drawHiddenLine(); FI
Draw(Sprites.Judgeline, judgline.lbX, judgline.lbY, judgline.ltX, judgline.ltY, judgline.rtX, judgline.rtY, judgline.rbX, judgline.rbY, 3, 1);
drawJudgeText();
drawCombo();
IF (!sonolusJudgment) drawJudgeText(); FI
IF (!sonolusCombo) drawCombo(); FI
IF (showAccuracy && HasSkinSprite(Sprites.ComboNormal0)) drawAccuracy(); FI
return VOID;
}

Expand Down
2 changes: 2 additions & 0 deletions engine/play/flatNotes/FlatNote.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ class FlatNote : public Archetype {
inputTimeMax = beat + judgment.bad + RuntimeEnvironment.get(3);
touchTime = -1;
played = false;
totalAccuracy = totalAccuracy + 1.01;
currentAccuracy = currentAccuracy + 1.01;
EntityInput.set(1, judgment.bad);
IF (autoSFX) PlayScheduled(getClips().perfect, beat, minSFXDistance); FI
return VOID;
Expand Down
2 changes: 2 additions & 0 deletions engine/play/holdNotes/HoldEighth.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ class SiriusHoldEighth: public Archetype {
inputTimeMax = beat + judgment.bad + RuntimeEnvironment.get(3);
isHolding = false;
lastHoldTime = -1;
totalAccuracy = totalAccuracy + 1.01;
currentAccuracy = currentAccuracy + 1.01;
EntityInput.set(1, judgment.bad);
return VOID;
}
Expand Down
2 changes: 2 additions & 0 deletions engine/play/holdNotes/HoldEnd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ class SiriusHoldEnd: public Archetype {
playId = 0;
exportId = time1;
played = false;
totalAccuracy = totalAccuracy + 1.01;
currentAccuracy = currentAccuracy + 1.01;
EntityInput.set(1, judgment.bad);
IF (autoSFX) PlayScheduled(Clips.Perfect, beat, minSFXDistance); FI
return VOID;
Expand Down
2 changes: 2 additions & 0 deletions engine/play/holdNotes/ScratchHoldEnd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ class SiriusScratchHoldEnd: public Archetype {
scratchEnLane = If(scratchLength <= 0, enLane, lane + scratchLength - 1);
exportId = time1;
played = false;
totalAccuracy = totalAccuracy + 1.01;
currentAccuracy = currentAccuracy + 1.01;
EntityInput.set(1, judgment.bad);
IF (autoSFX) PlayScheduled(Clips.Scratch, beat, minSFXDistance); FI
return VOID;
Expand Down
2 changes: 2 additions & 0 deletions engine/play/holdNotes/Sound.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ class SiriusSound: public Archetype {
inputTimeMax = beat + judgment.bad + RuntimeEnvironment.get(3);
isHolding = false;
lastHoldTime = -1;
totalAccuracy = totalAccuracy + 1.01;
currentAccuracy = currentAccuracy + 1.01;
EntityInput.set(1, judgment.bad);
IF (autoSFX) PlayScheduled(Clips.Sound, beat, minSFXDistance); FI
return VOID;
Expand Down
Loading

0 comments on commit a21487f

Please sign in to comment.