mirror of
https://github.com/ninjamuffin99/Funkin.git
synced 2025-03-20 17:09:21 +00:00
cool new stuff lol
This commit is contained in:
parent
912596111b
commit
84f54eae67
|
@ -12,10 +12,10 @@ import flixel.util.FlxColor;
|
|||
/**
|
||||
*DEBUG MODE
|
||||
*/
|
||||
class Charting extends FlxState
|
||||
class AnimationDebug extends FlxState
|
||||
{
|
||||
var bf:Boyfriend;
|
||||
var dad:Dad;
|
||||
var dad:Character;
|
||||
var char:Character;
|
||||
var textAnim:FlxText;
|
||||
var dumbTexts:FlxTypedGroup<FlxText>;
|
||||
|
@ -40,7 +40,7 @@ class Charting extends FlxState
|
|||
|
||||
if (isDad)
|
||||
{
|
||||
dad = new Dad(0, 0);
|
||||
dad = new Character(0, 0);
|
||||
dad.screenCenter();
|
||||
dad.debugMode = true;
|
||||
add(dad);
|
||||
|
|
|
@ -1,16 +1,93 @@
|
|||
package;
|
||||
|
||||
import flixel.FlxSprite;
|
||||
import flixel.graphics.frames.FlxAtlasFrames;
|
||||
|
||||
class Character extends FlxSprite
|
||||
{
|
||||
public var animOffsets:Map<String, Array<Dynamic>>;
|
||||
public var debugMode:Bool = false;
|
||||
|
||||
public function new(x:Float, y:Float)
|
||||
public var isPlayer:Bool = false;
|
||||
public var curCharacter:String = 'bf';
|
||||
|
||||
public function new(x:Float, y:Float, ?character:String = "bf", ?isPlayer:Bool = false)
|
||||
{
|
||||
animOffsets = new Map<String, Array<Dynamic>>();
|
||||
super(x, y);
|
||||
|
||||
curCharacter = character;
|
||||
this.isPlayer = isPlayer;
|
||||
|
||||
var tex:FlxAtlasFrames;
|
||||
antialiasing = true;
|
||||
|
||||
switch (curCharacter)
|
||||
{
|
||||
case 'bf':
|
||||
case 'gf':
|
||||
// GIRLFRIEND CODE
|
||||
tex = FlxAtlasFrames.fromSparrow(AssetPaths.GF_assets__png, AssetPaths.GF_assets__xml);
|
||||
frames = tex;
|
||||
animation.addByPrefix('cheer', 'GF Cheer', 24, false);
|
||||
animation.addByPrefix('singLEFT', 'GF left note', 24, false);
|
||||
animation.addByPrefix('singRIGHT', 'GF Right Note', 24, false);
|
||||
animation.addByPrefix('singUP', 'GF Up Note', 24, false);
|
||||
animation.addByPrefix('singDOWN', 'GF Down Note', 24, false);
|
||||
animation.addByIndices('sad', 'gf sad', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "", 24, false);
|
||||
animation.addByIndices('danceLeft', 'GF Dancing Beat', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
|
||||
animation.addByIndices('danceRight', 'GF Dancing Beat', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
|
||||
|
||||
addOffset('cheer');
|
||||
addOffset('sad');
|
||||
addOffset('danceLeft');
|
||||
addOffset('danceRight');
|
||||
|
||||
addOffset("singUP");
|
||||
addOffset("singRIGHT");
|
||||
addOffset("singLEFT");
|
||||
addOffset("singDOWN");
|
||||
|
||||
playAnim('danceRight');
|
||||
|
||||
case 'dad':
|
||||
// DAD ANIMATION LOADING CODE
|
||||
tex = FlxAtlasFrames.fromSparrow(AssetPaths.DADDY_DEAREST__png, AssetPaths.DADDY_DEAREST__xml);
|
||||
frames = tex;
|
||||
animation.addByPrefix('idle', 'Dad idle dance', 24);
|
||||
animation.addByPrefix('singUP', 'Dad Sing Note UP', 24);
|
||||
animation.addByPrefix('singRIGHT', 'Dad Sing Note RIGHT', 24);
|
||||
animation.addByPrefix('singDOWN', 'Dad Sing Note DOWN', 24);
|
||||
animation.addByPrefix('singLEFT', 'Dad Sing Note LEFT', 24);
|
||||
playAnim('idle');
|
||||
|
||||
addOffset('idle');
|
||||
addOffset("singUP", -6, 50);
|
||||
addOffset("singRIGHT", 0, 27);
|
||||
addOffset("singLEFT", -10, 10);
|
||||
addOffset("singDOWN", 0, -30);
|
||||
}
|
||||
}
|
||||
|
||||
private var danced:Bool = false;
|
||||
|
||||
/**
|
||||
* FOR GF DANCING SHIT
|
||||
*/
|
||||
public function dance()
|
||||
{
|
||||
switch (curCharacter)
|
||||
{
|
||||
case 'gf':
|
||||
danced = !danced;
|
||||
|
||||
if (danced)
|
||||
playAnim('danceRight');
|
||||
else
|
||||
playAnim('danceLeft');
|
||||
case 'dad':
|
||||
playAnim('idle');
|
||||
}
|
||||
}
|
||||
|
||||
public function playAnim(AnimName:String, Force:Bool = false, Reversed:Bool = false, Frame:Int = 0):Void
|
||||
|
|
|
@ -7,6 +7,7 @@ import flixel.addons.ui.FlxInputText;
|
|||
import flixel.addons.ui.FlxUI9SliceSprite;
|
||||
import flixel.addons.ui.FlxUI;
|
||||
import flixel.addons.ui.FlxUICheckBox;
|
||||
import flixel.addons.ui.FlxUIDropDownMenu;
|
||||
import flixel.addons.ui.FlxUIInputText;
|
||||
import flixel.addons.ui.FlxUINumericStepper;
|
||||
import flixel.addons.ui.FlxUITabMenu;
|
||||
|
@ -60,6 +61,7 @@ class ChartingState extends MusicBeatState
|
|||
var _song:Song;
|
||||
|
||||
var typingShit:FlxInputText;
|
||||
var curSelectedNote:Note = new Note(0, 0, null);
|
||||
|
||||
override function create()
|
||||
{
|
||||
|
@ -152,6 +154,21 @@ class ChartingState extends MusicBeatState
|
|||
stepperBPM.value = Conductor.bpm;
|
||||
stepperBPM.name = 'song_bpm';
|
||||
|
||||
var characters:Array<String> = ["bf", 'dad', 'gf'];
|
||||
|
||||
var player1DropDown = new FlxUIDropDownMenu(10, 100, FlxUIDropDownMenu.makeStrIdLabelArray(characters, true), function(character:String)
|
||||
{
|
||||
_song.player1 = characters[Std.parseInt(character)];
|
||||
});
|
||||
player1DropDown.selectedLabel = _song.player1;
|
||||
|
||||
var player2DropDown = new FlxUIDropDownMenu(140, 100, FlxUIDropDownMenu.makeStrIdLabelArray(characters, true), function(character:String)
|
||||
{
|
||||
_song.player2 = characters[Std.parseInt(character)];
|
||||
});
|
||||
|
||||
player2DropDown.selectedLabel = _song.player2;
|
||||
|
||||
var tab_group_song = new FlxUI(null, UI_box);
|
||||
tab_group_song.name = "Song";
|
||||
tab_group_song.add(UI_songTitle);
|
||||
|
@ -162,6 +179,8 @@ class ChartingState extends MusicBeatState
|
|||
tab_group_song.add(reloadSongJson);
|
||||
tab_group_song.add(stepperBPM);
|
||||
tab_group_song.add(stepperSpeed);
|
||||
tab_group_song.add(player1DropDown);
|
||||
tab_group_song.add(player2DropDown);
|
||||
|
||||
UI_box.addGroup(tab_group_song);
|
||||
UI_box.scrollFactor.set();
|
||||
|
@ -422,12 +441,9 @@ class ChartingState extends MusicBeatState
|
|||
{
|
||||
var daSec = FlxMath.maxInt(curSection, sectionNum);
|
||||
|
||||
for (note in _song.notes[daSec - sectionNum].notes)
|
||||
for (note in _song.notes[daSec - sectionNum].sectionNotes)
|
||||
{
|
||||
_song.notes[daSec].notes.push([
|
||||
note[0] + Conductor.stepCrochet * (_song.notes[daSec].lengthInSteps * sectionNum),
|
||||
note[1]
|
||||
]);
|
||||
_song.notes[daSec].sectionNotes.push(note);
|
||||
}
|
||||
|
||||
updateGrid();
|
||||
|
@ -448,7 +464,7 @@ class ChartingState extends MusicBeatState
|
|||
curRenderedNotes.remove(curRenderedNotes.members[0], true);
|
||||
}
|
||||
|
||||
var sectionInfo:Array<Dynamic> = _song.notes[curSection].notes;
|
||||
var sectionInfo:Array<Dynamic> = _song.notes[curSection].sectionNotes;
|
||||
|
||||
for (i in sectionInfo)
|
||||
{
|
||||
|
@ -471,12 +487,12 @@ class ChartingState extends MusicBeatState
|
|||
|
||||
function deleteNote(note:Note):Void
|
||||
{
|
||||
for (i in _song.notes[curSection].notes)
|
||||
for (i in _song.notes[curSection].sectionNotes)
|
||||
{
|
||||
if (i[0] == note.strumTime && i[1] % 4 == note.noteData)
|
||||
if (i.strumTime == note.strumTime && i.noteData % 4 == note.noteData)
|
||||
{
|
||||
FlxG.log.add('FOUND EVIL NUMBER');
|
||||
_song.notes[curSection].notes.remove(i);
|
||||
_song.notes[curSection].sectionNotes.remove(i);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -485,10 +501,10 @@ class ChartingState extends MusicBeatState
|
|||
|
||||
private function addNote():Void
|
||||
{
|
||||
_song.notes[curSection].notes.push([
|
||||
Math.round(getStrumTime(dummyArrow.y) + (curSection * (Conductor.stepCrochet * 16))),
|
||||
Math.floor(FlxG.mouse.x / GRID_SIZE)
|
||||
]);
|
||||
var swagNote:Note = new Note(Math.round(getStrumTime(dummyArrow.y) + (curSection * (Conductor.stepCrochet * 16))),
|
||||
Math.floor(FlxG.mouse.x / GRID_SIZE));
|
||||
|
||||
_song.notes[curSection].sectionNotes.push(swagNote);
|
||||
|
||||
trace(getStrumTime(dummyArrow.y) + (curSection * (Conductor.stepCrochet * 16)));
|
||||
trace(curSection);
|
||||
|
@ -542,7 +558,7 @@ class ChartingState extends MusicBeatState
|
|||
|
||||
for (i in _song.notes)
|
||||
{
|
||||
noteData.push(i.notes);
|
||||
noteData.push(i.sectionNotes);
|
||||
}
|
||||
|
||||
return noteData;
|
||||
|
|
|
@ -12,10 +12,12 @@ class Conductor
|
|||
public static var songPosition:Float;
|
||||
public static var offset:Float = 0;
|
||||
|
||||
public static var safeFrames:Int = 5;
|
||||
public static var safeFrames:Int = 10;
|
||||
public static var safeZoneOffset:Float = (safeFrames / 60) * 1000; // is calculated in create(), is safeFrames in milliseconds
|
||||
|
||||
public function new() {}
|
||||
public function new()
|
||||
{
|
||||
}
|
||||
|
||||
public static function changeBPM(newBpm:Int)
|
||||
{
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
package;
|
||||
|
||||
import flixel.graphics.frames.FlxAtlasFrames;
|
||||
|
||||
class Dad extends Character
|
||||
{
|
||||
public function new(x:Float, y:Float)
|
||||
{
|
||||
super(x, y);
|
||||
var dadTex = FlxAtlasFrames.fromSparrow(AssetPaths.DADDY_DEAREST__png, AssetPaths.DADDY_DEAREST__xml);
|
||||
frames = dadTex;
|
||||
antialiasing = true;
|
||||
animation.addByPrefix('idle', 'Dad idle dance', 24);
|
||||
animation.addByPrefix('singUP', 'Dad Sing Note UP', 24);
|
||||
animation.addByPrefix('singRIGHT', 'Dad Sing Note RIGHT', 24);
|
||||
animation.addByPrefix('singDOWN', 'Dad Sing Note DOWN', 24);
|
||||
animation.addByPrefix('singLEFT', 'Dad Sing Note LEFT', 24);
|
||||
playAnim('idle');
|
||||
|
||||
addOffset('idle');
|
||||
addOffset("singUP", -6, 50);
|
||||
addOffset("singRIGHT", 0, 27);
|
||||
addOffset("singLEFT", -10, 10);
|
||||
addOffset("singDOWN", 0, -30);
|
||||
}
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
package;
|
||||
|
||||
import flixel.graphics.frames.FlxAtlasFrames;
|
||||
|
||||
class Girlfriend extends Character
|
||||
{
|
||||
public function new(x:Float, y:Float)
|
||||
{
|
||||
super(x, y);
|
||||
|
||||
var tex = FlxAtlasFrames.fromSparrow(AssetPaths.GF_assets__png, AssetPaths.GF_assets__xml);
|
||||
frames = tex;
|
||||
animation.addByPrefix('cheer', 'GF Cheer');
|
||||
animation.addByIndices('sad', 'gf sad', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "", 24, false);
|
||||
animation.addByIndices('danceLeft', 'GF Dancing Beat', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
|
||||
animation.addByIndices('danceRight', 'GF Dancing Beat', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
|
||||
|
||||
addOffset('cheer');
|
||||
addOffset('sad');
|
||||
addOffset('danceLeft');
|
||||
addOffset('danceRight');
|
||||
|
||||
playAnim('danceRight');
|
||||
}
|
||||
|
||||
private var danced:Bool = false;
|
||||
|
||||
public function dance()
|
||||
{
|
||||
danced = !danced;
|
||||
|
||||
if (danced)
|
||||
playAnim('danceRight');
|
||||
else
|
||||
playAnim('danceLeft');
|
||||
}
|
||||
}
|
|
@ -15,6 +15,8 @@ class Note extends FlxSprite
|
|||
public var wasGoodHit:Bool = false;
|
||||
public var prevNote:Note;
|
||||
|
||||
public var sustainLength:Float = 0;
|
||||
|
||||
public var noteScore:Float = 1;
|
||||
|
||||
public static var swagWidth:Float = 160 * 0.7;
|
||||
|
|
|
@ -33,8 +33,8 @@ class PlayState extends MusicBeatState
|
|||
|
||||
private var vocals:FlxSound;
|
||||
|
||||
private var dad:Dad;
|
||||
private var gf:Girlfriend;
|
||||
private var dad:Character;
|
||||
private var gf:Character;
|
||||
private var boyfriend:Boyfriend;
|
||||
|
||||
private var notes:FlxTypedGroup<Note>;
|
||||
|
@ -96,14 +96,20 @@ class PlayState extends MusicBeatState
|
|||
stageCurtains.scrollFactor.set(1.3, 1.3);
|
||||
stageCurtains.active = false;
|
||||
|
||||
gf = new Girlfriend(400, 130);
|
||||
gf = new Character(400, 130, 'gf');
|
||||
gf.scrollFactor.set(0.95, 0.95);
|
||||
gf.antialiasing = true;
|
||||
add(gf);
|
||||
|
||||
dad = new Dad(100, 100);
|
||||
dad = new Character(100, 100, SONG.player2);
|
||||
add(dad);
|
||||
|
||||
if (SONG.player2 == 'gf')
|
||||
{
|
||||
dad.setPosition(gf.x, gf.y);
|
||||
gf.visible = false;
|
||||
}
|
||||
|
||||
boyfriend = new Boyfriend(770, 450);
|
||||
add(boyfriend);
|
||||
|
||||
|
@ -263,7 +269,7 @@ class PlayState extends MusicBeatState
|
|||
{
|
||||
var coolSection:Int = Std.int(section.lengthInSteps / 4);
|
||||
|
||||
for (songNotes in section.notes)
|
||||
for (songNotes in section.sectionNotes)
|
||||
{
|
||||
sectionScores[0].push(0);
|
||||
sectionScores[1].push(0);
|
||||
|
@ -454,12 +460,11 @@ class PlayState extends MusicBeatState
|
|||
healthHeads.animation.play('unhealthy');
|
||||
else
|
||||
healthHeads.animation.play('healthy');
|
||||
/*
|
||||
if (FlxG.keys.justPressed.NINE)
|
||||
FlxG.switchState(new Charting());
|
||||
if (FlxG.keys.justPressed.EIGHT)
|
||||
FlxG.switchState(new Charting(true));
|
||||
*/
|
||||
|
||||
/* if (FlxG.keys.justPressed.NINE)
|
||||
FlxG.switchState(new Charting()); */
|
||||
if (FlxG.keys.justPressed.EIGHT)
|
||||
FlxG.switchState(new AnimationDebug(true));
|
||||
|
||||
if (countingDown)
|
||||
{
|
||||
|
@ -477,7 +482,7 @@ class PlayState extends MusicBeatState
|
|||
|
||||
if (playerTurn == (sectionLengths[curSection] * 8) - 1 && !sectionScored)
|
||||
{
|
||||
popUpScore();
|
||||
// popUpScore();
|
||||
sectionScored = true;
|
||||
}
|
||||
|
||||
|
@ -488,15 +493,15 @@ class PlayState extends MusicBeatState
|
|||
trace(PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection);
|
||||
}
|
||||
|
||||
if (camFollow.x != dad.getGraphicMidpoint().x + 150 && !PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection)
|
||||
if (camFollow.x != dad.getMidpoint().x + 150 && !PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection)
|
||||
{
|
||||
camFollow.setPosition(dad.getGraphicMidpoint().x + 150, dad.getGraphicMidpoint().y - 100);
|
||||
camFollow.setPosition(dad.getMidpoint().x + 150, dad.getMidpoint().y - 100);
|
||||
vocals.volume = 1;
|
||||
}
|
||||
|
||||
if (PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection && camFollow.x != boyfriend.getGraphicMidpoint().x - 100)
|
||||
if (PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection && camFollow.x != boyfriend.getMidpoint().x - 100)
|
||||
{
|
||||
camFollow.setPosition(boyfriend.getGraphicMidpoint().x - 100, boyfriend.getGraphicMidpoint().y - 100);
|
||||
camFollow.setPosition(boyfriend.getMidpoint().x - 100, boyfriend.getMidpoint().y - 100);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -626,29 +631,47 @@ class PlayState extends MusicBeatState
|
|||
keyShit();
|
||||
}
|
||||
|
||||
private function popUpScore():Void
|
||||
private function popUpScore(strumtime:Float):Void
|
||||
{
|
||||
boyfriend.playAnim('hey');
|
||||
vocals.volume = 1;
|
||||
var noteDiff:Float = Math.abs(strumtime - Conductor.songPosition);
|
||||
|
||||
trace(noteDiff);
|
||||
|
||||
// boyfriend.playAnim('hey');
|
||||
// vocals.volume = 1;
|
||||
|
||||
var placement:String = Std.string(combo);
|
||||
// var placement:String = sectionScores[1][curSection] + '/' + sectionScores[0][curSection];
|
||||
|
||||
var coolText:FlxText = new FlxText(0, 0, 0, placement, 32);
|
||||
coolText.screenCenter();
|
||||
coolText.x = FlxG.width * 0.75;
|
||||
coolText.x = FlxG.width * 0.55;
|
||||
//
|
||||
|
||||
var rating:FlxSprite = new FlxSprite();
|
||||
|
||||
var daRating:String = "shit";
|
||||
var daRating:String = "sick";
|
||||
|
||||
if (combo > 60)
|
||||
daRating = 'sick';
|
||||
else if (combo > 12)
|
||||
daRating = 'good'
|
||||
else if (combo > 4)
|
||||
if (noteDiff > Conductor.safeZoneOffset * 0.9)
|
||||
{
|
||||
daRating = 'shit';
|
||||
}
|
||||
else if (noteDiff > Conductor.safeZoneOffset * 0.75)
|
||||
{
|
||||
daRating = 'bad';
|
||||
}
|
||||
else if (noteDiff > Conductor.safeZoneOffset * 0.2)
|
||||
{
|
||||
daRating = 'good';
|
||||
}
|
||||
|
||||
/* if (combo > 60)
|
||||
daRating = 'sick';
|
||||
else if (combo > 12)
|
||||
daRating = 'good'
|
||||
else if (combo > 4)
|
||||
daRating = 'bad';
|
||||
*/
|
||||
rating.loadGraphic('assets/images/' + daRating + ".png");
|
||||
rating.screenCenter();
|
||||
rating.x = coolText.x - 40;
|
||||
|
@ -669,7 +692,7 @@ class PlayState extends MusicBeatState
|
|||
comboSpr.setGraphicSize(Std.int(comboSpr.width * 0.7));
|
||||
comboSpr.updateHitbox();
|
||||
comboSpr.velocity.x += FlxG.random.int(1, 10);
|
||||
add(comboSpr);
|
||||
// add(comboSpr);
|
||||
add(rating);
|
||||
|
||||
var seperatedScore:Array<Int> = [];
|
||||
|
@ -1017,6 +1040,7 @@ class PlayState extends MusicBeatState
|
|||
{
|
||||
if (!note.wasGoodHit)
|
||||
{
|
||||
popUpScore(note.strumTime);
|
||||
combo += 1;
|
||||
|
||||
if (note.noteData >= 0)
|
||||
|
@ -1072,7 +1096,7 @@ class PlayState extends MusicBeatState
|
|||
if (camZooming && FlxG.camera.zoom < 1.35 && totalBeats % 4 == 0)
|
||||
FlxG.camera.zoom += 0.025;
|
||||
|
||||
dad.playAnim('idle');
|
||||
dad.dance();
|
||||
healthHeads.setGraphicSize(Std.int(healthHeads.width + 20));
|
||||
|
||||
if (totalBeats % gfSpeed == 0)
|
||||
|
|
|
@ -2,10 +2,7 @@ package;
|
|||
|
||||
class Section
|
||||
{
|
||||
/**
|
||||
* NOT ACTUAL NOTE DATA! Just holds strum time and which part of the chart it is!
|
||||
*/
|
||||
public var notes:Array<Dynamic> = [];
|
||||
public var sectionNotes:Array<Note> = [];
|
||||
|
||||
public var lengthInSteps:Int = 16;
|
||||
public var typeOfSection:Int = 0;
|
||||
|
|
|
@ -15,6 +15,9 @@ class Song
|
|||
public var needsVoices:Bool = true;
|
||||
public var speed:Float = 1;
|
||||
|
||||
public var player1:String = 'bf';
|
||||
public var player2:String = 'dad';
|
||||
|
||||
public function new(song, notes, bpm, sections)
|
||||
{
|
||||
this.song = song;
|
||||
|
|
Loading…
Reference in a new issue