Skip to content

Commit c64483a

Browse files
committed
freeplay stuff, FlxMath.wrap
1 parent ed7e0cb commit c64483a

9 files changed

Lines changed: 638 additions & 68 deletions

File tree

assets/ui/freeplay/backingCard/backing-text-yeah/Animation.json

Lines changed: 557 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{"ATLAS": {"SPRITES":[
2+
{"SPRITE" : {"name": "0000","x":0,"y":436,"w":500,"h":71,"rotated": false}},
3+
{"SPRITE" : {"name": "0001","x":0,"y":170,"w":529,"h":164,"rotated": false}},
4+
{"SPRITE" : {"name": "0002","x":0,"y":339,"w":532,"h":92,"rotated": false}},
5+
{"SPRITE" : {"name": "0003","x":0,"y":0,"w":601,"h":165,"rotated": false}}
6+
]},
7+
"meta": {
8+
"app": "Adobe Animate",
9+
"version": "22.0.5.191",
10+
"image": "spritemap1.png",
11+
"format": "RGBA8888",
12+
"size": {"w":601,"h":507},
13+
"resolution": "1"
14+
}
15+
}
13 KB
Loading

src/funkin/objects/ui/freeplay/backingcards/BoyfriendBackingCard.hx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import funkin.states.ui.FreeplayState;
77
class BoyfriendBackingCard extends BackingCard
88
{
99
var cardGlow:FunkinSprite;
10+
var backingTextYeah:FunkinSprite;
1011
var confirmGlow:FunkinSprite;
1112
var confirmGlowTwo:FunkinSprite;
1213
var confirmTextGlow:FunkinSprite;
@@ -78,6 +79,10 @@ class BoyfriendBackingCard extends BackingCard
7879
glow = new FunkinSprite(-300, 330).loadTexture('ui/freeplay/backingCard/beatglow');
7980
glow.blend = ADD;
8081
add(glow);
82+
83+
backingTextYeah = new FunkinSprite(640, 370).loadFrames('ui/freeplay/backingCard/backing-text-yeah');
84+
backingTextYeah.addAnimation("anim", "BF back card confirm raw", 24, false);
85+
add(backingTextYeah);
8186
}
8287

8388
override public function startIntroTween():Void
@@ -174,6 +179,8 @@ class BoyfriendBackingCard extends BackingCard
174179
});
175180
}
176181
});
182+
183+
backingTextYeah.playAnimation('anim', true);
177184
}
178185

179186
override public function exit():Void

src/funkin/states/ui/CreditsState.hx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -315,12 +315,7 @@ class CreditsState extends FunkinState
315315

316316
function changeItem(?indexHop:Int = 0):Void
317317
{
318-
curSelected += indexHop;
319-
320-
if (curSelected >= bubbleData.length)
321-
curSelected = 0;
322-
else if (curSelected < 0)
323-
curSelected = bubbleData.length - 1;
318+
curSelected = FlxMath.wrap(curSelected + indexHop, 0, bubbleData.length - 1);
324319

325320
if (indexHop != 0)
326321
FlxG.sound.play(Paths.content.audio('ui/menu/scrollMenu'));

src/funkin/states/ui/FreeplayState.hx

Lines changed: 53 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -245,18 +245,10 @@ class FreeplayState extends FunkinState
245245
{
246246
if (controls.justPressed.ACCEPT)
247247
{
248-
backingCard.confirm();
249-
dj.confirm();
250-
blockInputs = true;
251-
252-
new FlxTimer().start(2, (_) ->
253-
{
254-
FlxG.switchState(() -> new PlayState({
255-
song: filteredSongs[curSelected - 1],
256-
variation: curVariation,
257-
difficulty: curDifficulty
258-
}));
259-
});
248+
if (curSelected == 0)
249+
doRandom();
250+
else
251+
enterSong();
260252
}
261253

262254
if (controls.justPressed.BACK)
@@ -310,14 +302,9 @@ class FreeplayState extends FunkinState
310302
*/
311303
public function changeSelection(?index:Int = 0):Void
312304
{
313-
curSelected += index;
305+
curSelected = FlxMath.wrap(curSelected + index, -1, filteredSongs.length - 1);
314306

315-
if (curSelected >= filteredSongs.length + 1) // random
316-
curSelected = 0;
317-
else if (curSelected < 0)
318-
curSelected = filteredSongs.length;
319-
320-
if (curSelected == 0)
307+
if (curSelected == -1)
321308
{
322309
conductor.changeBPM(145);
323310
conductor.resetBPMChanges();
@@ -344,12 +331,14 @@ class FreeplayState extends FunkinState
344331
{
345332
i += 1;
346333

347-
capsule.selected = i == curSelected + 1;
334+
var curSelectedWithRandom:Int = curSelected + 1;
335+
336+
capsule.selected = i == curSelectedWithRandom + 1;
348337

349-
capsule.lerpPos.y = capsule.intendedY(i - curSelected);
350-
capsule.lerpPos.x = 270 + (60 * (Math.sin(i - curSelected)));
338+
capsule.lerpPos.y = capsule.intendedY(i - curSelectedWithRandom);
339+
capsule.lerpPos.x = 270 + (60 * (Math.sin(i - curSelectedWithRandom)));
351340

352-
if (i < curSelected)
341+
if (i < curSelectedWithRandom)
353342
capsule.lerpPos.y -= 100; // another 100 for good measure
354343
}
355344

@@ -365,12 +354,7 @@ class FreeplayState extends FunkinState
365354
var difficulties:Array<String> = filteredSongs[curSelected - 1]?.getDifficulties(null) ?? difficultiesAvailable;
366355
var curIndex:Int = difficulties.indexOf(curDifficulty);
367356

368-
curIndex += index;
369-
370-
if (curIndex >= difficulties.length)
371-
curIndex = 0;
372-
else if (curIndex < 0)
373-
curIndex = difficulties.length - 1;
357+
curIndex = FlxMath.wrap(curIndex + index, 0, difficulties.length - 1);
374358

375359
curDifficulty = difficulties[curIndex];
376360
difficultySelector.changeDifficulty(curDifficulty, index);
@@ -408,11 +392,11 @@ class FreeplayState extends FunkinState
408392
*/
409393
public function lookForCurrrentVariation():Void
410394
{
411-
if (filteredSongs[curSelected - 1] != null)
395+
if (filteredSongs[curSelected] != null)
412396
{
413-
for (variation in filteredSongs[curSelected - 1].getVariations())
397+
for (variation in filteredSongs[curSelected].getVariations())
414398
{
415-
if (filteredSongs[curSelected - 1]?.getDifficulties(variation)?.contains(curDifficulty) ?? false)
399+
if (filteredSongs[curSelected]?.getDifficulties(variation)?.contains(curDifficulty) ?? false)
416400
{
417401
curVariation = variation;
418402
break;
@@ -421,6 +405,43 @@ class FreeplayState extends FunkinState
421405
}
422406
}
423407

408+
/**
409+
* Enters a random song, if possible.
410+
*/
411+
public function doRandom():Void
412+
{
413+
if (filteredSongs.length == 0)
414+
{
415+
FlxG.sound.play(Paths.content.audio('ui/menu/cancelMenu'));
416+
trace('No songs currently available!');
417+
return;
418+
}
419+
420+
curSelected = FlxG.random.int(0, filteredSongs.length - 1);
421+
changeSelection();
422+
enterSong();
423+
}
424+
425+
/**
426+
* Enters selected song.
427+
*/
428+
public function enterSong():Void
429+
{
430+
FlxG.sound.play(Paths.content.audio('ui/menu/confirmMenu'));
431+
backingCard.confirm();
432+
dj.confirm();
433+
blockInputs = true;
434+
435+
new FlxTimer().start(2, (_) ->
436+
{
437+
FlxG.switchState(() -> new PlayState({
438+
song: filteredSongs[curSelected],
439+
variation: curVariation,
440+
difficulty: curDifficulty
441+
}));
442+
});
443+
}
444+
424445
override public function destroy():Void
425446
{
426447
if (isRandomPlaying)

src/funkin/states/ui/MenuState.hx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -193,12 +193,7 @@ class MenuState extends FunkinState
193193

194194
function changeItem(?indexHop:Int = 0):Void
195195
{
196-
curSelected += indexHop;
197-
198-
if (curSelected > menuItems.length - 1)
199-
curSelected = 0;
200-
else if (curSelected < 0)
201-
curSelected = menuItems.length - 1;
196+
curSelected = FlxMath.wrap(curSelected + indexHop, 0, menuItems.length - 1);
202197

203198
if (indexHop != 0)
204199
FlxG.sound.play(Paths.content.audio('ui/menu/scrollMenu'));

src/funkin/states/ui/OptionsState.hx

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -315,12 +315,7 @@ class OptionsState extends FunkinState
315315

316316
function changeCategory(?indexHop:Int = 0):Void
317317
{
318-
curSelectedCategory += indexHop;
319-
320-
if (curSelectedCategory > categories.length - 1)
321-
curSelectedCategory = 0;
322-
else if (curSelectedCategory < 0)
323-
curSelectedCategory = categories.length - 1;
318+
curSelectedCategory = FlxMath.wrap(curSelectedCategory + indexHop, 0, categories.length - 1);
324319

325320
if (indexHop != 0)
326321
FlxG.sound.play(Paths.content.audio('ui/menu/scrollMenu'));
@@ -375,12 +370,7 @@ class OptionsState extends FunkinState
375370

376371
function changeOption(?indexHop:Int = 0):Void
377372
{
378-
curSelectedOption += indexHop;
379-
380-
if (curSelectedOption > categories[curSelectedCategory].options.length - 1)
381-
curSelectedOption = 0;
382-
else if (curSelectedOption < 0)
383-
curSelectedOption = categories[curSelectedCategory].options.length - 1;
373+
curSelectedOption = FlxMath.wrap(curSelectedOption + indexHop, 0, categories[curSelectedCategory].options.length - 1);
384374

385375
if (indexHop != 0)
386376
FlxG.sound.play(Paths.content.audio('ui/menu/scrollMenu'));

src/funkin/states/ui/StoryState.hx

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -238,12 +238,7 @@ class StoryState extends FunkinState
238238

239239
function changeItem(change:Int = 0):Void
240240
{
241-
curSelected += change;
242-
243-
if (curSelected >= loadedWeeks.length)
244-
curSelected = 0;
245-
if (curSelected < 0)
246-
curSelected = loadedWeeks.length - 1;
241+
curSelected = FlxMath.wrap(curSelected + change, 0, loadedWeeks.length - 1);
247242

248243
if (change != 0)
249244
FlxG.sound.play(Paths.content.audio('ui/menu/scrollMenu'));
@@ -287,12 +282,7 @@ class StoryState extends FunkinState
287282

288283
function changeDifficulty(change:Int = 0):Void
289284
{
290-
curDifficulty += change;
291-
292-
if (curDifficulty >= _difficulties.length)
293-
curDifficulty = 0;
294-
if (curDifficulty < 0)
295-
curDifficulty = _difficulties.length - 1;
285+
curDifficulty = FlxMath.wrap(curDifficulty + change, 0, _difficulties.length - 1);
296286

297287
if (change != 0)
298288
FlxG.sound.play(Paths.content.audio('ui/menu/scrollMenu'));

0 commit comments

Comments
 (0)