Skip to content

Commit c45bcc8

Browse files
committed
lazy mobile funcs and update makeAnimatedLuaSprite
1 parent 53724bb commit c45bcc8

File tree

2 files changed

+279
-13
lines changed

2 files changed

+279
-13
lines changed

pages/mobile.html

Lines changed: 186 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,186 @@
1-
<!-- TODO -->
1+
<html lang="en">
2+
<head>
3+
<meta charset="UTF-8">
4+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
5+
<title>Shadow Engine - Mobile Functions</title>
6+
<link rel="stylesheet" href="../css/main.css">
7+
<link rel="stylesheet" href="../css/header.css">
8+
<link rel="stylesheet" href="../css/search.css">
9+
<link rel="stylesheet" href="../css/theme.css">
10+
<link rel="icon" href="../assets/icon.ico" type="image/x-icon">
11+
</head>
12+
13+
<body>
14+
<!-- Create Search Bar and Theme Boxes -->
15+
<div class="sidebar"></div>
16+
<div class="themeBox" onclick="switchTheme()">
17+
<div class="themeDot"></div>
18+
<div class="themeDot" style="margin-left: 70px"></div>
19+
<button class="themeBtn" id="themeSelector"></button>
20+
</div>
21+
22+
<!-- Load JavaScript -->
23+
<script src="../js/selector.js"></script>
24+
<script>createSidebarContent();</script>
25+
<script src="../js/searchbar.js"></script>
26+
<script src="../js/theme.js"></script>
27+
28+
<!-- Header -->
29+
<div class="headerbox">
30+
<div class="header">
31+
<a href="../index.html">
32+
<img width="64" src="../assets/icon.ico" alt="Shadow Engine Logo" draggable="false">
33+
<div class="headertext">Shadow Engine - Lua Script API</div>
34+
</a>
35+
</div>
36+
</div>
37+
38+
<!-- Page Info -->
39+
<div class="infobox">
40+
<h1>Mobile Functions</h1>
41+
<p><b>Functions for mobile controls, touch input, vibration, and Android-specific features.</b></p>
42+
<hr>
43+
44+
<h2 id="mobileControlsMode">mobileControlsMode</h2>
45+
<p class="methodbox">mobileControlsMode:String</p>
46+
<p>Returns the current mobile controls mode.</p>
47+
<ul>
48+
<li><code>"left"</code></li>
49+
<li><code>"right"</code></li>
50+
<li><code>"custom"</code></li>
51+
<li><code>"hitbox"</code></li>
52+
<li><code>"none"</code> / <code>"unknown"</code></li>
53+
</ul>
54+
<hr>
55+
56+
<h2 id="extraButtons">Extra Buttons</h2>
57+
58+
<p class="methodbox">extraButtonPressed(<span class="variablemarkup">button</span>:String):Bool</p>
59+
<p class="methodbox">extraButtonJustPressed(<span class="variablemarkup">button</span>:String):Bool</p>
60+
<p class="methodbox">extraButtonJustReleased(<span class="variablemarkup">button</span>:String):Bool</p>
61+
<p class="methodbox">extraButtonReleased(<span class="variablemarkup">button</span>:String):Bool</p>
62+
63+
<p>Checks the state of the mobile extra buttons.</p>
64+
<ul>
65+
<li><code>"default"</code> – First extra button</li>
66+
<li><code>"second"</code> – Second extra button</li>
67+
</ul>
68+
<hr>
69+
70+
<h2 id="vibrate">vibrate</h2>
71+
<p class="methodbox">
72+
vibrate(<span class="isoptional">?</span><span class="variablemarkup">duration</span>:Int,
73+
<span class="isoptional">?</span><span class="variablemarkup">period</span>:Int):Void
74+
</p>
75+
<p>Triggers device vibration.</p>
76+
<ul>
77+
<li><b><span class="variablemarkup">duration</span></b> – Vibration duration in milliseconds.</li>
78+
<li><b><span class="variablemarkup">period</span> (Optional)</b> – Delay before vibration starts.</li>
79+
</ul>
80+
<hr>
81+
82+
<h2 id="touchPad">Touch Pad</h2>
83+
84+
<p class="methodbox">
85+
addTouchPad(<span class="variablemarkup">DPadMode</span>:String,
86+
<span class="variablemarkup">ActionMode</span>:String,
87+
<span class="isoptional">?</span><span class="variablemarkup">addToCustomSubstate</span>:Bool = false,
88+
<span class="isoptional">?</span><span class="variablemarkup">posAtCustomSubstate</span>:Int = -1):Void
89+
</p>
90+
<p>Adds a Lua-controlled touch pad.</p>
91+
92+
<p class="methodbox">removeTouchPad():Void</p>
93+
<p>Removes the current Lua touch pad.</p>
94+
95+
<p class="methodbox">addTouchPadCamera(<span class="isoptional">?</span><span class="variablemarkup">defaultDrawTarget</span>:Bool = false):Void</p>
96+
<p>Assigns a camera to the Lua touch pad.</p>
97+
<hr>
98+
99+
<h2 id="touchInput">Touch Input</h2>
100+
101+
<p class="methodbox">touchJustPressed():Bool</p>
102+
<p class="methodbox">touchPressed():Bool</p>
103+
<p class="methodbox">touchJustReleased():Bool</p>
104+
<p class="methodbox">touchReleased():Bool</p>
105+
106+
<p>Global touch state checks.</p>
107+
<hr>
108+
109+
<h2 id="touchObject">Touch Object Detection</h2>
110+
111+
<p class="methodbox">
112+
touchPressedObject(<span class="variablemarkup">object</span>:String,
113+
<span class="isoptional">?</span><span class="variablemarkup">camera</span>:String):Bool
114+
</p>
115+
116+
<p class="methodbox">touchJustPressedObject(...):Bool</p>
117+
<p class="methodbox">touchJustReleasedObject(...):Bool</p>
118+
<p class="methodbox">touchReleasedObject(...):Bool</p>
119+
120+
<p>
121+
Checks touch interaction against a Lua sprite using bounding-box overlap.
122+
</p>
123+
124+
<p class="methodbox">touchPressedObjectComplex(...):Bool</p>
125+
<p class="methodbox">touchJustPressedObjectComplex(...):Bool</p>
126+
<p class="methodbox">touchJustReleasedObjectComplex(...):Bool</p>
127+
<p class="methodbox">touchReleasedObjectComplex(...):Bool</p>
128+
129+
<p>
130+
Uses pixel-perfect overlap checks for touch interaction.
131+
</p>
132+
133+
<p class="methodbox">touchOverlapsObject(...):Bool</p>
134+
<p class="methodbox">touchOverlapsObjectComplex(...):Bool</p>
135+
<hr>
136+
137+
<h2 id="androidFunctions">Android Functions</h2>
138+
<p><b>Only available on Android builds.</b></p>
139+
140+
<p class="methodbox">isAndroidTV:Bool</p>
141+
<p class="methodbox">isTablet:Bool</p>
142+
<p class="methodbox">isChromebook:Bool</p>
143+
<p class="methodbox">isDeXMode:Bool</p>
144+
<p class="methodbox">isDolbyAtmos:Bool</p>
145+
<hr>
146+
147+
<h2 id="androidInput">Android Buttons</h2>
148+
149+
<p class="methodbox">backJustPressed:Bool</p>
150+
<p class="methodbox">backPressed:Bool</p>
151+
<p class="methodbox">backJustReleased:Bool</p>
152+
153+
<p class="methodbox">menuJustPressed:Bool</p>
154+
<p class="methodbox">menuPressed:Bool</p>
155+
<p class="methodbox">menuJustReleased:Bool</p>
156+
<hr>
157+
158+
<h2 id="androidSystem">Android System</h2>
159+
160+
<p class="methodbox">getCurrentOrientation():String</p>
161+
<p class="methodbox">setOrientation(<span class="isoptional">?</span><span class="variablemarkup">hint</span>:String):Void</p>
162+
163+
<p class="methodbox">minimizeWindow():Void</p>
164+
<p class="methodbox">manualBackButton():Void</p>
165+
<hr>
166+
167+
<h2 id="androidUI">Android UI</h2>
168+
169+
<p class="methodbox">
170+
showToast(<span class="variablemarkup">text</span>:String,
171+
<span class="variablemarkup">duration</span>:Int,
172+
<span class="isoptional">?</span><span class="variablemarkup">xOffset</span>:Int,
173+
<span class="isoptional">?</span><span class="variablemarkup">yOffset</span>:Int):Void
174+
</p>
175+
176+
<p class="methodbox">isScreenKeyboardShown():Bool</p>
177+
<hr>
178+
179+
<h2 id="clipboard">Clipboard</h2>
180+
181+
<p class="methodbox">clipboardHasText():Bool</p>
182+
<p class="methodbox">clipboardGetText():String</p>
183+
<p class="methodbox">clipboardSetText(<span class="variablemarkup">text</span>:String):Void</p>
184+
</div>
185+
</body>
186+
</html>

pages/spritesheet.html

Lines changed: 93 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -61,26 +61,107 @@ <h4>Examples:</h4>
6161
<hr>
6262

6363
<h2 id="makeAnimatedLuaSprite">makeAnimatedLuaSprite</h2>
64-
<p class="methodbox">makeAnimatedLuaSprite(<span class="variablemarkup">tag</span>:String,
64+
<p class="methodbox">
65+
makeAnimatedLuaSprite(<span class="variablemarkup">tag</span>:String,
6566
<span class="isoptional">?</span><span class="variablemarkup">image</span>:String = null,
6667
<span class="isoptional">?</span><span class="variablemarkup">x</span>:Float = 0,
6768
<span class="isoptional">?</span><span class="variablemarkup">y</span>:Float = 0,
68-
<span class="isoptional">?</span><span class="variablemarkup">spriteType</span>:String = 'auto'):Void
69-
<p>Creates an animated Lua Sprite with a specific image and .XML/.JSON/.TXT, then store it as the name input in "tag".</p>
69+
<span class="isoptional">?</span><span class="variablemarkup">spriteType</span>:String = "sparrow",
70+
<span class="isoptional">?</span><span class="variablemarkup">swfMode</span>:Bool = false,
71+
<span class="isoptional">?</span><span class="variablemarkup">cacheOnLoad</span>:Bool = false
72+
):Void
73+
</p>
74+
75+
<p>
76+
Creates an animated Lua Sprite using a spritesheet and its accompanying data file,
77+
then stores it internally under the given <code>tag</code>.
78+
</p>
79+
7080
<ul>
71-
<li><b><span class="variablemarkup">tag</span></b> - Lua Sprite nametag to save.</li>
72-
<li><b><span class="variablemarkup">image</span> (Optional)</b> - Image to display, don't include the extension!</li>
73-
<li><b><span class="variablemarkup">x</span> (Optional)</b> - Defaults to 0.</li>
74-
<li><b><span class="variablemarkup">y</span> (Optional)</b> - Defaults to 0.</li>
75-
<li><b><span class="variablemarkup">spriteType</span> (Optional)</b> - Forces a spritesheet type, can be "sparrow" (.XML), "packer" (.TXT) or "aseprite" (.JSON). Defaults to "auto".</li>
81+
<li>
82+
<b><span class="variablemarkup">tag</span></b>
83+
Lua Sprite nametag used to reference and store the sprite.
84+
Periods (<code>.</code>) are automatically stripped.
85+
</li>
86+
87+
<li>
88+
<b><span class="variablemarkup">image</span> (Optional)</b>
89+
Base image path without extension.
90+
The engine will automatically load the associated <code>.png</code> and metadata file.
91+
</li>
92+
93+
<li>
94+
<b><span class="variablemarkup">x</span> (Optional)</b>
95+
X position of the sprite. Defaults to <code>0</code>.
96+
</li>
97+
98+
<li>
99+
<b><span class="variablemarkup">y</span> (Optional)</b>
100+
Y position of the sprite. Defaults to <code>0</code>.
101+
</li>
102+
103+
<li>
104+
<b><span class="variablemarkup">spriteType</span> (Optional)</b>
105+
Forces the spritesheet format.
106+
Accepted values:
107+
<ul>
108+
<li><code>"sparrow"</code> – TexturePacker XML</li>
109+
<li><code>"packer"</code> – TexturePacker TXT</li>
110+
<li><code>"aseprite"</code> – Aseprite JSON</li>
111+
</ul>
112+
Defaults to <code>"sparrow"</code>.
113+
</li>
114+
115+
<li>
116+
<b><span class="variablemarkup">swfMode</span> (Optional)</b>
117+
Enables SWF-style frame loading behavior when supported.
118+
Defaults to <code>false</code>.
119+
</li>
120+
121+
<li>
122+
<b><span class="variablemarkup">cacheOnLoad</span> (Optional)</b>
123+
Caches frames immediately when loading the sprite, reducing runtime lag
124+
at the cost of memory usage.
125+
Defaults to <code>false</code>.
126+
</li>
76127
</ul>
128+
77129
<h4>Examples:</h4>
78130
<ul class="methoddiv">
79-
<li class="exampleitem"><span class="methodexample">makeAnimatedLuaSprite('mySprite', 'logoBumpin')</span> - Create a Lua Sprite with tag "mySprite" displaying <span class="methodexample">assets/shared/images/logoBumpin</span>, using its .PNG and .XML files.</li>
80-
<li class="exampleitem"><span class="methodexample">makeAnimatedLuaSprite('mySprite', 'aseprite-test', 0, 0, 'aseprite')</span> - Create a Lua Sprite with tag "mySprite" displaying <span class="methodexample">mods/My-Mod/images/aseprite-test</span>, using its .PNG and .JSON files.</li>
131+
<li class="exampleitem">
132+
<span class="methodexample">
133+
makeAnimatedLuaSprite('mySprite', 'logoBumpin')
134+
</span>
135+
Creates an animated Lua Sprite using
136+
<code>assets/shared/images/logoBumpin.png</code> and its XML data.
137+
</li>
138+
139+
<li class="exampleitem">
140+
<span class="methodexample">
141+
makeAnimatedLuaSprite('mySprite', 'aseprite-test', 0, 0, 'aseprite')
142+
</span>
143+
Creates an animated Lua Sprite using an Aseprite-exported JSON file.
144+
</li>
145+
146+
<li class="exampleitem">
147+
<span class="methodexample">
148+
makeAnimatedLuaSprite('cachedSprite', 'bigSprite', 100, 200, 'sparrow', false, true)
149+
</span>
150+
Creates a sprite and caches all frames immediately on load.
151+
</li>
81152
</ul>
82-
<p style="color: gray">Note: You will still have to add the Lua Sprite to the scene with <a href="#addLuaSprite">addLuaSprite</a> or it won't be visible.</p>
83-
<p style="color: gray">Note 2: <a href="https://github.com/ShadowMario/FNF-PsychEngine/wiki/Export-and-Import-from-Aseprite">Follow these instructions to export properly from Aseprite</a>.</p>
153+
154+
<p style="color: gray">
155+
Note: You must still add the sprite to the scene using
156+
<a href="#addLuaSprite">addLuaSprite</a>, or it will not be visible.
157+
</p>
158+
159+
<p style="color: gray">
160+
Note 2:
161+
<a href="https://github.com/ShadowMario/FNF-PsychEngine/wiki/Export-and-Import-from-Aseprite">
162+
Follow these instructions to export properly from Aseprite
163+
</a>.
164+
</p>
84165
<hr>
85166

86167
<h2 id="makeGraphic">makeGraphic</h2>

0 commit comments

Comments
 (0)