This repository was archived by the owner on Aug 21, 2026. It is now read-only.
forked from ShadowMario/FNF-PsychEngine
-
Notifications
You must be signed in to change notification settings - Fork 46
Expand file tree
/
Copy pathProject.xml
More file actions
363 lines (293 loc) · 17 KB
/
Copy pathProject.xml
File metadata and controls
363 lines (293 loc) · 17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
<?xml version="1.0" encoding="utf-8"?>
<project>
<!-- _________________________ Application Settings _________________________ -->
<app title="NovaFlare Engine" file="NovaFlare Engine" packageName="com.NovaFlareEngineNew" package="com.NovaFlareEngineNew" main="Main" version="1.2.1-Hotfix" build-number="35260811" company="NF crew" />
<!--Switch Export with Unique ApplicationID and Icon-->
<set name="APP_ID" value="0x0100f6c013bbc000" />
<!-- NOTE TO SELF: DISABLE THIS IF ISSUES ARE FOUND -->
<haxedef name="LINC_LUA_RELATIVE_DYNAMIC_LIB"/> <!-- stable luas PUT AFTER FIRST LINE WITH APP NAME AND ETC -->
<!--The flixel preloader is not accurate in Chrome. You can use it regularly if you embed the swf into a html file
or you can set the actual size of your file manually at "FlxPreloaderBase-onUpdate-bytesTotal"-->
<!-- <app preloader="Preloader" resizable="true" /> -->
<app preloader="flixel.system.FlxPreloader" />
<!--Minimum without FLX_NO_GAMEPAD: 11.8, without FLX_NO_NATIVE_CURSOR: 11.2-->
<set name="SWF_VERSION" value="11.8" />
<!-- ______________________ NOVAFLARE ENGINE CUSTOMIZATION ______________________ -->
<define name="MODS_ALLOWED" if="desktop || mobile || emscripten" />
<define name="LUA_ALLOWED" if="desktop || mobile" unless="hl"/>
<define name="HSCRIPT_ALLOWED" if="desktop || mobile || web" />
<define name="ACHIEVEMENTS_ALLOWED" />
<define name="DISCORD_ALLOWED" if="desktop" unless="hl"/>
<define name="PSYCH_WATERMARKS"/> <!-- DELETE THIS TO REMOVE WATERMARKS/DEV NAMES ON TITLE SCREEN -->
<define name="VIDEOS_ALLOWED" if="desktop || mobile" unless="32bits || hl || NOVIDEO || rpi"/> <!-- i'll keep this cuz it makes vscode think i don't use videos -->
<define name="CUSTOM_SHADERS_ALLOWED" if="LUA_ALLOWED"/>
<!-- FNF 0.8.4 compatibility features. Origin scripts remain enabled. -->
<define name="ORIGIN_FUNKIN_COMPAT"/>
<!-- Codename runs as an isolated state chain with NovaFlare's state-aware
mobile input layer. Keyboard, gamepad and touch stay active together. -->
<define name="CODENAME_ENGINE_COMPAT" />
<define name="TOUCH_CONTROLS" if="mobile" />
<!-- Match Codename's HScript abstract surface. This is required for abstract
statics such as FlxColor.fromRGB. Abstracts are registered explicitly;
NF's newer Flixel must not be force-included package-wide. -->
<haxedef name="HSCRIPT_ABSTRACT_SUPPORT" if="CODENAME_ENGINE_COMPAT"/>
<haxedef name="CUSTOM_CLASSES" if="CODENAME_ENGINE_COMPAT"/>
<haxedef name="REGION" if="CODENAME_ENGINE_COMPAT"/>
<haxedef name="MOD_SUPPORT" if="CODENAME_ENGINE_COMPAT"/>
<haxedef name="TRANSLATIONS_SUPPORT" if="CODENAME_ENGINE_COMPAT"/>
<haxedef name="GLOBAL_SCRIPT" if="CODENAME_ENGINE_COMPAT"/>
<haxedef name="SOFTCODED_STATES" if="CODENAME_ENGINE_COMPAT"/>
<haxedef name="ALLOW_MULTITHREADING" if="CODENAME_ENGINE_COMPAT"/>
<haxedef name="USE_ADAPTED_ASSETS" if="CODENAME_ENGINE_COMPAT"/>
<haxedef name="hscriptPos" if="CODENAME_ENGINE_COMPAT"/>
<haxedef name="SHOW_BUILD_ON_FPS" if="CODENAME_ENGINE_COMPAT"/>
<define name="NO_FEATURE_TOUCH_CONTROLS" unless="mobile"/>
<define name="FEATURE_TOUCH_CONTROLS" if="mobile"/>
<define name="FEATURE_FUNKVIS"/>
<define name="FEATURE_LAG_ADJUSTMENT" unless="web"/>
<define name="FEATURE_LOST_FOCUS_VOLUME" if="desktop"/>
<define name="FEATURE_NAUGHTYNESS"/>
<define name="FEATURE_OPEN_URL"/>
<define name="FEATURE_VIDEO_PLAYBACK" if="VIDEOS_ALLOWED"/>
<define name="FEATURE_VIDEO_SUBTITLES" if="FEATURE_VIDEO_PLAYBACK"/>
<!--Add Tracy profiler-->
<!--define name="TRACY_ALLOWED" if="desktop"/-->
<section if="officialBuild">
<!--define name="TITLE_SCREEN_EASTER_EGG"/-->
</section>
<!-- ____________________________ Window Settings ___________________________ -->
<!--These window settings apply to all targets-->
<window width="1280" height="720" fps="60" background="#000000" hardware="true" vsync="false" allow-shaders="true" antialiasing="0" allowHighDPI="false" preserveDrawingBuffer="false" />
<!--HTML5-specific-->
<window if="html5" resizable="true" />
<!--Desktop-specific-->
<window if="desktop" orientation="landscape" fullscreen="false" resizable="true" vsync="false"/>
<!--Mobile-specific-->
<window if="mobile" orientation="landscape" fullscreen="true" resizable="false" allow-shaders="true" require-shaders="true" allow-high-dpi="true" vsync="false" />
<!--Switch-specific-->
<window if="switch" orientation="landscape" fullscreen="true" width="0" height="0" resizable="true" />
<!-- OpenAL config -->
<section if="desktop">
<assets path="alsoft.txt" rename="plugins/alsoft.ini" type="text" if="windows"/>
<assets path="alsoft.txt" rename="plugins/alsoft.conf" type="text" unless="windows"/>
</section>
<!-- _____________________________ Path Settings ____________________________ -->
<set name="BUILD_DIR" value="export/debug" if="debug" />
<set name="BUILD_DIR" value="export/release" unless="debug" />
<!-- Keep the Immix control build separate so NovaGC and legacy GC can be
rebuilt and profiled side by side without destroying either cache. -->
<set name="BUILD_DIR" value="export/legacy-gc" if="legacy_gc_compare" />
<set name="BUILD_DIR" value="export/32bit" if="32bits" />
<set name="BUILD_DIR" value="export/rpi" if="rpi" />
<classpath name="source" />
<classpath name="source-originFunkin" />
<classpath name="source-codename" if="CODENAME_ENGINE_COMPAT" />
<haxeflag name="--macro" value="codename.funkin.backend.system.macros.Macros.initMacros()" if="CODENAME_ENGINE_COMPAT"/>
<!-- __________________________ Game Assets & Etc. __________________________ -->
<define name="PRELOAD_ALL" unless="web" />
<define name="NO_PRELOAD_ALL" unless="PRELOAD_ALL"/>
<!-- Assets -->
<assets path="assets/fonts" embed="false"/>
<assets path="assets/mobile" library="codename_mobile" if="mobile"/>
<!-- Small CNE Week 6 fallback. External CodeName assets remain higher
priority; these files only fill incomplete legacy asset packs. -->
<assets path="assets/menuExtendHide" rename="assets/shared/images/menuExtendHide" embed="true"/>
<assets path="assets/shared" exclude="*.ogg" if="web"/>
<assets path="assets/shared" exclude="*.mp3" unless="web"/>
<assets path="assets/videos" library="videos" if="VIDEOS_ALLOWED"/>
<assets path="assets/songs" library="songs" exclude="*.ogg" if="web"/>
<assets path="assets/songs" library="songs" exclude="*.mp3" unless="web"/>
<assets path="assets/week_assets" library="week_assets" rename="assets" exclude="*.ogg" if="web"/>
<assets path="assets/week_assets" library="week_assets" rename="assets" exclude="*.mp3" unless="web"/>
<section if="TITLE_SCREEN_EASTER_EGG">
<assets path="assets/secrets" rename="assets/shared" exclude="*.ogg" if="web"/>
<assets path="assets/secrets" rename="assets/shared" exclude="*.mp3" unless="web"/>
</section>
<library name="videos" preload="true" if="VIDEOS_ALLOWED"/>
<library name="codename_mobile" preload="true" if="mobile"/>
<library name="codename_fallback" preload="true" if="CODENAME_ENGINE_COMPAT"/>
<section if="PRELOAD_ALL">
<library name="songs" preload="true" />
<library name="week_assets" preload="true" />
</section>
<section if="NO_PRELOAD_ALL">
<library name="songs" preload="false" />
<library name="week_assets" preload="false" />
</section>
<define name="CHECK_FOR_UPDATES" />
<!-- Required by the Codename contributor/update clients. Every caller still
handles offline, rate-limited and empty responses at runtime. -->
<define name="GITHUB_API" if="CODENAME_ENGINE_COMPAT" unless="web || hl" />
<section if="MODS_ALLOWED">
<assets path='example_mods' rename='mods' embed='false'/>
</section>
<assets path='art/readme.txt' rename='do NOT readme.txt' unless="mobile"/>
<!--不知道为什么他不起作用,目前是直接在haxelib的flixel-ui里面的assets里改的(应该是embed冲突了懒得改了)-->
<!--assets path="assets/flixel/flixel-ui/img" rename="flixel/flixel-ui/img" embed="true" /-->
<!--assets path="assets/flixel/flixel-ui/xml" rename="flixel/flixel-ui/xml" embed="true" /-->
<!-- _______________________________ Libraries ______________________________ -->
<haxelib name="flixel" />
<haxelib name="flixel-ui" />
<haxelib name="flixel-addons" />
<haxelib name="crypto" />
<haxelib name="trandom" unless="android" />
<haxelib name="hxWebSockets" />
<haxelib name="spinehaxe" />
<!--Psych stuff needed-->
<haxelib name="linc_luajit" if="LUA_ALLOWED"/>
<haxelib name="luahscript" if="LUA_ALLOWED"/>
<haxelib name="hscript-iris-improved" if="HSCRIPT_ALLOWED"/>
<haxelib name="hscript-improved" if="CODENAME_ENGINE_COMPAT"/>
<haxelib name="markdown" if="CODENAME_ENGINE_COMPAT"/>
<haxelib name="hxvlc" if="VIDEOS_ALLOWED"/>
<haxelib name="hxCodec" if="VIDEOS_ALLOWED_Old"/>
<haxelib name="hxdiscord_rpc" if="DISCORD_ALLOWED"/>
<haxelib name="flxanimate" unless="html5"/>
<haxelib name="tjson"/>
<haxelib name="json2object"/>
<!-- FNF 0.8.4 dependencies; NF's existing core libraries stay selected. -->
<haxelib name="polymod"/>
<haxelib name="FlxPartialSound"/>
<haxelib name="format"/>
<haxelib name="jsonpatch"/>
<haxelib name="jsonpath"/>
<haxelib name="thx.core"/>
<haxelib name="thx.semver"/>
<haxelib name="funkin.vis"/>
<haxelib name="grig.audio" />
<haxelib name="flxsoundfilters" />
<haxelib name="haxeui-core"/>
<haxelib name="haxeui-flixel"/>
<!-- Mobile Specific-->
<haxelib name="extension-androidtools" if="android" />
<java path="source/mobile/android/java" if="android" />
<java path="source-originFunkin/funkin/external/android/java" if="android" />
<config:android extension="funkin.extensions.CallbackUtil" if="android" />
<config:android extension="funkin.extensions.FNFCExtension" if="android" />
<config:android extension="funkin.extensions.AudioSession" if="android" />
<!-- ModChart Specific-->
<haxedef name="FM_ENGINE" value="PSYCH"/>
<haxedef name="FM_ENGINE_VERSION" value="0.7"/>
<haxelib name="modcharts" />
<haxeflag name="--macro" value="modchart.backend.macros.Macro.includeFiles()"/>
<!--<haxelib name="hx-ios-uikit" if="ios" />-->
<haxedef name="SHARE_MOBILE_FILES" if="ios" />
<!-- Disable Discord IO Thread -->
<haxedef name="DISCORD_DISABLE_IO_THREAD" if="hxdiscord_rpc" />
<haxedef name="NO_PRECOMPILED_HEADERS" if="linux" />
<!-- Enables a terminal log prompt on debug builds -->
<haxelib name="hxcpp-debug-server" if="debug"/>
<!-- High-rate desktop rendering depends on avoiding full-tree transform
walks and per-frame Event allocation when nothing changed. -->
<haxedef name="openfl_enable_experimental_update_queue" if="desktop" />
<haxedef name="openfl_pool_events" if="desktop" />
<haxedef name="openfl_always_render" if="ios" />
<haxedef name="HXCPP_ALIGN_ALLOC"/>
<haxedef name="HXCPP_GC_GENERATIONAL" />
<!-- The public hxcpp name now selects the exact, moving NovaGC backend on
Windows; keep this in the project so normal Lime builds cannot silently
fall back to the old C++ generator ABI. -->
<haxedef name="hxcpp_zgc" if="windows" unless="legacy_gc_compare" />
<haxedef name="novagc-precise" if="windows" unless="legacy_gc_compare" />
<!-- Lime otherwise emits a random web cache-buster into AssetCache on every
native build, forcing one unchanged C++ unit to recompile. -->
<haxedef name="lime_disable_assets_version" if="windows" />
<!-- _______________________________ TRACY ______________________________ -->
<haxedef name="HXCPP_TRACY" if="TRACY_ALLOWED"/>
<haxedef name="HXCPP_TELEMETRY" if="TRACY_ALLOWED"/>
<haxedef name="HXCPP_STACK_TRACE" if="TRACY_ALLOWED"/>
<haxedef name="HXCPP_STACK_LINES" if="TRACY_ALLOWED"/>
<!-- ______________________________ Haxedefines _____________________________ -->
<!--Enable the Flixel core recording system-->
<!--<haxedef name="FLX_RECORD" />-->
<!--Disable the right and middle mouse buttons-->
<!-- <haxedef name="FLX_NO_MOUSE_ADVANCED" /> -->
<!--Disable the native cursor API on Flash-->
<!--<haxedef name="FLX_NO_NATIVE_CURSOR" />-->
<!--Optimise inputs, be careful you will get null errors if you don't use conditionals in your game-->
<!-- <haxedef name="FLX_NO_MOUSE" if="mobile" /> -->
<!-- <haxedef name="FLX_NO_KEYBOARD" if="mobile" /> -->
<!-- <haxedef name="FLX_NO_TOUCH" if="desktop" /> -->
<!--<haxedef name="FLX_NO_GAMEPAD" />-->
<!--Disable the Flixel core sound tray-->
<!--<haxedef name="FLX_NO_SOUND_TRAY" />-->
<!--Disable the Flixel sound management code-->
<!--<haxedef name="FLX_NO_SOUND_SYSTEM" />-->
<!--Disable the Flixel core focus lost screen-->
<haxedef name="FLX_NO_FOCUS_LOST_SCREEN" />
<!-- Show debug traces for hxCodec -->
<haxedef name="HXC_DEBUG_TRACE" if="debug hxCodec" />
<haxedef name="HXC_LIBVLC_LOGGING" if="debug hxCodec" />
<!--Disable the Flixel core debugger. Automatically gets set whenever you compile in release mode!-->
<haxedef name="FLX_NO_DEBUG" unless="debug" />
<!--Enable this for Nape release builds for a serious peformance improvement-->
<haxedef name="NAPE_RELEASE_BUILD" unless="debug" />
<haxedef name="message.reporting" value="pretty" />
<haxedef name='no-deprecation-warnings' />
<haxedef name='no-inline' if="html5"/>
<section if="cpp">
<!-- These checks add work to nearly every generated call and preserve
large stacks/string tables. Keep them in debug builds only. -->
<!-- The project no longer requests per-line HXCPP stack maintenance. Normal
Release builds keep it off; stock hxcpp may still enable it internally
for an explicit -debug build. HScript/Lua hot contexts instead use
immutable NativeCrashHandler slots for actionable source evidence. -->
<haxedef name="HXCPP_STACK_TRACE" if="debug" />
<!-- On POSIX targets hxcpp installs this process-wide on every Haxe
thread attach, which can overwrite NovaFlare's Android crash logger.
Keep the translator debug-only and leave Android signals to
NativeCrashHandler even in debug builds. -->
<haxedef name="HXCPP_CATCH_SEGV" if="debug" unless="android" />
</section>
<haxedef name="hscriptPos" if="HSCRIPT_ALLOWED" />
<haxedef name="STAR_CLASSES" if="HSCRIPT_ALLOWED" />
<section if="desktop">
<!--Enable Handle Error-->
<haxedef name="openfl_enable_handle_error" if="${openfl >= 9.4.0}" />
<!--Undefinitions-->
<undefine name="openfl-disable-handle-error" if="debug" unless="${openfl >= 9.4.0}" />
</section>
<!-- Do whatever you want I'm tired uninstall and install everytime -->
<certificate path="key.keystore" password="novaFlare" alias="psychport" alias-password="novaFlare" if="android" unless="debug" />
<!--Avoid memory leaks with for loops in HScript-->
<haxedef name="loop_unroll_max_cost" value="25" />
<!--Macro fixes-->
<haxeflag name="--macro" value="allowPackage('flash')" />
<haxeflag name="--macro" value="include('funkin.modding.base')" />
<haxeflag name="--macro" value="include('funkin.play.event')" />
<haxeflag name="--macro" value="include('funkin.play.notes.notekind')" />
<haxeflag name="--macro" value="include('funkin.ui.debug', false, ['funkin.ui.debug.FunkinDebugDisplay', 'funkin.ui.debug.GraphicCursorCross', 'funkin.ui.debug.WaveformTestState'])" />
<haxeflag name="--macro" value="addMetadata('@:build(originfunkin.macro.OriginFlixelCompatMacro.addZIndex())', 'flixel.FlxBasic')" />
<haxeflag name="--macro" value="addMetadata('@:build(originfunkin.macro.OriginFlixelCompatMacro.addContainsExact())', 'thx.Arrays')" />
<haxeflag name="--macro" value="addMetadata('@:build(originfunkin.macro.OriginFlixelCompatMacro.addTouchCompatibility())', 'flixel.input.touch.FlxTouch')" if="mobile" />
<haxeflag name="--macro" value="addMetadata('@:build(originfunkin.macro.OriginFlixelCompatMacro.addTouchManagerCompatibility())', 'flixel.input.touch.FlxTouchManager')" if="mobile" />
<!-- Preserve every class and field that enters the Haxe type system so
HScript/Type.resolveClass can reach it by name at runtime. -->
<haxeflag name="-dce" value="no" if="windows" unless="debug" />
<haxeflag name="-dce" value="no" if="debug" unless="ios" />
<haxeflag name="-dce" value="no" unless="windows || ios || debug" />
<!-- _________________________________ Custom _______________________________ -->
<!-- GameAnalytics is enabled automatically when all private sources exist. -->
<classpath name="private" />
<haxeflag name="--macro" value="gameanalytics.GACompileConfig.configure()" />
<assets path='art/icon16.png' rename='icon.png' if="linux" />
<section if="android">
<icon path="art/iconOG.png" size='36'/>
<icon path="art/iconOG.png" size='48'/>
<icon path="art/iconOG.png" size='72'/>
<icon path="art/iconOG.png" size='96'/>
<icon path="art/iconOG.png" size='144'/>
<icon path="art/iconOG.png" size='192'/>
<icon path="art/iconOG.png"/>
</section>
<section if="desktop">
<icon path="art/icon16-PC.png" size='16'/>
<icon path="art/icon32-PC.png" size='32'/>
<icon path="art/icon64-PC.png" size='64'/>
<icon path="art/iconOG-PC.png"/>
</section>
<architecture name="arm64" exclude="armv7" if="android" />
<config>
<ios deployment="13.6"/>
</config>
</project>