lua refactor
This commit is contained in:
parent
3c98ddc81a
commit
70b6698a4a
608
source/ModchartState.hx
Normal file
608
source/ModchartState.hx
Normal file
@ -0,0 +1,608 @@
|
|||||||
|
// this file is for modchart things, this is to declutter playstate.hx
|
||||||
|
|
||||||
|
// Lua
|
||||||
|
|
||||||
|
import flixel.tweens.FlxEase;
|
||||||
|
import flixel.tweens.FlxTween;
|
||||||
|
import flixel.util.FlxColor;
|
||||||
|
import openfl.geom.Matrix;
|
||||||
|
import openfl.display.BitmapData;
|
||||||
|
import lime.app.Application;
|
||||||
|
import flixel.FlxSprite;
|
||||||
|
#if windows
|
||||||
|
import llua.Convert;
|
||||||
|
import llua.Lua;
|
||||||
|
import llua.State;
|
||||||
|
import llua.LuaL;
|
||||||
|
#end
|
||||||
|
|
||||||
|
import flixel.FlxBasic;
|
||||||
|
import flixel.FlxCamera;
|
||||||
|
import flixel.FlxG;
|
||||||
|
|
||||||
|
class ModchartState
|
||||||
|
{
|
||||||
|
|
||||||
|
#if windows
|
||||||
|
|
||||||
|
public static var lua:State = null;
|
||||||
|
|
||||||
|
function callLua(func_name : String, args : Array<Dynamic>, ?type : String) : Dynamic
|
||||||
|
{
|
||||||
|
var result : Any = null;
|
||||||
|
|
||||||
|
Lua.getglobal(lua, func_name);
|
||||||
|
|
||||||
|
for( arg in args ) {
|
||||||
|
Convert.toLua(lua, arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = Lua.pcall(lua, args.length, 1, 0);
|
||||||
|
var p = Lua.tostring(lua,result);
|
||||||
|
var e = getLuaErrorMessage(lua);
|
||||||
|
|
||||||
|
if (e != null)
|
||||||
|
{
|
||||||
|
if (p != null)
|
||||||
|
{
|
||||||
|
Application.current.window.alert("LUA ERROR:\n" + p + "\nhaxe things: " + e,"Kade Engine Modcharts");
|
||||||
|
lua = null;
|
||||||
|
LoadingState.loadAndSwitchState(new MainMenuState());
|
||||||
|
}
|
||||||
|
// trace('err: ' + e);
|
||||||
|
}
|
||||||
|
if( result == null) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return convert(result, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function getType(l, type):Any
|
||||||
|
{
|
||||||
|
return switch Lua.type(l,type) {
|
||||||
|
case t if (t == Lua.LUA_TNIL): null;
|
||||||
|
case t if (t == Lua.LUA_TNUMBER): Lua.tonumber(l, type);
|
||||||
|
case t if (t == Lua.LUA_TSTRING): (Lua.tostring(l, type):String);
|
||||||
|
case t if (t == Lua.LUA_TBOOLEAN): Lua.toboolean(l, type);
|
||||||
|
case t: throw 'you don goofed up. lua type error ($t)';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getReturnValues(l) {
|
||||||
|
var lua_v:Int;
|
||||||
|
var v:Any = null;
|
||||||
|
while((lua_v = Lua.gettop(l)) != 0) {
|
||||||
|
var type:String = getType(l,lua_v);
|
||||||
|
v = convert(lua_v, type);
|
||||||
|
Lua.pop(l, 1);
|
||||||
|
}
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function convert(v : Any, type : String) : Dynamic { // I didn't write this lol
|
||||||
|
if( Std.is(v, String) && type != null ) {
|
||||||
|
var v : String = v;
|
||||||
|
if( type.substr(0, 4) == 'array' ) {
|
||||||
|
if( type.substr(4) == 'float' ) {
|
||||||
|
var array : Array<String> = v.split(',');
|
||||||
|
var array2 : Array<Float> = new Array();
|
||||||
|
|
||||||
|
for( vars in array ) {
|
||||||
|
array2.push(Std.parseFloat(vars));
|
||||||
|
}
|
||||||
|
|
||||||
|
return array2;
|
||||||
|
} else if( type.substr(4) == 'int' ) {
|
||||||
|
var array : Array<String> = v.split(',');
|
||||||
|
var array2 : Array<Int> = new Array();
|
||||||
|
|
||||||
|
for( vars in array ) {
|
||||||
|
array2.push(Std.parseInt(vars));
|
||||||
|
}
|
||||||
|
|
||||||
|
return array2;
|
||||||
|
} else {
|
||||||
|
var array : Array<String> = v.split(',');
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
} else if( type == 'float' ) {
|
||||||
|
return Std.parseFloat(v);
|
||||||
|
} else if( type == 'int' ) {
|
||||||
|
return Std.parseInt(v);
|
||||||
|
} else if( type == 'bool' ) {
|
||||||
|
if( v == 'true' ) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getLuaErrorMessage(l) {
|
||||||
|
var v:String = Lua.tostring(l, -1);
|
||||||
|
Lua.pop(l, 1);
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setVar(var_name : String, object : Dynamic){
|
||||||
|
// trace('setting variable ' + var_name + ' to ' + object);
|
||||||
|
|
||||||
|
Lua.pushnumber(lua,object);
|
||||||
|
Lua.setglobal(lua, var_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getVar(var_name : String, type : String) : Dynamic {
|
||||||
|
var result : Any = null;
|
||||||
|
|
||||||
|
// trace('getting variable ' + var_name + ' with a type of ' + type);
|
||||||
|
|
||||||
|
Lua.getglobal(lua, var_name);
|
||||||
|
result = Convert.fromLua(lua,-1);
|
||||||
|
Lua.pop(lua,1);
|
||||||
|
|
||||||
|
if( result == null ) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
var result = convert(result, type);
|
||||||
|
//trace(var_name + ' result: ' + result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getActorByName(id:String):Dynamic
|
||||||
|
{
|
||||||
|
// pre defined names
|
||||||
|
switch(id)
|
||||||
|
{
|
||||||
|
case 'boyfriend':
|
||||||
|
@:privateAccess
|
||||||
|
return PlayState.boyfriend;
|
||||||
|
case 'girlfriend':
|
||||||
|
@:privateAccess
|
||||||
|
return PlayState.gf;
|
||||||
|
case 'dad':
|
||||||
|
@:privateAccess
|
||||||
|
return PlayState.dad;
|
||||||
|
}
|
||||||
|
// lua objects or what ever
|
||||||
|
if (luaSprites.get(id) == null)
|
||||||
|
return PlayState.PlayState.strumLineNotes.members[Std.parseInt(id)];
|
||||||
|
return luaSprites.get(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static var luaSprites:Map<String,FlxSprite> = [];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function makeLuaSprite(spritePath:String,toBeCalled:String, drawBehind:Bool)
|
||||||
|
{
|
||||||
|
#if sys
|
||||||
|
var data:BitmapData = BitmapData.fromFile(Sys.getCwd() + "assets/data/" + PlayState.SONG.song.toLowerCase() + '/' + spritePath + ".png");
|
||||||
|
|
||||||
|
var sprite:FlxSprite = new FlxSprite(0,0);
|
||||||
|
var imgWidth:Float = FlxG.width / data.width;
|
||||||
|
var imgHeight:Float = FlxG.height / data.height;
|
||||||
|
var scale:Float = imgWidth <= imgHeight ? imgWidth : imgHeight;
|
||||||
|
|
||||||
|
// Cap the scale at x1
|
||||||
|
if (scale > 1)
|
||||||
|
{
|
||||||
|
scale = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
sprite.makeGraphic(Std.int(data.width * scale),Std.int(data.width * scale),FlxColor.TRANSPARENT);
|
||||||
|
|
||||||
|
var data2:BitmapData = sprite.pixels.clone();
|
||||||
|
var matrix:Matrix = new Matrix();
|
||||||
|
matrix.identity();
|
||||||
|
matrix.scale(scale, scale);
|
||||||
|
data2.fillRect(data2.rect, FlxColor.TRANSPARENT);
|
||||||
|
data2.draw(data, matrix, null, null, null, true);
|
||||||
|
sprite.pixels = data2;
|
||||||
|
|
||||||
|
luaSprites.set(toBeCalled,sprite);
|
||||||
|
// and I quote:
|
||||||
|
// shitty layering but it works!
|
||||||
|
@:privateAccess
|
||||||
|
{
|
||||||
|
if (drawBehind)
|
||||||
|
{
|
||||||
|
PlayState.instance.removeObject(PlayState.gf);
|
||||||
|
PlayState.instance.removeObject(PlayState.boyfriend);
|
||||||
|
PlayState.instance.removeObject(PlayState.dad);
|
||||||
|
}
|
||||||
|
PlayState.instance.addObject(sprite);
|
||||||
|
if (drawBehind)
|
||||||
|
{
|
||||||
|
PlayState.instance.addObject(PlayState.gf);
|
||||||
|
PlayState.instance.addObject(PlayState.boyfriend);
|
||||||
|
PlayState.instance.addObject(PlayState.dad);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
return toBeCalled;
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
public function die()
|
||||||
|
{
|
||||||
|
Lua.close(lua);
|
||||||
|
lua = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// LUA SHIT
|
||||||
|
|
||||||
|
function new()
|
||||||
|
{
|
||||||
|
trace('opening a lua state (because we are cool :))');
|
||||||
|
lua = LuaL.newstate();
|
||||||
|
LuaL.openlibs(lua);
|
||||||
|
trace("Lua version: " + Lua.version());
|
||||||
|
trace("LuaJIT version: " + Lua.versionJIT());
|
||||||
|
Lua.init_callbacks(lua);
|
||||||
|
|
||||||
|
var result = LuaL.dofile(lua, Paths.lua(PlayState.SONG.song.toLowerCase() + "/modchart")); // execute le file
|
||||||
|
|
||||||
|
if (result != 0)
|
||||||
|
{
|
||||||
|
Application.current.window.alert("LUA COMPILE ERROR:\n" + Lua.tostring(lua,result),"Kade Engine Modcharts");
|
||||||
|
lua = null;
|
||||||
|
LoadingState.loadAndSwitchState(new MainMenuState());
|
||||||
|
}
|
||||||
|
|
||||||
|
// get some fukin globals up in here bois
|
||||||
|
|
||||||
|
setVar("difficulty", PlayState.storyDifficulty);
|
||||||
|
setVar("bpm", Conductor.bpm);
|
||||||
|
setVar("scrollspeed", FlxG.save.data.scrollSpeed != 1 ? FlxG.save.data.scrollSpeed : PlayState.SONG.speed);
|
||||||
|
setVar("fpsCap", FlxG.save.data.fpsCap);
|
||||||
|
setVar("downscroll", FlxG.save.data.downscroll);
|
||||||
|
|
||||||
|
setVar("curStep", 0);
|
||||||
|
setVar("curBeat", 0);
|
||||||
|
setVar("crochet", Conductor.stepCrochet);
|
||||||
|
setVar("safeZoneOffset", Conductor.safeZoneOffset);
|
||||||
|
|
||||||
|
setVar("hudZoom", PlayState.instance.camHUD.zoom);
|
||||||
|
setVar("cameraZoom", FlxG.camera.zoom);
|
||||||
|
|
||||||
|
setVar("cameraAngle", FlxG.camera.angle);
|
||||||
|
setVar("camHudAngle", PlayState.instance.camHUD.angle);
|
||||||
|
|
||||||
|
setVar("followXOffset",0);
|
||||||
|
setVar("followYOffset",0);
|
||||||
|
|
||||||
|
setVar("showOnlyStrums", false);
|
||||||
|
setVar("strumLine1Visible", true);
|
||||||
|
setVar("strumLine2Visible", true);
|
||||||
|
|
||||||
|
setVar("screenWidth",FlxG.width);
|
||||||
|
setVar("screenHeight",FlxG.height);
|
||||||
|
setVar("hudWidth", PlayState.instance.camHUD.width);
|
||||||
|
setVar("hudHeight", PlayState.instance.camHUD.height);
|
||||||
|
|
||||||
|
setVar("mustHit", false);
|
||||||
|
|
||||||
|
setVar("strumLineY", PlayState.instance.strumLine.y);
|
||||||
|
|
||||||
|
// callbacks
|
||||||
|
|
||||||
|
// sprites
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"makeSprite", makeLuaSprite));
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"destroySprite", function(id:String) {
|
||||||
|
var sprite = luaSprites.get(id);
|
||||||
|
if (sprite == null)
|
||||||
|
return false;
|
||||||
|
PlayState.instance.removeObject(sprite);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
// hud/camera
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setHudAngle", function (x:Float) {
|
||||||
|
PlayState.instance.camHUD.angle = x;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setHudPosition", function (x:Int, y:Int) {
|
||||||
|
PlayState.instance.camHUD.x = x;
|
||||||
|
PlayState.instance.camHUD.y = y;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getHudX", function () {
|
||||||
|
return PlayState.instance.camHUD.x;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getHudY", function () {
|
||||||
|
return PlayState.instance.camHUD.y;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setCamPosition", function (x:Int, y:Int) {
|
||||||
|
FlxG.camera.x = x;
|
||||||
|
FlxG.camera.y = y;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getCameraX", function () {
|
||||||
|
return FlxG.camera.x;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getCameraY", function () {
|
||||||
|
return FlxG.camera.y;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setCamZoom", function(zoomAmount:Int) {
|
||||||
|
FlxG.camera.zoom = zoomAmount;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setHudZoom", function(zoomAmount:Int) {
|
||||||
|
PlayState.instance.camHUD.zoom = zoomAmount;
|
||||||
|
}));
|
||||||
|
|
||||||
|
// actors
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getRenderedNotes", function() {
|
||||||
|
return PlayState.instance.notes.length;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getRenderedNoteX", function(id:Int) {
|
||||||
|
return PlayState.instance.notes.members[id].x;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getRenderedNoteY", function(id:Int) {
|
||||||
|
return PlayState.instance.notes.members[id].y;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getRenderedNoteType", function(id:Int) {
|
||||||
|
return PlayState.instance.notes.members[id].noteData;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"isSustain", function(id:Int) {
|
||||||
|
return PlayState.instance.notes.members[id].isSustainNote;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"isParentSustain", function(id:Int) {
|
||||||
|
return PlayState.instance.notes.members[id].prevNote.isSustainNote;
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getRenderedNoteParentX", function(id:Int) {
|
||||||
|
return PlayState.instance.notes.members[id].prevNote.x;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getRenderedNoteParentY", function(id:Int) {
|
||||||
|
return PlayState.instance.notes.members[id].prevNote.y;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getRenderedNoteHit", function(id:Int) {
|
||||||
|
return PlayState.instance.notes.members[id].mustPress;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getRenderedNoteCalcX", function(id:Int) {
|
||||||
|
if (PlayState.instance.notes.members[id].mustPress)
|
||||||
|
return PlayState.playerStrums.members[Math.floor(Math.abs(PlayState.instance.notes.members[id].noteData))].x;
|
||||||
|
return PlayState.strumLineNotes.members[Math.floor(Math.abs(PlayState.instance.notes.members[id].noteData))].x;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"anyNotes", function() {
|
||||||
|
return PlayState.instance.notes.members.length != 0;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getRenderedNoteStrumtime", function(id:Int) {
|
||||||
|
return PlayState.instance.notes.members[id].strumTime;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getRenderedNoteScaleX", function(id:Int) {
|
||||||
|
return PlayState.instance.notes.members[id].scale.x;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setRenderedNotePos", function(x:Float,y:Float, id:Int) {
|
||||||
|
if (PlayState.instance.notes.members[id] == null)
|
||||||
|
throw('error! you cannot set a rendered notes position when it doesnt exist! ID: ' + id);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PlayState.instance.notes.members[id].modifiedByLua = true;
|
||||||
|
PlayState.instance.notes.members[id].x = x;
|
||||||
|
PlayState.instance.notes.members[id].y = y;
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setRenderedNoteAlpha", function(alpha:Float, id:Int) {
|
||||||
|
PlayState.instance.notes.members[id].modifiedByLua = true;
|
||||||
|
PlayState.instance.notes.members[id].alpha = alpha;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setRenderedNoteScale", function(scale:Float, id:Int) {
|
||||||
|
PlayState.instance.notes.members[id].modifiedByLua = true;
|
||||||
|
PlayState.instance.notes.members[id].setGraphicSize(Std.int(PlayState.instance.notes.members[id].width * scale));
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setRenderedNoteScale", function(scaleX:Int, scaleY:Int, id:Int) {
|
||||||
|
PlayState.instance.notes.members[id].modifiedByLua = true;
|
||||||
|
PlayState.instance.notes.members[id].setGraphicSize(scaleX,scaleY);
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getRenderedNoteWidth", function(id:Int) {
|
||||||
|
return PlayState.instance.notes.members[id].width;
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setRenderedNoteAngle", function(angle:Float, id:Int) {
|
||||||
|
PlayState.instance.notes.members[id].modifiedByLua = true;
|
||||||
|
PlayState.instance.notes.members[id].angle = angle;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setActorX", function(x:Int,id:String) {
|
||||||
|
getActorByName(id).x = x;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setActorAlpha", function(alpha:Float,id:String) {
|
||||||
|
getActorByName(id).alpha = alpha;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setActorY", function(y:Int,id:String) {
|
||||||
|
getActorByName(id).y = y;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setActorAngle", function(angle:Int,id:String) {
|
||||||
|
getActorByName(id).angle = angle;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"setActorScale", function(scale:Float,id:String) {
|
||||||
|
getActorByName(id).setGraphicSize(Std.int(getActorByName(id).width * scale));
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getActorWidth", function (id:String) {
|
||||||
|
return getActorByName(id).width;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getActorHeight", function (id:String) {
|
||||||
|
return getActorByName(id).height;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getActorAlpha", function(id:String) {
|
||||||
|
return getActorByName(id).alpha;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getActorAngle", function(id:String) {
|
||||||
|
return getActorByName(id).angle;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getActorX", function (id:String) {
|
||||||
|
return getActorByName(id).x;
|
||||||
|
}));
|
||||||
|
|
||||||
|
trace(Lua_helper.add_callback(lua,"getActorY", function (id:String) {
|
||||||
|
return getActorByName(id).y;
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
// tweens
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"tweenCameraPos", function(toX:Int, toY:Int, time:Float, onComplete:String) {
|
||||||
|
FlxTween.tween(FlxG.camera, {x: toX, y: toY}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,["camera"]);}}});
|
||||||
|
});
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"tweenCameraAngle", function(toAngle:Float, time:Float, onComplete:String) {
|
||||||
|
FlxTween.tween(FlxG.camera, {angle:toAngle}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,["camera"]);}}});
|
||||||
|
});
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"tweenCameraZoom", function(toZoom:Float, time:Float, onComplete:String) {
|
||||||
|
FlxTween.tween(FlxG.camera, {zoom:toZoom}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,["camera"]);}}});
|
||||||
|
});
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"tweenHudPos", function(toX:Int, toY:Int, time:Float, onComplete:String) {
|
||||||
|
FlxTween.tween(PlayState.instance.camHUD, {x: toX, y: toY}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,["camera"]);}}});
|
||||||
|
});
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"tweenHudAngle", function(toAngle:Float, time:Float, onComplete:String) {
|
||||||
|
FlxTween.tween(PlayState.instance.camHUD, {angle:toAngle}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,["camera"]);}}});
|
||||||
|
});
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"tweenHudZoom", function(toZoom:Float, time:Float, onComplete:String) {
|
||||||
|
FlxTween.tween(PlayState.instance.camHUD, {zoom:toZoom}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,["camera"]);}}});
|
||||||
|
});
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"tweenPos", function(id:String, toX:Int, toY:Int, time:Float, onComplete:String) {
|
||||||
|
FlxTween.tween(getActorByName(id), {x: toX, y: toY}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,[id]);}}});
|
||||||
|
});
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"tweenPosXAngle", function(id:String, toX:Int, toAngle:Float, time:Float, onComplete:String) {
|
||||||
|
FlxTween.tween(getActorByName(id), {x: toX, angle: toAngle}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,[id]);}}});
|
||||||
|
});
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"tweenPosYAngle", function(id:String, toY:Int, toAngle:Float, time:Float, onComplete:String) {
|
||||||
|
FlxTween.tween(getActorByName(id), {y: toY, angle: toAngle}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,[id]);}}});
|
||||||
|
});
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"tweenAngle", function(id:String, toAngle:Int, time:Float, onComplete:String) {
|
||||||
|
FlxTween.tween(getActorByName(id), {angle: toAngle}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,[id]);}}});
|
||||||
|
});
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"tweenFadeIn", function(id:String, toAlpha:Int, time:Float, onComplete:String) {
|
||||||
|
FlxTween.tween(getActorByName(id), {alpha: toAlpha}, time, {ease: FlxEase.circIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,[id]);}}});
|
||||||
|
});
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"tweenFadeOut", function(id:String, toAlpha:Int, time:Float, onComplete:String) {
|
||||||
|
FlxTween.tween(getActorByName(id), {alpha: toAlpha}, time, {ease: FlxEase.circOut, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,[id]);}}});
|
||||||
|
});
|
||||||
|
|
||||||
|
// shader
|
||||||
|
|
||||||
|
/*Lua_helper.add_callback(lua,"setRenderedNoteWiggle", function(id:Int, effectType:String, waveSpeed:Int, waveFrequency:Int) {
|
||||||
|
trace('call');
|
||||||
|
var wiggleEffect = new WiggleEffect();
|
||||||
|
switch(effectType.toLowerCase())
|
||||||
|
{
|
||||||
|
case 'dreamy':
|
||||||
|
wiggleEffect.effectType = WiggleEffectType.DREAMY;
|
||||||
|
case 'wavy':
|
||||||
|
wiggleEffect.effectType = WiggleEffectType.WAVY;
|
||||||
|
case 'heat_wave_horizontal':
|
||||||
|
wiggleEffect.effectType = WiggleEffectType.HEAT_WAVE_HORIZONTAL;
|
||||||
|
case 'heat_wave_vertical':
|
||||||
|
wiggleEffect.effectType = WiggleEffectType.HEAT_WAVE_VERTICAL;
|
||||||
|
case 'flag':
|
||||||
|
wiggleEffect.effectType = WiggleEffectType.FLAG;
|
||||||
|
}
|
||||||
|
wiggleEffect.waveFrequency = waveFrequency;
|
||||||
|
wiggleEffect.waveSpeed = waveSpeed;
|
||||||
|
wiggleEffect.shader.uTime.value = [(strumLine.y - Note.swagWidth * 4) / FlxG.height]; // from 4mbr0s3 2
|
||||||
|
notes.members[id].shader = wiggleEffect.shader;
|
||||||
|
luaWiggles.push(wiggleEffect);
|
||||||
|
});
|
||||||
|
|
||||||
|
Lua_helper.add_callback(lua,"setActorWiggle", function(id:String, effectType:String, waveSpeed:Int, waveFrequency:Int) {
|
||||||
|
trace('call');
|
||||||
|
var wiggleEffect = new WiggleEffect();
|
||||||
|
switch(effectType.toLowerCase())
|
||||||
|
{
|
||||||
|
case 'dreamy':
|
||||||
|
wiggleEffect.effectType = WiggleEffectType.DREAMY;
|
||||||
|
case 'wavy':
|
||||||
|
wiggleEffect.effectType = WiggleEffectType.WAVY;
|
||||||
|
case 'heat_wave_horizontal':
|
||||||
|
wiggleEffect.effectType = WiggleEffectType.HEAT_WAVE_HORIZONTAL;
|
||||||
|
case 'heat_wave_vertical':
|
||||||
|
wiggleEffect.effectType = WiggleEffectType.HEAT_WAVE_VERTICAL;
|
||||||
|
case 'flag':
|
||||||
|
wiggleEffect.effectType = WiggleEffectType.FLAG;
|
||||||
|
}
|
||||||
|
wiggleEffect.waveFrequency = waveFrequency;
|
||||||
|
wiggleEffect.waveSpeed = waveSpeed;
|
||||||
|
wiggleEffect.shader.uTime.value = [(strumLine.y - Note.swagWidth * 4) / FlxG.height]; // from 4mbr0s3 2
|
||||||
|
getActorByName(id).shader = wiggleEffect.shader;
|
||||||
|
luaWiggles.push(wiggleEffect);
|
||||||
|
});*/
|
||||||
|
for (i in 0...PlayState.strumLineNotes.length) {
|
||||||
|
var member = PlayState.strumLineNotes.members[i];
|
||||||
|
trace(PlayState.strumLineNotes.members[i].x + " " + PlayState.strumLineNotes.members[i].y + " " + PlayState.strumLineNotes.members[i].angle + " | strum" + i);
|
||||||
|
//setVar("strum" + i + "X", Math.floor(member.x));
|
||||||
|
setVar("defaultStrum" + i + "X", Math.floor(member.x));
|
||||||
|
//setVar("strum" + i + "Y", Math.floor(member.y));
|
||||||
|
setVar("defaultStrum" + i + "Y", Math.floor(member.y));
|
||||||
|
//setVar("strum" + i + "Angle", Math.floor(member.angle));
|
||||||
|
setVar("defaultStrum" + i + "Angle", Math.floor(member.angle));
|
||||||
|
trace("Adding strum" + i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function executeState(name,args:Array<Dynamic>)
|
||||||
|
{
|
||||||
|
return Lua.tostring(lua,callLua(name, args));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function createModchartState():ModchartState
|
||||||
|
{
|
||||||
|
return new ModchartState();
|
||||||
|
}
|
||||||
|
}
|
@ -183,10 +183,10 @@ class PauseSubState extends MusicBeatSubstate
|
|||||||
case "Exit to menu":
|
case "Exit to menu":
|
||||||
PlayState.loadRep = false;
|
PlayState.loadRep = false;
|
||||||
#if windows
|
#if windows
|
||||||
if (PlayState.lua != null)
|
if (PlayState.luaModchart != null)
|
||||||
{
|
{
|
||||||
Lua.close(PlayState.lua);
|
PlayState.luaModchart.die();
|
||||||
PlayState.lua = null;
|
PlayState.luaModchart = null;
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
FlxG.switchState(new MainMenuState());
|
FlxG.switchState(new MainMenuState());
|
||||||
|
@ -10,15 +10,6 @@ import openfl.utils.AssetManifest;
|
|||||||
import openfl.utils.AssetLibrary;
|
import openfl.utils.AssetLibrary;
|
||||||
import flixel.system.FlxAssets;
|
import flixel.system.FlxAssets;
|
||||||
|
|
||||||
// Lua
|
|
||||||
|
|
||||||
#if windows
|
|
||||||
import llua.Convert;
|
|
||||||
import llua.Lua;
|
|
||||||
import llua.State;
|
|
||||||
import llua.LuaL;
|
|
||||||
#end
|
|
||||||
|
|
||||||
import lime.app.Application;
|
import lime.app.Application;
|
||||||
import lime.media.AudioContext;
|
import lime.media.AudioContext;
|
||||||
import lime.media.AudioManager;
|
import lime.media.AudioManager;
|
||||||
@ -74,6 +65,8 @@ using StringTools;
|
|||||||
|
|
||||||
class PlayState extends MusicBeatState
|
class PlayState extends MusicBeatState
|
||||||
{
|
{
|
||||||
|
public static var instance:PlayState = null;
|
||||||
|
|
||||||
public static var curStage:String = '';
|
public static var curStage:String = '';
|
||||||
public static var SONG:SwagSong;
|
public static var SONG:SwagSong;
|
||||||
public static var isStoryMode:Bool = false;
|
public static var isStoryMode:Bool = false;
|
||||||
@ -109,22 +102,22 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
private var vocals:FlxSound;
|
private var vocals:FlxSound;
|
||||||
|
|
||||||
private var dad:Character;
|
public static var dad:Character;
|
||||||
private var gf:Character;
|
public static var gf:Character;
|
||||||
private var boyfriend:Boyfriend;
|
public static var boyfriend:Boyfriend;
|
||||||
|
|
||||||
private var notes:FlxTypedGroup<Note>;
|
public var notes:FlxTypedGroup<Note>;
|
||||||
private var unspawnNotes:Array<Note> = [];
|
private var unspawnNotes:Array<Note> = [];
|
||||||
|
|
||||||
private var strumLine:FlxSprite;
|
public var strumLine:FlxSprite;
|
||||||
private var curSection:Int = 0;
|
private var curSection:Int = 0;
|
||||||
|
|
||||||
private var camFollow:FlxObject;
|
private var camFollow:FlxObject;
|
||||||
|
|
||||||
private static var prevCamFollow:FlxObject;
|
private static var prevCamFollow:FlxObject;
|
||||||
|
|
||||||
private var strumLineNotes:FlxTypedGroup<FlxSprite>;
|
public static var strumLineNotes:FlxTypedGroup<FlxSprite> = null;
|
||||||
private var playerStrums:FlxTypedGroup<FlxSprite>;
|
public static var playerStrums:FlxTypedGroup<FlxSprite> = null;
|
||||||
|
|
||||||
private var camZooming:Bool = false;
|
private var camZooming:Bool = false;
|
||||||
private var curSong:String = "";
|
private var curSong:String = "";
|
||||||
@ -150,7 +143,7 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
private var iconP1:HealthIcon;
|
private var iconP1:HealthIcon;
|
||||||
private var iconP2:HealthIcon;
|
private var iconP2:HealthIcon;
|
||||||
private var camHUD:FlxCamera;
|
public var camHUD:FlxCamera;
|
||||||
private var camGame:FlxCamera;
|
private var camGame:FlxCamera;
|
||||||
|
|
||||||
public static var offsetTesting:Bool = false;
|
public static var offsetTesting:Bool = false;
|
||||||
@ -211,215 +204,15 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
private var executeModchart = false;
|
private var executeModchart = false;
|
||||||
|
|
||||||
// LUA SHIT
|
// API stuff
|
||||||
|
|
||||||
#if windows
|
public function addObject(object:FlxBasic) { add(object); }
|
||||||
|
public function removeObject(object:FlxBasic) { remove(object); }
|
||||||
|
|
||||||
public static var lua:State = null;
|
|
||||||
|
|
||||||
function callLua(func_name : String, args : Array<Dynamic>, ?type : String) : Dynamic
|
|
||||||
{
|
|
||||||
var result : Any = null;
|
|
||||||
|
|
||||||
Lua.getglobal(lua, func_name);
|
|
||||||
|
|
||||||
for( arg in args ) {
|
|
||||||
Convert.toLua(lua, arg);
|
|
||||||
}
|
|
||||||
|
|
||||||
result = Lua.pcall(lua, args.length, 1, 0);
|
|
||||||
var p = Lua.tostring(lua,result);
|
|
||||||
var e = getLuaErrorMessage(lua);
|
|
||||||
|
|
||||||
if (e != null)
|
|
||||||
{
|
|
||||||
if (p != null)
|
|
||||||
{
|
|
||||||
Application.current.window.alert("LUA ERROR:\n" + p + "\nhaxe things: " + e,"Kade Engine Modcharts");
|
|
||||||
lua = null;
|
|
||||||
LoadingState.loadAndSwitchState(new MainMenuState());
|
|
||||||
}
|
|
||||||
// trace('err: ' + e);
|
|
||||||
}
|
|
||||||
if( result == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
return convert(result, type);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function getType(l, type):Any
|
|
||||||
{
|
|
||||||
return switch Lua.type(l,type) {
|
|
||||||
case t if (t == Lua.LUA_TNIL): null;
|
|
||||||
case t if (t == Lua.LUA_TNUMBER): Lua.tonumber(l, type);
|
|
||||||
case t if (t == Lua.LUA_TSTRING): (Lua.tostring(l, type):String);
|
|
||||||
case t if (t == Lua.LUA_TBOOLEAN): Lua.toboolean(l, type);
|
|
||||||
case t: throw 'you don goofed up. lua type error ($t)';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getReturnValues(l) {
|
|
||||||
var lua_v:Int;
|
|
||||||
var v:Any = null;
|
|
||||||
while((lua_v = Lua.gettop(l)) != 0) {
|
|
||||||
var type:String = getType(l,lua_v);
|
|
||||||
v = convert(lua_v, type);
|
|
||||||
Lua.pop(l, 1);
|
|
||||||
}
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function convert(v : Any, type : String) : Dynamic { // I didn't write this lol
|
|
||||||
if( Std.is(v, String) && type != null ) {
|
|
||||||
var v : String = v;
|
|
||||||
if( type.substr(0, 4) == 'array' ) {
|
|
||||||
if( type.substr(4) == 'float' ) {
|
|
||||||
var array : Array<String> = v.split(',');
|
|
||||||
var array2 : Array<Float> = new Array();
|
|
||||||
|
|
||||||
for( vars in array ) {
|
|
||||||
array2.push(Std.parseFloat(vars));
|
|
||||||
}
|
|
||||||
|
|
||||||
return array2;
|
|
||||||
} else if( type.substr(4) == 'int' ) {
|
|
||||||
var array : Array<String> = v.split(',');
|
|
||||||
var array2 : Array<Int> = new Array();
|
|
||||||
|
|
||||||
for( vars in array ) {
|
|
||||||
array2.push(Std.parseInt(vars));
|
|
||||||
}
|
|
||||||
|
|
||||||
return array2;
|
|
||||||
} else {
|
|
||||||
var array : Array<String> = v.split(',');
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
} else if( type == 'float' ) {
|
|
||||||
return Std.parseFloat(v);
|
|
||||||
} else if( type == 'int' ) {
|
|
||||||
return Std.parseInt(v);
|
|
||||||
} else if( type == 'bool' ) {
|
|
||||||
if( v == 'true' ) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getLuaErrorMessage(l) {
|
|
||||||
var v:String = Lua.tostring(l, -1);
|
|
||||||
Lua.pop(l, 1);
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setVar(var_name : String, object : Dynamic){
|
|
||||||
// trace('setting variable ' + var_name + ' to ' + object);
|
|
||||||
|
|
||||||
Lua.pushnumber(lua,object);
|
|
||||||
Lua.setglobal(lua, var_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getVar(var_name : String, type : String) : Dynamic {
|
|
||||||
var result : Any = null;
|
|
||||||
|
|
||||||
// trace('getting variable ' + var_name + ' with a type of ' + type);
|
|
||||||
|
|
||||||
Lua.getglobal(lua, var_name);
|
|
||||||
result = Convert.fromLua(lua,-1);
|
|
||||||
Lua.pop(lua,1);
|
|
||||||
|
|
||||||
if( result == null ) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
var result = convert(result, type);
|
|
||||||
//trace(var_name + ' result: ' + result);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getActorByName(id:String):Dynamic
|
|
||||||
{
|
|
||||||
// pre defined names
|
|
||||||
switch(id)
|
|
||||||
{
|
|
||||||
case 'boyfriend':
|
|
||||||
return boyfriend;
|
|
||||||
case 'girlfriend':
|
|
||||||
return gf;
|
|
||||||
case 'dad':
|
|
||||||
return dad;
|
|
||||||
}
|
|
||||||
// lua objects or what ever
|
|
||||||
if (luaSprites.get(id) == null)
|
|
||||||
return strumLineNotes.members[Std.parseInt(id)];
|
|
||||||
return luaSprites.get(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static var luaSprites:Map<String,FlxSprite> = [];
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function makeLuaSprite(spritePath:String,toBeCalled:String, drawBehind:Bool)
|
|
||||||
{
|
|
||||||
#if sys
|
|
||||||
var data:BitmapData = BitmapData.fromFile(Sys.getCwd() + "assets/data/" + PlayState.SONG.song.toLowerCase() + '/' + spritePath + ".png");
|
|
||||||
|
|
||||||
var sprite:FlxSprite = new FlxSprite(0,0);
|
|
||||||
var imgWidth:Float = FlxG.width / data.width;
|
|
||||||
var imgHeight:Float = FlxG.height / data.height;
|
|
||||||
var scale:Float = imgWidth <= imgHeight ? imgWidth : imgHeight;
|
|
||||||
|
|
||||||
// Cap the scale at x1
|
|
||||||
if (scale > 1)
|
|
||||||
{
|
|
||||||
scale = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
sprite.makeGraphic(Std.int(data.width * scale),Std.int(data.width * scale),FlxColor.TRANSPARENT);
|
|
||||||
|
|
||||||
var data2:BitmapData = sprite.pixels.clone();
|
|
||||||
var matrix:Matrix = new Matrix();
|
|
||||||
matrix.identity();
|
|
||||||
matrix.scale(scale, scale);
|
|
||||||
data2.fillRect(data2.rect, FlxColor.TRANSPARENT);
|
|
||||||
data2.draw(data, matrix, null, null, null, true);
|
|
||||||
sprite.pixels = data2;
|
|
||||||
|
|
||||||
luaSprites.set(toBeCalled,sprite);
|
|
||||||
// and I quote:
|
|
||||||
// shitty layering but it works!
|
|
||||||
if (drawBehind)
|
|
||||||
{
|
|
||||||
remove(gf);
|
|
||||||
remove(boyfriend);
|
|
||||||
remove(dad);
|
|
||||||
}
|
|
||||||
add(sprite);
|
|
||||||
if (drawBehind)
|
|
||||||
{
|
|
||||||
add(gf);
|
|
||||||
add(boyfriend);
|
|
||||||
add(dad);
|
|
||||||
}
|
|
||||||
#end
|
|
||||||
return toBeCalled;
|
|
||||||
}
|
|
||||||
#end
|
|
||||||
// LUA SHIT
|
|
||||||
|
|
||||||
override public function create()
|
override public function create()
|
||||||
{
|
{
|
||||||
|
instance = this;
|
||||||
|
|
||||||
|
|
||||||
if (FlxG.sound.music != null)
|
if (FlxG.sound.music != null)
|
||||||
@ -1291,6 +1084,8 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
var luaWiggles:Array<WiggleEffect> = [];
|
var luaWiggles:Array<WiggleEffect> = [];
|
||||||
|
|
||||||
|
public static var luaModchart:ModchartState = null;
|
||||||
|
|
||||||
function startCountdown():Void
|
function startCountdown():Void
|
||||||
{
|
{
|
||||||
inCutscene = false;
|
inCutscene = false;
|
||||||
@ -1300,369 +1095,13 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
|
|
||||||
#if windows
|
#if windows
|
||||||
if (executeModchart) // dude I hate lua (jkjkjkjk)
|
if (executeModchart)
|
||||||
{
|
{
|
||||||
trace('opening a lua state (because we are cool :))');
|
luaModchart = ModchartState.createModchartState();
|
||||||
lua = LuaL.newstate();
|
luaModchart.executeState('start',[PlayState.SONG.song]);
|
||||||
LuaL.openlibs(lua);
|
|
||||||
trace("Lua version: " + Lua.version());
|
|
||||||
trace("LuaJIT version: " + Lua.versionJIT());
|
|
||||||
Lua.init_callbacks(lua);
|
|
||||||
|
|
||||||
var result = LuaL.dofile(lua, Paths.lua(PlayState.SONG.song.toLowerCase() + "/modchart")); // execute le file
|
|
||||||
|
|
||||||
if (result != 0)
|
|
||||||
{
|
|
||||||
Application.current.window.alert("LUA COMPILE ERROR:\n" + Lua.tostring(lua,result),"Kade Engine Modcharts");
|
|
||||||
lua = null;
|
|
||||||
LoadingState.loadAndSwitchState(new MainMenuState());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// get some fukin globals up in here bois
|
|
||||||
|
|
||||||
setVar("difficulty", storyDifficulty);
|
|
||||||
setVar("bpm", Conductor.bpm);
|
|
||||||
setVar("scrollspeed", FlxG.save.data.scrollSpeed != 1 ? FlxG.save.data.scrollSpeed : PlayState.SONG.speed);
|
|
||||||
setVar("fpsCap", FlxG.save.data.fpsCap);
|
|
||||||
setVar("downscroll", FlxG.save.data.downscroll);
|
|
||||||
|
|
||||||
setVar("curStep", 0);
|
|
||||||
setVar("curBeat", 0);
|
|
||||||
setVar("crochet", Conductor.stepCrochet);
|
|
||||||
setVar("safeZoneOffset", Conductor.safeZoneOffset);
|
|
||||||
|
|
||||||
setVar("hudZoom", camHUD.zoom);
|
|
||||||
setVar("cameraZoom", FlxG.camera.zoom);
|
|
||||||
|
|
||||||
setVar("cameraAngle", FlxG.camera.angle);
|
|
||||||
setVar("camHudAngle", camHUD.angle);
|
|
||||||
|
|
||||||
setVar("followXOffset",0);
|
|
||||||
setVar("followYOffset",0);
|
|
||||||
|
|
||||||
setVar("showOnlyStrums", false);
|
|
||||||
setVar("strumLine1Visible", true);
|
|
||||||
setVar("strumLine2Visible", true);
|
|
||||||
|
|
||||||
setVar("screenWidth",FlxG.width);
|
|
||||||
setVar("screenHeight",FlxG.height);
|
|
||||||
setVar("hudWidth", camHUD.width);
|
|
||||||
setVar("hudHeight", camHUD.height);
|
|
||||||
|
|
||||||
setVar("mustHit", false);
|
|
||||||
|
|
||||||
setVar("strumLineY", strumLine.y);
|
|
||||||
|
|
||||||
// callbacks
|
|
||||||
|
|
||||||
// sprites
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"makeSprite", makeLuaSprite));
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"destroySprite", function(id:String) {
|
|
||||||
var sprite = luaSprites.get(id);
|
|
||||||
if (sprite == null)
|
|
||||||
return false;
|
|
||||||
remove(sprite);
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
|
|
||||||
// hud/camera
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setHudAngle", function (x:Float) {
|
|
||||||
camHUD.angle = x;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setHudPosition", function (x:Int, y:Int) {
|
|
||||||
camHUD.x = x;
|
|
||||||
camHUD.y = y;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getHudX", function () {
|
|
||||||
return camHUD.x;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getHudY", function () {
|
|
||||||
return camHUD.y;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setCamPosition", function (x:Int, y:Int) {
|
|
||||||
FlxG.camera.x = x;
|
|
||||||
FlxG.camera.y = y;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getCameraX", function () {
|
|
||||||
return FlxG.camera.x;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getCameraY", function () {
|
|
||||||
return FlxG.camera.y;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setCamZoom", function(zoomAmount:Int) {
|
|
||||||
FlxG.camera.zoom = zoomAmount;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setHudZoom", function(zoomAmount:Int) {
|
|
||||||
camHUD.zoom = zoomAmount;
|
|
||||||
}));
|
|
||||||
|
|
||||||
// actors
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getRenderedNotes", function() {
|
|
||||||
return notes.length;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getRenderedNoteX", function(id:Int) {
|
|
||||||
return notes.members[id].x;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getRenderedNoteY", function(id:Int) {
|
|
||||||
return notes.members[id].y;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getRenderedNoteType", function(id:Int) {
|
|
||||||
return notes.members[id].noteData;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"isSustain", function(id:Int) {
|
|
||||||
return notes.members[id].isSustainNote;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"isParentSustain", function(id:Int) {
|
|
||||||
return notes.members[id].prevNote.isSustainNote;
|
|
||||||
}));
|
|
||||||
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getRenderedNoteParentX", function(id:Int) {
|
|
||||||
return notes.members[id].prevNote.x;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getRenderedNoteParentY", function(id:Int) {
|
|
||||||
return notes.members[id].prevNote.y;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getRenderedNoteHit", function(id:Int) {
|
|
||||||
return notes.members[id].mustPress;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getRenderedNoteCalcX", function(id:Int) {
|
|
||||||
if (notes.members[id].mustPress)
|
|
||||||
return playerStrums.members[Math.floor(Math.abs(notes.members[id].noteData))].x;
|
|
||||||
return strumLineNotes.members[Math.floor(Math.abs(notes.members[id].noteData))].x;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"anyNotes", function() {
|
|
||||||
return notes.members.length != 0;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getRenderedNoteStrumtime", function(id:Int) {
|
|
||||||
return notes.members[id].strumTime;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getRenderedNoteScaleX", function(id:Int) {
|
|
||||||
return notes.members[id].scale.x;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setRenderedNotePos", function(x:Float,y:Float, id:Int) {
|
|
||||||
if (notes.members[id] == null)
|
|
||||||
throw('error! you cannot set a rendered notes position when it doesnt exist! ID: ' + id);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
notes.members[id].modifiedByLua = true;
|
|
||||||
notes.members[id].x = x;
|
|
||||||
notes.members[id].y = y;
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setRenderedNoteAlpha", function(alpha:Float, id:Int) {
|
|
||||||
notes.members[id].modifiedByLua = true;
|
|
||||||
notes.members[id].alpha = alpha;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setRenderedNoteScale", function(scale:Float, id:Int) {
|
|
||||||
notes.members[id].modifiedByLua = true;
|
|
||||||
notes.members[id].setGraphicSize(Std.int(notes.members[id].width * scale));
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setRenderedNoteScale", function(scaleX:Int, scaleY:Int, id:Int) {
|
|
||||||
notes.members[id].modifiedByLua = true;
|
|
||||||
notes.members[id].setGraphicSize(scaleX,scaleY);
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getRenderedNoteWidth", function(id:Int) {
|
|
||||||
return notes.members[id].width;
|
|
||||||
}));
|
|
||||||
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setRenderedNoteAngle", function(angle:Float, id:Int) {
|
|
||||||
notes.members[id].modifiedByLua = true;
|
|
||||||
notes.members[id].angle = angle;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setActorX", function(x:Int,id:String) {
|
|
||||||
getActorByName(id).x = x;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setActorAlpha", function(alpha:Float,id:String) {
|
|
||||||
getActorByName(id).alpha = alpha;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setActorY", function(y:Int,id:String) {
|
|
||||||
getActorByName(id).y = y;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setActorAngle", function(angle:Int,id:String) {
|
|
||||||
getActorByName(id).angle = angle;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"setActorScale", function(scale:Float,id:String) {
|
|
||||||
getActorByName(id).setGraphicSize(Std.int(getActorByName(id).width * scale));
|
|
||||||
}));
|
|
||||||
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getActorWidth", function (id:String) {
|
|
||||||
return getActorByName(id).width;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getActorHeight", function (id:String) {
|
|
||||||
return getActorByName(id).height;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getActorAlpha", function(id:String) {
|
|
||||||
return getActorByName(id).alpha;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getActorAngle", function(id:String) {
|
|
||||||
return getActorByName(id).angle;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getActorX", function (id:String) {
|
|
||||||
return getActorByName(id).x;
|
|
||||||
}));
|
|
||||||
|
|
||||||
trace(Lua_helper.add_callback(lua,"getActorY", function (id:String) {
|
|
||||||
return getActorByName(id).y;
|
|
||||||
}));
|
|
||||||
|
|
||||||
|
|
||||||
// tweens
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"tweenCameraPos", function(toX:Int, toY:Int, time:Float, onComplete:String) {
|
|
||||||
FlxTween.tween(FlxG.camera, {x: toX, y: toY}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,["camera"]);}}});
|
|
||||||
});
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"tweenCameraAngle", function(toAngle:Float, time:Float, onComplete:String) {
|
|
||||||
FlxTween.tween(FlxG.camera, {angle:toAngle}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,["camera"]);}}});
|
|
||||||
});
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"tweenCameraZoom", function(toZoom:Float, time:Float, onComplete:String) {
|
|
||||||
FlxTween.tween(FlxG.camera, {zoom:toZoom}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,["camera"]);}}});
|
|
||||||
});
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"tweenHudPos", function(toX:Int, toY:Int, time:Float, onComplete:String) {
|
|
||||||
FlxTween.tween(camHUD, {x: toX, y: toY}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,["camera"]);}}});
|
|
||||||
});
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"tweenHudAngle", function(toAngle:Float, time:Float, onComplete:String) {
|
|
||||||
FlxTween.tween(camHUD, {angle:toAngle}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,["camera"]);}}});
|
|
||||||
});
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"tweenHudZoom", function(toZoom:Float, time:Float, onComplete:String) {
|
|
||||||
FlxTween.tween(camHUD, {zoom:toZoom}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,["camera"]);}}});
|
|
||||||
});
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"tweenPos", function(id:String, toX:Int, toY:Int, time:Float, onComplete:String) {
|
|
||||||
FlxTween.tween(getActorByName(id), {x: toX, y: toY}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,[id]);}}});
|
|
||||||
});
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"tweenPosXAngle", function(id:String, toX:Int, toAngle:Float, time:Float, onComplete:String) {
|
|
||||||
FlxTween.tween(getActorByName(id), {x: toX, angle: toAngle}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,[id]);}}});
|
|
||||||
});
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"tweenPosYAngle", function(id:String, toY:Int, toAngle:Float, time:Float, onComplete:String) {
|
|
||||||
FlxTween.tween(getActorByName(id), {y: toY, angle: toAngle}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,[id]);}}});
|
|
||||||
});
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"tweenAngle", function(id:String, toAngle:Int, time:Float, onComplete:String) {
|
|
||||||
FlxTween.tween(getActorByName(id), {angle: toAngle}, time, {ease: FlxEase.cubeIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,[id]);}}});
|
|
||||||
});
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"tweenFadeIn", function(id:String, toAlpha:Int, time:Float, onComplete:String) {
|
|
||||||
FlxTween.tween(getActorByName(id), {alpha: toAlpha}, time, {ease: FlxEase.circIn, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,[id]);}}});
|
|
||||||
});
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"tweenFadeOut", function(id:String, toAlpha:Int, time:Float, onComplete:String) {
|
|
||||||
FlxTween.tween(getActorByName(id), {alpha: toAlpha}, time, {ease: FlxEase.circOut, onComplete: function(flxTween:FlxTween) { if (onComplete != '' && onComplete != null) {callLua(onComplete,[id]);}}});
|
|
||||||
});
|
|
||||||
|
|
||||||
// shader
|
|
||||||
|
|
||||||
/*Lua_helper.add_callback(lua,"setRenderedNoteWiggle", function(id:Int, effectType:String, waveSpeed:Int, waveFrequency:Int) {
|
|
||||||
trace('call');
|
|
||||||
var wiggleEffect = new WiggleEffect();
|
|
||||||
switch(effectType.toLowerCase())
|
|
||||||
{
|
|
||||||
case 'dreamy':
|
|
||||||
wiggleEffect.effectType = WiggleEffectType.DREAMY;
|
|
||||||
case 'wavy':
|
|
||||||
wiggleEffect.effectType = WiggleEffectType.WAVY;
|
|
||||||
case 'heat_wave_horizontal':
|
|
||||||
wiggleEffect.effectType = WiggleEffectType.HEAT_WAVE_HORIZONTAL;
|
|
||||||
case 'heat_wave_vertical':
|
|
||||||
wiggleEffect.effectType = WiggleEffectType.HEAT_WAVE_VERTICAL;
|
|
||||||
case 'flag':
|
|
||||||
wiggleEffect.effectType = WiggleEffectType.FLAG;
|
|
||||||
}
|
|
||||||
wiggleEffect.waveFrequency = waveFrequency;
|
|
||||||
wiggleEffect.waveSpeed = waveSpeed;
|
|
||||||
wiggleEffect.shader.uTime.value = [(strumLine.y - Note.swagWidth * 4) / FlxG.height]; // from 4mbr0s3 2
|
|
||||||
notes.members[id].shader = wiggleEffect.shader;
|
|
||||||
luaWiggles.push(wiggleEffect);
|
|
||||||
});
|
|
||||||
|
|
||||||
Lua_helper.add_callback(lua,"setActorWiggle", function(id:String, effectType:String, waveSpeed:Int, waveFrequency:Int) {
|
|
||||||
trace('call');
|
|
||||||
var wiggleEffect = new WiggleEffect();
|
|
||||||
switch(effectType.toLowerCase())
|
|
||||||
{
|
|
||||||
case 'dreamy':
|
|
||||||
wiggleEffect.effectType = WiggleEffectType.DREAMY;
|
|
||||||
case 'wavy':
|
|
||||||
wiggleEffect.effectType = WiggleEffectType.WAVY;
|
|
||||||
case 'heat_wave_horizontal':
|
|
||||||
wiggleEffect.effectType = WiggleEffectType.HEAT_WAVE_HORIZONTAL;
|
|
||||||
case 'heat_wave_vertical':
|
|
||||||
wiggleEffect.effectType = WiggleEffectType.HEAT_WAVE_VERTICAL;
|
|
||||||
case 'flag':
|
|
||||||
wiggleEffect.effectType = WiggleEffectType.FLAG;
|
|
||||||
}
|
|
||||||
wiggleEffect.waveFrequency = waveFrequency;
|
|
||||||
wiggleEffect.waveSpeed = waveSpeed;
|
|
||||||
wiggleEffect.shader.uTime.value = [(strumLine.y - Note.swagWidth * 4) / FlxG.height]; // from 4mbr0s3 2
|
|
||||||
getActorByName(id).shader = wiggleEffect.shader;
|
|
||||||
luaWiggles.push(wiggleEffect);
|
|
||||||
});*/
|
|
||||||
|
|
||||||
for (i in 0...strumLineNotes.length) {
|
|
||||||
var member = strumLineNotes.members[i];
|
|
||||||
trace(strumLineNotes.members[i].x + " " + strumLineNotes.members[i].y + " " + strumLineNotes.members[i].angle + " | strum" + i);
|
|
||||||
//setVar("strum" + i + "X", Math.floor(member.x));
|
|
||||||
setVar("defaultStrum" + i + "X", Math.floor(member.x));
|
|
||||||
//setVar("strum" + i + "Y", Math.floor(member.y));
|
|
||||||
setVar("defaultStrum" + i + "Y", Math.floor(member.y));
|
|
||||||
//setVar("strum" + i + "Angle", Math.floor(member.angle));
|
|
||||||
setVar("defaultStrum" + i + "Angle", Math.floor(member.angle));
|
|
||||||
trace("Adding strum" + i);
|
|
||||||
}
|
|
||||||
|
|
||||||
trace('calling start function');
|
|
||||||
|
|
||||||
trace('return: ' + Lua.tostring(lua,callLua('start', [PlayState.SONG.song])));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#end
|
#end
|
||||||
|
|
||||||
talking = false;
|
talking = false;
|
||||||
startedCountdown = true;
|
startedCountdown = true;
|
||||||
Conductor.songPosition = 0;
|
Conductor.songPosition = 0;
|
||||||
@ -2147,12 +1586,12 @@ class PlayState extends MusicBeatState
|
|||||||
#end
|
#end
|
||||||
|
|
||||||
#if windows
|
#if windows
|
||||||
if (executeModchart && lua != null && songStarted)
|
if (executeModchart && luaModchart != null && songStarted)
|
||||||
{
|
{
|
||||||
setVar('songPos',Conductor.songPosition);
|
luaModchart.setVar('songPos',Conductor.songPosition);
|
||||||
setVar('hudZoom', camHUD.zoom);
|
luaModchart.setVar('hudZoom', camHUD.zoom);
|
||||||
setVar('cameraZoom',FlxG.camera.zoom);
|
luaModchart.setVar('cameraZoom',FlxG.camera.zoom);
|
||||||
callLua('update', [elapsed]);
|
luaModchart.executeState('update', [elapsed]);
|
||||||
|
|
||||||
for (i in luaWiggles)
|
for (i in luaWiggles)
|
||||||
{
|
{
|
||||||
@ -2162,15 +1601,15 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
/*for (i in 0...strumLineNotes.length) {
|
/*for (i in 0...strumLineNotes.length) {
|
||||||
var member = strumLineNotes.members[i];
|
var member = strumLineNotes.members[i];
|
||||||
member.x = getVar("strum" + i + "X", "float");
|
member.x = luaModchart.getVar("strum" + i + "X", "float");
|
||||||
member.y = getVar("strum" + i + "Y", "float");
|
member.y = luaModchart.getVar("strum" + i + "Y", "float");
|
||||||
member.angle = getVar("strum" + i + "Angle", "float");
|
member.angle = luaModchart.getVar("strum" + i + "Angle", "float");
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
FlxG.camera.angle = getVar('cameraAngle', 'float');
|
FlxG.camera.angle = luaModchart.getVar('cameraAngle', 'float');
|
||||||
camHUD.angle = getVar('camHudAngle','float');
|
camHUD.angle = luaModchart.getVar('camHudAngle','float');
|
||||||
|
|
||||||
if (getVar("showOnlyStrums",'bool'))
|
if (luaModchart.getVar("showOnlyStrums",'bool'))
|
||||||
{
|
{
|
||||||
healthBarBG.visible = false;
|
healthBarBG.visible = false;
|
||||||
kadeEngineWatermark.visible = false;
|
kadeEngineWatermark.visible = false;
|
||||||
@ -2189,8 +1628,8 @@ class PlayState extends MusicBeatState
|
|||||||
scoreTxt.visible = true;
|
scoreTxt.visible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var p1 = getVar("strumLine1Visible",'bool');
|
var p1 = luaModchart.getVar("strumLine1Visible",'bool');
|
||||||
var p2 = getVar("strumLine2Visible",'bool');
|
var p2 = luaModchart.getVar("strumLine2Visible",'bool');
|
||||||
|
|
||||||
for (i in 0...4)
|
for (i in 0...4)
|
||||||
{
|
{
|
||||||
@ -2267,10 +1706,10 @@ class PlayState extends MusicBeatState
|
|||||||
#end
|
#end
|
||||||
FlxG.switchState(new ChartingState());
|
FlxG.switchState(new ChartingState());
|
||||||
#if windows
|
#if windows
|
||||||
if (lua != null)
|
if (luaModchart != null)
|
||||||
{
|
{
|
||||||
Lua.close(lua);
|
luaModchart.die();
|
||||||
lua = null;
|
luaModchart = null;
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
}
|
}
|
||||||
@ -2309,10 +1748,10 @@ class PlayState extends MusicBeatState
|
|||||||
if (FlxG.keys.justPressed.EIGHT)
|
if (FlxG.keys.justPressed.EIGHT)
|
||||||
{
|
{
|
||||||
FlxG.switchState(new AnimationDebug(SONG.player2));
|
FlxG.switchState(new AnimationDebug(SONG.player2));
|
||||||
if (lua != null)
|
if (luaModchart != null)
|
||||||
{
|
{
|
||||||
Lua.close(lua);
|
luaModchart.die();
|
||||||
lua = null;
|
luaModchart = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2454,8 +1893,8 @@ class PlayState extends MusicBeatState
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if windows
|
#if windows
|
||||||
if (lua != null)
|
if (luaModchart != null)
|
||||||
setVar("mustHit",PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection);
|
luaModchart.setVar("mustHit",PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection);
|
||||||
#end
|
#end
|
||||||
|
|
||||||
if (camFollow.x != dad.getMidpoint().x + 150 && !PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection)
|
if (camFollow.x != dad.getMidpoint().x + 150 && !PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection)
|
||||||
@ -2463,16 +1902,16 @@ class PlayState extends MusicBeatState
|
|||||||
var offsetX = 0;
|
var offsetX = 0;
|
||||||
var offsetY = 0;
|
var offsetY = 0;
|
||||||
#if windows
|
#if windows
|
||||||
if (lua != null)
|
if (luaModchart != null)
|
||||||
{
|
{
|
||||||
offsetX = getVar("followXOffset", "float");
|
offsetX = luaModchart.getVar("followXOffset", "float");
|
||||||
offsetY = getVar("followYOffset", "float");
|
offsetY = luaModchart.getVar("followYOffset", "float");
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
camFollow.setPosition(dad.getMidpoint().x + 150 + offsetX, dad.getMidpoint().y - 100 + offsetY);
|
camFollow.setPosition(dad.getMidpoint().x + 150 + offsetX, dad.getMidpoint().y - 100 + offsetY);
|
||||||
#if windows
|
#if windows
|
||||||
if (lua != null)
|
if (luaModchart != null)
|
||||||
callLua('playerTwoTurn', []);
|
luaModchart.executeState('playerTwoTurn', []);
|
||||||
#end
|
#end
|
||||||
// camFollow.setPosition(lucky.getMidpoint().x - 120, lucky.getMidpoint().y + 210);
|
// camFollow.setPosition(lucky.getMidpoint().x - 120, lucky.getMidpoint().y + 210);
|
||||||
|
|
||||||
@ -2497,17 +1936,17 @@ class PlayState extends MusicBeatState
|
|||||||
var offsetX = 0;
|
var offsetX = 0;
|
||||||
var offsetY = 0;
|
var offsetY = 0;
|
||||||
#if windows
|
#if windows
|
||||||
if (lua != null)
|
if (luaModchart != null)
|
||||||
{
|
{
|
||||||
offsetX = getVar("followXOffset", "float");
|
offsetX = luaModchart.getVar("followXOffset", "float");
|
||||||
offsetY = getVar("followYOffset", "float");
|
offsetY = luaModchart.getVar("followYOffset", "float");
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
camFollow.setPosition(boyfriend.getMidpoint().x - 100 + offsetX, boyfriend.getMidpoint().y - 100 + offsetY);
|
camFollow.setPosition(boyfriend.getMidpoint().x - 100 + offsetX, boyfriend.getMidpoint().y - 100 + offsetY);
|
||||||
|
|
||||||
#if windows
|
#if windows
|
||||||
if (lua != null)
|
if (luaModchart != null)
|
||||||
callLua('playerOneTurn', []);
|
luaModchart.executeState('playerOneTurn', []);
|
||||||
#end
|
#end
|
||||||
|
|
||||||
switch (curStage)
|
switch (curStage)
|
||||||
@ -2697,8 +2136,8 @@ class PlayState extends MusicBeatState
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if windows
|
#if windows
|
||||||
if (lua != null)
|
if (luaModchart != null)
|
||||||
callLua('playerTwoSing', [Math.abs(daNote.noteData), Conductor.songPosition]);
|
luaModchart.executeState('playerTwoSing', [Math.abs(daNote.noteData), Conductor.songPosition]);
|
||||||
#end
|
#end
|
||||||
|
|
||||||
dad.holdTimer = 0;
|
dad.holdTimer = 0;
|
||||||
@ -2783,10 +2222,10 @@ class PlayState extends MusicBeatState
|
|||||||
rep.SaveReplay();
|
rep.SaveReplay();
|
||||||
|
|
||||||
#if windows
|
#if windows
|
||||||
if (executeModchart)
|
if (luaModchart != null)
|
||||||
{
|
{
|
||||||
Lua.close(lua);
|
luaModchart.die();
|
||||||
lua = null;
|
luaModchart = null;
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
@ -2825,10 +2264,10 @@ class PlayState extends MusicBeatState
|
|||||||
FlxG.switchState(new StoryMenuState());
|
FlxG.switchState(new StoryMenuState());
|
||||||
|
|
||||||
#if windows
|
#if windows
|
||||||
if (lua != null)
|
if (luaModchart != null)
|
||||||
{
|
{
|
||||||
Lua.close(lua);
|
luaModchart.die();
|
||||||
lua = null;
|
luaModchart = null;
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
@ -3372,8 +2811,8 @@ class PlayState extends MusicBeatState
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if windows
|
#if windows
|
||||||
if (lua != null)
|
if (luaModchart != null)
|
||||||
callLua('playerOneMiss', [direction, Conductor.songPosition]);
|
luaModchart.executeState('playerOneMiss', [direction, Conductor.songPosition]);
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
|
||||||
@ -3523,8 +2962,8 @@ class PlayState extends MusicBeatState
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if windows
|
#if windows
|
||||||
if (lua != null)
|
if (luaModchart != null)
|
||||||
callLua('playerOneSing', [note.noteData, Conductor.songPosition]);
|
luaModchart.executeState('playerOneSing', [note.noteData, Conductor.songPosition]);
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
|
||||||
@ -3657,10 +3096,10 @@ class PlayState extends MusicBeatState
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if windows
|
#if windows
|
||||||
if (executeModchart && lua != null)
|
if (executeModchart && luaModchart != null)
|
||||||
{
|
{
|
||||||
setVar('curStep',curStep);
|
luaModchart.setVar('curStep',curStep);
|
||||||
callLua('stepHit',[curStep]);
|
luaModchart.executeState('stepHit',[curStep]);
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
@ -3696,10 +3135,10 @@ class PlayState extends MusicBeatState
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if windows
|
#if windows
|
||||||
if (executeModchart && lua != null)
|
if (executeModchart && luaModchart != null)
|
||||||
{
|
{
|
||||||
setVar('curBeat',curBeat);
|
luaModchart.setVar('curBeat',curBeat);
|
||||||
callLua('beatHit',[curBeat]);
|
luaModchart.executeState('beatHit',[curBeat]);
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user