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.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
{
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 = tex;
frames = Paths.getSparrowAtlas('campaign_menu_UI_characters');
animation.addByPrefix('bf', "BF idle dance white", 24);
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('parents-christmas', "Parent Christmas Idle", 24);
animation.addByPrefix('senpai', "SENPAI idle Black Lines", 24);
// Parent Christmas Idle
animation.play(character);
setGraphicSize(Std.int(width * scale));
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];
var weekCharacters:Array<Dynamic> = [
['dad', 'bf', 'gf'],
['gf', 'bf', ''],
['dad', 'bf', 'gf'],
['spooky', 'bf', 'gf'],
['pico', 'bf', 'gf'],
@ -145,33 +145,9 @@ class StoryMenuState extends MusicBeatState
trace("Line 96");
for (char in 0...3)
{
var weekCharacterThing:MenuCharacter = new MenuCharacter((FlxG.width * 0.25) * (1 + char) - 150, weekCharacters[curWeek][char]);
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);
}
grpWeekCharacters.add(new MenuCharacter(0, 100, 0.5, false));
grpWeekCharacters.add(new MenuCharacter(450, 25, 0.9, true));
grpWeekCharacters.add(new MenuCharacter(850, 100, 0.5, true));
difficultySelectors = new FlxGroup();
add(difficultySelectors);
@ -399,35 +375,11 @@ class StoryMenuState extends MusicBeatState
function updateText()
{
grpWeekCharacters.members[0].animation.play(weekCharacters[curWeek][0]);
grpWeekCharacters.members[1].animation.play(weekCharacters[curWeek][1]);
grpWeekCharacters.members[2].animation.play(weekCharacters[curWeek][2]);
grpWeekCharacters.members[0].setCharacter(weekCharacters[curWeek][0]);
grpWeekCharacters.members[1].setCharacter(weekCharacters[curWeek][1]);
grpWeekCharacters.members[2].setCharacter(weekCharacters[curWeek][2]);
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];
for (i in stringThing)