Merge branch 'main' into base-fnf-port-remake
This commit is contained in:
+5
-4
@@ -1,7 +1,8 @@
|
||||
@ECHO OFF
|
||||
cd ..
|
||||
echo Building Game...
|
||||
lime build windows --haxeflag="--macro include('scripting')" --haxeflag="-xml docs/doc.xml"
|
||||
echo Generating Documentation...
|
||||
haxelib run dox -i docs --include funkin --include scripting
|
||||
echo Done!
|
||||
lime build windows --haxeflag="--macro include('scripting')" --haxeflag="-xml docs/doc.xml" -D DOCUMENTATION --no-output
|
||||
echo art
|
||||
|
||||
echo Generated the api xml file at docs/doc.xml
|
||||
echo Please put this in FNF-CNE-Devs.github.io/api-generator/api/doc.xml
|
||||
@@ -1,5 +1,4 @@
|
||||
function create() {
|
||||
importScript("data/scripts/pixel");
|
||||
isSpooky = true;
|
||||
|
||||
// Make transition work between school types
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<!DOCTYPE codename-engine-stage>
|
||||
<stage zoom="1" name="school-evil" folder="stages/school/" startCamPosY="550" startCamPosX="600">
|
||||
<use-extension script="pixel"/>
|
||||
<sprite name="bg" x="400" y="200" sprite="animatedEvilSchool"
|
||||
antialiasing="false" scale="6" scrollx="0.8" scrolly="0.9" type="loop"/>
|
||||
</stage>
|
||||
@@ -1,5 +1,5 @@
|
||||
//
|
||||
function create() {
|
||||
importScript("data/scripts/pixel");
|
||||
if (PlayState.SONG.meta.name.toLowerCase() == "roses") {
|
||||
bgGirls.animation.remove("danceLeft");
|
||||
bgGirls.animation.remove("danceRight");
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<!DOCTYPE codename-engine-stage>
|
||||
<stage zoom="1" folder="stages/school/" startCamPosY="550" startCamPosX="600">
|
||||
<use-extension script="pixel"/>
|
||||
|
||||
<sprite name="bgSky" x="-12" y="0" sprite="weebSky"
|
||||
antialiasing="false" scale="6" scroll="0.1" updateHitbox="true"/>
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package funkin.backend.scripting.events;
|
||||
|
||||
import funkin.game.SplashGroup;
|
||||
import funkin.game.Strum;
|
||||
|
||||
final class SplashShowEvent extends CancellableEvent {
|
||||
/**
|
||||
Splash name/type
|
||||
**/
|
||||
public var splashName:String;
|
||||
/**
|
||||
Splash that is shown
|
||||
**/
|
||||
public var splash:FunkinSprite;
|
||||
/**
|
||||
Strum that the splash is shown on
|
||||
**/
|
||||
public var strum:Strum;
|
||||
/**
|
||||
Splash group that the splash is from
|
||||
**/
|
||||
public var group:SplashGroup;
|
||||
}
|
||||
@@ -484,6 +484,10 @@ uniform bool hasColorTransform;
|
||||
|
||||
vec4 flixel_texture2D(sampler2D bitmap, vec2 coord) {
|
||||
vec4 color = texture2D(bitmap, coord);
|
||||
return applyFlixelEffects(color);
|
||||
}
|
||||
|
||||
vec4 applyFlixelEffects(vec4 color) {
|
||||
if (!hasTransform) {
|
||||
return color;
|
||||
}
|
||||
@@ -496,7 +500,7 @@ vec4 flixel_texture2D(sampler2D bitmap, vec2 coord) {
|
||||
return color * openfl_Alphav;
|
||||
}
|
||||
|
||||
color = vec4(color.rgb / color.a, color.a);
|
||||
color.rgb = color.rgb / color.a;
|
||||
color = clamp(openfl_ColorOffsetv + (color * openfl_ColorMultiplierv), 0.0, 1.0);
|
||||
|
||||
if (color.a > 0.0) {
|
||||
|
||||
@@ -117,7 +117,17 @@ class MemoryUtil {
|
||||
22 => "DDR2 FB-DIMM",
|
||||
24 => "DDR3",
|
||||
25 => "FBD2",
|
||||
26 => "DDR4"
|
||||
26 => "DDR4",
|
||||
27 => "LPDDR",
|
||||
28 => "LPDDR2",
|
||||
29 => "LPDDR3",
|
||||
30 => "LPDDR4",
|
||||
31 => "Logical Non-volatile device",
|
||||
32 => "HBM",
|
||||
33 => "HBM2",
|
||||
34 => "DDR5",
|
||||
35 => "LPDDR5",
|
||||
36 => "HBM3",
|
||||
];
|
||||
var memoryOutput:Int = -1;
|
||||
|
||||
|
||||
@@ -22,11 +22,13 @@ class EditorPicker extends MusicBeatSubstate {
|
||||
iconID: 2,
|
||||
state: null
|
||||
},
|
||||
#if debug
|
||||
{
|
||||
name: "UI Debug State",
|
||||
iconID: 3,
|
||||
state: UIDebugState
|
||||
},
|
||||
#end
|
||||
{
|
||||
name: "Debug Options",
|
||||
iconID: 4,
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package funkin.game;
|
||||
|
||||
import funkin.backend.scripting.events.SplashShowEvent;
|
||||
|
||||
class SplashHandler extends FlxTypedGroup<FunkinSprite> {
|
||||
/**
|
||||
* Map containing all of the splashes group.
|
||||
@@ -40,10 +42,12 @@ class SplashHandler extends FlxTypedGroup<FunkinSprite> {
|
||||
var __grp:SplashGroup;
|
||||
public function showSplash(name:String, strum:Strum) {
|
||||
__grp = getSplashGroup(name);
|
||||
var event = funkin.backend.scripting.EventManager.get(funkin.backend.scripting.events.DynamicEvent).recycle(__grp.showOnStrum(strum), strum);
|
||||
|
||||
var event = EventManager.get(SplashShowEvent).recycle(name, __grp.showOnStrum(strum), strum, __grp);
|
||||
event = PlayState.instance.gameAndCharsEvent("onSplashShown", event);
|
||||
|
||||
if (!event.cancelled)
|
||||
add(event.value1);
|
||||
add(event.splash);
|
||||
|
||||
// max 8 rendered splashes
|
||||
while(members.length > Constants.MAX_SPLASHES)
|
||||
|
||||
@@ -2,6 +2,7 @@ package funkin.game;
|
||||
|
||||
import flixel.FlxState;
|
||||
import flixel.math.FlxPoint;
|
||||
import funkin.backend.scripting.DummyScript;
|
||||
import funkin.backend.scripting.Script;
|
||||
import funkin.backend.scripting.events.StageNodeEvent;
|
||||
import funkin.backend.scripting.events.StageXMLEvent;
|
||||
@@ -18,6 +19,7 @@ class Stage extends FlxBasic implements IBeatReceiver {
|
||||
public var stageScript:Script;
|
||||
public var state:FlxState;
|
||||
public var characterPoses:Map<String, StageCharPos> = [];
|
||||
public var xmlImportedScripts:Map<String, Bool> = [];
|
||||
|
||||
private var spritesParentFolder = "";
|
||||
|
||||
@@ -45,6 +47,7 @@ class Stage extends FlxBasic implements IBeatReceiver {
|
||||
stageScript.load();
|
||||
}
|
||||
|
||||
var event = null;
|
||||
if (stageXML != null) {
|
||||
if (PlayState.instance != null) {
|
||||
var parsed:Null<Float>;
|
||||
@@ -68,8 +71,8 @@ class Stage extends FlxBasic implements IBeatReceiver {
|
||||
}
|
||||
|
||||
if (PlayState.instance != null) {
|
||||
var event = PlayState.instance.gameAndCharsEvent("onStageXMLParsed", EventManager.get(StageXMLEvent).recycle(this, stageXML, elems));
|
||||
elems = event.elems;
|
||||
event = EventManager.get(StageXMLEvent).recycle(this, stageXML, elems);
|
||||
elems = PlayState.instance.gameAndCharsEvent("onStageXMLParsed", event).elems;
|
||||
}
|
||||
|
||||
for(node in elems) {
|
||||
@@ -86,7 +89,7 @@ class Stage extends FlxBasic implements IBeatReceiver {
|
||||
state.add(spr);
|
||||
spr;
|
||||
case "box" | "solid":
|
||||
if ( !node.has.name || !node.has.width || !node.has.height) continue;
|
||||
if (!node.has.name || !node.has.width || !node.has.height) continue;
|
||||
|
||||
var spr = new FlxSprite(
|
||||
(node.has.x) ? Std.parseFloat(node.att.x).getDefault(0) : 0,
|
||||
@@ -134,6 +137,22 @@ class Stage extends FlxBasic implements IBeatReceiver {
|
||||
);
|
||||
PlayState.instance.add(PlayState.instance.comboGroup);
|
||||
PlayState.instance.comboGroup;
|
||||
case "use-extension" | "extension" | "ext":
|
||||
if (!node.has.script || PlayState.instance == null) continue;
|
||||
|
||||
var folder = node.getAtt("folder").getDefault("data/scripts/");
|
||||
if (!folder.endsWith("/")) folder += "/";
|
||||
|
||||
var path = Paths.script(folder + node.getAtt("script"));
|
||||
var daScript = Script.create(path);
|
||||
if (daScript is DummyScript) Logs.trace('Script at ${path} does not exist.', ERROR);
|
||||
else {
|
||||
xmlImportedScripts.set(path, node.getAtt("isShortLived") == "true");
|
||||
PlayState.instance.scripts.add(daScript);
|
||||
daScript.load();
|
||||
}
|
||||
|
||||
null;
|
||||
default: null;
|
||||
}
|
||||
|
||||
@@ -173,8 +192,20 @@ class Stage extends FlxBasic implements IBeatReceiver {
|
||||
});
|
||||
|
||||
if (PlayState.instance == null) return;
|
||||
for(k=>e in stageSprites) {
|
||||
|
||||
for (k=>e in stageSprites)
|
||||
stageScript.set(k, e);
|
||||
|
||||
// idk lemme check anyways just in case scripts did smth - Nex
|
||||
if (event != null) PlayState.instance.gameAndCharsEvent("onPostStageCreation", event);
|
||||
|
||||
// shortlived scripts destroy when the stage finishes setting up - Nex
|
||||
for (p=>b in xmlImportedScripts) if (b) {
|
||||
var script = PlayState.instance.scripts.getByPath(p);
|
||||
if (script == null) continue;
|
||||
|
||||
PlayState.instance.scripts.remove(script);
|
||||
script.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,19 +3,23 @@ package hscript;
|
||||
class Config {
|
||||
// Runs support for custom classes in these
|
||||
public static final ALLOWED_CUSTOM_CLASSES = [
|
||||
#if !DOCUMENTATION
|
||||
"flixel",
|
||||
|
||||
"funkin",
|
||||
#end
|
||||
];
|
||||
|
||||
// Runs support for abstract support in these
|
||||
public static final ALLOWED_ABSTRACT_AND_ENUM = [
|
||||
#if !DOCUMENTATION
|
||||
"flixel",
|
||||
"openfl",
|
||||
|
||||
"haxe.xml",
|
||||
"haxe.CallStack",
|
||||
"funkin",
|
||||
#end
|
||||
];
|
||||
|
||||
// Incase any of your files fail
|
||||
|
||||
Reference in New Issue
Block a user