git gud
This commit is contained in:
parent
fcc6ae72a5
commit
ca20b5ce4d
@ -1239,7 +1239,7 @@ class ChartingState extends MusicBeatState
|
|||||||
var daStrumTime = i[0];
|
var daStrumTime = i[0];
|
||||||
var daSus = i[2];
|
var daSus = i[2];
|
||||||
|
|
||||||
var note:Note = new Note(daStrumTime, daNoteInfo % 4);
|
var note:Note = new Note(daStrumTime, daNoteInfo % 4,null,false,true);
|
||||||
note.sustainLength = daSus;
|
note.sustainLength = daSus;
|
||||||
note.setGraphicSize(GRID_SIZE, GRID_SIZE);
|
note.setGraphicSize(GRID_SIZE, GRID_SIZE);
|
||||||
note.updateHitbox();
|
note.updateHitbox();
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import flixel.FlxG;
|
||||||
import openfl.display.Bitmap;
|
import openfl.display.Bitmap;
|
||||||
import openfl.display.BitmapData;
|
import openfl.display.BitmapData;
|
||||||
import openfl.text.TextFieldAutoSize;
|
import openfl.text.TextFieldAutoSize;
|
||||||
@ -29,6 +30,8 @@ class HitGraph extends Sprite
|
|||||||
public var minValue:Float = -(Math.floor((PlayState.rep.replay.sf / 60) * 1000) + 95);
|
public var minValue:Float = -(Math.floor((PlayState.rep.replay.sf / 60) * 1000) + 95);
|
||||||
public var maxValue:Float = Math.floor((PlayState.rep.replay.sf / 60) * 1000) + 95;
|
public var maxValue:Float = Math.floor((PlayState.rep.replay.sf / 60) * 1000) + 95;
|
||||||
|
|
||||||
|
public var showInput:Bool = FlxG.save.data.inputShow;
|
||||||
|
|
||||||
public var graphColor:FlxColor;
|
public var graphColor:FlxColor;
|
||||||
|
|
||||||
public var history:Array<Dynamic> = [];
|
public var history:Array<Dynamic> = [];
|
||||||
@ -185,14 +188,33 @@ class HitGraph extends Sprite
|
|||||||
drawJudgementLine(-166);
|
drawJudgementLine(-166);
|
||||||
gfx.endFill();
|
gfx.endFill();
|
||||||
|
|
||||||
|
|
||||||
var inc:Float = _width / (PlayState.rep.replay.songNotes.length);
|
|
||||||
var range:Float = Math.max(maxValue - minValue, maxValue * 0.1);
|
var range:Float = Math.max(maxValue - minValue, maxValue * 0.1);
|
||||||
var graphX = _axis.x + 1;
|
var graphX = _axis.x + 1;
|
||||||
|
|
||||||
|
if (showInput)
|
||||||
|
{
|
||||||
|
for (i in 0...PlayState.rep.replay.ana.anaArray.length)
|
||||||
|
{
|
||||||
|
var ana = PlayState.rep.replay.ana.anaArray[i];
|
||||||
|
|
||||||
|
var value = (ana.key * 25 - minValue) / range;
|
||||||
|
|
||||||
|
if (ana.hit)
|
||||||
|
gfx.beginFill(0xFFFF00);
|
||||||
|
else
|
||||||
|
gfx.beginFill(0xC2B280);
|
||||||
|
|
||||||
|
if (ana.hitTime < 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var pointY = (-value * _height - 1) + _height;
|
||||||
|
gfx.drawRect(graphX + fitX(ana.hitTime), pointY,2,2);
|
||||||
|
gfx.endFill();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (i in 0...history.length)
|
for (i in 0...history.length)
|
||||||
{
|
{
|
||||||
|
|
||||||
var value = (history[i][0] - minValue) / range;
|
var value = (history[i][0] - minValue) / range;
|
||||||
var judge = history[i][1];
|
var judge = history[i][1];
|
||||||
|
|
||||||
@ -212,21 +234,28 @@ class HitGraph extends Sprite
|
|||||||
gfx.beginFill(0xFFFFFF);
|
gfx.beginFill(0xFFFFFF);
|
||||||
}
|
}
|
||||||
var pointY = (-value * _height - 1) + _height;
|
var pointY = (-value * _height - 1) + _height;
|
||||||
|
|
||||||
/*if (i == 0)
|
/*if (i == 0)
|
||||||
gfx.moveTo(graphX, _axis.y + pointY);*/
|
gfx.moveTo(graphX, _axis.y + pointY);*/
|
||||||
gfx.drawRect(graphX + (i * inc), pointY,4,4);
|
gfx.drawRect(graphX + fitX(history[i][2]), pointY,4,4);
|
||||||
|
|
||||||
gfx.endFill();
|
gfx.endFill();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var bm = new BitmapData(_width,_height);
|
var bm = new BitmapData(_width,_height);
|
||||||
bm.draw(this);
|
bm.draw(this);
|
||||||
bitmap = new Bitmap(bm);
|
bitmap = new Bitmap(bm);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addToHistory(diff:Float, judge:String)
|
public function fitX(x:Float)
|
||||||
{
|
{
|
||||||
history.push([diff,judge]);
|
return (x / FlxG.sound.music.length) * width;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addToHistory(diff:Float, judge:String, time:Float)
|
||||||
|
{
|
||||||
|
history.push([diff,judge, time]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update():Void
|
public function update():Void
|
||||||
|
@ -87,6 +87,9 @@ class KadeEngineData
|
|||||||
if (FlxG.save.data.scoreScreen == null)
|
if (FlxG.save.data.scoreScreen == null)
|
||||||
FlxG.save.data.scoreScreen = true;
|
FlxG.save.data.scoreScreen = true;
|
||||||
|
|
||||||
|
if (FlxG.save.data.inputShow == null)
|
||||||
|
FlxG.save.data.inputShow = false;
|
||||||
|
|
||||||
Conductor.recalculateTimings();
|
Conductor.recalculateTimings();
|
||||||
PlayerSettings.player1.controls.loadKeyBinds();
|
PlayerSettings.player1.controls.loadKeyBinds();
|
||||||
KeyBinds.keyCheck();
|
KeyBinds.keyCheck();
|
||||||
|
@ -37,7 +37,7 @@ class Note extends FlxSprite
|
|||||||
|
|
||||||
public var rating:String = "shit";
|
public var rating:String = "shit";
|
||||||
|
|
||||||
public function new(strumTime:Float, noteData:Int, ?prevNote:Note, ?sustainNote:Bool = false)
|
public function new(strumTime:Float, noteData:Int, ?prevNote:Note, ?sustainNote:Bool = false, ?inCharter:Bool = false)
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
|
|
||||||
@ -50,7 +50,10 @@ class Note extends FlxSprite
|
|||||||
x += 50;
|
x += 50;
|
||||||
// MAKE SURE ITS DEFINITELY OFF SCREEN?
|
// MAKE SURE ITS DEFINITELY OFF SCREEN?
|
||||||
y -= 2000;
|
y -= 2000;
|
||||||
|
if (inCharter)
|
||||||
this.strumTime = strumTime;
|
this.strumTime = strumTime;
|
||||||
|
else
|
||||||
|
this.strumTime = Math.round(strumTime);
|
||||||
|
|
||||||
if (this.strumTime < 0 )
|
if (this.strumTime < 0 )
|
||||||
this.strumTime = 0;
|
this.strumTime = 0;
|
||||||
|
@ -261,6 +261,27 @@ class FlashingLightsOption extends Option
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ShowInput extends Option
|
||||||
|
{
|
||||||
|
public function new(desc:String)
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
description = desc;
|
||||||
|
}
|
||||||
|
public override function press():Bool
|
||||||
|
{
|
||||||
|
FlxG.save.data.inputShow = !FlxG.save.data.inputShow;
|
||||||
|
display = updateDisplay();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private override function updateDisplay():String
|
||||||
|
{
|
||||||
|
return (FlxG.save.data.inputShow ? "Extended Score Info" : "Minimalized Info");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class Judgement extends Option
|
class Judgement extends Option
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -58,7 +58,8 @@ class OptionsMenu extends MusicBeatState
|
|||||||
new FlashingLightsOption("Toggle flashing lights that can cause epileptic seizures and strain."),
|
new FlashingLightsOption("Toggle flashing lights that can cause epileptic seizures and strain."),
|
||||||
new WatermarkOption("Enable and disable all watermarks from the engine."),
|
new WatermarkOption("Enable and disable all watermarks from the engine."),
|
||||||
new BotPlay("Showcase your charts and mods with autoplay."),
|
new BotPlay("Showcase your charts and mods with autoplay."),
|
||||||
new ScoreScreen("Show the score screen after the end of a song")
|
new ScoreScreen("Show the score screen after the end of a song"),
|
||||||
|
new ShowInput("Display every single input in the score screen.")
|
||||||
])
|
])
|
||||||
|
|
||||||
];
|
];
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
import Replay.Ana;
|
||||||
|
import Replay.Analysis;
|
||||||
import webm.WebmPlayer;
|
import webm.WebmPlayer;
|
||||||
import flixel.input.keyboard.FlxKey;
|
import flixel.input.keyboard.FlxKey;
|
||||||
import haxe.Exception;
|
import haxe.Exception;
|
||||||
@ -213,6 +215,7 @@ class PlayState extends MusicBeatState
|
|||||||
// Replay shit
|
// Replay shit
|
||||||
private var saveNotes:Array<Dynamic> = [];
|
private var saveNotes:Array<Dynamic> = [];
|
||||||
private var saveJudge:Array<String> = [];
|
private var saveJudge:Array<String> = [];
|
||||||
|
private var replayAna:Analysis = new Analysis(); // replay analysis
|
||||||
|
|
||||||
public static var highestCombo:Int = 0;
|
public static var highestCombo:Int = 0;
|
||||||
|
|
||||||
@ -1475,7 +1478,7 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
for (songNotes in section.sectionNotes)
|
for (songNotes in section.sectionNotes)
|
||||||
{
|
{
|
||||||
var daStrumTime:Float = Math.round(songNotes[0]) + FlxG.save.data.offset + songOffset;
|
var daStrumTime:Float = songNotes[0] + FlxG.save.data.offset + songOffset;
|
||||||
if (daStrumTime < 0)
|
if (daStrumTime < 0)
|
||||||
daStrumTime = 0;
|
daStrumTime = 0;
|
||||||
var daNoteData:Int = Std.int(songNotes[1] % 4);
|
var daNoteData:Int = Std.int(songNotes[1] % 4);
|
||||||
@ -1975,7 +1978,7 @@ class PlayState extends MusicBeatState
|
|||||||
FlxG.switchState(new Charting()); */
|
FlxG.switchState(new Charting()); */
|
||||||
|
|
||||||
#if debug
|
#if debug
|
||||||
if (FlxG.keys.justPressed.EIGHT)
|
if (FlxG.keys.justPressed.SIX)
|
||||||
{
|
{
|
||||||
if (useVideo)
|
if (useVideo)
|
||||||
{
|
{
|
||||||
@ -2564,7 +2567,7 @@ class PlayState extends MusicBeatState
|
|||||||
campaignMisses = misses;
|
campaignMisses = misses;
|
||||||
|
|
||||||
if (!loadRep)
|
if (!loadRep)
|
||||||
rep.SaveReplay(saveNotes, saveJudge);
|
rep.SaveReplay(saveNotes, saveJudge, replayAna);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PlayStateChangeables.botPlay = false;
|
PlayStateChangeables.botPlay = false;
|
||||||
@ -3039,6 +3042,7 @@ class PlayState extends MusicBeatState
|
|||||||
};
|
};
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
|
||||||
// Prevent player input if botplay is on
|
// Prevent player input if botplay is on
|
||||||
if(PlayStateChangeables.botPlay)
|
if(PlayStateChangeables.botPlay)
|
||||||
{
|
{
|
||||||
@ -3046,6 +3050,13 @@ class PlayState extends MusicBeatState
|
|||||||
pressArray = [false, false, false, false];
|
pressArray = [false, false, false, false];
|
||||||
releaseArray = [false, false, false, false];
|
releaseArray = [false, false, false, false];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var anas:Array<Ana> = [null,null,null,null];
|
||||||
|
|
||||||
|
for (i in 0...pressArray.length)
|
||||||
|
if (pressArray[i])
|
||||||
|
anas[i] = new Ana(Conductor.songPosition, null, false, "miss", i);
|
||||||
|
|
||||||
// HOLDS, check for sustain notes
|
// HOLDS, check for sustain notes
|
||||||
if (holdArray.contains(true) && /*!boyfriend.stunned && */ generatedMusic)
|
if (holdArray.contains(true) && /*!boyfriend.stunned && */ generatedMusic)
|
||||||
{
|
{
|
||||||
@ -3137,6 +3148,10 @@ class PlayState extends MusicBeatState
|
|||||||
if (mashViolations != 0)
|
if (mashViolations != 0)
|
||||||
mashViolations--;
|
mashViolations--;
|
||||||
scoreTxt.color = FlxColor.WHITE;
|
scoreTxt.color = FlxColor.WHITE;
|
||||||
|
var noteDiff:Float = -(coolNote.strumTime - Conductor.songPosition);
|
||||||
|
anas[coolNote.noteData].hit = true;
|
||||||
|
anas[coolNote.noteData].hitJudge = Ratings.CalculateRating(noteDiff, Math.floor((PlayStateChangeables.safeFrames / 60) * 1000));
|
||||||
|
anas[coolNote.noteData].nearestNote = [coolNote.strumTime,coolNote.noteData,coolNote.sustainLength];
|
||||||
goodNoteHit(coolNote);
|
goodNoteHit(coolNote);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3148,19 +3163,12 @@ class PlayState extends MusicBeatState
|
|||||||
noteMiss(shit, null);
|
noteMiss(shit, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dontCheck && possibleNotes.length > 0 && FlxG.save.data.ghost && !PlayStateChangeables.botPlay)
|
|
||||||
{
|
|
||||||
if (mashViolations > 8)
|
|
||||||
{
|
|
||||||
trace('mash violations ' + mashViolations);
|
|
||||||
scoreTxt.color = FlxColor.RED;
|
|
||||||
noteMiss(0,null);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
mashViolations++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
if (!loadRep)
|
||||||
|
for (i in anas)
|
||||||
|
if (i != null)
|
||||||
|
replayAna.anaArray.push(i); // put em all there
|
||||||
|
|
||||||
notes.forEachAlive(function(daNote:Note)
|
notes.forEachAlive(function(daNote:Note)
|
||||||
{
|
{
|
||||||
|
@ -122,18 +122,18 @@ class Ratings
|
|||||||
var rating = "miss";
|
var rating = "miss";
|
||||||
if (ms <= 166 * ts && ms >= 135 * ts)
|
if (ms <= 166 * ts && ms >= 135 * ts)
|
||||||
rating = "shit";
|
rating = "shit";
|
||||||
if (ms >= -166 * ts && ms <= -135 * ts)
|
if (ms < 135 * ts && ms >= 90 * ts)
|
||||||
rating = "shit";
|
|
||||||
if (ms <= 135 * ts && ms >= 90 * ts)
|
|
||||||
rating = "bad";
|
rating = "bad";
|
||||||
if (ms >= -135 * ts && ms <= -90 * ts)
|
if (ms < 90 * ts && ms >= 45 * ts)
|
||||||
rating = "bad";
|
|
||||||
if (ms <= 90 * ts && ms >= 45 * ts)
|
|
||||||
rating = "good";
|
rating = "good";
|
||||||
if (ms >= -90 * ts && ms <= -45 * ts)
|
if (ms < 45 * ts && ms >= -45 * ts)
|
||||||
rating = "good";
|
|
||||||
if (ms <= 45 * ts && ms >= -45 * ts)
|
|
||||||
rating = "sick";
|
rating = "sick";
|
||||||
|
if (ms > -90 * ts && ms <= -45 * ts)
|
||||||
|
rating = "good";
|
||||||
|
if (ms > -135 * ts && ms <= -90 * ts)
|
||||||
|
rating = "bad";
|
||||||
|
if (ms > -166 * ts && ms <= -135 * ts)
|
||||||
|
rating = "shit";
|
||||||
return rating;
|
return rating;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,14 @@ class Ana
|
|||||||
public var nearestNote:Array<Dynamic>;
|
public var nearestNote:Array<Dynamic>;
|
||||||
public var hit:Bool;
|
public var hit:Bool;
|
||||||
public var hitJudge:String;
|
public var hitJudge:String;
|
||||||
|
public var key:Int;
|
||||||
|
public function new(_hitTime:Float,_nearestNote:Array<Dynamic>,_hit:Bool,_hitJudge:String, _key:Int) {
|
||||||
|
hitTime = _hitTime;
|
||||||
|
nearestNote = _nearestNote;
|
||||||
|
hit = _hit;
|
||||||
|
hitJudge = _hitJudge;
|
||||||
|
key = _key;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Analysis
|
class Analysis
|
||||||
@ -76,7 +84,7 @@ class Replay
|
|||||||
return rep;
|
return rep;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function SaveReplay(notearray:Array<Dynamic>, judge:Array<String>)
|
public function SaveReplay(notearray:Array<Dynamic>, judge:Array<String>, ana:Analysis)
|
||||||
{
|
{
|
||||||
var json = {
|
var json = {
|
||||||
"songName": PlayState.SONG.song,
|
"songName": PlayState.SONG.song,
|
||||||
@ -88,7 +96,7 @@ class Replay
|
|||||||
"timestamp": Date.now(),
|
"timestamp": Date.now(),
|
||||||
"replayGameVer": version,
|
"replayGameVer": version,
|
||||||
"sf": Conductor.safeFrames,
|
"sf": Conductor.safeFrames,
|
||||||
|
"ana": ana
|
||||||
};
|
};
|
||||||
|
|
||||||
var data:String = Json.stringify(json);
|
var data:String = Json.stringify(json);
|
||||||
@ -101,6 +109,8 @@ class Replay
|
|||||||
path = "replay-" + PlayState.SONG.song + "-time" + time + ".kadeReplay"; // for score screen shit
|
path = "replay-" + PlayState.SONG.song + "-time" + time + ".kadeReplay"; // for score screen shit
|
||||||
|
|
||||||
LoadFromJSON();
|
LoadFromJSON();
|
||||||
|
|
||||||
|
replay.ana = ana;
|
||||||
#end
|
#end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,11 +126,13 @@ class ResultsScreen extends FlxSubState
|
|||||||
// judgement
|
// judgement
|
||||||
var obj2 = PlayState.rep.replay.songJudgements[i];
|
var obj2 = PlayState.rep.replay.songJudgements[i];
|
||||||
|
|
||||||
|
var obj3 = obj[0];
|
||||||
|
|
||||||
var diff = obj[3];
|
var diff = obj[3];
|
||||||
var judge = obj2;
|
var judge = obj2;
|
||||||
mean += diff;
|
mean += diff;
|
||||||
if (obj[1] != -1)
|
if (obj[1] != -1)
|
||||||
graph.addToHistory(diff, judge);
|
graph.addToHistory(diff, judge, obj3);
|
||||||
}
|
}
|
||||||
|
|
||||||
graph.update();
|
graph.update();
|
||||||
@ -186,6 +188,12 @@ class ResultsScreen extends FlxSubState
|
|||||||
FlxG.switchState(new FreeplayState());
|
FlxG.switchState(new FreeplayState());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (FlxG.keys.justPressed.EIGHT)
|
||||||
|
{
|
||||||
|
graph.showInput = !graph.showInput;
|
||||||
|
graph.update();
|
||||||
|
}
|
||||||
|
|
||||||
if (FlxG.keys.justPressed.F1)
|
if (FlxG.keys.justPressed.F1)
|
||||||
{
|
{
|
||||||
trace(PlayState.rep.path);
|
trace(PlayState.rep.path);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user