mirror of
https://github.com/FunkinCrew/Funkin.git
synced 2024-11-26 01:28:16 -05:00
99 lines
2.3 KiB
Haxe
99 lines
2.3 KiB
Haxe
package funkin;
|
|
|
|
/**
|
|
* A core class which handles tracking score and combo for the current song.
|
|
*/
|
|
class Highscore
|
|
{
|
|
/**
|
|
* Keeps track of notes hit for the current song
|
|
* and how accurate you were with each note (bad, missed, shit, etc.)
|
|
*/
|
|
public static var tallies:Tallies = new Tallies();
|
|
|
|
/**
|
|
* Keeps track of notes hit for the current WEEK / level
|
|
* for use with storymode, or likely any other "playlist" esque option
|
|
*/
|
|
public static var talliesLevel:Tallies = new Tallies();
|
|
|
|
/**
|
|
* Produces a new Tallies object which represents the sum of two existing Tallies
|
|
* @param newTally The first tally
|
|
* @param baseTally The second tally
|
|
* @return The combined tally
|
|
*/
|
|
public static function combineTallies(newTally:Tallies, baseTally:Tallies):Tallies
|
|
{
|
|
var combinedTally:Tallies = new Tallies();
|
|
combinedTally.missed = newTally.missed + baseTally.missed;
|
|
combinedTally.shit = newTally.shit + baseTally.shit;
|
|
combinedTally.bad = newTally.bad + baseTally.bad;
|
|
combinedTally.good = newTally.good + baseTally.good;
|
|
combinedTally.sick = newTally.sick + baseTally.sick;
|
|
combinedTally.totalNotes = newTally.totalNotes + baseTally.totalNotes;
|
|
combinedTally.totalNotesHit = newTally.totalNotesHit + baseTally.totalNotesHit;
|
|
|
|
// Current combo = use most recent.
|
|
combinedTally.combo = newTally.combo;
|
|
// Max combo = use maximum value.
|
|
combinedTally.maxCombo = Std.int(Math.max(newTally.maxCombo, baseTally.maxCombo));
|
|
|
|
return combinedTally;
|
|
}
|
|
}
|
|
|
|
@:forward
|
|
abstract Tallies(RawTallies)
|
|
{
|
|
public function new()
|
|
{
|
|
this =
|
|
{
|
|
combo: 0,
|
|
missed: 0,
|
|
shit: 0,
|
|
bad: 0,
|
|
good: 0,
|
|
sick: 0,
|
|
totalNotes: 0,
|
|
totalNotesHit: 0,
|
|
maxCombo: 0,
|
|
score: 0,
|
|
isNewHighscore: false
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* A structure object containing the data for highscore tallies.
|
|
*/
|
|
typedef RawTallies =
|
|
{
|
|
var combo:Int;
|
|
|
|
/**
|
|
* How many notes you let scroll by.
|
|
*/
|
|
var missed:Int;
|
|
|
|
var shit:Int;
|
|
var bad:Int;
|
|
var good:Int;
|
|
var sick:Int;
|
|
var maxCombo:Int;
|
|
|
|
var score:Int;
|
|
|
|
var isNewHighscore:Bool;
|
|
|
|
/**
|
|
* How many notes total that you hit. (NOT how many notes total in the song!)
|
|
*/
|
|
var totalNotesHit:Int;
|
|
|
|
/**
|
|
* How many notes in the current chart
|
|
*/
|
|
var totalNotes:Int;
|
|
}
|