mirror of
https://github.com/FunkinCrew/Funkin.git
synced 2024-11-27 01:55:52 -05:00
Merge branch 'rewrite/master' into feature/credits
This commit is contained in:
commit
7fb4b47e2a
8 changed files with 80 additions and 14 deletions
4
.github/workflows/build-shit.yml
vendored
4
.github/workflows/build-shit.yml
vendored
|
@ -3,6 +3,10 @@ on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
create-nightly-html5:
|
create-nightly-html5:
|
||||||
runs-on: [self-hosted, linux]
|
runs-on: [self-hosted, linux]
|
||||||
|
|
35
.github/workflows/cancel-merged-branches.yml
vendored
Normal file
35
.github/workflows/cancel-merged-branches.yml
vendored
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
name: cancel-merged-branches
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- closed
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
cancel_stuff:
|
||||||
|
if: github.event.pull_request.merged == true
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
actions: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/github-script@v7
|
||||||
|
id: cancel-runs
|
||||||
|
with:
|
||||||
|
result-encoding: string
|
||||||
|
retries: 3
|
||||||
|
script: |
|
||||||
|
let branch_workflows = await github.rest.actions.listWorkflowRuns({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
workflow_id: "build-shit.yml",
|
||||||
|
status: "queued",
|
||||||
|
branch: "${{ github.event.pull_request.head.ref }}"
|
||||||
|
});
|
||||||
|
let runs = branch_workflows.data.workflow_runs;
|
||||||
|
runs.forEach((run) => {
|
||||||
|
github.rest.actions.cancelWorkflowRun({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
run_id: run.id
|
||||||
|
});
|
||||||
|
});
|
||||||
|
console.log(runs);
|
|
@ -402,10 +402,16 @@ class FunkinSound extends FlxSound implements ICloneable<FunkinSound>
|
||||||
return sound;
|
return sound;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@:nullSafety(Off)
|
||||||
public override function destroy():Void
|
public override function destroy():Void
|
||||||
{
|
{
|
||||||
// trace('[FunkinSound] Destroying sound "${this._label}"');
|
// trace('[FunkinSound] Destroying sound "${this._label}"');
|
||||||
super.destroy();
|
super.destroy();
|
||||||
|
if (fadeTween != null)
|
||||||
|
{
|
||||||
|
fadeTween.cancel();
|
||||||
|
fadeTween = null;
|
||||||
|
}
|
||||||
FlxTween.cancelTweensOf(this);
|
FlxTween.cancelTweensOf(this);
|
||||||
this._label = 'unknown';
|
this._label = 'unknown';
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,10 +159,18 @@ class VoicesGroup extends SoundGroup
|
||||||
|
|
||||||
public override function destroy():Void
|
public override function destroy():Void
|
||||||
{
|
{
|
||||||
playerVoices.destroy();
|
if (playerVoices != null)
|
||||||
playerVoices = null;
|
{
|
||||||
opponentVoices.destroy();
|
playerVoices.destroy();
|
||||||
opponentVoices = null;
|
playerVoices = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opponentVoices != null)
|
||||||
|
{
|
||||||
|
opponentVoices.destroy();
|
||||||
|
opponentVoices = null;
|
||||||
|
}
|
||||||
|
|
||||||
super.destroy();
|
super.destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -230,7 +230,7 @@ class PauseSubState extends MusicBeatSubState
|
||||||
*/
|
*/
|
||||||
function startPauseMusic():Void
|
function startPauseMusic():Void
|
||||||
{
|
{
|
||||||
var pauseMusicPath:String = Paths.music('breakfast$musicSuffix');
|
var pauseMusicPath:String = Paths.music('breakfast$musicSuffix/breakfast$musicSuffix');
|
||||||
pauseMusic = FunkinSound.load(pauseMusicPath, true, true);
|
pauseMusic = FunkinSound.load(pauseMusicPath, true, true);
|
||||||
|
|
||||||
if (pauseMusic == null)
|
if (pauseMusic == null)
|
||||||
|
|
|
@ -2441,7 +2441,8 @@ class PlayState extends MusicBeatSubState
|
||||||
if (Highscore.tallies.combo != 0)
|
if (Highscore.tallies.combo != 0)
|
||||||
{
|
{
|
||||||
// Break the combo.
|
// Break the combo.
|
||||||
Highscore.tallies.combo = comboPopUps.displayCombo(0);
|
if (Highscore.tallies.combo >= 10) comboPopUps.displayCombo(0);
|
||||||
|
Highscore.tallies.combo = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (playSound)
|
if (playSound)
|
||||||
|
@ -2568,32 +2569,38 @@ class PlayState extends MusicBeatSubState
|
||||||
*/
|
*/
|
||||||
function popUpScore(daNote:NoteSprite, score:Int, daRating:String, healthChange:Float):Void
|
function popUpScore(daNote:NoteSprite, score:Int, daRating:String, healthChange:Float):Void
|
||||||
{
|
{
|
||||||
vocals.playerVolume = 1;
|
|
||||||
|
|
||||||
if (daRating == 'miss')
|
if (daRating == 'miss')
|
||||||
{
|
{
|
||||||
// If daRating is 'miss', that means we made a mistake and should not continue.
|
// If daRating is 'miss', that means we made a mistake and should not continue.
|
||||||
trace('[WARNING] popUpScore judged a note as a miss!');
|
FlxG.log.warn('popUpScore judged a note as a miss!');
|
||||||
// TODO: Remove this.
|
// TODO: Remove this.
|
||||||
comboPopUps.displayRating('miss');
|
comboPopUps.displayRating('miss');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vocals.playerVolume = 1;
|
||||||
|
|
||||||
var isComboBreak = false;
|
var isComboBreak = false;
|
||||||
switch (daRating)
|
switch (daRating)
|
||||||
{
|
{
|
||||||
case 'sick':
|
case 'sick':
|
||||||
Highscore.tallies.sick += 1;
|
Highscore.tallies.sick += 1;
|
||||||
|
Highscore.tallies.totalNotesHit++;
|
||||||
isComboBreak = Constants.JUDGEMENT_SICK_COMBO_BREAK;
|
isComboBreak = Constants.JUDGEMENT_SICK_COMBO_BREAK;
|
||||||
case 'good':
|
case 'good':
|
||||||
Highscore.tallies.good += 1;
|
Highscore.tallies.good += 1;
|
||||||
|
Highscore.tallies.totalNotesHit++;
|
||||||
isComboBreak = Constants.JUDGEMENT_GOOD_COMBO_BREAK;
|
isComboBreak = Constants.JUDGEMENT_GOOD_COMBO_BREAK;
|
||||||
case 'bad':
|
case 'bad':
|
||||||
Highscore.tallies.bad += 1;
|
Highscore.tallies.bad += 1;
|
||||||
|
Highscore.tallies.totalNotesHit++;
|
||||||
isComboBreak = Constants.JUDGEMENT_BAD_COMBO_BREAK;
|
isComboBreak = Constants.JUDGEMENT_BAD_COMBO_BREAK;
|
||||||
case 'shit':
|
case 'shit':
|
||||||
Highscore.tallies.shit += 1;
|
Highscore.tallies.shit += 1;
|
||||||
|
Highscore.tallies.totalNotesHit++;
|
||||||
isComboBreak = Constants.JUDGEMENT_SHIT_COMBO_BREAK;
|
isComboBreak = Constants.JUDGEMENT_SHIT_COMBO_BREAK;
|
||||||
|
default:
|
||||||
|
FlxG.log.error('Wuh? Buh? Guh? Note hit judgement was $daRating!');
|
||||||
}
|
}
|
||||||
|
|
||||||
health += healthChange;
|
health += healthChange;
|
||||||
|
@ -2601,18 +2608,18 @@ class PlayState extends MusicBeatSubState
|
||||||
if (isComboBreak)
|
if (isComboBreak)
|
||||||
{
|
{
|
||||||
// Break the combo, but don't increment tallies.misses.
|
// Break the combo, but don't increment tallies.misses.
|
||||||
Highscore.tallies.combo = comboPopUps.displayCombo(0);
|
if (Highscore.tallies.combo >= 10) comboPopUps.displayCombo(0);
|
||||||
|
Highscore.tallies.combo = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Highscore.tallies.combo++;
|
Highscore.tallies.combo++;
|
||||||
Highscore.tallies.totalNotesHit++;
|
|
||||||
if (Highscore.tallies.combo > Highscore.tallies.maxCombo) Highscore.tallies.maxCombo = Highscore.tallies.combo;
|
if (Highscore.tallies.combo > Highscore.tallies.maxCombo) Highscore.tallies.maxCombo = Highscore.tallies.combo;
|
||||||
}
|
}
|
||||||
|
|
||||||
playerStrumline.hitNote(daNote, !isComboBreak);
|
playerStrumline.hitNote(daNote, !isComboBreak);
|
||||||
|
|
||||||
if (daRating == "sick")
|
if (daRating == 'sick')
|
||||||
{
|
{
|
||||||
playerStrumline.playNoteSplash(daNote.noteData.getDirection());
|
playerStrumline.playNoteSplash(daNote.noteData.getDirection());
|
||||||
}
|
}
|
||||||
|
|
|
@ -295,6 +295,11 @@ class Strumline extends FlxSpriteGroup
|
||||||
{
|
{
|
||||||
if (noteData.length == 0) return;
|
if (noteData.length == 0) return;
|
||||||
|
|
||||||
|
// Ensure note data gets reset if the song happens to loop.
|
||||||
|
// NOTE: I had to remove this line because it was causing notes visible during the countdown to be placed multiple times.
|
||||||
|
// I don't remember what bug I was trying to fix by adding this.
|
||||||
|
// if (conductorInUse.currentStep == 0) nextNoteIndex = 0;
|
||||||
|
|
||||||
var songStart:Float = PlayState.instance?.startTimestamp ?? 0.0;
|
var songStart:Float = PlayState.instance?.startTimestamp ?? 0.0;
|
||||||
var hitWindowStart:Float = Conductor.instance.songPosition - Constants.HIT_WINDOW_MS;
|
var hitWindowStart:Float = Conductor.instance.songPosition - Constants.HIT_WINDOW_MS;
|
||||||
var renderWindowStart:Float = Conductor.instance.songPosition + RENDER_DISTANCE_MS;
|
var renderWindowStart:Float = Conductor.instance.songPosition + RENDER_DISTANCE_MS;
|
||||||
|
@ -822,7 +827,7 @@ class Strumline extends FlxSpriteGroup
|
||||||
{
|
{
|
||||||
// The note sprite pool is full and all note splashes are active.
|
// The note sprite pool is full and all note splashes are active.
|
||||||
// We have to create a new note.
|
// We have to create a new note.
|
||||||
result = new SustainTrail(0, 100, noteStyle);
|
result = new SustainTrail(0, 0, noteStyle);
|
||||||
this.holdNotes.add(result);
|
this.holdNotes.add(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -210,7 +210,8 @@ class LoadingState extends MusicBeatState
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load and cache the song's charts.
|
// Load and cache the song's charts.
|
||||||
if (params?.targetSong != null)
|
// Don't do this if we already provided the music and charts.
|
||||||
|
if (params?.targetSong != null && !params.overrideMusic)
|
||||||
{
|
{
|
||||||
params.targetSong.cacheCharts(true);
|
params.targetSong.cacheCharts(true);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue