Merge pull request #91 from Saalvage/menu-plus

Better implementation of menu characters
This commit is contained in:
Kade M 2021-03-29 18:32:52 -07:00 committed by GitHub
commit 8b506680ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 62 additions and 64 deletions

View File

@ -3,18 +3,45 @@ package;
import flixel.FlxSprite; import flixel.FlxSprite;
import flixel.graphics.frames.FlxAtlasFrames; import flixel.graphics.frames.FlxAtlasFrames;
class CharacterSetting
{
public var x(default, null):Int;
public var y(default, null):Int;
public var scale(default, null):Float;
public var flipped(default, null):Bool;
public function new(x:Int = 0, y:Int = 0, scale:Float = 1.0, flipped:Bool = false)
{
this.x = x;
this.y = y;
this.scale = scale;
this.flipped = flipped;
}
}
class MenuCharacter extends FlxSprite class MenuCharacter extends FlxSprite
{ {
public var character:String; private static var settings:Map<String, CharacterSetting> = [
'bf' => new CharacterSetting(0, -20, 1.0, true),
'gf' => new CharacterSetting(50, 80, 1.5, true),
'dad' => new CharacterSetting(-15, 130),
'spooky' => new CharacterSetting(20, 30),
'pico' => new CharacterSetting(0, 0, 1.0, true),
'mom' => new CharacterSetting(-30, 140, 0.85),
'parents-christmas' => new CharacterSetting(100, 130, 1.8),
'senpai' => new CharacterSetting(-40, -45, 1.4)
];
public function new(x:Float, character:String = 'bf') private var flipped:Bool = false;
public function new(x:Int, y:Int, scale:Float, flipped:Bool)
{ {
super(x); super(x, y);
this.flipped = flipped;
this.character = character; antialiasing = true;
var tex = Paths.getSparrowAtlas('campaign_menu_UI_characters'); frames = Paths.getSparrowAtlas('campaign_menu_UI_characters');
frames = tex;
animation.addByPrefix('bf', "BF idle dance white", 24); animation.addByPrefix('bf', "BF idle dance white", 24);
animation.addByPrefix('bfConfirm', 'BF HEY!!', 24, false); animation.addByPrefix('bfConfirm', 'BF HEY!!', 24, false);
@ -25,9 +52,28 @@ class MenuCharacter extends FlxSprite
animation.addByPrefix('mom', "Mom Idle BLACK LINES", 24); animation.addByPrefix('mom', "Mom Idle BLACK LINES", 24);
animation.addByPrefix('parents-christmas', "Parent Christmas Idle", 24); animation.addByPrefix('parents-christmas', "Parent Christmas Idle", 24);
animation.addByPrefix('senpai', "SENPAI idle Black Lines", 24); animation.addByPrefix('senpai', "SENPAI idle Black Lines", 24);
// Parent Christmas Idle
animation.play(character); setGraphicSize(Std.int(width * scale));
updateHitbox(); updateHitbox();
} }
public function setCharacter(character:String):Void
{
if (character == '')
{
visible = false;
return;
}
else
{
visible = true;
}
animation.play(character);
var setting:CharacterSetting = settings[character];
offset.set(setting.x, setting.y);
setGraphicSize(Std.int(width * setting.scale));
flipX = setting.flipped != flipped;
}
} }

View File

@ -37,7 +37,7 @@ class StoryMenuState extends MusicBeatState
public static var weekUnlocked:Array<Bool> = [true, true, true, true, true, true, true]; public static var weekUnlocked:Array<Bool> = [true, true, true, true, true, true, true];
var weekCharacters:Array<Dynamic> = [ var weekCharacters:Array<Dynamic> = [
['dad', 'bf', 'gf'], ['gf', 'bf', ''],
['dad', 'bf', 'gf'], ['dad', 'bf', 'gf'],
['spooky', 'bf', 'gf'], ['spooky', 'bf', 'gf'],
['pico', 'bf', 'gf'], ['pico', 'bf', 'gf'],
@ -145,33 +145,9 @@ class StoryMenuState extends MusicBeatState
trace("Line 96"); trace("Line 96");
for (char in 0...3) grpWeekCharacters.add(new MenuCharacter(0, 100, 0.5, false));
{ grpWeekCharacters.add(new MenuCharacter(450, 25, 0.9, true));
var weekCharacterThing:MenuCharacter = new MenuCharacter((FlxG.width * 0.25) * (1 + char) - 150, weekCharacters[curWeek][char]); grpWeekCharacters.add(new MenuCharacter(850, 100, 0.5, true));
weekCharacterThing.y += 70;
weekCharacterThing.antialiasing = true;
switch (weekCharacterThing.character)
{
case 'dad':
weekCharacterThing.setGraphicSize(Std.int(weekCharacterThing.width * 0.5));
weekCharacterThing.updateHitbox();
case 'bf':
weekCharacterThing.setGraphicSize(Std.int(weekCharacterThing.width * 0.9));
weekCharacterThing.updateHitbox();
weekCharacterThing.x -= 80;
case 'gf':
weekCharacterThing.setGraphicSize(Std.int(weekCharacterThing.width * 0.5));
weekCharacterThing.updateHitbox();
case 'pico':
weekCharacterThing.flipX = true;
case 'parents-christmas':
weekCharacterThing.setGraphicSize(Std.int(weekCharacterThing.width * 0.9));
weekCharacterThing.updateHitbox();
}
grpWeekCharacters.add(weekCharacterThing);
}
difficultySelectors = new FlxGroup(); difficultySelectors = new FlxGroup();
add(difficultySelectors); add(difficultySelectors);
@ -399,35 +375,11 @@ class StoryMenuState extends MusicBeatState
function updateText() function updateText()
{ {
grpWeekCharacters.members[0].animation.play(weekCharacters[curWeek][0]); grpWeekCharacters.members[0].setCharacter(weekCharacters[curWeek][0]);
grpWeekCharacters.members[1].animation.play(weekCharacters[curWeek][1]); grpWeekCharacters.members[1].setCharacter(weekCharacters[curWeek][1]);
grpWeekCharacters.members[2].animation.play(weekCharacters[curWeek][2]); grpWeekCharacters.members[2].setCharacter(weekCharacters[curWeek][2]);
txtTracklist.text = "Tracks\n"; txtTracklist.text = "Tracks\n";
switch (grpWeekCharacters.members[0].animation.curAnim.name)
{
case 'parents-christmas':
grpWeekCharacters.members[0].offset.set(200, 200);
grpWeekCharacters.members[0].setGraphicSize(Std.int(grpWeekCharacters.members[0].width * 0.99));
case 'senpai':
grpWeekCharacters.members[0].offset.set(130, 0);
grpWeekCharacters.members[0].setGraphicSize(Std.int(grpWeekCharacters.members[0].width * 1.4));
case 'mom':
grpWeekCharacters.members[0].offset.set(100, 200);
grpWeekCharacters.members[0].setGraphicSize(Std.int(grpWeekCharacters.members[0].width * 1));
case 'dad':
grpWeekCharacters.members[0].offset.set(120, 200);
grpWeekCharacters.members[0].setGraphicSize(Std.int(grpWeekCharacters.members[0].width * 1));
default:
grpWeekCharacters.members[0].offset.set(100, 100);
grpWeekCharacters.members[0].setGraphicSize(Std.int(grpWeekCharacters.members[0].width * 1));
// grpWeekCharacters.members[0].updateHitbox();
}
var stringThing:Array<String> = weekData[curWeek]; var stringThing:Array<String> = weekData[curWeek];
for (i in stringThing) for (i in stringThing)