mirror of
https://github.com/FunkinCrew/Funkin.git
synced 2024-11-27 10:05:41 -05:00
Merge branch 'shart' of https://github.com/ninjamuffin99/funkin-secret into shart
This commit is contained in:
commit
2419af49d6
11 changed files with 302 additions and 49 deletions
|
@ -96,7 +96,10 @@
|
||||||
<assets path="assets/week7" library="week7" exclude="*.ogg" if="web"/>
|
<assets path="assets/week7" library="week7" exclude="*.ogg" if="web"/>
|
||||||
<assets path="assets/week7" library="week7" exclude="*.mp3" unless="web"/>
|
<assets path="assets/week7" library="week7" exclude="*.mp3" unless="web"/>
|
||||||
|
|
||||||
<assets path='example_mods' rename='mods' embed='false'/>
|
<!-- <assets path='example_mods' rename='mods' embed='false'/> -->
|
||||||
|
|
||||||
|
<template path="example_mods" rename="mods" />
|
||||||
|
|
||||||
<assets path='art/readme.txt' rename='do NOT readme.txt' />
|
<assets path='art/readme.txt' rename='do NOT readme.txt' />
|
||||||
<!-- <template path='mods' /> -->
|
<!-- <template path='mods' /> -->
|
||||||
|
|
||||||
|
|
1
example_mods/introMod/assets/preload/data/introText.txt
Normal file
1
example_mods/introMod/assets/preload/data/introText.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
awesomes tream--really awesome
|
BIN
example_mods/introMod/assets/preload/images/gfDanceTitle.png
Normal file
BIN
example_mods/introMod/assets/preload/images/gfDanceTitle.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 MiB |
|
@ -4,6 +4,7 @@ import flixel.FlxG;
|
||||||
import flixel.FlxSprite;
|
import flixel.FlxSprite;
|
||||||
import flixel.animation.FlxBaseAnimation;
|
import flixel.animation.FlxBaseAnimation;
|
||||||
import flixel.graphics.frames.FlxAtlasFrames;
|
import flixel.graphics.frames.FlxAtlasFrames;
|
||||||
|
import haxe.io.Path;
|
||||||
|
|
||||||
using StringTools;
|
using StringTools;
|
||||||
|
|
||||||
|
@ -32,7 +33,7 @@ class Character extends FlxSprite
|
||||||
{
|
{
|
||||||
case 'gf':
|
case 'gf':
|
||||||
// GIRLFRIEND CODE
|
// GIRLFRIEND CODE
|
||||||
tex = Paths.getSparrowAtlas('GF_assets');
|
tex = Paths.getSparrowAtlas('characters/GF_assets');
|
||||||
frames = tex;
|
frames = tex;
|
||||||
animation.addByPrefix('cheer', 'GF Cheer', 24, false);
|
animation.addByPrefix('cheer', 'GF Cheer', 24, false);
|
||||||
animation.addByPrefix('singLEFT', 'GF left note', 24, false);
|
animation.addByPrefix('singLEFT', 'GF left note', 24, false);
|
||||||
|
@ -46,19 +47,7 @@ class Character extends FlxSprite
|
||||||
animation.addByIndices('hairFall', "GF Dancing Beat Hair Landing", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "", 24, false);
|
animation.addByIndices('hairFall', "GF Dancing Beat Hair Landing", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "", 24, false);
|
||||||
animation.addByPrefix('scared', 'GF FEAR', 24);
|
animation.addByPrefix('scared', 'GF FEAR', 24);
|
||||||
|
|
||||||
addOffset('cheer');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('sad', -2, -21);
|
|
||||||
addOffset('danceLeft', 0, -9);
|
|
||||||
addOffset('danceRight', 0, -9);
|
|
||||||
|
|
||||||
addOffset("singUP", 0, 4);
|
|
||||||
addOffset("singRIGHT", 0, -20);
|
|
||||||
addOffset("singLEFT", 0, -19);
|
|
||||||
addOffset("singDOWN", 0, -20);
|
|
||||||
addOffset('hairBlow', 45, -8);
|
|
||||||
addOffset('hairFall', 0, -9);
|
|
||||||
|
|
||||||
addOffset('scared', -2, -17);
|
|
||||||
|
|
||||||
playAnim('danceRight');
|
playAnim('danceRight');
|
||||||
|
|
||||||
|
@ -93,6 +82,24 @@ class Character extends FlxSprite
|
||||||
|
|
||||||
playAnim('danceRight');
|
playAnim('danceRight');
|
||||||
|
|
||||||
|
case 'bf-holding-gf':
|
||||||
|
frames = Paths.getSparrowAtlas('characters/bfAndGF');
|
||||||
|
quickAnimAdd('idle', 'BF idle dance');
|
||||||
|
quickAnimAdd('singDOWN', 'BF NOTE DOWN0');
|
||||||
|
quickAnimAdd('singLEFT', 'BF NOTE LEFT0');
|
||||||
|
quickAnimAdd('singRIGHT', 'BF NOTE RIGHT0');
|
||||||
|
quickAnimAdd('singUP', 'BF NOTE UP0');
|
||||||
|
|
||||||
|
quickAnimAdd('singDOWNmiss', 'BF NOTE DOWN MISS');
|
||||||
|
quickAnimAdd('singLEFTmiss', 'BF NOTE LEFT MISS');
|
||||||
|
quickAnimAdd('singRIGHTmiss', 'BF NOTE RIGHT MISS');
|
||||||
|
quickAnimAdd('singUPmiss', 'BF NOTE UP MISS');
|
||||||
|
quickAnimAdd('bfCatch', 'BF catches GF');
|
||||||
|
|
||||||
|
loadOffsetFile(curCharacter);
|
||||||
|
|
||||||
|
playAnim('idle');
|
||||||
|
|
||||||
case 'gf-car':
|
case 'gf-car':
|
||||||
tex = Paths.getSparrowAtlas('gfCar');
|
tex = Paths.getSparrowAtlas('gfCar');
|
||||||
frames = tex;
|
frames = tex;
|
||||||
|
@ -266,8 +273,20 @@ class Character extends FlxSprite
|
||||||
|
|
||||||
flipX = true;
|
flipX = true;
|
||||||
|
|
||||||
|
case 'pico-speaker':
|
||||||
|
frames = Paths.getSparrowAtlas('characters/picoSpeaker');
|
||||||
|
|
||||||
|
quickAnimAdd('shoot1', "Pico shoot 1");
|
||||||
|
quickAnimAdd('shoot2', "Pico shoot 2");
|
||||||
|
quickAnimAdd('shoot3', "Pico shoot 3");
|
||||||
|
quickAnimAdd('shoot4', "Pico shoot 4");
|
||||||
|
|
||||||
|
// here for now, will be replaced later for less copypaste
|
||||||
|
loadOffsetFile(curCharacter);
|
||||||
|
playAnim('shoot1');
|
||||||
|
|
||||||
case 'bf':
|
case 'bf':
|
||||||
var tex = Paths.getSparrowAtlas('BOYFRIEND');
|
var tex = Paths.getSparrowAtlas('characters/BOYFRIEND');
|
||||||
frames = tex;
|
frames = tex;
|
||||||
animation.addByPrefix('idle', 'BF idle dance', 24, false);
|
animation.addByPrefix('idle', 'BF idle dance', 24, false);
|
||||||
animation.addByPrefix('singUP', 'BF NOTE UP0', 24, false);
|
animation.addByPrefix('singUP', 'BF NOTE UP0', 24, false);
|
||||||
|
@ -286,25 +305,14 @@ class Character extends FlxSprite
|
||||||
|
|
||||||
animation.addByPrefix('scared', 'BF idle shaking', 24);
|
animation.addByPrefix('scared', 'BF idle shaking', 24);
|
||||||
|
|
||||||
addOffset('idle', -5);
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -29, 27);
|
|
||||||
addOffset("singRIGHT", -38, -7);
|
|
||||||
addOffset("singLEFT", 12, -6);
|
|
||||||
addOffset("singDOWN", -10, -50);
|
|
||||||
addOffset("singUPmiss", -29, 27);
|
|
||||||
addOffset("singRIGHTmiss", -30, 21);
|
|
||||||
addOffset("singLEFTmiss", 12, 24);
|
|
||||||
addOffset("singDOWNmiss", -11, -19);
|
|
||||||
addOffset("hey", 7, 4);
|
|
||||||
addOffset('firstDeath', 37, 11);
|
|
||||||
addOffset('deathLoop', 37, 5);
|
|
||||||
addOffset('deathConfirm', 37, 69);
|
|
||||||
addOffset('scared', -4);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
flipX = true;
|
flipX = true;
|
||||||
|
|
||||||
|
loadOffsetFile(curCharacter);
|
||||||
|
|
||||||
case 'bf-christmas':
|
case 'bf-christmas':
|
||||||
var tex = Paths.getSparrowAtlas('christmas/bfChristmas');
|
var tex = Paths.getSparrowAtlas('christmas/bfChristmas');
|
||||||
frames = tex;
|
frames = tex;
|
||||||
|
@ -521,15 +529,7 @@ class Character extends FlxSprite
|
||||||
animation.addByPrefix('singUPmiss', 'Tankman UP note MISS', 24, false);
|
animation.addByPrefix('singUPmiss', 'Tankman UP note MISS', 24, false);
|
||||||
animation.addByPrefix('singDOWNmiss', 'Tankman DOWN note MISS', 24, false);
|
animation.addByPrefix('singDOWNmiss', 'Tankman DOWN note MISS', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", 24, 56);
|
|
||||||
addOffset("singRIGHT", -1, -7);
|
|
||||||
addOffset("singLEFT", 100, -14);
|
|
||||||
addOffset("singDOWN", 98, -90);
|
|
||||||
addOffset("singUPmiss", 24, 56);
|
|
||||||
addOffset("singRIGHTmiss", -1, -7);
|
|
||||||
addOffset("singLEFTmiss", 100, -14);
|
|
||||||
addOffset("singDOWNmiss", 98, -90);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
|
@ -561,9 +561,20 @@ class Character extends FlxSprite
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function quickAnimAdd(name:String, prefix:String)
|
||||||
|
{
|
||||||
|
animation.addByPrefix(name, prefix, 24, false);
|
||||||
|
}
|
||||||
|
|
||||||
private function loadOffsetFile(offsetCharacter:String)
|
private function loadOffsetFile(offsetCharacter:String)
|
||||||
{
|
{
|
||||||
var daFile:String = Paths.file("characters/" + offsetCharacter + "Offsets.txt");
|
var daFile:Array<String> = CoolUtil.coolTextFile(Paths.file("images/characters/" + offsetCharacter + "Offsets.txt"));
|
||||||
|
|
||||||
|
for (i in daFile)
|
||||||
|
{
|
||||||
|
var splitWords:Array<String> = i.split(" ");
|
||||||
|
addOffset(splitWords[0], Std.parseInt(splitWords[1]), Std.parseInt(splitWords[2]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override function update(elapsed:Float)
|
override function update(elapsed:Float)
|
||||||
|
@ -649,6 +660,8 @@ class Character extends FlxSprite
|
||||||
else
|
else
|
||||||
playAnim('danceLeft');
|
playAnim('danceLeft');
|
||||||
}
|
}
|
||||||
|
case 'pico-speaker':
|
||||||
|
playAnim('shoot' + FlxG.random.int(1, 4), true);
|
||||||
|
|
||||||
case 'spooky':
|
case 'spooky':
|
||||||
danced = !danced;
|
danced = !danced;
|
||||||
|
|
|
@ -16,11 +16,13 @@ class HealthIcon extends FlxSprite
|
||||||
|
|
||||||
antialiasing = true;
|
antialiasing = true;
|
||||||
animation.add('bf', [0, 1], 0, false, isPlayer);
|
animation.add('bf', [0, 1], 0, false, isPlayer);
|
||||||
|
animation.add('bf-holding-gf', [0, 1], 0, false, isPlayer);
|
||||||
animation.add('bf-car', [0, 1], 0, false, isPlayer);
|
animation.add('bf-car', [0, 1], 0, false, isPlayer);
|
||||||
animation.add('bf-christmas', [0, 1], 0, false, isPlayer);
|
animation.add('bf-christmas', [0, 1], 0, false, isPlayer);
|
||||||
animation.add('bf-pixel', [21, 21], 0, false, isPlayer);
|
animation.add('bf-pixel', [21, 21], 0, false, isPlayer);
|
||||||
animation.add('spooky', [2, 3], 0, false, isPlayer);
|
animation.add('spooky', [2, 3], 0, false, isPlayer);
|
||||||
animation.add('pico', [4, 5], 0, false, isPlayer);
|
animation.add('pico', [4, 5], 0, false, isPlayer);
|
||||||
|
animation.add('pico-speaker', [4, 5], 0, false, isPlayer);
|
||||||
animation.add('mom', [6, 7], 0, false, isPlayer);
|
animation.add('mom', [6, 7], 0, false, isPlayer);
|
||||||
animation.add('mom-car', [6, 7], 0, false, isPlayer);
|
animation.add('mom-car', [6, 7], 0, false, isPlayer);
|
||||||
animation.add('tankman', [8, 9], 0, false, isPlayer);
|
animation.add('tankman', [8, 9], 0, false, isPlayer);
|
||||||
|
|
|
@ -20,7 +20,12 @@ class Main extends Sprite
|
||||||
var gameHeight:Int = 720; // Height of the game in pixels (might be less / more in actual pixels depending on your zoom).
|
var gameHeight:Int = 720; // Height of the game in pixels (might be less / more in actual pixels depending on your zoom).
|
||||||
var initialState:Class<FlxState> = TitleState; // The FlxState the game starts with.
|
var initialState:Class<FlxState> = TitleState; // The FlxState the game starts with.
|
||||||
var zoom:Float = -1; // If -1, zoom is automatically calculated to fit the window dimensions.
|
var zoom:Float = -1; // If -1, zoom is automatically calculated to fit the window dimensions.
|
||||||
|
#if web
|
||||||
var framerate:Int = 60; // How many frames per second the game should run at.
|
var framerate:Int = 60; // How many frames per second the game should run at.
|
||||||
|
#else
|
||||||
|
var framerate:Int = 144; // How many frames per second the game should run at.
|
||||||
|
|
||||||
|
#end
|
||||||
var skipSplash:Bool = true; // Whether to skip the flixel splash screen that appears in release mode.
|
var skipSplash:Bool = true; // Whether to skip the flixel splash screen that appears in release mode.
|
||||||
var startFullscreen:Bool = false; // Whether to start the game in fullscreen on desktop targets
|
var startFullscreen:Bool = false; // Whether to start the game in fullscreen on desktop targets
|
||||||
|
|
||||||
|
|
|
@ -1,37 +1,149 @@
|
||||||
package;
|
package;
|
||||||
|
|
||||||
|
import Controls.Control;
|
||||||
|
import flixel.FlxG;
|
||||||
|
import flixel.group.FlxGroup.FlxTypedGroup;
|
||||||
import flixel.text.FlxText;
|
import flixel.text.FlxText;
|
||||||
|
import flixel.util.FlxColor;
|
||||||
|
import polymod.Polymod;
|
||||||
#if desktop
|
#if desktop
|
||||||
import sys.FileSystem;
|
import sys.FileSystem;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
class ModdingSubstate extends MusicBeatSubstate
|
class ModdingSubstate extends MusicBeatSubstate
|
||||||
{
|
{
|
||||||
|
var grpMods:FlxTypedGroup<ModMenuItem>;
|
||||||
|
var enabledMods:Array<String> = [];
|
||||||
|
var modFolders:Array<String> = [];
|
||||||
|
|
||||||
|
var curSelected:Int = 0;
|
||||||
|
|
||||||
public function new():Void
|
public function new():Void
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
|
|
||||||
// var pathShit
|
grpMods = new FlxTypedGroup<ModMenuItem>();
|
||||||
|
add(grpMods);
|
||||||
|
|
||||||
|
refreshModList();
|
||||||
|
}
|
||||||
|
|
||||||
|
override function update(elapsed:Float)
|
||||||
|
{
|
||||||
|
if (FlxG.keys.justPressed.R)
|
||||||
|
refreshModList();
|
||||||
|
|
||||||
|
selections();
|
||||||
|
|
||||||
|
if (controls.UP_P)
|
||||||
|
selections(-1);
|
||||||
|
if (controls.DOWN_P)
|
||||||
|
selections(1);
|
||||||
|
|
||||||
|
if (FlxG.keys.justPressed.SPACE)
|
||||||
|
grpMods.members[curSelected].modEnabled = !grpMods.members[curSelected].modEnabled;
|
||||||
|
|
||||||
|
if (FlxG.keys.justPressed.I && curSelected != 0)
|
||||||
|
{
|
||||||
|
var oldOne = grpMods.members[curSelected - 1];
|
||||||
|
grpMods.members[curSelected - 1] = grpMods.members[curSelected];
|
||||||
|
grpMods.members[curSelected] = oldOne;
|
||||||
|
selections(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FlxG.keys.justPressed.K && curSelected < grpMods.members.length - 1)
|
||||||
|
{
|
||||||
|
var oldOne = grpMods.members[curSelected + 1];
|
||||||
|
grpMods.members[curSelected + 1] = grpMods.members[curSelected];
|
||||||
|
grpMods.members[curSelected] = oldOne;
|
||||||
|
selections(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
super.update(elapsed);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function selections(change:Int = 0):Void
|
||||||
|
{
|
||||||
|
curSelected += change;
|
||||||
|
|
||||||
|
if (curSelected >= modFolders.length)
|
||||||
|
curSelected = 0;
|
||||||
|
if (curSelected < 0)
|
||||||
|
curSelected = modFolders.length - 1;
|
||||||
|
|
||||||
|
for (txt in 0...grpMods.length)
|
||||||
|
{
|
||||||
|
if (txt == curSelected)
|
||||||
|
{
|
||||||
|
grpMods.members[txt].color = FlxColor.YELLOW;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
grpMods.members[txt].color = FlxColor.WHITE;
|
||||||
|
}
|
||||||
|
|
||||||
|
organizeByY();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function refreshModList():Void
|
||||||
|
{
|
||||||
|
while (grpMods.members.length > 0)
|
||||||
|
{
|
||||||
|
grpMods.remove(grpMods.members[0], true);
|
||||||
|
}
|
||||||
|
|
||||||
#if desktop
|
#if desktop
|
||||||
var modList = [];
|
var modList = [];
|
||||||
|
modFolders = [];
|
||||||
|
|
||||||
|
#if desktop
|
||||||
for (file in FileSystem.readDirectory('./mods'))
|
for (file in FileSystem.readDirectory('./mods'))
|
||||||
{
|
{
|
||||||
if (FileSystem.isDirectory("./mods/" + file))
|
if (FileSystem.isDirectory('./mods/' + file))
|
||||||
modList.push(file);
|
modFolders.push(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enabledMods = [];
|
||||||
|
|
||||||
|
modList = Polymod.scan('./mods');
|
||||||
|
|
||||||
trace(modList);
|
trace(modList);
|
||||||
|
|
||||||
var loopNum:Int = 0;
|
var loopNum:Int = 0;
|
||||||
for (i in modList)
|
for (i in modFolders)
|
||||||
{
|
{
|
||||||
var txt:FlxText = new FlxText(0, 10 + (40 * loopNum), 0, i, 32);
|
var txt:ModMenuItem = new ModMenuItem(0, 10 + (40 * loopNum), 0, i, 32);
|
||||||
add(txt);
|
txt.text = i;
|
||||||
|
grpMods.add(txt);
|
||||||
|
|
||||||
loopNum++;
|
loopNum++;
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
} private function organizeByY():Void
|
||||||
|
|
||||||
|
{
|
||||||
|
for (i in 0...grpMods.length)
|
||||||
|
{
|
||||||
|
grpMods.members[i].y = 10 + (40 * i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} class ModMenuItem extends FlxText
|
||||||
|
|
||||||
|
{
|
||||||
|
public var modEnabled:Bool = false;
|
||||||
|
public var daMod:String;
|
||||||
|
|
||||||
|
public function new(x:Float, y:Float, w:Float, str:String, size:Int)
|
||||||
|
{
|
||||||
|
super(x, y, w, str, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
override function update(elapsed:Float)
|
||||||
|
{
|
||||||
|
if (modEnabled)
|
||||||
|
alpha = 1;
|
||||||
|
else
|
||||||
|
alpha = 0.5;
|
||||||
|
|
||||||
|
super.update(elapsed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
|
@ -15,6 +15,8 @@ class OptionsSubState extends MusicBeatSubstate
|
||||||
|
|
||||||
var grpOptionsTexts:FlxTypedGroup<FlxText>;
|
var grpOptionsTexts:FlxTypedGroup<FlxText>;
|
||||||
|
|
||||||
|
// public static var isDownscroll:Bool = false;
|
||||||
|
|
||||||
public function new()
|
public function new()
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
|
|
|
@ -113,6 +113,8 @@ class PlayState extends MusicBeatState
|
||||||
var bgGirls:BackgroundGirls;
|
var bgGirls:BackgroundGirls;
|
||||||
var wiggleShit:WiggleEffect = new WiggleEffect();
|
var wiggleShit:WiggleEffect = new WiggleEffect();
|
||||||
|
|
||||||
|
var tankmanRun:FlxTypedGroup<TankmenBG>;
|
||||||
|
|
||||||
var talking:Bool = true;
|
var talking:Bool = true;
|
||||||
var songScore:Int = 0;
|
var songScore:Int = 0;
|
||||||
var scoreTxt:FlxText;
|
var scoreTxt:FlxText;
|
||||||
|
@ -499,6 +501,9 @@ class PlayState extends MusicBeatState
|
||||||
var tankGround:BGSprite = new BGSprite('tankGround', -200, -20);
|
var tankGround:BGSprite = new BGSprite('tankGround', -200, -20);
|
||||||
add(tankGround);
|
add(tankGround);
|
||||||
|
|
||||||
|
tankmanRun = new FlxTypedGroup<TankmenBG>();
|
||||||
|
add(tankmanRun);
|
||||||
|
|
||||||
var fgTank0:BGSprite = new BGSprite('tank0', -290, 400, 1.7, 1.5, ['fg']);
|
var fgTank0:BGSprite = new BGSprite('tank0', -290, 400, 1.7, 1.5, ['fg']);
|
||||||
foregroundSprites.add(fgTank0);
|
foregroundSprites.add(fgTank0);
|
||||||
|
|
||||||
|
@ -560,9 +565,19 @@ class PlayState extends MusicBeatState
|
||||||
if (curStage == 'limo')
|
if (curStage == 'limo')
|
||||||
gfVersion = 'gf-car';
|
gfVersion = 'gf-car';
|
||||||
|
|
||||||
|
if (SONG.song.toLowerCase() == 'stress')
|
||||||
|
gfVersion = 'pico-speaker';
|
||||||
|
|
||||||
gf = new Character(400, 130, gfVersion);
|
gf = new Character(400, 130, gfVersion);
|
||||||
gf.scrollFactor.set(0.95, 0.95);
|
gf.scrollFactor.set(0.95, 0.95);
|
||||||
|
|
||||||
|
switch (gfVersion)
|
||||||
|
{
|
||||||
|
case 'pico-speaker':
|
||||||
|
gf.x -= 50;
|
||||||
|
gf.y -= 200;
|
||||||
|
}
|
||||||
|
|
||||||
dad = new Character(100, 100, SONG.player2);
|
dad = new Character(100, 100, SONG.player2);
|
||||||
|
|
||||||
var camPos:FlxPoint = new FlxPoint(dad.getGraphicMidpoint().x, dad.getGraphicMidpoint().y);
|
var camPos:FlxPoint = new FlxPoint(dad.getGraphicMidpoint().x, dad.getGraphicMidpoint().y);
|
||||||
|
@ -2383,6 +2398,17 @@ class PlayState extends MusicBeatState
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (curSong.toLowerCase())
|
||||||
|
{
|
||||||
|
case 'stress':
|
||||||
|
if (FlxG.random.bool())
|
||||||
|
{
|
||||||
|
var tank:TankmenBG = new TankmenBG(500, 200);
|
||||||
|
tank.strumTime = Conductor.songPosition + (Conductor.crochet * 4);
|
||||||
|
tankmanRun.add(tank);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (isHalloween && FlxG.random.bool(10) && curBeat > lightningStrikeBeat + lightningOffset)
|
if (isHalloween && FlxG.random.bool(10) && curBeat > lightningStrikeBeat + lightningOffset)
|
||||||
{
|
{
|
||||||
lightningStrikeShit();
|
lightningStrikeShit();
|
||||||
|
|
76
source/TankmenBG.hx
Normal file
76
source/TankmenBG.hx
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
package;
|
||||||
|
|
||||||
|
import flixel.FlxG;
|
||||||
|
import flixel.FlxSprite;
|
||||||
|
import haxe.display.Display.Package;
|
||||||
|
|
||||||
|
class TankmenBG extends FlxSprite
|
||||||
|
{
|
||||||
|
public var strumTime:Float = 0;
|
||||||
|
public var goingRight:Bool = false;
|
||||||
|
public var tankSpeed:Float = 0.7;
|
||||||
|
|
||||||
|
public var endingOffset:Float;
|
||||||
|
|
||||||
|
public function new(x:Float, y:Float)
|
||||||
|
{
|
||||||
|
super(x, y);
|
||||||
|
|
||||||
|
// makeGraphic(200, 200);
|
||||||
|
|
||||||
|
frames = Paths.getSparrowAtlas('tankmanKilled1');
|
||||||
|
antialiasing = true;
|
||||||
|
animation.addByPrefix('run', 'tankman running', 24, true);
|
||||||
|
animation.addByPrefix('shot', 'John', 24, false);
|
||||||
|
|
||||||
|
animation.play('run');
|
||||||
|
|
||||||
|
y += FlxG.random.int(-40, 100);
|
||||||
|
|
||||||
|
goingRight = FlxG.random.bool();
|
||||||
|
endingOffset = FlxG.random.float(0, 120);
|
||||||
|
|
||||||
|
tankSpeed = FlxG.random.float(0.65, 0.8);
|
||||||
|
|
||||||
|
if (goingRight)
|
||||||
|
flipX = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
override function update(elapsed:Float)
|
||||||
|
{
|
||||||
|
super.update(elapsed);
|
||||||
|
|
||||||
|
if (animation.curAnim.name == 'run')
|
||||||
|
{
|
||||||
|
var endDirection:Float = (FlxG.width * 0.74) + endingOffset;
|
||||||
|
|
||||||
|
if (goingRight)
|
||||||
|
{
|
||||||
|
endDirection = (FlxG.width * 0.02) - endingOffset;
|
||||||
|
|
||||||
|
x = (endDirection + (Conductor.songPosition - strumTime) * tankSpeed);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x = (endDirection - (Conductor.songPosition - strumTime) * tankSpeed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Conductor.songPosition > strumTime)
|
||||||
|
{
|
||||||
|
// kill();
|
||||||
|
animation.play('shot');
|
||||||
|
|
||||||
|
if (goingRight)
|
||||||
|
{
|
||||||
|
offset.y = 200;
|
||||||
|
offset.x = 300;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (animation.curAnim.name == 'shot' && animation.curAnim.curFrame >= animation.curAnim.frames.length - 1)
|
||||||
|
{
|
||||||
|
kill();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -37,9 +37,11 @@ class TitleState extends MusicBeatState
|
||||||
override public function create():Void
|
override public function create():Void
|
||||||
{
|
{
|
||||||
#if polymod
|
#if polymod
|
||||||
polymod.Polymod.init({modRoot: "mods", dirs: ['introMod']});
|
polymod.Polymod.init({modRoot: "mods", dirs: ['introMod'], framework: OPENFL});
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
FlxG.sound.muteKeys = [ZERO];
|
||||||
|
|
||||||
PlayerSettings.init();
|
PlayerSettings.init();
|
||||||
|
|
||||||
curWacky = FlxG.random.getObject(getIntroTextShit());
|
curWacky = FlxG.random.getObject(getIntroTextShit());
|
||||||
|
@ -216,6 +218,17 @@ class TitleState extends MusicBeatState
|
||||||
|
|
||||||
override function update(elapsed:Float)
|
override function update(elapsed:Float)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
if (FlxG.keys.justPressed.R)
|
||||||
|
{
|
||||||
|
#if polymod
|
||||||
|
polymod.Polymod.init({modRoot: "mods", dirs: ['introMod']});
|
||||||
|
trace('reinitialized');
|
||||||
|
#end
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
if (FlxG.sound.music != null)
|
if (FlxG.sound.music != null)
|
||||||
Conductor.songPosition = FlxG.sound.music.time;
|
Conductor.songPosition = FlxG.sound.music.time;
|
||||||
// FlxG.watch.addQuick('amp', FlxG.sound.music.amplitude);
|
// FlxG.watch.addQuick('amp', FlxG.sound.music.amplitude);
|
||||||
|
|
Loading…
Reference in a new issue