diff --git a/Project.xml b/Project.xml
index 3eb3740..b40d81b 100644
--- a/Project.xml
+++ b/Project.xml
@@ -41,6 +41,8 @@
+
+
diff --git a/art/campaign_menu_UI_assets.fla b/art/campaign_menu_UI_assets.fla
new file mode 100644
index 0000000..f7aae25
Binary files /dev/null and b/art/campaign_menu_UI_assets.fla differ
diff --git a/art/icon.png~ b/art/icon.png~
deleted file mode 100644
index 380a71c..0000000
Binary files a/art/icon.png~ and /dev/null differ
diff --git a/assets/data/section1.aseprite b/assets/data/section1.aseprite
deleted file mode 100644
index 585312c..0000000
Binary files a/assets/data/section1.aseprite and /dev/null differ
diff --git a/assets/fonts/vcr.ttf b/assets/fonts/vcr.ttf
new file mode 100644
index 0000000..dcca687
Binary files /dev/null and b/assets/fonts/vcr.ttf differ
diff --git a/assets/images/campaign_menu_UI_assets.png b/assets/images/campaign_menu_UI_assets.png
new file mode 100644
index 0000000..98a8924
Binary files /dev/null and b/assets/images/campaign_menu_UI_assets.png differ
diff --git a/assets/images/campaign_menu_UI_assets.xml b/assets/images/campaign_menu_UI_assets.xml
new file mode 100644
index 0000000..51aab94
--- /dev/null
+++ b/assets/images/campaign_menu_UI_assets.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/images/campaign_menu_UI_characters.png b/assets/images/campaign_menu_UI_characters.png
new file mode 100644
index 0000000..75de6a5
Binary files /dev/null and b/assets/images/campaign_menu_UI_characters.png differ
diff --git a/assets/images/campaign_menu_UI_characters.xml b/assets/images/campaign_menu_UI_characters.xml
new file mode 100644
index 0000000..80b7ab2
--- /dev/null
+++ b/assets/images/campaign_menu_UI_characters.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/music/Bopeebo.mp3 b/assets/music/Bopeebo.mp3
deleted file mode 100644
index 53c5f0c..0000000
Binary files a/assets/music/Bopeebo.mp3 and /dev/null differ
diff --git a/assets/music/Bopeebo.ogg b/assets/music/Bopeebo.ogg
deleted file mode 100644
index 44b10f9..0000000
Binary files a/assets/music/Bopeebo.ogg and /dev/null differ
diff --git a/assets/music/Bopeebo_Inst.mp3 b/assets/music/Bopeebo_Inst.mp3
index d8fe8bf..593fe28 100644
Binary files a/assets/music/Bopeebo_Inst.mp3 and b/assets/music/Bopeebo_Inst.mp3 differ
diff --git a/assets/music/Bopeebo_Voices.mp3 b/assets/music/Bopeebo_Voices.mp3
index 7675230..ebb468a 100644
Binary files a/assets/music/Bopeebo_Voices.mp3 and b/assets/music/Bopeebo_Voices.mp3 differ
diff --git a/assets/music/Dadbattle.mp3 b/assets/music/Dadbattle.mp3
index 51d658d..2527185 100644
Binary files a/assets/music/Dadbattle.mp3 and b/assets/music/Dadbattle.mp3 differ
diff --git a/assets/music/Dadbattle_Inst.mp3 b/assets/music/Dadbattle_Inst.mp3
index d4ee5c7..37a5752 100644
Binary files a/assets/music/Dadbattle_Inst.mp3 and b/assets/music/Dadbattle_Inst.mp3 differ
diff --git a/assets/music/Fresh.mp3 b/assets/music/Fresh.mp3
deleted file mode 100644
index c9e6ae2..0000000
Binary files a/assets/music/Fresh.mp3 and /dev/null differ
diff --git a/assets/music/Fresh.ogg b/assets/music/Fresh.ogg
deleted file mode 100644
index d5843b8..0000000
Binary files a/assets/music/Fresh.ogg and /dev/null differ
diff --git a/assets/music/Fresh_Inst.mp3 b/assets/music/Fresh_Inst.mp3
index cb5d71a..061f856 100644
Binary files a/assets/music/Fresh_Inst.mp3 and b/assets/music/Fresh_Inst.mp3 differ
diff --git a/assets/music/South.mp3 b/assets/music/South.mp3
deleted file mode 100644
index cc200cb..0000000
Binary files a/assets/music/South.mp3 and /dev/null differ
diff --git a/assets/music/South.ogg b/assets/music/South.ogg
deleted file mode 100644
index ef78c26..0000000
Binary files a/assets/music/South.ogg and /dev/null differ
diff --git a/assets/music/Spookeez_Inst.mp3 b/assets/music/Spookeez_Inst.mp3
index 14bde4c..ee4577a 100644
Binary files a/assets/music/Spookeez_Inst.mp3 and b/assets/music/Spookeez_Inst.mp3 differ
diff --git a/assets/music/Tutorial.mp3 b/assets/music/Tutorial.mp3
deleted file mode 100644
index ee24510..0000000
Binary files a/assets/music/Tutorial.mp3 and /dev/null differ
diff --git a/assets/music/Tutorial.ogg b/assets/music/Tutorial.ogg
deleted file mode 100644
index 91c9632..0000000
Binary files a/assets/music/Tutorial.ogg and /dev/null differ
diff --git a/assets/music/Tutorial_Inst.mp3 b/assets/music/Tutorial_Inst.mp3
index ee24510..473f008 100644
Binary files a/assets/music/Tutorial_Inst.mp3 and b/assets/music/Tutorial_Inst.mp3 differ
diff --git a/assets/music/freakyMenu.mp3 b/assets/music/freakyMenu.mp3
index caaf7c5..8132bfe 100644
Binary files a/assets/music/freakyMenu.mp3 and b/assets/music/freakyMenu.mp3 differ
diff --git a/source/MenuItem.hx b/source/MenuItem.hx
new file mode 100644
index 0000000..9908caa
--- /dev/null
+++ b/source/MenuItem.hx
@@ -0,0 +1,35 @@
+package;
+
+import flixel.FlxSprite;
+import flixel.graphics.frames.FlxAtlasFrames;
+import flixel.group.FlxSpriteGroup;
+
+class MenuItem extends FlxSpriteGroup
+{
+ public function new(x:Float, y:Float, week:Int = 0, unlocked:Bool = false)
+ {
+ super(x, y);
+
+ var tex = FlxAtlasFrames.fromSparrow(AssetPaths.campaign_menu_UI_assets__png, AssetPaths.campaign_menu_UI_assets__xml);
+
+ var week:FlxSprite = new FlxSprite();
+ week.frames = tex;
+ week.animation.addByPrefix('week0', "WEEK1 select", 24);
+ week.animation.addByPrefix('week1', "week2 select", 24);
+ add(week);
+
+ week.animation.play('week' + week);
+ week.updateHitbox();
+
+ if (!unlocked)
+ {
+ week.alpha = 0.6;
+
+ var lock:FlxSprite = new FlxSprite(week.frameWidth + 5);
+ lock.frames = tex;
+ lock.animation.addByPrefix('lock', 'lock');
+ lock.animation.play('lock');
+ add(lock);
+ }
+ }
+}
diff --git a/source/StoryMenuState.hx b/source/StoryMenuState.hx
new file mode 100644
index 0000000..f4003cb
--- /dev/null
+++ b/source/StoryMenuState.hx
@@ -0,0 +1,102 @@
+package;
+
+import flixel.FlxG;
+import flixel.FlxSprite;
+import flixel.graphics.frames.FlxAtlasFrames;
+import flixel.text.FlxText;
+
+using StringTools;
+
+class StoryMenuState extends MusicBeatState
+{
+ var scoreText:FlxText;
+
+ var weekData:Array = [['Tutorial', 'Bopeebo', 'Fresh', 'Dad Battle'], ['Spookeez', 'South', 'Monster']];
+
+ var curWeek:Int = 0;
+
+ var txtTracklist:FlxText;
+
+ override function create()
+ {
+ scoreText = new FlxText(10, 10, 0, "SCORE: 49324858", 36);
+ scoreText.setFormat("VCR OSD Mono", 32);
+ add(scoreText);
+
+ var rankText:FlxText = new FlxText(0, 10);
+ rankText.text = 'RANK: GREAT';
+ rankText.setFormat("assets/fonts/vcr.ttf", 32);
+ rankText.size = scoreText.size;
+ rankText.screenCenter(X);
+ add(rankText);
+
+ var ui_tex = FlxAtlasFrames.fromSparrow(AssetPaths.campaign_menu_UI_assets__png, AssetPaths.campaign_menu_UI_assets__xml);
+ var yellowBG:FlxSprite = new FlxSprite(0, 56).makeGraphic(FlxG.width, 400, 0xFFF9CF51);
+
+ for (i in 0...weekData.length)
+ {
+ var unlocked:Bool = true;
+
+ if (i == 1)
+ unlocked = false;
+
+ var weekThing:MenuItem = new MenuItem(0, yellowBG.y + yellowBG.height + 10, i, unlocked);
+ add(weekThing);
+ }
+
+ add(yellowBG);
+
+ txtTracklist = new FlxText(FlxG.width * 0.05, yellowBG.x + yellowBG.height + 100, 0, "Tracks", 32);
+ txtTracklist.alignment = CENTER;
+ txtTracklist.font = rankText.font;
+ txtTracklist.color = 0xFFe55777;
+ add(txtTracklist);
+
+ updateText();
+
+ super.create();
+ }
+
+ override function update(elapsed:Float)
+ {
+ // scoreText.setFormat('VCR OSD Mono', 32);
+ // scoreText.text = "Score SHIT";
+ // FlxG.watch.addQuick('font', scoreText.font);
+
+ if (controls.UP_P)
+ changeWeek(-1);
+ if (controls.DOWN_P)
+ changeWeek(1);
+
+ super.update(elapsed);
+ }
+
+ function changeWeek(change:Int = 0):Void
+ {
+ curWeek += change;
+
+ if (curWeek >= weekData.length)
+ curWeek = 0;
+ if (curWeek < 0)
+ curWeek = weekData.length - 1;
+
+ updateText();
+ }
+
+ function updateText()
+ {
+ txtTracklist.text = "Tracks\n";
+
+ var stringThing:Array = weekData[curWeek];
+
+ for (i in stringThing)
+ {
+ txtTracklist.text += "\n" + i;
+ }
+
+ txtTracklist.text.toUpperCase();
+
+ txtTracklist.screenCenter(X);
+ txtTracklist.x -= FlxG.width * 0.35;
+ }
+}
diff --git a/source/TitleState.hx b/source/TitleState.hx
index cf25c47..beb3c9d 100644
--- a/source/TitleState.hx
+++ b/source/TitleState.hx
@@ -41,7 +41,7 @@ class TitleState extends MusicBeatState
super.create();
#if SKIP_TO_PLAYSTATE
- FlxG.switchState(new FreeplayState());
+ FlxG.switchState(new StoryMenuState());
#else
startIntro();
#end