mirror of
https://github.com/FunkinCrew/Funkin.git
synced 2025-04-12 06:54:41 -04:00
charting editor / notespeed stuff and senpai voice
This commit is contained in:
parent
df4788dcf4
commit
56d59774e3
6 changed files with 139 additions and 15 deletions
|
@ -19,6 +19,7 @@ import flixel.addons.ui.FlxUITooltip.FlxUITooltipStyle;
|
|||
import flixel.graphics.tile.FlxDrawTrianglesItem.DrawData;
|
||||
import flixel.group.FlxGroup.FlxTypedGroup;
|
||||
import flixel.group.FlxGroup;
|
||||
import flixel.input.gamepad.id.SwitchJoyconLeftID;
|
||||
import flixel.math.FlxMath;
|
||||
import flixel.math.FlxPoint;
|
||||
import flixel.system.FlxSound;
|
||||
|
@ -351,6 +352,7 @@ class ChartingState extends MusicBeatState
|
|||
}
|
||||
|
||||
var stepperSusLength:FlxUINumericStepper;
|
||||
var stepperPerNoteSpeed:FlxUINumericStepper;
|
||||
|
||||
function addNoteUI():Void
|
||||
{
|
||||
|
@ -361,9 +363,17 @@ class ChartingState extends MusicBeatState
|
|||
stepperSusLength.value = 0;
|
||||
stepperSusLength.name = 'note_susLength';
|
||||
|
||||
stepperPerNoteSpeed = new FlxUINumericStepper(10, 40, 0.1, 1, 0.01, 100, 2);
|
||||
stepperPerNoteSpeed.value = 1;
|
||||
stepperPerNoteSpeed.name = "note_PerNoteSpeed";
|
||||
|
||||
var noteSpeedName:FlxText = new FlxText(40, stepperPerNoteSpeed.y, 0, "Note Speed Multiplier");
|
||||
|
||||
var applyLength:FlxButton = new FlxButton(100, 10, 'Apply');
|
||||
|
||||
tab_group_note.add(stepperSusLength);
|
||||
tab_group_note.add(stepperPerNoteSpeed);
|
||||
tab_group_note.add(noteSpeedName);
|
||||
tab_group_note.add(applyLength);
|
||||
|
||||
UI_box.addGroup(tab_group_note);
|
||||
|
@ -402,11 +412,11 @@ class ChartingState extends MusicBeatState
|
|||
musSpec.x += 70;
|
||||
musSpec.daHeight = FlxG.height / 2;
|
||||
musSpec.scrollFactor.set();
|
||||
musSpec.visType = FREQUENCIES;
|
||||
// musSpec.visType = FREQUENCIES;
|
||||
add(musSpec);
|
||||
|
||||
// trace(audioBuf.data.length);
|
||||
playheadTest = new FlxSprite(0, 0).makeGraphic(2, 255, FlxColor.RED);
|
||||
playheadTest = new FlxSprite(0, 0).makeGraphic(2, 60, FlxColor.RED);
|
||||
playheadTest.scrollFactor.set();
|
||||
add(playheadTest);
|
||||
|
||||
|
@ -419,13 +429,13 @@ class ChartingState extends MusicBeatState
|
|||
add(staticSpecGrp);
|
||||
|
||||
var aBoy:ABotVis = new ABotVis(FlxG.sound.music);
|
||||
add(aBoy);
|
||||
// add(aBoy);
|
||||
|
||||
for (index => voc in vocals.members)
|
||||
{
|
||||
var vocalSpec:SpectogramSprite = new SpectogramSprite(voc, FlxG.random.color(0xFFAAAAAA, FlxColor.WHITE, 100));
|
||||
vocalSpec.x = 70 - (50 * index);
|
||||
vocalSpec.visType = FREQUENCIES;
|
||||
// vocalSpec.visType = FREQUENCIES;
|
||||
vocalSpec.daHeight = musSpec.daHeight;
|
||||
vocalSpec.y = vocalSpec.daHeight;
|
||||
vocalSpec.scrollFactor.set();
|
||||
|
@ -794,13 +804,21 @@ class ChartingState extends MusicBeatState
|
|||
vocals.time = FlxG.sound.music.time;
|
||||
}
|
||||
|
||||
if (FlxG.keys.justReleased.S)
|
||||
{
|
||||
FlxG.sound.music.pause();
|
||||
vocals.pause();
|
||||
|
||||
#if HAS_PITCH
|
||||
FlxG.sound.music.pitch = 1;
|
||||
vocals.pitch = 1;
|
||||
#end
|
||||
}
|
||||
|
||||
if (!FlxG.keys.pressed.SHIFT)
|
||||
{
|
||||
if (FlxG.keys.pressed.W || FlxG.keys.pressed.S)
|
||||
{
|
||||
FlxG.sound.music.pause();
|
||||
vocals.pause();
|
||||
|
||||
var daTime:Float = 700 * FlxG.elapsed;
|
||||
|
||||
if (FlxG.keys.pressed.CONTROL)
|
||||
|
@ -808,31 +826,58 @@ class ChartingState extends MusicBeatState
|
|||
|
||||
if (FlxG.keys.pressed.W)
|
||||
{
|
||||
FlxG.sound.music.pause();
|
||||
vocals.pause();
|
||||
FlxG.sound.music.time -= daTime;
|
||||
vocals.time = FlxG.sound.music.time;
|
||||
}
|
||||
else
|
||||
FlxG.sound.music.time += daTime;
|
||||
{
|
||||
if (FlxG.keys.justPressed.S)
|
||||
{
|
||||
FlxG.sound.music.play();
|
||||
vocals.play();
|
||||
|
||||
vocals.time = FlxG.sound.music.time;
|
||||
#if HAS_PITCH
|
||||
FlxG.sound.music.pitch = 0.5;
|
||||
vocals.pitch = 0.5;
|
||||
#end
|
||||
}
|
||||
}
|
||||
// FlxG.sound.music.time += daTime;
|
||||
|
||||
// vocals.time = FlxG.sound.music.time;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (FlxG.keys.justPressed.W || FlxG.keys.justPressed.S)
|
||||
{
|
||||
FlxG.sound.music.pause();
|
||||
vocals.pause();
|
||||
|
||||
var daTime:Float = Conductor.stepCrochet * 2;
|
||||
|
||||
if (FlxG.keys.justPressed.W)
|
||||
{
|
||||
FlxG.sound.music.pause();
|
||||
vocals.pause();
|
||||
|
||||
FlxG.sound.music.time -= daTime;
|
||||
vocals.time = FlxG.sound.music.time;
|
||||
}
|
||||
else
|
||||
FlxG.sound.music.time += daTime;
|
||||
{
|
||||
if (FlxG.keys.justPressed.S)
|
||||
{
|
||||
// FlxG.sound.music.time += daTime;
|
||||
|
||||
vocals.time = FlxG.sound.music.time;
|
||||
FlxG.sound.music.play();
|
||||
vocals.play();
|
||||
|
||||
#if HAS_PITCH
|
||||
FlxG.sound.music.pitch = 0.2;
|
||||
vocals.pitch = 0.2;
|
||||
#end
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1013,6 +1058,9 @@ class ChartingState extends MusicBeatState
|
|||
}
|
||||
leftIcon.setGraphicSize(0, 45);
|
||||
rightIcon.setGraphicSize(0, 45);
|
||||
|
||||
leftIcon.height *= 0.6;
|
||||
rightIcon.height *= 0.6;
|
||||
}
|
||||
|
||||
function updateNoteUI():Void
|
||||
|
|
44
source/FlxSwf.hx
Normal file
44
source/FlxSwf.hx
Normal file
|
@ -0,0 +1,44 @@
|
|||
package;
|
||||
|
||||
import flixel.FlxCamera;
|
||||
import flixel.FlxSprite;
|
||||
import flixel.graphics.tile.FlxDrawBaseItem;
|
||||
import openfl.display.MovieClip;
|
||||
|
||||
class FlxSwf extends FlxSprite
|
||||
{
|
||||
public var swf:MovieClip;
|
||||
|
||||
public function new()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
override function draw()
|
||||
{
|
||||
for (camera in cameras)
|
||||
{
|
||||
if (!camera.visible || !camera.exists)
|
||||
continue;
|
||||
|
||||
getScreenPosition(_point, camera).subtractPoint(offset);
|
||||
// assume no render blit for now
|
||||
// use camera.canvas
|
||||
// camera.canvas.graphics.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class FlxDrawSwfItem extends FlxDrawBaseItem<FlxDrawSwfItem>
|
||||
{
|
||||
public function new()
|
||||
{
|
||||
super();
|
||||
type = FlxDrawItemType.TILES;
|
||||
}
|
||||
|
||||
override function render(camera:FlxCamera)
|
||||
{
|
||||
super.render(camera);
|
||||
}
|
||||
}
|
|
@ -50,6 +50,9 @@ class Note extends FlxSprite
|
|||
public static var GOOD_THRESHOLD:Float = 0.55; // 91.67ms , 5.5 frames
|
||||
public static var SICK_THRESHOLD:Float = 0.2; // 33.33ms , 2 frames
|
||||
|
||||
public var noteSpeedMulti:Float = 1;
|
||||
public var pastHalfWay:Bool = false;
|
||||
|
||||
// anything below sick threshold is sick
|
||||
public static var arrowColors:Array<Float> = [1, 1, 1, 1];
|
||||
|
||||
|
@ -232,6 +235,12 @@ class Note extends FlxSprite
|
|||
}
|
||||
else
|
||||
{
|
||||
if (!pastHalfWay && strumTime <= Conductor.songPosition)
|
||||
{
|
||||
pastHalfWay = true;
|
||||
noteSpeedMulti *= 2;
|
||||
}
|
||||
|
||||
if (strumTime > Conductor.songPosition - HIT_WINDOW)
|
||||
{ // * 0.5 if sustain note, so u have to keep holding it closer to all the way thru!
|
||||
if (strumTime < Conductor.songPosition + (HIT_WINDOW * (isSustainNote ? 0.5 : 1)))
|
||||
|
|
|
@ -2144,7 +2144,7 @@ class PlayState extends MusicBeatState
|
|||
var strumLineMid = strumLine.y + Note.swagWidth / 2;
|
||||
|
||||
if (daNote.followsTime)
|
||||
daNote.y = (Conductor.songPosition - daNote.strumTime) * (0.45 * FlxMath.roundDecimal(SongLoad.getSpeed(), 2));
|
||||
daNote.y = (Conductor.songPosition - daNote.strumTime) * (0.45 * FlxMath.roundDecimal(SongLoad.getSpeed(), 2) * daNote.noteSpeedMulti);
|
||||
|
||||
if (PreferencesMenu.getPref('downscroll'))
|
||||
{
|
||||
|
|
|
@ -278,6 +278,16 @@ class TitleState extends MusicBeatState
|
|||
|
||||
override function update(elapsed:Float)
|
||||
{
|
||||
trace(FlxG.renderBlit);
|
||||
|
||||
#if HAS_PITCH
|
||||
if (FlxG.keys.pressed.UP)
|
||||
FlxG.sound.music.pitch += 0.5 * elapsed;
|
||||
|
||||
if (FlxG.keys.pressed.DOWN)
|
||||
FlxG.sound.music.pitch -= 0.5 * elapsed;
|
||||
#end
|
||||
|
||||
/* if (FlxG.onMobile)
|
||||
{
|
||||
if (gfDance != null)
|
||||
|
|
|
@ -9,6 +9,8 @@ class VoicesGroup extends FlxTypedGroup<FlxSound>
|
|||
|
||||
public var volume(default, set):Float = 1;
|
||||
|
||||
public var pitch(default, set):Float = 1;
|
||||
|
||||
// make it a group that you add to?
|
||||
public function new(song:String, ?files:Array<String>, ?needsVoices:Bool = true)
|
||||
{
|
||||
|
@ -80,4 +82,15 @@ class VoicesGroup extends FlxTypedGroup<FlxSound>
|
|||
|
||||
return volume;
|
||||
}
|
||||
|
||||
function set_pitch(val:Float):Float
|
||||
{
|
||||
#if HAS_PITCH
|
||||
forEachAlive(function(snd)
|
||||
{
|
||||
snd.pitch = val;
|
||||
});
|
||||
#end
|
||||
return val;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue