noble engine migration

This commit is contained in:
2024-06-01 16:52:11 +03:00
parent ea0681b60d
commit 29a5ed2f62
140 changed files with 17016 additions and 1653 deletions

View File

@@ -0,0 +1,176 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Noble Engine API reference</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
<link rel="icon" href="favicon.ico">
</head>
<body>
<div id="container">
<div id="main">
<!-- Menu -->
<div id="navigation">
<a href="../index.html"><div class="logo">
<h1>Noble Engine</h1>
</div></a>
<div class="nav-module">
<h2>Ease</h2>
<ul>
<h3>Functions</h3>
<ul>
<li><a href="#enter">enter</a></li>
<li><a href="#exit">exit</a></li>
<li><a href="#reverse">reverse</a></li>
</ul>
</ul>
</div>
<div class="nav-modules">
<div class="nav-kind">
<h3>Modules</h3>
<ul>
<li><a href="../modules/Noble.html">Noble</a></li>
<li><a href="../modules/Noble.Animation.html">Noble.Animation</a></li>
<li><a href="../modules/Noble.Bonk.html">Noble.Bonk</a></li>
<li><a href="../modules/Noble.GameData.html">Noble.GameData</a></li>
<li><a href="../modules/Noble.Input.html">Noble.Input</a></li>
<li><a href="../modules/Noble.Menu.html">Noble.Menu</a></li>
<li><a href="../modules/Noble.Settings.html">Noble.Settings</a></li>
<li><a href="../modules/Noble.Text.html">Noble.Text</a></li>
<li><a href="../modules/Noble.Transition.html">Noble.Transition</a></li>
<li><span class="selected">Ease</span></li>
</ul>
</div>
<div class="nav-kind">
<h3>Classes</h3>
<ul>
<li><a href="../classes/NobleScene.html">NobleScene</a></li>
<li><a href="../classes/NobleSprite.html">NobleSprite</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Examples</h3>
<ul>
<li><a href="../examples/SceneTemplate.lua.html">SceneTemplate.lua</a></li>
</ul>
</div>
</div>
</div>
<div id="content">
<h1>Ease</h1>
<p>Extensions to <code>playdate.easingFunctions</code>, aliased as <a href="../modules/Ease.html#">Ease</a> in Noble Engine.</p>
<p> See the Playdate SDK for a list of easing functions.</p>
<hr/>
<h2 class="section-header "><a name="Functions"></a>Functions</h2>
<!-- -->
<dl class="function">
<dt>
<a name = "enter"></a>
<span class="item-name">enter(__easingFunction)<span>
</dt>
<dd>
Returns the first half of an "inOut" or "outIn" easing function.
Returns <code>nil</code> for any easing function that isn't in the form of <code>Ease.inOutXxxx</code> or <code>Ease.outInXxxx</code>. <code>Ease.linear</code> returns itself.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__easingFunction</span>
<br/>
</li>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="keyword">local</span> ease = Ease.outInQuad
<span class="keyword">local</span> easeEnter = Ease.<span class="function-name">enter</span>(ease) <span class="comment">-- Returns "Ease.outQuad"</span></pre>
</dd>
<dt>
<a name = "exit"></a>
<span class="item-name">exit(__easingFunction)<span>
</dt>
<dd>
Returns the second half of an "inOut" or "outIn" easing function.
Returns <code>nil</code> for any easing function that isn't in the form of <code>Ease.inOutXxxx</code> or <code>Ease.outInXxxx</code>. <code>Ease.linear</code> returns itself.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__easingFunction</span>
<br/>
</li>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="keyword">local</span> ease = Ease.outInQuad
<span class="keyword">local</span> easeExit = Ease.<span class="function-name">exit</span>(ease) <span class="comment">-- Returns "Ease.inQuad"</span></pre>
</dd>
<dt>
<a name = "reverse"></a>
<span class="item-name">reverse(__easingFunction)<span>
</dt>
<dd>
Returns the reverse function of the provided function.
Returns <code>nil</code> for any easing function that isn't in the form of <code>Ease.inXxxx</code> or <code>Ease.outXxxx</code>. <code>Ease.linear</code> returns itself.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__easingFunction</span>
<br/>
</li>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="keyword">local</span> ease = Ease.inQuad
<span class="keyword">local</span> reverseEase = Ease.<span class="function-name">reverse</span>(ease) <span class="comment">-- Returns "Ease.outQuad"</span></pre>
</dd>
</dl>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<span><a href="https://github.com/NobleRobot/NobleEngine">Noble Engine</a> by Mark LaCroix, <a href="https://noblerobot.com">Noble Robot</a></span>
<span style="float:right;">
Documentation created using <a href="https://github.com/stevedonovan/LDoc">LDoc 1.5.0</a>.
</span>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

View File

@@ -0,0 +1,507 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Noble Engine API reference</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
<link rel="icon" href="favicon.ico">
</head>
<body>
<div id="container">
<div id="main">
<!-- Menu -->
<div id="navigation">
<a href="../index.html"><div class="logo">
<h1>Noble Engine</h1>
</div></a>
<div class="nav-module">
<h2>Noble.Animation</h2>
<ul>
<h3>Setup </h3>
<ul>
<li><a href="#Noble.Animation.new">.new</a></li>
<li><a href="#animation:addState">animation:addState</a></li>
</ul>
<h3>Properties </h3>
<ul>
<li><a href="#animation.current">animation.current</a></li>
<li><a href="#animation.currentName">animation.currentName</a></li>
<li><a href="#animation.currentFrame">animation.currentFrame</a></li>
<li><a href="#animation.direction">animation.direction</a></li>
</ul>
<h3>Methods </h3>
<ul>
<li><a href="#animation:setState">animation:setState</a></li>
<li><a href="#animation:draw">animation:draw</a></li>
<li><a href="#animation:drawFrame">animation:drawFrame</a></li>
</ul>
<h3>Constants </h3>
<ul>
<li><a href="#Noble.Animation.DIRECTION_RIGHT">.DIRECTION_RIGHT</a></li>
<li><a href="#Noble.Animation.DIRECTION_LEFT">.DIRECTION_LEFT</a></li>
</ul>
</ul>
</div>
<div class="nav-modules">
<div class="nav-kind">
<h3>Modules</h3>
<ul>
<li><a href="../modules/Noble.html">Noble</a></li>
<li><span class="selected">Noble.Animation</span></li>
<li><a href="../modules/Noble.Bonk.html">Noble.Bonk</a></li>
<li><a href="../modules/Noble.GameData.html">Noble.GameData</a></li>
<li><a href="../modules/Noble.Input.html">Noble.Input</a></li>
<li><a href="../modules/Noble.Menu.html">Noble.Menu</a></li>
<li><a href="../modules/Noble.Settings.html">Noble.Settings</a></li>
<li><a href="../modules/Noble.Text.html">Noble.Text</a></li>
<li><a href="../modules/Noble.Transition.html">Noble.Transition</a></li>
<li><a href="../modules/Ease.html">Ease</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Classes</h3>
<ul>
<li><a href="../classes/NobleScene.html">NobleScene</a></li>
<li><a href="../classes/NobleSprite.html">NobleSprite</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Examples</h3>
<ul>
<li><a href="../examples/SceneTemplate.lua.html">SceneTemplate.lua</a></li>
</ul>
</div>
</div>
</div>
<div id="content">
<h1>Noble.Animation</h1>
<p>Animation states using a spritesheet/imagetable.</p>
<p> Ideal for use with <a href="../classes/NobleSprite.html#">NobleSprite</a> objects. Suitable for other uses as well.</p>
<hr/>
<h2 class="section-header "><a name="Setup"></a>Setup </h2>
<!-- -->
<dl class="function">
<dt>
<a name = "Noble.Animation.new"></a>
<span class="item-name">Noble.Animation.new(__view)<span>
</dt>
<dd>
Create a new animation "state machine". This function is called automatically when creating a new <a href="../classes/NobleSprite.html#">NobleSprite</a>.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__view</span>
<span class="types"><span class="type">string</span></span>
<br/>
This can be: the path to a spritesheet image file or an image table object (<code>Graphics.imagetable</code>). See Playdate SDK docs for imagetable file naming conventions.
</li>
</ul>
<h3>Returns</h3>
<ol>
<code>animation</code>, a new animation object.
</ol>
<h3>See</h3>
<ul>
<a href="../classes/NobleSprite.html#noblesprite:init">NobleSprite:init</a>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="keyword">local</span> myHero = <span class="function-name">MyHero</span>(<span class="string">"path/to/spritesheet"</span>)</pre>
<pre class="example"><span class="comment">-- When extending NobleSprite (recommended), you don't call Noble.Animation.new(),
</span><span class="comment">-- but you do feed its __view argument into MySprite.super.init()...
</span>MyHero = {}
<span class="function-name">class</span>(<span class="string">"MyHero"</span>).<span class="function-name">extends</span>(NobleSprite)
<span class="keyword">function</span> MyHero:<span class="function-name">init</span>()
MyHero.super.<span class="function-name">init</span>(self, <span class="string">"assets/images/Hero"</span>)
<span class="comment">-- ...
</span> <span class="comment">-- A new NobleSprite creates a Noble.Animation object named "self.animation"
</span> self.animation:<span class="function-name">addState</span>(<span class="string">"idle"</span>, <span class="number">1</span>, <span class="number">30</span>)
self.animation:<span class="function-name">addState</span>(<span class="string">"jump"</span>, <span class="number">31</span>, <span class="number">34</span>, <span class="string">"float"</span>)
self.animation:<span class="function-name">addState</span>(<span class="string">"float"</span>, <span class="number">35</span>, <span class="number">45</span>)
self.animation:<span class="function-name">addState</span>(<span class="string">"turn"</span>, <span class="number">46</span>, <span class="number">55</span>, <span class="string">"idle"</span>)
self.animation:<span class="function-name">addState</span>(<span class="string">"walk"</span>, <span class="number">56</span>, <span class="number">65</span>)
<span class="comment">-- ...
</span><span class="keyword">end</span></pre>
<pre class="example"><span class="keyword">local</span> myAnimation = Noble.Animation.<span class="function-name">new</span>(<span class="string">"path/to/spritesheet"</span>)</pre>
<pre class="example"><span class="comment">-- When extending playdate.graphics.Sprite, Noble.Animation.new() must be called manually...
</span>MyHero = {}
<span class="function-name">class</span>(<span class="string">"MyHero"</span>).<span class="function-name">extends</span>(Graphics.sprite)
<span class="keyword">function</span> MyHero:<span class="function-name">init</span>()
MyHero.super.<span class="function-name">init</span>(self)
<span class="comment">-- ...
</span> self.animation = Noble.Animation.<span class="function-name">new</span>(<span class="string">"assets/images/Hero"</span>)
self.animation:<span class="function-name">addState</span>(<span class="string">"idle"</span>, <span class="number">1</span>, <span class="number">30</span>)
self.animation:<span class="function-name">addState</span>(<span class="string">"jump"</span>, <span class="number">31</span>, <span class="number">34</span>, <span class="string">"float"</span>)
self.animation:<span class="function-name">addState</span>(<span class="string">"float"</span>, <span class="number">35</span>, <span class="number">45</span>)
self.animation:<span class="function-name">addState</span>(<span class="string">"turn"</span>, <span class="number">46</span>, <span class="number">55</span>, <span class="string">"idle"</span>)
self.animation:<span class="function-name">addState</span>(<span class="string">"walk"</span>, <span class="number">56</span>, <span class="number">65</span>)
<span class="comment">-- ...
</span><span class="keyword">end</span></pre>
</dd>
<dt>
<a name = "animation:addState"></a>
<span class="item-name">animation:addState(__name, __startFrame, __endFrame, __next[, __loop=true], __onComplete[, __frameDuration=1])<span>
</dt>
<dd>
Add an animation state. The first state added will be the default set for this animation.</p>
<p> <strong>NOTE:</strong> Added states are first-degree member objects of your Noble.Animation object, so do not use names of already existing methods/properties ("current", "draw", etc.).
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__name</span>
<span class="types"><span class="type">string</span></span>
<br/>
The name of the animation, this is also used as the key for the animation.
</li>
<li><span class="parameter">__startFrame</span>
<span class="types"><span class="type">integer</span></span>
<br/>
This is the first frame of this animation in the imagetable/spritesheet
</li>
<li><span class="parameter">__endFrame</span>
<span class="types"><span class="type">integer</span></span>
<br/>
This is the final frame of this animation in the imagetable/spritesheet
</li>
<li><span class="parameter">__next</span>
<span class="types"><span class="type">string</span></span>
<br/>
By default, animation states will loop, but if you want to sequence an animation, enter the name of the next state here.
</li>
<li><span class="parameter">__loop</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
If you want a state to "freeze" on its final frame, instead of looping, enter <code>false</code> here.
</li>
<li><span class="parameter">__onComplete</span>
<br/>
This function will run when this animation is complete. Be careful when using this on a looping animation!
</li>
<li><span class="parameter">__frameDuration</span>
<span class="types"><span class="type">integer</span></span>
<span class="default">= <span class="value">1</span> (default)</span>
<br/>
This is the number of ticks between each frame in this animation. If not specified, it will be set to 1.
</li>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="comment">-- You can reference an animation's state's properties using bog-standard lua syntax:
</span>
animation.idle.startFrame <span class="comment">-- 30
</span>animation.walk.endFrame <span class="comment">-- 65
</span>animation.[<span class="string">"walk"</span>].endFrame <span class="comment">-- 65
</span>animation.jump.name <span class="comment">-- "jump"
</span>animation.[<span class="string">"jump"</span>].<span class="global">next</span> <span class="comment">-- "float"
</span>animation.idle.<span class="global">next</span> <span class="comment">-- nil</span></pre>
</dd>
</dl>
<h2 class="section-header "><a name="Properties"></a>Properties </h2>
<!-- -->
<dl class="function">
<dt>
<a name = "animation.current"></a>
<span class="item-name">animation.current<span>
</dt>
<dd>
The currently set animation state. </p>
<p> This is intended as <code>read-only</code>. You should not modify this property directly.
<h3>See</h3>
<ul>
<a href="../modules/Noble.Animation.html#animation:setState">setState</a>
</ul>
</dd>
<dt>
<a name = "animation.currentName"></a>
<span class="item-name">animation.currentName<span>
</dt>
<dd>
The name of the current animation state. Calling this instead of <code>animation.current.name</code> is <em>just</em> a little faster.</p>
<p> This is intended as <code>read-only</code>. You should not modify this property directly.
</dd>
<dt>
<a name = "animation.currentFrame"></a>
<span class="item-name">animation.currentFrame<span>
</dt>
<dd>
The current frame of the animation. This is the index of the imagetable, not the frame of the current state.</p>
<p> Most of the time, you should not modify this directly, although you can if you're feeling saucy and are prepared for unpredictable results.
<h3>See</h3>
<ul>
<a href="../modules/Noble.Animation.html#animation:draw">draw</a>
</ul>
</dd>
<dt>
<a name = "animation.direction"></a>
<span class="item-name">animation.direction<span>
</dt>
<dd>
This controls the flipping of the image when drawing. DIRECTION<em>RIGHT is unflipped, DIRECTION</em>LEFT is flipped on the X axis.
<h3>Usage</h3>
<pre class="example"><span class="keyword">function</span> MyHero:<span class="function-name">goLeft</span>()
self.animation.direction = Noble.Animation.DIRECTION_LEFT
<span class="comment">-- ...
</span><span class="keyword">end</span></pre>
</dd>
</dl>
<h2 class="section-header "><a name="Methods"></a>Methods </h2>
<!-- -->
<dl class="function">
<dt>
<a name = "animation:setState"></a>
<span class="item-name">animation:setState(__animationState[, __continuous=false], __unlessThisState)<span>
</dt>
<dd>
Sets the current animation state. This can be run in a object's <code>update</code> method because it only changes the animation state if the new state is different from the current one.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__animationState</span>
<span class="types"><span class="type">string</span> or <span class="type">Noble.Animation</span></span>
<br/>
The name of the animation to set. You can pass the name of the state, or the object itself.
</li>
<li><span class="parameter">__continuous</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">false</span> (default)</span>
<br/>
Set to true if your new state's frames line up with the previous one's, i.e.: two walk cycles but one is wearing a cute hat!
</li>
<li><span class="parameter">__unlessThisState</span>
<span class="types"><span class="type">string</span> or <span class="type">Noble.Animation</span></span>
<br/>
If this state is the current state, do not set the new one.
</li>
</ul>
<h3>Usage</h3>
<pre class="example">animation:<span class="function-name">setState</span>(<span class="string">"walk"</span>)</pre>
<pre class="example">animation:<span class="function-name">setState</span>(animation.walk)</pre>
<pre class="example">animation:<span class="function-name">setState</span>(animation.walkNoHat)
<span class="comment">--
</span>animation:<span class="function-name">setState</span>(animation.walkYesHat, <span class="keyword">true</span>)</pre>
<pre class="example"><span class="keyword">function</span> MyHero:<span class="function-name">update</span>()
<span class="comment">-- Input
</span> <span class="comment">-- ...
</span>
<span class="comment">-- Physics/collisions
</span> <span class="comment">-- ...
</span>
<span class="comment">-- Animation states
</span> <span class="keyword">if</span> (grounded) <span class="keyword">then</span>
<span class="keyword">if</span> (turning) <span class="keyword">then</span>
self.animation:<span class="function-name">setState</span>(self.animation.turn)
<span class="keyword">elseif</span> (<span class="global">math</span>.<span class="function-name">abs</span>(self.velocity.x) &gt; <span class="number">15</span>) <span class="keyword">then</span>
self.animation:<span class="function-name">setState</span>(self.animation.walk, <span class="keyword">false</span>, self.animation.turn)
<span class="keyword">else</span>
self.animation:<span class="function-name">setState</span>(self.animation.idle, <span class="keyword">false</span>, self.animation.turn)
<span class="keyword">end</span>
<span class="keyword">else</span>
self.animation:<span class="function-name">setState</span>(self.animation.jump, <span class="keyword">false</span>, self.animation.float)
<span class="keyword">end</span>
groundedLastFrame = grounded
<span class="keyword">end</span></pre>
</dd>
<dt>
<a name = "animation:draw"></a>
<span class="item-name">animation:draw([__x=0[, __y=0[, __advance=true]]])<span>
</dt>
<dd>
Draw the current frame. </p>
<p> When attached to a NobleSprite, this is called by <code>NobleSprite:draw()</code> when added to a scene. For non-NobleSprite sprites, put this method inside your sprite's <code>draw()</code> method, or inside <a href="../classes/NobleScene.html#noblescene:update">NobleScene:update</a>.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__x</span>
<span class="types"><span class="type">number</span></span>
<span class="default">= <span class="value">0</span> (default)</span>
<br/>
</li>
<li><span class="parameter">__y</span>
<span class="types"><span class="type">number</span></span>
<span class="default">= <span class="value">0</span> (default)</span>
<br/>
</li>
<li><span class="parameter">__advance</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Advances to the next frame after drawing this one. Noble.Animation is frame-based, not "delta time"-based, so its speed is dependent on your game's framerate.
</li>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="keyword">function</span> MySprite:<span class="function-name">draw</span>()
animation:<span class="function-name">draw</span>()
<span class="keyword">end</span></pre>
<pre class="example"><span class="keyword">function</span> MyScene:<span class="function-name">update</span>()
animation:<span class="function-name">draw</span>(<span class="number">100</span>,<span class="number">100</span>)
<span class="keyword">end</span></pre>
</dd>
<dt>
<a name = "animation:drawFrame"></a>
<span class="item-name">animation:drawFrame(__frameNumber[, __stateName=self.currentName[, __x=0[, __y=0[, __direction=self.direction]]]])<span>
</dt>
<dd>
Sometimes, you just want to draw a specific frame.
Use this for objects or sprites that you want to control outside of update loops, such as score counters, flipbook-style objects that respond to player input, etc.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__frameNumber</span>
<span class="types"><span class="type">integer</span></span>
<br/>
The frame to draw from the current state. This is not an imagetable index. Entering <code>1</code> will draw the selected state's <code>startFrame</code>.
</li>
<li><span class="parameter">__stateName</span>
<span class="types"><span class="type">string</span></span>
<span class="default">= <span class="value">self.currentName</span> (default)</span>
<br/>
The specific state to pull the __frameNumber from.
</li>
<li><span class="parameter">__x</span>
<span class="types"><span class="type">number</span></span>
<span class="default">= <span class="value">0</span> (default)</span>
<br/>
</li>
<li><span class="parameter">__y</span>
<span class="types"><span class="type">number</span></span>
<span class="default">= <span class="value">0</span> (default)</span>
<br/>
</li>
<li><span class="parameter">__direction</span>
<span class="default">= <span class="value">self.direction</span> (default)</span>
<br/>
Override the current direction.
</li>
</ul>
</dd>
</dl>
<h2 class="section-header "><a name="Constants"></a>Constants </h2>
<!-- -->
<dl class="function">
<dt>
<a name = "Noble.Animation.DIRECTION_RIGHT"></a>
<span class="item-name">Noble.Animation.DIRECTION_RIGHT<span>
</dt>
<dd>
A re-contextualized instance of <code>playdate.graphics.kImageUnflipped</code>
</dd>
<dt>
<a name = "Noble.Animation.DIRECTION_LEFT"></a>
<span class="item-name">Noble.Animation.DIRECTION_LEFT<span>
</dt>
<dd>
A re-contextualized instance of <code>playdate.graphics.kImageFlippedX</code>
</dd>
</dl>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<span><a href="https://github.com/NobleRobot/NobleEngine">Noble Engine</a> by Mark LaCroix, <a href="https://noblerobot.com">Noble Robot</a></span>
<span style="float:right;">
Documentation created using <a href="https://github.com/stevedonovan/LDoc">LDoc 1.5.0</a>.
</span>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

View File

@@ -0,0 +1,188 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Noble Engine API reference</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
<link rel="icon" href="favicon.ico">
</head>
<body>
<div id="container">
<div id="main">
<!-- Menu -->
<div id="navigation">
<a href="../index.html"><div class="logo">
<h1>Noble Engine</h1>
</div></a>
<div class="nav-module">
<h2>Noble.Bonk</h2>
<ul>
<h3>Functions</h3>
<ul>
<li><a href="#Noble.Bonk.startCheckingDebugBonks">.startCheckingDebugBonks</a></li>
<li><a href="#Noble.Bonk.stopCheckingDebugBonks">.stopCheckingDebugBonks</a></li>
<li><a href="#Noble.Bonk.disableDebugBonkChecking">.disableDebugBonkChecking</a></li>
<li><a href="#Noble.Bonk.checkingDebugBonks">.checkingDebugBonks</a></li>
<li><a href="#Noble.Bonk.checkDebugBonks">.checkDebugBonks</a></li>
</ul>
</ul>
</div>
<div class="nav-modules">
<div class="nav-kind">
<h3>Modules</h3>
<ul>
<li><a href="../modules/Noble.html">Noble</a></li>
<li><a href="../modules/Noble.Animation.html">Noble.Animation</a></li>
<li><span class="selected">Noble.Bonk</span></li>
<li><a href="../modules/Noble.GameData.html">Noble.GameData</a></li>
<li><a href="../modules/Noble.Input.html">Noble.Input</a></li>
<li><a href="../modules/Noble.Menu.html">Noble.Menu</a></li>
<li><a href="../modules/Noble.Settings.html">Noble.Settings</a></li>
<li><a href="../modules/Noble.Text.html">Noble.Text</a></li>
<li><a href="../modules/Noble.Transition.html">Noble.Transition</a></li>
<li><a href="../modules/Ease.html">Ease</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Classes</h3>
<ul>
<li><a href="../classes/NobleScene.html">NobleScene</a></li>
<li><a href="../classes/NobleSprite.html">NobleSprite</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Examples</h3>
<ul>
<li><a href="../examples/SceneTemplate.lua.html">SceneTemplate.lua</a></li>
</ul>
</div>
</div>
</div>
<div id="content">
<h1>Noble.Bonk</h1>
<p>Engine-specific error handling.</p>
<p> Noble Engine overrides/supersedes some Playdate SDK behavior. A "bonk" is what happens when your game breaks the engine.</p>
<p> Most bonks will throw during normal operation, but others ("debug bonks") introduce some execution overhead so are not
checked by default.</p>
<hr/>
<h2 class="section-header "><a name="Functions"></a>Functions</h2>
<!-- -->
<dl class="function">
<dt>
<a name = "Noble.Bonk.startCheckingDebugBonks"></a>
<span class="item-name">Noble.Bonk.startCheckingDebugBonks()<span>
</dt>
<dd>
Begin checking for debug bonks, <strong>on every frame</strong>. This introduces needless overhead, so don't do it in a release build.
You can only run this if you ran previously <code>Noble.new()</code> with <code>__enableDebugBonkChecking</code> as true, which you should also not do in a release build.
<h3>See</h3>
<ul>
<a href="../modules/Noble.html#new">Noble.new</a>
</ul>
</dd>
<dt>
<a name = "Noble.Bonk.stopCheckingDebugBonks"></a>
<span class="item-name">Noble.Bonk.stopCheckingDebugBonks()<span>
</dt>
<dd>
Stop checking for debug bonks on every frame. </p>
<p> <strong>NOTE: You can only run this if debug bonk checking is enabled.</strong>
</dd>
<dt>
<a name = "Noble.Bonk.disableDebugBonkChecking"></a>
<span class="item-name">Noble.Bonk.disableDebugBonkChecking()<span>
</dt>
<dd>
Disable the ability to check for debug bonks. It frees up some memory. Once you disable debug bonk checking, you cannot re-enable it.</p>
<p> <strong>NOTE: You can only run this if debug bonk checking is enabled.</strong>
</dd>
<dt>
<a name = "Noble.Bonk.checkingDebugBonks"></a>
<span class="item-name">Noble.Bonk.checkingDebugBonks()<span>
</dt>
<dd>
Are we debug bonk checking for debug bonks?
<h3>Returns</h3>
<ol>
<span class="types"><span class="type">bool</span></span>
</ol>
</dd>
<dt>
<a name = "Noble.Bonk.checkDebugBonks"></a>
<span class="item-name">Noble.Bonk.checkDebugBonks()<span>
</dt>
<dd>
Manually check for debug bonks.
This method runs every frame when <a href="../modules/Noble.Bonk.html#Noble.Bonk.checkingDebugBonks">checkingDebugBonks</a> is true, but you may call it manually instead.</p>
<p> <strong>NOTE: You can only run this if debug bonk checking is enabled.</strong>
</dd>
</dl>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<span><a href="https://github.com/NobleRobot/NobleEngine">Noble Engine</a> by Mark LaCroix, <a href="https://noblerobot.com">Noble Robot</a></span>
<span style="float:right;">
Documentation created using <a href="https://github.com/stevedonovan/LDoc">LDoc 1.5.0</a>.
</span>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

View File

@@ -0,0 +1,550 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Noble Engine API reference</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
<link rel="icon" href="favicon.ico">
</head>
<body>
<div id="container">
<div id="main">
<!-- Menu -->
<div id="navigation">
<a href="../index.html"><div class="logo">
<h1>Noble Engine</h1>
</div></a>
<div class="nav-module">
<h2>Noble.GameData</h2>
<ul>
<h3>Functions</h3>
<ul>
<li><a href="#Noble.GameData.setup">.setup</a></li>
<li><a href="#Noble.GameData.get">.get</a></li>
<li><a href="#Noble.GameData.set">.set</a></li>
<li><a href="#Noble.GameData.reset">.reset</a></li>
<li><a href="#Noble.GameData.resetAll">.resetAll</a></li>
<li><a href="#Noble.GameData.addSlot">.addSlot</a></li>
<li><a href="#Noble.GameData.deleteSlot">.deleteSlot</a></li>
<li><a href="#Noble.GameData.deleteAllSlots">.deleteAllSlots</a></li>
<li><a href="#Noble.GameData.getTimestamp">.getTimestamp</a></li>
<li><a href="#Noble.GameData.getNumberOfSlots">.getNumberOfSlots</a></li>
<li><a href="#Noble.GameData.getCurrentSlot">.getCurrentSlot</a></li>
<li><a href="#Noble.GameData.save">.save</a></li>
<li><a href="#Noble.GameData.saveAll">.saveAll</a></li>
</ul>
</ul>
</div>
<div class="nav-modules">
<div class="nav-kind">
<h3>Modules</h3>
<ul>
<li><a href="../modules/Noble.html">Noble</a></li>
<li><a href="../modules/Noble.Animation.html">Noble.Animation</a></li>
<li><a href="../modules/Noble.Bonk.html">Noble.Bonk</a></li>
<li><span class="selected">Noble.GameData</span></li>
<li><a href="../modules/Noble.Input.html">Noble.Input</a></li>
<li><a href="../modules/Noble.Menu.html">Noble.Menu</a></li>
<li><a href="../modules/Noble.Settings.html">Noble.Settings</a></li>
<li><a href="../modules/Noble.Text.html">Noble.Text</a></li>
<li><a href="../modules/Noble.Transition.html">Noble.Transition</a></li>
<li><a href="../modules/Ease.html">Ease</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Classes</h3>
<ul>
<li><a href="../classes/NobleScene.html">NobleScene</a></li>
<li><a href="../classes/NobleSprite.html">NobleSprite</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Examples</h3>
<ul>
<li><a href="../examples/SceneTemplate.lua.html">SceneTemplate.lua</a></li>
</ul>
</div>
</div>
</div>
<div id="content">
<h1>Noble.GameData</h1>
<p>Operations for game data / save slots.</p>
<p>
</p>
<hr/>
<h2 class="section-header "><a name="Functions"></a>Functions</h2>
<!-- -->
<dl class="function">
<dt>
<a name = "Noble.GameData.setup"></a>
<span class="item-name">Noble.GameData.setup(__keyValuePairs[, __numberOfSlots=1[, __saveToDisk=true[, __modifyExistingOnKeyChange=true]]])<span>
</dt>
<dd>
Sets up the GameDatas (save slots) for your game, and/or loads any existing GameDatas from disk.
You can only run this once, ideally in your main.lua before you load your first scene.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__keyValuePairs</span>
<span class="types"><span class="type">table</span></span>
<br/>
All the data items for a saved game, and their default values, as key/value pairs. <strong>NOTE:</strong> Do not use "nil" as a value.
</li>
<li><span class="parameter">__numberOfSlots</span>
<span class="types"><span class="type">integer</span></span>
<span class="default">= <span class="value">1</span> (default)</span>
<br/>
If you want multiple save slots, enter an integer here. You can add additional slots later.
</li>
<li><span class="parameter">__saveToDisk</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Saves your default values immediately to disk.
</li>
<li><span class="parameter">__modifyExistingOnKeyChange</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Updates the existing gameData objects on disk if you make changes to your keys (not values) during development or when updating your game.
</li>
</ul>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.GameData.html#Noble.GameData.addSlot">Noble.GameData.addSlot</a></li>
<li><a href="../modules/Noble.GameData.html#Noble.GameData.deleteSlot">Noble.GameData.deleteSlot</a></li>
</ul>
<h3>Usage</h3>
<pre class="example">Noble.GameData.<span class="function-name">setup</span>(
{
name = <span class="string">""</span>,
checkpointReached = <span class="number">0</span>,
score = <span class="number">0</span>
},
<span class="number">3</span>,
<span class="keyword">true</span>,
<span class="keyword">true</span>
)
Noble.GameData.<span class="function-name">set</span>(<span class="string">"name"</span>, <span class="string">"Game A"</span>, <span class="number">1</span>)
Noble.GameData.<span class="function-name">set</span>(<span class="string">"name"</span>, <span class="string">"Game B"</span>, <span class="number">2</span>)
Noble.GameData.<span class="function-name">set</span>(<span class="string">"name"</span>, <span class="string">"Game C"</span>, <span class="number">3</span>)</pre>
</dd>
<dt>
<a name = "Noble.GameData.get"></a>
<span class="item-name">Noble.GameData.get(__dataItemName[, __gameDataSlot])<span>
</dt>
<dd>
Returns the value of the requested data item.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__dataItemName</span>
<span class="types"><span class="type">string</span></span>
<br/>
The name of the data item.
</li>
<li><span class="parameter">__gameDataSlot</span>
<span class="types"><span class="type">integer</span></span>
<span class="optional">(optional)</span>
<br/>
If set, uses a specific GameData slot. If not, uses the most recently touched GameData slot.
</li>
</ul>
<h3>Returns</h3>
<ol>
<span class="types"><span class="type">any</span></span>
</ol>
<h3>Usage</h3>
<pre class="example">Noble.GameData.<span class="function-name">get</span>(<span class="string">"equippedItem"</span>)</pre>
<pre class="example">Noble.GameData.<span class="function-name">get</span>(<span class="string">"equippedItem"</span>, <span class="number">2</span>)</pre>
</dd>
<dt>
<a name = "Noble.GameData.set"></a>
<span class="item-name">Noble.GameData.set(__dataItemName, __value[, __gameDataSlot[, __saveToDisk=true[, __updateTimestamp=true]]])<span>
</dt>
<dd>
Set the value of a GameData item.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__dataItemName</span>
<span class="types"><span class="type">string</span></span>
<br/>
The name of the data item.
</li>
<li><span class="parameter">__value</span>
<span class="types"><span class="type">any</span></span>
<br/>
The data item's new value
</li>
<li><span class="parameter">__gameDataSlot</span>
<span class="types"><span class="type">integer</span></span>
<span class="optional">(optional)</span>
<br/>
If set, uses a specific GameData slot. If not, uses the most recently touched GameData slot.
</li>
<li><span class="parameter">__saveToDisk</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Saves to disk immediately. Set to false if you prefer to manually save (via a checkpoint or menu).
</li>
<li><span class="parameter">__updateTimestamp</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Sets the timestamp of this GameData to the current time. Leave false to retain existing timestamp.
</li>
</ul>
<h3>See</h3>
<ul>
<a href="../modules/Noble.GameData.html#Noble.GameData.save">Noble.GameData.save</a>
</ul>
<h3>Usage</h3>
<pre class="example">Noble.GameData.<span class="function-name">set</span>(<span class="string">"score"</span>, <span class="number">74205</span>)</pre>
<pre class="example">Noble.GameData.<span class="function-name">set</span>(<span class="string">"score"</span>, Noble.GameData.<span class="function-name">get</span>(<span class="string">"score"</span>) + <span class="number">100</span>)</pre>
</dd>
<dt>
<a name = "Noble.GameData.reset"></a>
<span class="item-name">Noble.GameData.reset(__dataItemName[, __gameDataSlot[, __saveToDisk=true[, __updateTimestamp=true]]])<span>
</dt>
<dd>
Reset a GameData item to its default value, defined in <a href="../modules/Noble.GameData.html#Noble.GameData.setup">setup</a>.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__dataItemName</span>
<span class="types"><span class="type">string</span></span>
<br/>
The name of the data item.
</li>
<li><span class="parameter">__gameDataSlot</span>
<span class="types"><span class="type">integer</span></span>
<span class="optional">(optional)</span>
<br/>
If set, uses a specific GameData slot. If not, uses the most recently touched GameData slot.
</li>
<li><span class="parameter">__saveToDisk</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Saves to disk immediately. Set to false if you prefer to manually save (via a checkpoint or menu).
</li>
<li><span class="parameter">__updateTimestamp</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Resets the timestamp of this GameData to the current time. Leave false to retain existing timestamp.
</li>
</ul>
<h3>See</h3>
<ul>
<a href="../modules/Noble.GameData.html#Noble.GameData.save">Noble.GameData.save</a>
</ul>
</dd>
<dt>
<a name = "Noble.GameData.resetAll"></a>
<span class="item-name">Noble.GameData.resetAll([__gameDataSlot[, __saveToDisk=true[, __updateTimestamp=true]]])<span>
</dt>
<dd>
Reset all values in a GameData slot to the default values, defined in <a href="../modules/Noble.GameData.html#Noble.GameData.setup">setup</a>.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__gameDataSlot</span>
<span class="types"><span class="type">integer</span></span>
<span class="optional">(optional)</span>
<br/>
If set, uses a specific GameData slot. If not, uses the most recently touched GameData slot.
</li>
<li><span class="parameter">__saveToDisk</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Saves to disk immediately. Set to false if you prefer to manually save (via a checkpoint or menu).
</li>
<li><span class="parameter">__updateTimestamp</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Resets the timestamp of this GameData to the current time. Leave false to retain existing timestamp.
</li>
</ul>
<h3>See</h3>
<ul>
<a href="../modules/Noble.GameData.html#Noble.GameData.save">Noble.GameData.save</a>
</ul>
</dd>
<dt>
<a name = "Noble.GameData.addSlot"></a>
<span class="item-name">Noble.GameData.addSlot([__numberToAdd=1[, __saveToDisk=true]])<span>
</dt>
<dd>
Add a save slot to your game. This is useful for games which have arbitrary save slots, or encourage save scumming.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__numberToAdd</span>
<span class="types"><span class="type">integer</span></span>
<span class="default">= <span class="value">1</span> (default)</span>
<br/>
What it says on the tin.
</li>
<li><span class="parameter">__saveToDisk</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Saves to disk immediately. Set to false if you prefer to manually save (via a checkpoint or menu).
</li>
</ul>
<h3>Usage</h3>
<pre class="example">Noble.GameData.<span class="function-name">addSlot</span>()</pre>
<pre class="example">Noble.GameData.<span class="function-name">addSlot</span>(<span class="number">10</span>)</pre>
</dd>
<dt>
<a name = "Noble.GameData.deleteSlot"></a>
<span class="item-name">Noble.GameData.deleteSlot(__gameDataSlot[, __collapseGameDatas=true])<span>
</dt>
<dd>
Deletes a GameData from disk if its save slot is greater than the default number established in <a href="../modules/Noble.GameData.html#Noble.GameData.setup">setup</a>.
Otherwise, resets all data items to default values using <a href="../modules/Noble.GameData.html#Noble.GameData.resetAll">resetAll</a>.</p>
<p> Generally, you won't need this unless you've added save slots using <a href="../modules/Noble.GameData.html#Noble.GameData.addSlot">addSlot</a>. In other cases, use <a href="../modules/Noble.GameData.html#Noble.GameData.resetAll">resetAll</a>.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__gameDataSlot</span>
<span class="types"><span class="type">integer</span></span>
<br/>
The slot holding the GameData to delete. Unlike other methods that take this argument, this is not optional.
</li>
<li><span class="parameter">__collapseGameDatas</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Re-sorts the gameDatas table (and renames existing JSON files on disk) to fill the gap left by the deleted GameData.
</li>
</ul>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.GameData.html#Noble.GameData.deleteAllSlots">Noble.GameData.deleteAllSlots</a></li>
<li><a href="../modules/Noble.GameData.html#Noble.GameData.addSlot">Noble.GameData.addSlot</a></li>
<li><a href="../modules/Noble.GameData.html#Noble.GameData.resetAll">Noble.GameData.resetAll</a></li>
</ul>
<h3>Usage</h3>
<pre class="example">Noble.GameData.<span class="function-name">deleteSlot</span>(<span class="number">6</span>)</pre>
<pre class="example">Noble.GameData.<span class="function-name">deleteSlot</span>(<span class="number">15</span>, <span class="keyword">false</span>)</pre>
</dd>
<dt>
<a name = "Noble.GameData.deleteAllSlots"></a>
<span class="item-name">Noble.GameData.deleteAllSlots()<span>
</dt>
<dd>
Deletes all GameDatas from disk, except for the number specified in setup, which are reset to default values.
Use this to clear all data as if you were running setup again.
Generally, you don't need this unless you've added save slots using <a href="../modules/Noble.GameData.html#Noble.GameData.addSlot">addSlot</a>. In other cases, use <a href="../modules/Noble.GameData.html#Noble.GameData.resetAll">resetAll</a> on each slot.
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.GameData.html#Noble.GameData.deleteSlot">Noble.GameData.deleteSlot</a></li>
<li><a href="../modules/Noble.GameData.html#Noble.GameData.addSlot">Noble.GameData.addSlot</a></li>
</ul>
</dd>
<dt>
<a name = "Noble.GameData.getTimestamp"></a>
<span class="item-name">Noble.GameData.getTimestamp(__gameDataSlot)<span>
</dt>
<dd>
Returns the timestamp of the requested GameData, as a tuple (local time, GMT time). The timestamp is updated
See Playdate SDK for details on how a time object is formatted. <strong>NOTE: Timestamps are stored internally in GMT.</strong>
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__gameDataSlot</span>
<span class="types"><span class="type">integer</span></span>
<br/>
The GameData slot to get the timestamp of. Unlike other methods that take this argument, this is not optional.
</li>
</ul>
<h3>Returns</h3>
<ol>
<li>
<span class="types"><span class="type">table</span></span>
Local time</li>
<li>
<span class="types"><span class="type">table</span></span>
GMT time</li>
</ol>
<h3>Usage</h3>
<pre class="example">Noble.GameData.<span class="function-name">getTimestamp</span>(<span class="number">1</span>)</pre>
</dd>
<dt>
<a name = "Noble.GameData.getNumberOfSlots"></a>
<span class="item-name">Noble.GameData.getNumberOfSlots()<span>
</dt>
<dd>
Returns the current number of GameData slots.
<h3>Returns</h3>
<ol>
<span class="types"><span class="type">int</span></span>
</ol>
</dd>
<dt>
<a name = "Noble.GameData.getCurrentSlot"></a>
<span class="item-name">Noble.GameData.getCurrentSlot()<span>
</dt>
<dd>
Returns the number of the current GameData slot.
<h3>Returns</h3>
<ol>
<span class="types"><span class="type">int</span></span>
</ol>
</dd>
<dt>
<a name = "Noble.GameData.save"></a>
<span class="item-name">Noble.GameData.save([__gameDataSlot])<span>
</dt>
<dd>
Saves a single GameData to disk. If you want to save all GameDatas, use <a href="../modules/Noble.GameData.html#Noble.GameData.saveAll">saveAll</a> instead.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__gameDataSlot</span>
<span class="types"><span class="type">integer</span></span>
<span class="optional">(optional)</span>
<br/>
If set, uses a specific GameData slot. If not, uses the most recently touched GameData slot.
</li>
</ul>
<h3>See</h3>
<ul>
<a href="../modules/Noble.GameData.html#Noble.GameData.saveAll">Noble.GameData.saveAll</a>
</ul>
<h3>Usage</h3>
<pre class="example">Noble.GameData.<span class="function-name">save</span>()</pre>
<pre class="example">Noble.GameData.<span class="function-name">save</span>(<span class="number">3</span>)</pre>
</dd>
<dt>
<a name = "Noble.GameData.saveAll"></a>
<span class="item-name">Noble.GameData.saveAll()<span>
</dt>
<dd>
Save all GameDatas to disk. If you only have one, or want to save a specific one, use <a href="../modules/Noble.GameData.html#Noble.GameData.save">save</a> instead.
<h3>See</h3>
<ul>
<a href="../modules/Noble.GameData.html#Noble.GameData.save">Noble.GameData.save</a>
</ul>
</dd>
</dl>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<span><a href="https://github.com/NobleRobot/NobleEngine">Noble Engine</a> by Mark LaCroix, <a href="https://noblerobot.com">Noble Robot</a></span>
<span style="float:right;">
Documentation created using <a href="https://github.com/stevedonovan/LDoc">LDoc 1.5.0</a>.
</span>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

View File

@@ -0,0 +1,617 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Noble Engine API reference</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
<link rel="icon" href="favicon.ico">
</head>
<body>
<div id="container">
<div id="main">
<!-- Menu -->
<div id="navigation">
<a href="../index.html"><div class="logo">
<h1>Noble Engine</h1>
</div></a>
<div class="nav-module">
<h2>Noble.Input</h2>
<ul>
<h3>Functions</h3>
<ul>
<li><a href="#Noble.Input.getHandler">.getHandler</a></li>
<li><a href="#Noble.Input.setHandler">.setHandler</a></li>
<li><a href="#Noble.Input.clearHandler">.clearHandler</a></li>
<li><a href="#Noble.Input.setEnabled">.setEnabled</a></li>
<li><a href="#Noble.Input.getEnabled">.getEnabled</a></li>
<li><a href="#Noble.Input.setCrankIndicatorStatus">.setCrankIndicatorStatus</a></li>
<li><a href="#Noble.Input.getCrankIndicatorStatus">.getCrankIndicatorStatus</a></li>
<li><a href="#Noble.Input.getOrientation">.getOrientation</a></li>
</ul>
<h3>Constants
</h3>
<ul>
<li><a href="#Noble.Input.BUTTON_A">.BUTTON_A</a></li>
<li><a href="#Noble.Input.BUTTON_B">.BUTTON_B</a></li>
<li><a href="#Noble.Input.BUTTON_MENU">.BUTTON_MENU</a></li>
<li><a href="#Noble.Input.DPAD">.DPAD</a></li>
<li><a href="#Noble.Input.DPAD_HORIZONTAL">.DPAD_HORIZONTAL</a></li>
<li><a href="#Noble.Input.DPAD_VERTICAL">.DPAD_VERTICAL</a></li>
<li><a href="#Noble.Input.DPAD_UP">.DPAD_UP</a></li>
<li><a href="#Noble.Input.DPAD_DOWN">.DPAD_DOWN</a></li>
<li><a href="#Noble.Input.DPAD_LEFT">.DPAD_LEFT</a></li>
<li><a href="#Noble.Input.DPAD_RIGHT">.DPAD_RIGHT</a></li>
<li><a href="#Noble.Input.CRANK">.CRANK</a></li>
<li><a href="#Noble.Input.CRANK_FORWARD">.CRANK_FORWARD</a></li>
<li><a href="#Noble.Input.CRANK_REVERSE">.CRANK_REVERSE</a></li>
<li><a href="#Noble.Input.CRANK_DOCK">.CRANK_DOCK</a></li>
<li><a href="#Noble.Input.CRANK_UNDOCK">.CRANK_UNDOCK</a></li>
<li><a href="#Noble.Input.ORIENTATION_UP">.ORIENTATION_UP</a></li>
</ul>
</ul>
</div>
<div class="nav-modules">
<div class="nav-kind">
<h3>Modules</h3>
<ul>
<li><a href="../modules/Noble.html">Noble</a></li>
<li><a href="../modules/Noble.Animation.html">Noble.Animation</a></li>
<li><a href="../modules/Noble.Bonk.html">Noble.Bonk</a></li>
<li><a href="../modules/Noble.GameData.html">Noble.GameData</a></li>
<li><span class="selected">Noble.Input</span></li>
<li><a href="../modules/Noble.Menu.html">Noble.Menu</a></li>
<li><a href="../modules/Noble.Settings.html">Noble.Settings</a></li>
<li><a href="../modules/Noble.Text.html">Noble.Text</a></li>
<li><a href="../modules/Noble.Transition.html">Noble.Transition</a></li>
<li><a href="../modules/Ease.html">Ease</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Classes</h3>
<ul>
<li><a href="../classes/NobleScene.html">NobleScene</a></li>
<li><a href="../classes/NobleSprite.html">NobleSprite</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Examples</h3>
<ul>
<li><a href="../examples/SceneTemplate.lua.html">SceneTemplate.lua</a></li>
</ul>
</div>
</div>
</div>
<div id="content">
<h1>Noble.Input</h1>
<p>A complete encapsulation of the Playdate's input system.</p>
<p> The Playdate SDK gives developers multiple ways to manage input. Noble Engine's approach revolves around the SDK's "inputHandlers," extending them to include additional input methods, and pull in other hardware functions that the SDK puts elsewhere. See usage below for the full list of supported methods.
<br><br>By default, Noble Engine assumes each scene will have an inputManager assigned to it. So, for example, you can define one inputManager for menu screens and another for gameplay scenes in your <code>main.lua</code>, and then in each scene, set which one that scene uses. You can instead define a unique inputHandler in each scene.
<br><br>You may also create and manage inputManagers within and outside of scenes. When a NobleScene is loaded, its inputHandler will become active, thus, inputHandlers do not carry across scenes, and all input is suspended during scene transitions. An advanced use-case is to leave a scene's inputHandler as nil, and manage it separately.
<br><br><strong>NOTE:</strong> While the Playdate SDK allows you to stack as many inputHandlers as you want, Noble Engine assumes only one <em>active</em> inputHandler at a time. You may still manually call <code>playdate.inputHandlers.push()</code> and <code>playdate.inputHandlers.pop()</code> yourself, but Noble Engine will not know about it and it may cause unexpected behavior.
<br><br>In addition, you may directly query button status using the SDK's methods for that, but it is not advised to use that as the primary way to manage input for Noble Engine projects, because much of Noble.Input's functionality will not apply.</p>
<h3>See</h3>
<ul>
<a href="../classes/NobleScene.html#noblescene.inputHandler">NobleScene.inputHandler</a>
</ul>
<h3>Usage</h3>
<pre class="example">local myInputHandler = {
AButtonDown = function() end, -- Fires once when button is pressed down.
AButtonHold = function() end, -- Fires each frame while a button is held (Noble Engine implementation).
AButtonHeld = function() end, -- Fires once after button is held for 1 second (available for A and B).
AButtonUp = function() end, -- Fires once when button is released.
BButtonDown = function() end,
BButtonHold = function() end,
BButtonHeld = function() end,
BButtonUp = function() end,
downButtonDown = function() end,
downButtonHold = function() end,
downButtonUp = function() end,
leftButtonDown = function() end,
leftButtonHold = function() end,
leftButtonUp = function() end,
rightButtonDown = function() end,
rightButtonHold = function() end,
rightButtonUp = function() end,
upButtonDown = function() end,
upButtonHold = function() end
upButtonUp = function() end,
cranked = function(change, acceleratedChange) end, -- See Playdate SDK.
crankDocked = function() end, -- Noble Engine implementation.
crankUndocked = function() end, -- Noble Engine implementation.
orientationChanged = function() end -- Noble Engine implementation.
}
</pre>
<hr/>
<h2 class="section-header "><a name="Functions"></a>Functions</h2>
<!-- -->
<dl class="function">
<dt>
<a name = "Noble.Input.getHandler"></a>
<span class="item-name">Noble.Input.getHandler()<span>
</dt>
<dd>
Get the currently active input handler. Returns nil if none are active.
<h3>Returns</h3>
<ol>
<span class="types"><span class="type">table</span></span>
A table of callbacks which handle input events.
</ol>
<h3>See</h3>
<ul>
<a href="../classes/NobleScene.html#noblescene.inputHandler">NobleScene.inputHandler</a>
</ul>
</dd>
<dt>
<a name = "Noble.Input.setHandler"></a>
<span class="item-name">Noble.Input.setHandler([__inputHandler=nil])<span>
</dt>
<dd>
Use this to change the active inputHandler.
<br><br>Enter <code>nil</code> to disable input. Use <a href="../modules/Noble.Input.html#Noble.Input.setEnabled">Noble.Input.setEnabled</a> to disable/enable input without losing track of the current inputHandler.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__inputHandler</span>
<span class="types"><span class="type">table</span></span>
<span class="default">= <span class="value">nil</span> (default)</span>
<br/>
A table of callbacks which handle input events.
</li>
</ul>
<h3>See</h3>
<ul>
<li><a href="../classes/NobleScene.html#noblescene.inputHandler">NobleScene.inputHandler</a></li>
<li><a href="../modules/Noble.Input.html#Noble.Input.clearHandler">Noble.Input.clearHandler</a></li>
<li><a href="../modules/Noble.Input.html#Noble.Input.setEnabled">Noble.Input.setEnabled</a></li>
</ul>
</dd>
<dt>
<a name = "Noble.Input.clearHandler"></a>
<span class="item-name">Noble.Input.clearHandler()<span>
</dt>
<dd>
A helper function that calls Noble.Input.setHandler() with no argument.
<h3>See</h3>
<ul>
<a href="../modules/Noble.Input.html#Noble.Input.setHandler">Noble.Input.setHandler</a>
</ul>
</dd>
<dt>
<a name = "Noble.Input.setEnabled"></a>
<span class="item-name">Noble.Input.setEnabled(__value)<span>
</dt>
<dd>
Enable and disable user input without dealing with inputHanders.
The Playdate SDK requires removing all inputHanders to halt user input, so while the currentHandler is cleared when <code>false</code> is passed to this method,
it is cached so it can be later re-enabled by passing <code>true</code> it.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__value</span>
<span class="types"><span class="type">boolean</span></span>
<br/>
Set to false to halt input. Set to true to resume accepting input.
</li>
</ul>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.Input.html#Noble.Input.getHandler">Noble.Input.getHandler</a></li>
<li><a href="../modules/Noble.Input.html#Noble.Input.clearHandler">Noble.Input.clearHandler</a></li>
</ul>
</dd>
<dt>
<a name = "Noble.Input.getEnabled"></a>
<span class="item-name">Noble.Input.getEnabled()<span>
</dt>
<dd>
Checks to see that there is an active inputHandler
<h3>Returns</h3>
<ol>
<span class="types"><span class="type">bool</span></span>
Returns true if the input system is enabled. Returns false if <code>setEnabled(false)</code> was used, or if currentHandler is <code>nil</code>.
</ol>
</dd>
<dt>
<a name = "Noble.Input.setCrankIndicatorStatus"></a>
<span class="item-name">Noble.Input.setCrankIndicatorStatus(__active[, __evenWhenUndocked=false])<span>
</dt>
<dd>
Enable/disable on-screen system crank indicator. </p>
<p> <strong>NOTE: The indicator will only ever show if the crank is docked, unless <code>__evenWhenUndocked</code> is true.</strong>
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__active</span>
<span class="types"><span class="type">boolean</span></span>
<br/>
Set true to start showing the on-screen crank indicator. Set false to stop showing it.
</li>
<li><span class="parameter">__evenWhenUndocked</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">false</span> (default)</span>
<br/>
Set true to show the crank indicator even if the crank is already undocked (<code>__active</code> must also be true).
</li>
</ul>
</dd>
<dt>
<a name = "Noble.Input.getCrankIndicatorStatus"></a>
<span class="item-name">Noble.Input.getCrankIndicatorStatus()<span>
</dt>
<dd>
Checks whether the system crank indicator status. Returns a tuple.
<h3>Returns</h3>
<ol>
<li>
<span class="types"><span class="type">bool</span></span>
Is the crank indicator active?</li>
<li>
<span class="types"><span class="type">bool</span></span>
Is the crank indicator being forced when active, even when the crank is undocked?</li>
</ol>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Input.html#Noble.Input.setCrankIndicatorStatus">Noble.Input.setCrankIndicatorStatus</a>
</ul>
</dd>
<dt>
<a name = "Noble.Input.getOrientation"></a>
<span class="item-name">Noble.Input.getOrientation([__getStoredValues=false])<span>
</dt>
<dd>
Checks the current display orientation of the device. Returns a tuple.
If the accelerometer is not currently enabled, this method will turn it on, return current values, and then turn it off.
If you are trying to get raw accelerometer values rather than the display orientation, you may want to use <code>playdate.readAccelerometer()</code> instead.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__getStoredValues</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">false</span> (default)</span>
<br/>
If true, this method will simply return the most recently stored values, rather than use the accelerometer to check for new ones.
</li>
</ul>
<h3>Returns</h3>
<ol>
<li>
<span class="types"><span class="type">str</span></span>
The named orientation of the device (a pseudo enum Noble.Input.ORIENTATION_XX)</li>
<li>
<span class="types"><span class="type">list</span></span>
Accelerometer values, where list[1] is x, list[2] is y and list[3] is z</li>
</ol>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Input.html#Noble.Input.ORIENTATION_UP">Noble.Input.ORIENTATION_UP</a>
</ul>
</dd>
</dl>
<h2 class="section-header has-description"><a name="Constants"></a>Constants
</h2>
<!-- -->
<div class="section-description">
A set of constants referencing device inputs, stored as strings. Can be used for querying button input,
but are mainly for on-screen prompts or other elements where a string literal is useful, such as a filename, GameData value, or localization key.
For faster performance, use the ones that exist in the Playdate SDK (i.e.: <code>playdate.kButtonA</code>), which are stored as binary numbers.
</div>
<h3>Usage</h3>
<pre class="example"><span class="keyword">function</span> <span class="function-name">newPrompt</span>(__input, __promptString)
<span class="comment">-- ...
</span> <span class="keyword">local</span> icon = Graphics.image.<span class="function-name">new</span>(<span class="string">"assets/images/UI/Icon_"</span> .. __input)
<span class="comment">-- ...
</span><span class="keyword">end</span>
promptMove = <span class="function-name">newPrompt</span>(Noble.Input.DPAD_HORIZONTAL, <span class="string">"Move!"</span>) <span class="comment">-- assets/images/UI/Icon_dPadHorizontal.png"
</span>promptJump = <span class="function-name">newPrompt</span>(Noble.Input.BUTTON_A, <span class="string">"Jump!"</span>) <span class="comment">-- assets/images/UI/Icon_buttonA.png"
</span>promptCharge = <span class="function-name">newPrompt</span>(Noble.Input.CRANK_FORWARD, <span class="string">"Charge the battery!"</span>) <span class="comment">-- assets/images/UI/Icon_crankForward.png"</span></pre>
<dl class="function">
<dt>
<a name = "Noble.Input.BUTTON_A"></a>
<span class="item-name">Noble.Input.BUTTON_A<span>
</dt>
<dd>
<code>&quot;buttonA&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.BUTTON_B"></a>
<span class="item-name">Noble.Input.BUTTON_B<span>
</dt>
<dd>
<code>&quot;buttonB&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.BUTTON_MENU"></a>
<span class="item-name">Noble.Input.BUTTON_MENU<span>
</dt>
<dd>
The system menu button. </p>
<p> <code>&quot;buttonMenu&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.DPAD"></a>
<span class="item-name">Noble.Input.DPAD<span>
</dt>
<dd>
Referencing the D-pad component itself, rather than an input. </p>
<p> <code>&quot;dPad&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.DPAD_HORIZONTAL"></a>
<span class="item-name">Noble.Input.DPAD_HORIZONTAL<span>
</dt>
<dd>
Referencing the left and right input D-pad inputs. </p>
<p> <code>&quot;dPadHorizontal&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.DPAD_VERTICAL"></a>
<span class="item-name">Noble.Input.DPAD_VERTICAL<span>
</dt>
<dd>
Referencing the up and down input D-pad inputs. </p>
<p> <code>&quot;dPadVertical&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.DPAD_UP"></a>
<span class="item-name">Noble.Input.DPAD_UP<span>
</dt>
<dd>
<code>&quot;dPadUp&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.DPAD_DOWN"></a>
<span class="item-name">Noble.Input.DPAD_DOWN<span>
</dt>
<dd>
<code>&quot;dPadDown&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.DPAD_LEFT"></a>
<span class="item-name">Noble.Input.DPAD_LEFT<span>
</dt>
<dd>
<code>&quot;dPadLeft&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.DPAD_RIGHT"></a>
<span class="item-name">Noble.Input.DPAD_RIGHT<span>
</dt>
<dd>
<code>&quot;dPadRight&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.CRANK"></a>
<span class="item-name">Noble.Input.CRANK<span>
</dt>
<dd>
Referencing the crank component itself, rather than an input. </p>
<p> <code>&quot;crank&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.CRANK_FORWARD"></a>
<span class="item-name">Noble.Input.CRANK_FORWARD<span>
</dt>
<dd>
AKA: Clockwise. See Playdate SDK.</p>
<p> <code>&quot;crankForward&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.CRANK_REVERSE"></a>
<span class="item-name">Noble.Input.CRANK_REVERSE<span>
</dt>
<dd>
AKA: Anticlockwise. See Playdate SDK.</p>
<p> <code>&quot;crankReverse&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.CRANK_DOCK"></a>
<span class="item-name">Noble.Input.CRANK_DOCK<span>
</dt>
<dd>
Referencing the action of docking the crank. </p>
<p> <code>&quot;crankDock&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.CRANK_UNDOCK"></a>
<span class="item-name">Noble.Input.CRANK_UNDOCK<span>
</dt>
<dd>
Referencing the action of undocking the crank. </p>
<p> <code>&quot;crankUndock&quot;</code>
</dd>
<dt>
<a name = "Noble.Input.ORIENTATION_UP"></a>
<span class="item-name">Noble.Input.ORIENTATION_UP<span>
</dt>
<dd>
Referencing the display orientations. </p>
<p> <code>&quot;orientationUp&quot;</code>
</dd>
</dl>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<span><a href="https://github.com/NobleRobot/NobleEngine">Noble Engine</a> by Mark LaCroix, <a href="https://noblerobot.com">Noble Robot</a></span>
<span style="float:right;">
Documentation created using <a href="https://github.com/stevedonovan/LDoc">LDoc 1.5.0</a>.
</span>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

View File

@@ -0,0 +1,928 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Noble Engine API reference</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
<link rel="icon" href="favicon.ico">
</head>
<body>
<div id="container">
<div id="main">
<!-- Menu -->
<div id="navigation">
<a href="../index.html"><div class="logo">
<h1>Noble Engine</h1>
</div></a>
<div class="nav-module">
<h2>Noble.Menu</h2>
<ul>
<h3>Setup </h3>
<ul>
<li><a href="#Noble.Menu.new">.new</a></li>
<li><a href="#menu:addItem">menu:addItem</a></li>
<li><a href="#menu:removeItem">menu:removeItem</a></li>
</ul>
<h3>Properties </h3>
<ul>
<li><a href="#menu.localized">menu.localized</a></li>
<li><a href="#menu.currentItemNumber">menu.currentItemNumber</a></li>
<li><a href="#menu.currentItemName">menu.currentItemName</a></li>
<li><a href="#menu.width">menu.width</a></li>
</ul>
<h3>Methods </h3>
<ul>
<li><a href="#menu:activate">menu:activate</a></li>
<li><a href="#menu:deactivate">menu:deactivate</a></li>
<li><a href="#menu:isActive">menu:isActive</a></li>
<li><a href="#menu:selectPrevious">menu:selectPrevious</a></li>
<li><a href="#menu:selectNext">menu:selectNext</a></li>
<li><a href="#menu:select">menu:select</a></li>
<li><a href="#menu:click">menu:click</a></li>
<li><a href="#menu:getItemDisplayName">menu:getItemDisplayName</a></li>
<li><a href="#menu:setItemDisplayName">menu:setItemDisplayName</a></li>
</ul>
<h3>Tables </h3>
<ul>
<li><a href="#menu.itemNames">menu.itemNames</a></li>
<li><a href="#menu.clickHandlers">menu.clickHandlers</a></li>
<li><a href="#menu.itemPositions">menu.itemPositions</a></li>
<li><a href="#menu.itemWidths">menu.itemWidths</a></li>
</ul>
<h3>Drawing </h3>
<ul>
<li><a href="#menu:draw">menu:draw</a></li>
<li><a href="#menu:drawItem">menu:drawItem</a></li>
<li><a href="#menu:drawSelectedItem">menu:drawSelectedItem</a></li>
</ul>
</ul>
</div>
<div class="nav-modules">
<div class="nav-kind">
<h3>Modules</h3>
<ul>
<li><a href="../modules/Noble.html">Noble</a></li>
<li><a href="../modules/Noble.Animation.html">Noble.Animation</a></li>
<li><a href="../modules/Noble.Bonk.html">Noble.Bonk</a></li>
<li><a href="../modules/Noble.GameData.html">Noble.GameData</a></li>
<li><a href="../modules/Noble.Input.html">Noble.Input</a></li>
<li><span class="selected">Noble.Menu</span></li>
<li><a href="../modules/Noble.Settings.html">Noble.Settings</a></li>
<li><a href="../modules/Noble.Text.html">Noble.Text</a></li>
<li><a href="../modules/Noble.Transition.html">Noble.Transition</a></li>
<li><a href="../modules/Ease.html">Ease</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Classes</h3>
<ul>
<li><a href="../classes/NobleScene.html">NobleScene</a></li>
<li><a href="../classes/NobleSprite.html">NobleSprite</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Examples</h3>
<ul>
<li><a href="../examples/SceneTemplate.lua.html">SceneTemplate.lua</a></li>
</ul>
</div>
</div>
</div>
<div id="content">
<h1>Noble.Menu</h1>
<p>An extended implementation of <code>playdate.ui.gridview</code>, meant for 1-dimensional, single-screen text menus.</p>
<p>
</p>
<hr/>
<h2 class="section-header "><a name="Setup"></a>Setup </h2>
<!-- -->
<dl class="function">
<dt>
<a name = "Noble.Menu.new"></a>
<span class="item-name">Noble.Menu.new([__activate=true[, __alignment=Noble.Text.ALIGN_LEFT[, __localized=false[, __color=Graphics.kColorBlack[, __padding=2[, __horizontalPadding[, __margin=2[, __font=Noble.Text.getCurrentFont()[, __selectedCornerRadius=__font:getHeight()/4[, __selectedOutlineThickness=1]]]]]]]]]])<span>
</dt>
<dd>
Create a new menu object.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__activate</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
<a href="../modules/Noble.Menu.html#menu:activate">Activate</a> this menu upon creation.
</li>
<li><span class="parameter">__alignment</span>
<span class="default">= <span class="value">Noble.Text.ALIGN_LEFT</span> (default)</span>
<br/>
The text alignment of menu items.
</li>
<li><span class="parameter">__localized</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">false</span> (default)</span>
<br/>
If true, menu item names are localization keys rather than display names.
</li>
<li><span class="parameter">__color</span>
<span class="default">= <span class="value">Graphics.kColorBlack</span> (default)</span>
<br/>
The color of menu item text. The selected highlight will be the inverse color.
</li>
<li><span class="parameter">__padding</span>
<span class="types"><span class="type">integer</span></span>
<span class="default">= <span class="value">2</span> (default)</span>
<br/>
Cell padding for menu items.
</li>
<li><span class="parameter">__horizontalPadding</span>
<span class="types"><span class="type">integer</span></span>
<span class="optional">(optional)</span>
<br/>
Use this to override horizontal padding, useful for certain fonts. If nil, uses __padding.
</li>
<li><span class="parameter">__margin</span>
<span class="types"><span class="type">integer</span></span>
<span class="default">= <span class="value">2</span> (default)</span>
<br/>
Spacing between menu items.
</li>
<li><span class="parameter">__font</span>
<span class="default">= <span class="value">Noble.Text.getCurrentFont()</span> (default)</span>
<br/>
If nil, uses current set font.
</li>
<li><span class="parameter">__selectedCornerRadius</span>
<span class="types"><span class="type">integer</span></span>
<span class="default">= <span class="value">__font:getHeight()/4</span> (default)</span>
<br/>
Sets rounded corners for a selected menu item.
</li>
<li><span class="parameter">__selectedOutlineThickness</span>
<span class="types"><span class="type">integer</span></span>
<span class="default">= <span class="value">1</span> (default)</span>
<br/>
Sets the outline thickness for selected items.
</li>
</ul>
<h3>Returns</h3>
<ol>
<code>menu</code>, a new menu item.
</ol>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Menu.html#menu:addItem">addItem</a>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="keyword">local</span> menu = Noble.Menu.<span class="function-name">new</span>(
<span class="keyword">true</span>,
Noble.Text.ALIGN_CENTER,
<span class="keyword">false</span>,
Graphics.kColorWhite,
<span class="number">4</span>, <span class="number">6</span>,
Noble.Text.large,
<span class="keyword">nil</span>, <span class="number">3</span>
)
menu:<span class="function-name">addItem</span>(<span class="string">"Play Game"</span>, <span class="keyword">function</span>() TitleScreen:<span class="function-name">playGame</span>() <span class="keyword">end</span>)
menu:<span class="function-name">addItem</span>(<span class="string">"Options"</span>, <span class="keyword">function</span>() Noble.<span class="function-name">transition</span>(OptionsScreen) <span class="keyword">end</span>)
menu:<span class="function-name">addItem</span>(<span class="string">"Credits"</span>, <span class="keyword">function</span>() Noble.<span class="function-name">transition</span>(CreditsScreen) <span class="keyword">end</span>)</pre>
</dd>
<dt>
<a name = "menu:addItem"></a>
<span class="item-name">menu:addItem(__nameOrKey[, __clickHandler[, __position[, __displayName[, __displayNameIsALocalizationKey=false]]]])<span>
</dt>
<dd>
Adds a item to this menu.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__nameOrKey</span>
<span class="types"><span class="type">string</span></span>
<br/>
The name of this menu item. It can be a display name or a localization key. <strong>Must be unique.</strong>
</li>
<li><span class="parameter">__clickHandler</span>
<span class="types"><span class="type">function</span></span>
<span class="optional">(optional)</span>
<br/>
The function that runs when this menu item is "clicked."
</li>
<li><span class="parameter">__position</span>
<span class="types"><span class="type">integer</span></span>
<span class="optional">(optional)</span>
<br/>
Insert the item at a specific position. If not set, adds to the end of the list.
</li>
<li><span class="parameter">__displayName</span>
<span class="types"><span class="type">string</span></span>
<span class="optional">(optional)</span>
<br/>
You can create an optional, separate display name for this item. You can add or change this at runtime via <a href="../modules/Noble.Menu.html#menu:setItemDisplayName">setItemDisplayName</a>.
</li>
<li><span class="parameter">__displayNameIsALocalizationKey</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">false</span> (default)</span>
<br/>
If true, will treat the <code>__displayName</code> as a localization key. This is separate from this menu's <a href="../modules/Noble.Menu.html#menu.localized">localized</a> value.
</li>
</ul>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.Menu.html#Noble.Menu.new">Noble.Menu.new</a></li>
<li><a href="../modules/Noble.Menu.html#menu:removeItem">removeItem</a></li>
<li><a href="../modules/Noble.Menu.html#menu:setItemDisplayName">setItemDisplayName</a></li>
</ul>
</dd>
<dt>
<a name = "menu:removeItem"></a>
<span class="item-name">menu:removeItem([__menuItem=#menu.itemNames])<span>
</dt>
<dd>
Removes a item from this menu.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__menuItem</span>
<span class="types"><span class="type">int</span> or <span class="type">string</span></span>
<span class="default">= <span class="value">#menu.itemNames</span> (default)</span>
<br/>
The menu item to remove. You can enter either the item's name/key or it's position. If left blank, removes the last item.
</li>
</ul>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Menu.html#menu:addItem">addItem</a>
</ul>
</dd>
</dl>
<h2 class="section-header "><a name="Properties"></a>Properties </h2>
<!-- -->
<dl class="function">
<dt>
<a name = "menu.localized"></a>
<span class="item-name">menu.localized<span>
</dt>
<dd>
<ul class="parameters">
<li><span class="parameter">_</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">false</span> (default)</span>
<br/>
Indicates whether this menu's item names are treated as localization keys.
</li>
</ul>
</dd>
<dt>
<a name = "menu.currentItemNumber"></a>
<span class="item-name">menu.currentItemNumber<span>
</dt>
<dd>
<ul class="parameters">
<li><span class="parameter">_</span>
<span class="types"><span class="type">integer</span></span>
<br/>
The current menu item's index.</p>
<p> This is meant as a <strong>read-only</strong> value. Do not modify it directly.
</li>
</ul>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Menu.html#menu:select">select</a>
</ul>
</dd>
<dt>
<a name = "menu.currentItemName"></a>
<span class="item-name">menu.currentItemName<span>
</dt>
<dd>
<ul class="parameters">
<li><span class="parameter">_</span>
<span class="types"><span class="type">string</span></span>
<br/>
The current menu item's name.</p>
<p> This is meant as a <strong>read-only</strong> value. Do not modify it directly.
</li>
</ul>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Menu.html#menu:select">select</a>
</ul>
</dd>
<dt>
<a name = "menu.width"></a>
<span class="item-name">menu.width<span>
</dt>
<dd>
<ul class="parameters">
<li><span class="parameter">_</span>
<span class="types"><span class="type">integer</span></span>
<br/>
The width of the widest menu item plus the menu's horizontal padding.</p>
<p> This is meant as a <strong>read-only</strong> value. Do not modify it directly.
</li>
</ul>
</dd>
</dl>
<h2 class="section-header "><a name="Methods"></a>Methods </h2>
<!-- -->
<dl class="function">
<dt>
<a name = "menu:activate"></a>
<span class="item-name">menu:activate()<span>
</dt>
<dd>
Activate this menu.
This selects the most recently selected menu item (or the first item if none have been previously selected), and enables this menu's <a href="../modules/Noble.Menu.html#menu:selectPrevious">selectPrevious</a>, <a href="../modules/Noble.Menu.html#menu:selectNext">selectNext</a>, and <a href="../modules/Noble.Menu.html#menu:click">click</a> methods.
<h3>Usage</h3>
<pre class="example"><span class="keyword">local</span> menu = Noble.Menu.<span class="function-name">new</span>(<span class="keyword">false</span>)
menu:<span class="function-name">activate</span>()</pre>
</dd>
<dt>
<a name = "menu:deactivate"></a>
<span class="item-name">menu:deactivate()<span>
</dt>
<dd>
Deactivate this menu.
This deselects all menu items, and disables this menu's <a href="../modules/Noble.Menu.html#menu:selectPrevious">selectPrevious</a>, <a href="../modules/Noble.Menu.html#menu:selectNext">selectNext</a>, and <a href="../modules/Noble.Menu.html#menu:click">click</a> methods.
<h3>Usage</h3>
<pre class="example"><span class="keyword">local</span> menu = Noble.Menu.<span class="function-name">new</span>(<span class="keyword">true</span>)
menu:<span class="function-name">deactivate</span>()</pre>
</dd>
<dt>
<a name = "menu:isActive"></a>
<span class="item-name">menu:isActive()<span>
</dt>
<dd>
Check to see if this menu is currently active.
<h3>Returns</h3>
<ol>
<span class="types"><span class="type">bool</span></span>
</ol>
</dd>
<dt>
<a name = "menu:selectPrevious"></a>
<span class="item-name">menu:selectPrevious([__force=false[, __wrapSelection=true]])<span>
</dt>
<dd>
Selects the previous item in this menu. <strong>This menu must be active.</strong>
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__force</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">false</span> (default)</span>
<br/>
Force this method to run, even if this menu is not active.
</li>
<li><span class="parameter">__wrapSelection</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Selects the final menu item if the first menu item is currently selected.
</li>
</ul>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Menu.html#menu:activate">activate</a>
</ul>
<h3>Usage</h3>
<pre class="example">TitleScreen.inputHandler.upButtonDown = <span class="keyword">function</span>()
menu:<span class="function-name">selectPrevious</span>()
<span class="keyword">end</span></pre>
</dd>
<dt>
<a name = "menu:selectNext"></a>
<span class="item-name">menu:selectNext([__force=false[, __wrapSelection=true]])<span>
</dt>
<dd>
Selects the next previous item in this menu. <strong>This menu must be active.</strong>
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__force</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">false</span> (default)</span>
<br/>
Force this method to run, even if this menu is not active.
</li>
<li><span class="parameter">__wrapSelection</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Selects the first menu item if the final menu item is currently selected.
</li>
</ul>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Menu.html#menu:activate">activate</a>
</ul>
<h3>Usage</h3>
<pre class="example">TitleScreen.inputHandler.downButtonDown = <span class="keyword">function</span>()
menu:<span class="function-name">selectNext</span>()
<span class="keyword">end</span></pre>
</dd>
<dt>
<a name = "menu:select"></a>
<span class="item-name">menu:select(__menuItem[, __force=false])<span>
</dt>
<dd>
Selects a specific item in this menu, either by it's index, or it's name. <strong>This menu must be active.</strong>
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__menuItem</span>
<span class="types"><span class="type">int</span> or <span class="type">string</span></span>
<br/>
The menu item to select. You can enter the item's number or it's name/key.
</li>
<li><span class="parameter">__force</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">false</span> (default)</span>
<br/>
Force this method to run, even if this menu is not active.
</li>
</ul>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Menu.html#menu:activate">activate</a>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="keyword">function</span> <span class="function-name">resetMenu</span>()
menu:<span class="global">select</span>(<span class="number">1</span>, <span class="keyword">true</span>)
menu:<span class="function-name">deactivate</span>()
<span class="keyword">end</span></pre>
<pre class="example"><span class="keyword">function</span> <span class="function-name">resetMenu</span>()
menu:<span class="global">select</span>(<span class="string">"Play Game"</span>, <span class="keyword">true</span>)
menu:<span class="function-name">deactivate</span>()
<span class="keyword">end</span></pre>
</dd>
<dt>
<a name = "menu:click"></a>
<span class="item-name">menu:click([__force=false])<span>
</dt>
<dd>
Runs the function associated with the currently selected menu item. <strong>This menu must be active.</strong>
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__force</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">false</span> (default)</span>
<br/>
Force this method to run, even if this menu is not active.
</li>
</ul>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Menu.html#menu:activate">activate</a>
</ul>
<h3>Usage</h3>
<pre class="example">TitleScreen.inputHandler.AButtonDown = <span class="keyword">function</span>()
menu:<span class="function-name">click</span>()
<span class="keyword">end</span></pre>
</dd>
<dt>
<a name = "menu:getItemDisplayName"></a>
<span class="item-name">menu:getItemDisplayName(__itemName)<span>
</dt>
<dd>
Gets the display name of a menu item. </p>
<p> If a menu item does not have a display name, then the <code>__nameOrKey</code> (or its localized string) will be returned instead. This method is used internally when <a href="../modules/Noble.Menu.html#menu:draw">draw</a> is called.</p>
<p> If this menu's <a href="../modules/Noble.Menu.html#menu.localized">localized</a> value is true, a returned <code>__nameOrKey</code> will always be localized, but a returned display name is only localized if the <code>__displayNameIsALocalizationKey</code> argument was set to <code>true</code> when the display name was added.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__itemName</span>
<span class="types"><span class="type">string</span></span>
<br/>
The menu item you want the display name of.
</li>
</ul>
<h3>Returns</h3>
<ol>
<span class="types"><span class="type">string</span></span>
</ol>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.Menu.html#menu:addItem">addItem</a></li>
<li><a href="../modules/Noble.Menu.html#menu:setItemDisplayName">setItemDisplayName</a></li>
</ul>
</dd>
<dt>
<a name = "menu:setItemDisplayName"></a>
<span class="item-name">menu:setItemDisplayName(__itemName, __displayName[, __displayNameIsALocalizationKey=false])<span>
</dt>
<dd>
When you add a menu item, you can give it a display name that's different from it's actual name. This method adds or changes the display name of a menu item.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__itemName</span>
<span class="types"><span class="type">string</span></span>
<br/>
The menu item name (or key if this menu uses localization keys).
</li>
<li><span class="parameter">__displayName</span>
<span class="types"><span class="type">string</span></span>
<br/>
The display name.
</li>
<li><span class="parameter">__displayNameIsALocalizationKey</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">false</span> (default)</span>
<br/>
Set to use to indicate that this display name is a localization key. This setting is separate from <a href="../modules/Noble.Menu.html#menu.localized">localized</a>
</li>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="keyword">function</span> <span class="function-name">changeDifficultyLevel</span>(__level)
menu:<span class="function-name">setItemDisplayName</span>(<span class="string">"Difficulty"</span>, <span class="string">"Difficulty: "</span> .. __level)
<span class="keyword">end</span></pre>
</dd>
</dl>
<h2 class="section-header "><a name="Tables"></a>Tables </h2>
<!-- -->
<dl class="function">
<dt>
<a name = "menu.itemNames"></a>
<span class="item-name">menu.itemNames<span>
</dt>
<dd>
A string "array" of menu item strings/keys.
<strong>You cannot add or remove menu items by modifying this table</strong>.
It is meant as a <strong>read-only</strong> table, provided for convenience when iterating, etc. Modifying its values may break other methods.
<h3>See</h3>
<ul>
<a href="../modules/Noble.Menu.html#menu:addItem">addItem</a>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="keyword">for</span> i = <span class="number">1</span>, #menu.itemNames, <span class="number">1</span> <span class="keyword">do</span>
menu.clickHandlers[menu.itemNames[i]] = <span class="keyword">nil</span> <span class="comment">-- Clears all click handlers, for some reason.
</span><span class="keyword">end</span></pre>
</dd>
<dt>
<a name = "menu.clickHandlers"></a>
<span class="item-name">menu.clickHandlers<span>
</dt>
<dd>
A table of functions associated with menu items. Items are a defined when calling <a href="../modules/Noble.Menu.html#menu:addItem">addItem</a>, but their associated functions may be modified afterward.</p>
<p> <strong>You cannot add or remove menu items by modifying this table</strong>.
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.Menu.html#menu:addItem">addItem</a></li>
<li><a href="../modules/Noble.Menu.html#menu:removeItem">removeItem</a></li>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="keyword">local</span> menu = Noble.Menu.<span class="function-name">new</span>(<span class="keyword">true</span>)
menu.<span class="function-name">addItem</span>(<span class="string">"Play Game"</span>)
menu.<span class="function-name">addItem</span>(<span class="string">"Options"</span>)
menu.clickHandlers[<span class="string">"Play Game"</span>] = <span class="keyword">function</span>() TitleScreen:<span class="function-name">playGame</span>() <span class="keyword">end</span>
menu.clickHandlers[<span class="string">"Options"</span>] = <span class="keyword">function</span>() Noble.<span class="function-name">transition</span>(OptionsScreen) <span class="keyword">end</span></pre>
<pre class="example"><span class="keyword">local</span> menu = Noble.Menu.<span class="function-name">new</span>(<span class="keyword">true</span>)
menu.<span class="function-name">addItem</span>(<span class="string">"Play Game"</span>)
menu.<span class="function-name">addItem</span>(<span class="string">"Options"</span>)
menu.clickHandlers = {
[<span class="string">"Play Game"</span>] = <span class="keyword">function</span> TitleScreen:<span class="function-name">playGame</span>() <span class="keyword">end</span>,
[<span class="string">"Options"</span>] = <span class="keyword">function</span>() Noble.<span class="function-name">transition</span>(OptionsScreen) <span class="keyword">end</span>
}</pre>
</dd>
<dt>
<a name = "menu.itemPositions"></a>
<span class="item-name">menu.itemPositions<span>
</dt>
<dd>
A key/value table of menu item indices. </p>
<p> This is meant as a <strong>read-only</strong> table, provided for convenience. Modifying its values will break other methods.
<h3>Usage</h3>
<pre class="example">menu.itemPositions[<span class="string">"Play Game"</span>] <span class="comment">-- 1
</span>menu.itemPositions[<span class="string">"Options"</span>] <span class="comment">-- 2</span></pre>
</dd>
<dt>
<a name = "menu.itemWidths"></a>
<span class="item-name">menu.itemWidths<span>
</dt>
<dd>
A key/value table of pixel widths for each menu item, based on its text. Useful for animation, layout, etc.</p>
<p> This is meant as a <strong>read-only</strong> table, provided for convenience. Modifying its values will break other methods.
<h3>Usage</h3>
<pre class="example"><span class="keyword">local</span> playGameMenuItemWidth = menu.itemWidths[<span class="string">"Play Game"</span>]</pre>
</dd>
</dl>
<h2 class="section-header "><a name="Drawing"></a>Drawing </h2>
<!-- -->
<dl class="function">
<dt>
<a name = "menu:draw"></a>
<span class="item-name">menu:draw(__x, __y)<span>
</dt>
<dd>
Draw's this menu to the screen. You may call this manually, but ideally, you will put it in in your scene's <a href="../classes/NobleScene.html#noblescene:update">update</a> or <a href="../classes/NobleScene.html#noblescene:drawBackground">drawBackground</a> method.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__x</span>
<br/>
</li>
<li><span class="parameter">__y</span>
<br/>
</li>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="keyword">function</span> YourScene:<span class="function-name">update</span>()
YourScene.super.<span class="function-name">update</span>(self)
menu:<span class="function-name">draw</span>(<span class="number">50</span>, <span class="number">100</span>)
<span class="keyword">end</span></pre>
</dd>
<dt>
<a name = "menu:drawItem"></a>
<span class="item-name">menu:drawItem(__x, __y, __itemIndex)<span>
</dt>
<dd>
This method is called for every <strong>non-selected</strong> item when <a href="../modules/Noble.Menu.html#menu:draw">draw</a> is called. You shouldn't call this directly, but you may re-implement it if you wish.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__x</span>
<br/>
</li>
<li><span class="parameter">__y</span>
<br/>
</li>
<li><span class="parameter">__itemIndex</span>
<br/>
</li>
</ul>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Text.html#Noble.Text.draw">Noble.Text.draw</a>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="comment">-- This is the default implementation for this method.
</span><span class="keyword">function</span> menu:<span class="function-name">drawItem</span>(__x, __y, __itemIndex)
Graphics.<span class="function-name">setImageDrawMode</span>(self.fillMode)
<span class="keyword">local</span> xAdjustment = <span class="number">0</span>
<span class="keyword">if</span> (self.alignment == Noble.Text.ALIGN_CENTER) <span class="keyword">then</span>
xAdjustment = self.width/<span class="number">2</span> - self.horizontalPadding/<span class="number">2</span>
<span class="keyword">elseif</span> (self.alignment == Noble.Text.ALIGN_RIGHT) <span class="keyword">then</span>
xAdjustment = self.width - self.horizontalPadding
<span class="keyword">end</span>
Noble.Text.<span class="function-name">draw</span>(self.itemNames[__itemIndex], __x + self.horizontalPadding/<span class="number">2</span> + xAdjustment, __y + self.padding/<span class="number">2</span>, self.alignment, self.localized, self.font)
<span class="keyword">end</span></pre>
</dd>
<dt>
<a name = "menu:drawSelectedItem"></a>
<span class="item-name">menu:drawSelectedItem(__x, __y, __itemIndex)<span>
</dt>
<dd>
This method is called for every <strong>selected</strong> item when <a href="../modules/Noble.Menu.html#menu:draw">draw</a> is called. You shouldn't call this directly, but you may re-implement it if you wish.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__x</span>
<br/>
</li>
<li><span class="parameter">__y</span>
<br/>
</li>
<li><span class="parameter">__itemIndex</span>
<br/>
</li>
</ul>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Text.html#Noble.Text.draw">Noble.Text.draw</a>
</ul>
<h3>Usage</h3>
<pre class="example"><span class="comment">-- This is the default implementation for this method.
</span><span class="keyword">function</span> menu:<span class="function-name">drawSelectedItem</span>(__x, __y, __itemIndex)
<span class="keyword">local</span> xAdjustmentText = <span class="number">0</span>
<span class="keyword">local</span> xAdjustmentRect = <span class="number">0</span>
<span class="keyword">if</span> (self.alignment == Noble.Text.ALIGN_CENTER) <span class="keyword">then</span>
xAdjustmentText = self.width/<span class="number">2</span> - self.horizontalPadding/<span class="number">2</span>
xAdjustmentRect = self.width/<span class="number">2</span> - self.itemWidths[self.itemNames[__itemIndex]]/<span class="number">2</span> - self.horizontalPadding/<span class="number">2</span>
<span class="keyword">elseif</span> (self.alignment == Noble.Text.ALIGN_RIGHT) <span class="keyword">then</span>
xAdjustmentText = self.width - self.horizontalPadding
xAdjustmentRect = self.width - self.itemWidths[self.itemNames[__itemIndex]] - self.horizontalPadding
<span class="keyword">end</span>
Graphics.<span class="function-name">setColor</span>(self.color)
Graphics.<span class="function-name">fillRoundRect</span>(__x + xAdjustmentRect, __y, self.itemWidths[self.itemNames[__itemIndex]]+self.horizontalPadding, self.textHeight+self.padding, self.selectedCornerRadius)
Graphics.<span class="function-name">setColor</span>(self.otherColor)
Graphics.<span class="function-name">setLineWidth</span>(self.selectedOutlineThickness)
Graphics.<span class="function-name">drawRoundRect</span>(__x + xAdjustmentRect, __y, self.itemWidths[self.itemNames[__itemIndex]]+self.horizontalPadding, self.textHeight+self.padding, self.selectedCornerRadius)
Graphics.<span class="function-name">setImageDrawMode</span>(self.otherFillMode)
Noble.Text.<span class="function-name">draw</span>(self.itemNames[__itemIndex], __x + self.horizontalPadding/<span class="number">2</span> + xAdjustmentText, __y+self.padding/<span class="number">2</span>, self.alignment, self.localized, self.font)
<span class="keyword">end</span></pre>
</dd>
</dl>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<span><a href="https://github.com/NobleRobot/NobleEngine">Noble Engine</a> by Mark LaCroix, <a href="https://noblerobot.com">Noble Robot</a></span>
<span style="float:right;">
Documentation created using <a href="https://github.com/stevedonovan/LDoc">LDoc 1.5.0</a>.
</span>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

View File

@@ -0,0 +1,331 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Noble Engine API reference</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
<link rel="icon" href="favicon.ico">
</head>
<body>
<div id="container">
<div id="main">
<!-- Menu -->
<div id="navigation">
<a href="../index.html"><div class="logo">
<h1>Noble Engine</h1>
</div></a>
<div class="nav-module">
<h2>Noble.Settings</h2>
<ul>
<h3>Functions</h3>
<ul>
<li><a href="#Noble.Settings.setup">.setup</a></li>
<li><a href="#Noble.Settings.get">.get</a></li>
<li><a href="#Noble.Settings.set">.set</a></li>
<li><a href="#Noble.Settings.reset">.reset</a></li>
<li><a href="#Noble.Settings.resetSome">.resetSome</a></li>
<li><a href="#Noble.Settings.resetAll">.resetAll</a></li>
<li><a href="#Noble.Settings.save">.save</a></li>
</ul>
</ul>
</div>
<div class="nav-modules">
<div class="nav-kind">
<h3>Modules</h3>
<ul>
<li><a href="../modules/Noble.html">Noble</a></li>
<li><a href="../modules/Noble.Animation.html">Noble.Animation</a></li>
<li><a href="../modules/Noble.Bonk.html">Noble.Bonk</a></li>
<li><a href="../modules/Noble.GameData.html">Noble.GameData</a></li>
<li><a href="../modules/Noble.Input.html">Noble.Input</a></li>
<li><a href="../modules/Noble.Menu.html">Noble.Menu</a></li>
<li><span class="selected">Noble.Settings</span></li>
<li><a href="../modules/Noble.Text.html">Noble.Text</a></li>
<li><a href="../modules/Noble.Transition.html">Noble.Transition</a></li>
<li><a href="../modules/Ease.html">Ease</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Classes</h3>
<ul>
<li><a href="../classes/NobleScene.html">NobleScene</a></li>
<li><a href="../classes/NobleSprite.html">NobleSprite</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Examples</h3>
<ul>
<li><a href="../examples/SceneTemplate.lua.html">SceneTemplate.lua</a></li>
</ul>
</div>
</div>
</div>
<div id="content">
<h1>Noble.Settings</h1>
<p>Operations for game settings / stats.</p>
<p>
</p>
<hr/>
<h2 class="section-header "><a name="Functions"></a>Functions</h2>
<!-- -->
<dl class="function">
<dt>
<a name = "Noble.Settings.setup"></a>
<span class="item-name">Noble.Settings.setup(__keyValuePairs[, __saveToDisk=true[, __modifyExistingOnKeyChange=true]])<span>
</dt>
<dd>
Sets up the settings for your game. You can only run this once, and you must run it before using other <a href="../modules/Noble.Settings.html#">Noble.Settings</a> functions. It is recommended to place it in your main.lua, before <code>Noble.new()</code>.</p>
<p> <strong>NOTE:</strong> You will <em>not</em> be able to add new keys via the <a href="../modules/Noble.Settings.html#Noble.Settings.set">Noble.Settings.set</a> method. This means you need to specify the keys and default values of all of the settings in your game at setup.
If you need to add keys that are not known during setup, it is probably not a setting and you should consider using <a href="../modules/Noble.GameData.html#">Noble.GameData</a> instead.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__keyValuePairs</span>
<span class="types"><span class="type">table</span></span>
<br/>
table. Your game's settings, and thier default values, as key/value pairs. <strong>NOTE:</strong> Do not use "nil" as a value.
</li>
<li><span class="parameter">__saveToDisk</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Saves your default values immediatly to disk.
</li>
<li><span class="parameter">__modifyExistingOnKeyChange</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Updates the existing settings object on disk if you make changes to your settings keys (not values) during development or when updating your game.
</li>
</ul>
<h3>Usage</h3>
<pre class="example">Noble.Settings.<span class="function-name">setup</span>({
difficulty = <span class="string">"normal"</span>,
music = <span class="keyword">true</span>,
sfx = <span class="keyword">true</span>,
players = <span class="number">2</span>,
highScore = <span class="number">0</span> <span class="comment">-- You can store persistant stats here, too!
</span>})</pre>
</dd>
<dt>
<a name = "Noble.Settings.get"></a>
<span class="item-name">Noble.Settings.get(__settingName)<span>
</dt>
<dd>
Get the value of a setting.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__settingName</span>
<span class="types"><span class="type">string</span></span>
<br/>
The name of the setting.
</li>
</ul>
<h3>Returns</h3>
<ol>
<span class="types"><span class="type">any</span></span>
The value of the requested setting.
</ol>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Settings.html#Noble.Settings.set">Noble.Settings.set</a>
</ul>
</dd>
<dt>
<a name = "Noble.Settings.set"></a>
<span class="item-name">Noble.Settings.set(__settingName, __value[, __saveToDisk=true])<span>
</dt>
<dd>
Set the value of a setting. </p>
<p> <strong>NOTE:</strong> If __settingName is not a key in the __keyValuePairs dictionary given to the <a href="../modules/Noble.Settings.html#Noble.Settings.setup">setup</a> method it will not be added to the Settings.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__settingName</span>
<span class="types"><span class="type">string</span></span>
<br/>
The name of the setting.
</li>
<li><span class="parameter">__value</span>
<span class="types"><span class="type">any</span></span>
<br/>
The setting's new value
</li>
<li><span class="parameter">__saveToDisk</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Saves to disk immediately. Set to false if you prefer to manually save (via a confirm button, etc).
</li>
</ul>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.Settings.html#Noble.Settings.setup">Noble.Settings.setup</a></li>
<li><a href="../modules/Noble.Settings.html#Noble.Settings.get">Noble.Settings.get</a></li>
<li><a href="../modules/Noble.Settings.html#Noble.Settings.save">Noble.Settings.save</a></li>
</ul>
</dd>
<dt>
<a name = "Noble.Settings.reset"></a>
<span class="item-name">Noble.Settings.reset(__settingName[, __saveToDisk=true])<span>
</dt>
<dd>
Resets the value of a setting to its default value defined in <code>setup()</code>.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__settingName</span>
<span class="types"><span class="type">string</span></span>
<br/>
The name of the setting.
</li>
<li><span class="parameter">__saveToDisk</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Saves to disk immediately. Set to false if you prefer to manually save (via a confirm button, etc).
</li>
</ul>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.Settings.html#Noble.Settings.resetSome">Noble.Settings.resetSome</a></li>
<li><a href="../modules/Noble.Settings.html#Noble.Settings.resetAll">Noble.Settings.resetAll</a></li>
<li><a href="../modules/Noble.Settings.html#Noble.Settings.save">Noble.Settings.save</a></li>
</ul>
</dd>
<dt>
<a name = "Noble.Settings.resetSome"></a>
<span class="item-name">Noble.Settings.resetSome(__settingNames[, __saveToDisk=true])<span>
</dt>
<dd>
Resets the value of multiple settings to thier default value defined in <code>setup()</code>. This is useful if you are storing persistant stats like high scores in <a href="../modules/Noble.Settings.html">Settings</a> and want the player to be able to reset them seperately.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__settingNames</span>
<span class="types"><span class="type">table</span></span>
<br/>
The names of the settings, in an array-style table.
</li>
<li><span class="parameter">__saveToDisk</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Saves to disk immediately. Set to false if you prefer to manually save (via a confirm button, etc).
</li>
</ul>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.Settings.html#Noble.Settings.resetAll">Noble.Settings.resetAll</a></li>
<li><a href="../modules/Noble.Settings.html#Noble.Settings.save">Noble.Settings.save</a></li>
</ul>
</dd>
<dt>
<a name = "Noble.Settings.resetAll"></a>
<span class="item-name">Noble.Settings.resetAll([__saveToDisk=true])<span>
</dt>
<dd>
Resets all settings to thier default values defined in <code>setup()</code>.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__saveToDisk</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
Saves to disk immediately. Set to false if you prefer to manually save (via a confirm button, etc).
</li>
</ul>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.Settings.html#Noble.Settings.resetSome">Noble.Settings.resetSome</a></li>
<li><a href="../modules/Noble.Settings.html#Noble.Settings.save">Noble.Settings.save</a></li>
</ul>
</dd>
<dt>
<a name = "Noble.Settings.save"></a>
<span class="item-name">Noble.Settings.save()<span>
</dt>
<dd>
Saves settings to disk.
You don't need to call this unless you set <code>__saveToDisk</code> as false when setting or resetting a setting (say that five times fast!).
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.Settings.html#Noble.Settings.set">Noble.Settings.set</a></li>
<li><a href="../modules/Noble.Settings.html#Noble.Settings.reset">Noble.Settings.reset</a></li>
<li><a href="../modules/Noble.Settings.html#Noble.Settings.resetAll">Noble.Settings.resetAll</a></li>
</ul>
</dd>
</dl>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<span><a href="https://github.com/NobleRobot/NobleEngine">Noble Engine</a> by Mark LaCroix, <a href="https://noblerobot.com">Noble Robot</a></span>
<span style="float:right;">
Documentation created using <a href="https://github.com/stevedonovan/LDoc">LDoc 1.5.0</a>.
</span>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

View File

@@ -0,0 +1,313 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Noble Engine API reference</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
<link rel="icon" href="favicon.ico">
</head>
<body>
<div id="container">
<div id="main">
<!-- Menu -->
<div id="navigation">
<a href="../index.html"><div class="logo">
<h1>Noble Engine</h1>
</div></a>
<div class="nav-module">
<h2>Noble.Text</h2>
<ul>
<h3>Constants </h3>
<ul>
<li><a href="#Noble.Text.ALIGN_LEFT">.ALIGN_LEFT</a></li>
<li><a href="#Noble.Text.ALIGN_RIGHT">.ALIGN_RIGHT</a></li>
<li><a href="#Noble.Text.ALIGN_CENTER">.ALIGN_CENTER</a></li>
</ul>
<h3>Fonts </h3>
<ul>
<li><a href="#Noble.Text.FONT_SYSTEM">.FONT_SYSTEM</a></li>
<li><a href="#Noble.Text.FONT_SMALL">.FONT_SMALL</a></li>
<li><a href="#Noble.Text.FONT_MEDIUM">.FONT_MEDIUM</a></li>
<li><a href="#Noble.Text.FONT_LARGE">.FONT_LARGE</a></li>
</ul>
<h3>Functions </h3>
<ul>
<li><a href="#Noble.Text.getCurrentFont">.getCurrentFont</a></li>
<li><a href="#Noble.Text.setFont">.setFont</a></li>
<li><a href="#Noble.Text.draw">.draw</a></li>
</ul>
</ul>
</div>
<div class="nav-modules">
<div class="nav-kind">
<h3>Modules</h3>
<ul>
<li><a href="../modules/Noble.html">Noble</a></li>
<li><a href="../modules/Noble.Animation.html">Noble.Animation</a></li>
<li><a href="../modules/Noble.Bonk.html">Noble.Bonk</a></li>
<li><a href="../modules/Noble.GameData.html">Noble.GameData</a></li>
<li><a href="../modules/Noble.Input.html">Noble.Input</a></li>
<li><a href="../modules/Noble.Menu.html">Noble.Menu</a></li>
<li><a href="../modules/Noble.Settings.html">Noble.Settings</a></li>
<li><span class="selected">Noble.Text</span></li>
<li><a href="../modules/Noble.Transition.html">Noble.Transition</a></li>
<li><a href="../modules/Ease.html">Ease</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Classes</h3>
<ul>
<li><a href="../classes/NobleScene.html">NobleScene</a></li>
<li><a href="../classes/NobleSprite.html">NobleSprite</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Examples</h3>
<ul>
<li><a href="../examples/SceneTemplate.lua.html">SceneTemplate.lua</a></li>
</ul>
</div>
</div>
</div>
<div id="content">
<h1>Noble.Text</h1>
<p>Text and font handling.</p>
<p>
</p>
<hr/>
<h2 class="section-header "><a name="Constants"></a>Constants </h2>
<!-- -->
<dl class="function">
<dt>
<a name = "Noble.Text.ALIGN_LEFT"></a>
<span class="item-name">Noble.Text.ALIGN_LEFT<span>
</dt>
<dd>
An alternate way to call Playdate SDK's <code>kTextAlignment.left</code>
</dd>
<dt>
<a name = "Noble.Text.ALIGN_RIGHT"></a>
<span class="item-name">Noble.Text.ALIGN_RIGHT<span>
</dt>
<dd>
An alternate way to call Playdate SDK's <code>kTextAlignment.right</code>
</dd>
<dt>
<a name = "Noble.Text.ALIGN_CENTER"></a>
<span class="item-name">Noble.Text.ALIGN_CENTER<span>
</dt>
<dd>
An alternate way to call Playdate SDK's <code>kTextAlignment.center</code>
</dd>
</dl>
<h2 class="section-header has-description"><a name="Fonts"></a>Fonts </h2>
<!-- -->
<div class="section-description">
You can use these fonts in your project, or override them with your own if you wish.
</div>
<h3>Usage</h3>
<pre class="example">Noble.Text.FONT_SMALL = Graphics.font.<span class="function-name">new</span>(<span class="string">"assets/fonts/MySmallFont"</span>)
Noble.Text.<span class="function-name">setFont</span>(Noble.Text.FONT_SMALL)</pre>
<dl class="function">
<dt>
<a name = "Noble.Text.FONT_SYSTEM"></a>
<span class="item-name">Noble.Text.FONT_SYSTEM<span>
</dt>
<dd>
The Playdate system font.
</dd>
<dt>
<a name = "Noble.Text.FONT_SMALL"></a>
<span class="item-name">Noble.Text.FONT_SMALL<span>
</dt>
<dd>
<strong>Noble Sans</strong>: A sans-serif 8×9 font, with English and Japanese-Kana character sets.
</dd>
<dt>
<a name = "Noble.Text.FONT_MEDIUM"></a>
<span class="item-name">Noble.Text.FONT_MEDIUM<span>
</dt>
<dd>
<strong>Noble Slab</strong>: (This font is not ready yet!)
</dd>
<dt>
<a name = "Noble.Text.FONT_LARGE"></a>
<span class="item-name">Noble.Text.FONT_LARGE<span>
</dt>
<dd>
<strong>Satchel Roughed</strong>: A sans-serif 17×14 rounded font, with an English character set.
</dd>
</dl>
<h2 class="section-header "><a name="Functions"></a>Functions </h2>
<!-- -->
<dl class="function">
<dt>
<a name = "Noble.Text.getCurrentFont"></a>
<span class="item-name">Noble.Text.getCurrentFont()<span>
</dt>
<dd>
<h3>Returns</h3>
<ol>
The currently set font.
</ol>
</dd>
<dt>
<a name = "Noble.Text.setFont"></a>
<span class="item-name">Noble.Text.setFont(__font, __variant)<span>
</dt>
<dd>
Set the current font
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__font</span>
<br/>
any
</li>
<li><span class="parameter">__variant</span>
<br/>
any
</li>
</ul>
</dd>
<dt>
<a name = "Noble.Text.draw"></a>
<span class="item-name">Noble.Text.draw(__string, __x, __y[, __alignment=Noble.Text.ALIGN_LEFT[, __localized=false[, __font=Noble.Text.getCurrentFont()]]])<span>
</dt>
<dd>
Abstracts multiple <code>playdate.text</code> drawing functions into one.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__string</span>
<span class="types"><span class="type">string</span></span>
<br/>
Display text or localization key.
</li>
<li><span class="parameter">__x</span>
<span class="types"><span class="type">number</span></span>
<br/>
</li>
<li><span class="parameter">__y</span>
<span class="types"><span class="type">number</span></span>
<br/>
</li>
<li><span class="parameter">__alignment</span>
<span class="default">= <span class="value">Noble.Text.ALIGN_LEFT</span> (default)</span>
<br/>
Left, right, or center!
</li>
<li><span class="parameter">__localized</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">false</span> (default)</span>
<br/>
If true, <code>__string</code> is a localization key rather than display text.
</li>
<li><span class="parameter">__font</span>
<span class="default">= <span class="value">Noble.Text.getCurrentFont()</span> (default)</span>
<br/>
A font to use. If not set, the <code>currentFont</code> is used. If set, the <code>currentFont</code> is not updated.
</li>
</ul>
</dd>
</dl>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<span><a href="https://github.com/NobleRobot/NobleEngine">Noble Engine</a> by Mark LaCroix, <a href="https://noblerobot.com">Noble Robot</a></span>
<span style="float:right;">
Documentation created using <a href="https://github.com/stevedonovan/LDoc">LDoc 1.5.0</a>.
</span>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,240 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Noble Engine API reference</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
<link rel="icon" href="favicon.ico">
</head>
<body>
<div id="container">
<div id="main">
<!-- Menu -->
<div id="navigation">
<a href="../index.html"><div class="logo">
<h1>Noble Engine</h1>
</div></a>
<div class="nav-module">
<h2>Noble.TransitionType</h2>
<ul>
<h3>Constants </h3>
<ul>
<li><a href="#Noble.TransitionType.CUT">.CUT</a></li>
<li><a href="#Noble.TransitionType.CROSS_DISSOLVE">.CROSS_DISSOLVE</a></li>
<li><a href="#Noble.TransitionType.DIP_TO_BLACK">.DIP_TO_BLACK</a></li>
<li><a href="#Noble.TransitionType.DIP_TO_WHITE">.DIP_TO_WHITE</a></li>
<li><a href="#Noble.TransitionType.DIP_WIDGET_SATCHEL">.DIP_WIDGET_SATCHEL</a></li>
<li><a href="#Noble.TransitionType.DIP_METRO_NEXUS">.DIP_METRO_NEXUS</a></li>
<li><a href="#Noble.TransitionType.SLIDE_OFF_LEFT">.SLIDE_OFF_LEFT</a></li>
<li><a href="#Noble.TransitionType.SLIDE_OFF_RIGHT">.SLIDE_OFF_RIGHT</a></li>
<li><a href="#Noble.TransitionType.SLIDE_OFF_UP">.SLIDE_OFF_UP</a></li>
<li><a href="#Noble.TransitionType.SLIDE_OFF_DOWN">.SLIDE_OFF_DOWN</a></li>
</ul>
</ul>
</div>
<div class="nav-modules">
<div class="nav-kind">
<h3>Modules</h3>
<ul>
<li><a href="../modules/Noble.html">Noble</a></li>
<li><a href="../modules/Noble.Animation.html">Noble.Animation</a></li>
<li><a href="../modules/Noble.Bonk.html">Noble.Bonk</a></li>
<li><a href="../modules/Noble.GameData.html">Noble.GameData</a></li>
<li><a href="../modules/Noble.Input.html">Noble.Input</a></li>
<li><a href="../modules/Noble.Menu.html">Noble.Menu</a></li>
<li><a href="../modules/Noble.Settings.html">Noble.Settings</a></li>
<li><a href="../modules/Noble.Text.html">Noble.Text</a></li>
<li><span class="selected">Noble.TransitionType</span></li>
</ul>
</div>
<div class="nav-kind">
<h3>Classes</h3>
<ul>
<li><a href="../classes/NobleScene.html">NobleScene</a></li>
<li><a href="../classes/NobleSprite.html">NobleSprite</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Examples</h3>
<ul>
<li><a href="../examples/SceneTemplate.lua.html">SceneTemplate.lua</a></li>
</ul>
</div>
</div>
</div>
<div id="content">
<h1>Noble.TransitionType</h1>
<p>A set of constants for scene transition animations.</p>
<p>
</p>
<h3>See</h3>
<ul>
<a href="../modules/Noble.html#transition">Noble.transition</a>
</ul>
<hr/>
<h2 class="section-header "><a name="Constants"></a>Constants </h2>
<!-- -->
<dl class="function">
<dt>
<a name = "Noble.TransitionType.CUT"></a>
<span class="item-name">Noble.TransitionType.CUT<span>
</dt>
<dd>
An all-time classic.
</dd>
<dt>
<a name = "Noble.TransitionType.CROSS_DISSOLVE"></a>
<span class="item-name">Noble.TransitionType.CROSS_DISSOLVE<span>
</dt>
<dd>
A simple cross-fade.
</dd>
<dt>
<a name = "Noble.TransitionType.DIP_TO_BLACK"></a>
<span class="item-name">Noble.TransitionType.DIP_TO_BLACK<span>
</dt>
<dd>
Fade to black, then to the next scene.
</dd>
<dt>
<a name = "Noble.TransitionType.DIP_TO_WHITE"></a>
<span class="item-name">Noble.TransitionType.DIP_TO_WHITE<span>
</dt>
<dd>
Fade to white, then to the next scene.
</dd>
<dt>
<a name = "Noble.TransitionType.DIP_WIDGET_SATCHEL"></a>
<span class="item-name">Noble.TransitionType.DIP_WIDGET_SATCHEL<span>
</dt>
<dd>
An "accordion" transition, from "Widget Satchel" by Noble Robot.
</dd>
<dt>
<a name = "Noble.TransitionType.DIP_METRO_NEXUS"></a>
<span class="item-name">Noble.TransitionType.DIP_METRO_NEXUS<span>
</dt>
<dd>
A "cascade" transition, from "Metro Nexus" by Noble Robot.
</dd>
<dt>
<a name = "Noble.TransitionType.SLIDE_OFF_LEFT"></a>
<span class="item-name">Noble.TransitionType.SLIDE_OFF_LEFT<span>
</dt>
<dd>
The existing scene slides off the left side of the screen, revealing the next scene.
</dd>
<dt>
<a name = "Noble.TransitionType.SLIDE_OFF_RIGHT"></a>
<span class="item-name">Noble.TransitionType.SLIDE_OFF_RIGHT<span>
</dt>
<dd>
The existing scene slides off the right side of the screen, revealing the next scene.
</dd>
<dt>
<a name = "Noble.TransitionType.SLIDE_OFF_UP"></a>
<span class="item-name">Noble.TransitionType.SLIDE_OFF_UP<span>
</dt>
<dd>
The existing scene slides off the top of the screen.
</dd>
<dt>
<a name = "Noble.TransitionType.SLIDE_OFF_DOWN"></a>
<span class="item-name">Noble.TransitionType.SLIDE_OFF_DOWN<span>
</dt>
<dd>
The existing scene slides off the bottom of the screen, revealing the next scene.
</dd>
</dl>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<span><a href="https://github.com/NobleRobot/NobleEngine">Noble Engine</a> by Mark LaCroix, <a href="https://noblerobot.com">Noble Robot</a></span>
<span style="float:right;">
Documentation created using <a href="https://github.com/stevedonovan/LDoc">LDoc 1.5.0</a>.
</span>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

View File

@@ -0,0 +1,476 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Noble Engine API reference</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
<link rel="icon" href="favicon.ico">
</head>
<body>
<div id="container">
<div id="main">
<!-- Menu -->
<div id="navigation">
<a href="../index.html"><div class="logo">
<h1>Noble Engine</h1>
</div></a>
<div class="nav-module">
<h2>Noble</h2>
<ul>
<h3>Functions</h3>
<ul>
<li><a href="#new">.new</a></li>
<li><a href="#engineInitialized">.engineInitialized</a></li>
<li><a href="#getConfig">.getConfig</a></li>
<li><a href="#setConfig">.setConfig</a></li>
<li><a href="#resetConfig">.resetConfig</a></li>
<li><a href="#transition">.transition</a></li>
<li><a href="#currentScene">.currentScene</a></li>
<li><a href="#currentSceneName">.currentSceneName</a></li>
<li><a href="#isTransitioning">.isTransitioning</a></li>
</ul>
<h3>Tables</h3>
<ul>
<li><a href="#configuration">.configuration</a></li>
</ul>
<h3>Fields</h3>
<ul>
<li><a href="#showFPS">.showFPS</a></li>
</ul>
</ul>
</div>
<div class="nav-modules">
<div class="nav-kind">
<h3>Modules</h3>
<ul>
<li><span class="selected">Noble</span></li>
<li><a href="../modules/Noble.Animation.html">Noble.Animation</a></li>
<li><a href="../modules/Noble.Bonk.html">Noble.Bonk</a></li>
<li><a href="../modules/Noble.GameData.html">Noble.GameData</a></li>
<li><a href="../modules/Noble.Input.html">Noble.Input</a></li>
<li><a href="../modules/Noble.Menu.html">Noble.Menu</a></li>
<li><a href="../modules/Noble.Settings.html">Noble.Settings</a></li>
<li><a href="../modules/Noble.Text.html">Noble.Text</a></li>
<li><a href="../modules/Noble.Transition.html">Noble.Transition</a></li>
<li><a href="../modules/Ease.html">Ease</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Classes</h3>
<ul>
<li><a href="../classes/NobleScene.html">NobleScene</a></li>
<li><a href="../classes/NobleSprite.html">NobleSprite</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Examples</h3>
<ul>
<li><a href="../examples/SceneTemplate.lua.html">SceneTemplate.lua</a></li>
</ul>
</div>
</div>
</div>
<div id="content">
<h1>Noble</h1>
<p>A li'l game engine for Playdate.</p>
<p>
</p>
<hr/>
<h2 class="section-header "><a name="Functions"></a>Functions</h2>
<!-- -->
<dl class="function">
<dt>
<a name = "new"></a>
<span class="item-name">new(StartingScene[, __launcherTransitionDuration=0[, __launcherTransition=Noble.Transition.DipToBlack[, __launcherTransitionProperties={}[, __configuration={}]]]])<span>
</dt>
<dd>
Engine initialization. Run this once in your main.lua file to begin your game.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">StartingScene</span>
<span class="types"><a class="type" href="../classes/NobleScene.html#">NobleScene</a></span>
<br/>
This is the scene your game begins with, such as a title screen, loading screen, splash screen, etc. <strong>NOTE: Pass the scene's class name, not an instance of the scene.</strong>
</li>
<li><span class="parameter">__launcherTransitionDuration</span>
<span class="types"><span class="type">number</span></span>
<span class="default">= <span class="value">0</span> (default)</span>
<br/>
If you want to transition from the final frame of your launch image sequence, enter a duration in seconds here.
</li>
<li><span class="parameter">__launcherTransition</span>
<span class="types"><span class="type">Noble.Transition</span></span>
<span class="default">= <span class="value">Noble.Transition.DipToBlack</span> (default)</span>
<br/>
If a transition duration is set, use this transition type.
</li>
<li><span class="parameter">__launcherTransitionProperties</span>
<span class="types"><span class="type">table</span></span>
<span class="default">= <span class="value">{}</span> (default)</span>
<br/>
Provide a table of properties to apply to the launcher transition. See the documentation for the transition you're using for a list of available properties.
</li>
<li><span class="parameter">__configuration</span>
<span class="types"><span class="type">table</span></span>
<span class="default">= <span class="value">{}</span> (default)</span>
<br/>
Provide a table of Noble Engine configuration values. This will run <a href="../modules/Noble.html#setConfig">Noble.setConfig</a> for you at launch.
</li>
</ul>
<h3>See</h3>
<ul>
<li><a href="../classes/NobleScene.html#">NobleScene</a></li>
<li><a href="../modules/Noble.Transition.html#">Noble.Transition</a></li>
<li><a href="../modules/Noble.html#setConfig">setConfig</a></li>
</ul>
<h3>Usage</h3>
<pre class="example">Noble.<span class="function-name">new</span>(
TitleScreen,
<span class="number">2</span>,
Noble.Transition.DipToWhite,
{
holdTime = <span class="number">0</span>,
ease = Ease.outInQuad
},
{
defaultTransition = Noble.Transition.Imagetable,
defaultTransitionDuration = <span class="number">1.75</span>,
enableDebugBonkChecking = <span class="keyword">true</span>,
}
)</pre>
</dd>
<dt>
<a name = "engineInitialized"></a>
<span class="item-name">engineInitialized()<span>
</dt>
<dd>
This checks to see if <a href="../modules/Noble.html#new">Noble.new</a> has been run. It is used internally to ward off bonks.
<h3>Returns</h3>
<ol>
<span class="types"><span class="type">bool</span></span>
</ol>
<h3>See</h3>
<ul>
<a href="../modules/Noble.Bonk.html#">Noble.Bonk</a>
</ul>
</dd>
<dt>
<a name = "getConfig"></a>
<span class="item-name">getConfig()<span>
</dt>
<dd>
Retrieve miscellaneous Noble Engine configuration options / default values
<h3>Returns</h3>
<ol>
A table of all configuration values
</ol>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.html#configuration">configuration</a></li>
<li><a href="../modules/Noble.html#setConfig">setConfig</a></li>
</ul>
</dd>
<dt>
<a name = "setConfig"></a>
<span class="item-name">setConfig(__configuration)<span>
</dt>
<dd>
Optionally customize miscellaneous Noble Engine configuration options / default values. You may run this method to change these values during runtime.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">__configuration</span>
<span class="types"><span class="type">table</span></span>
<br/>
This is a table with your configuration values in it.
</li>
</ul>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.html#configuration">configuration</a></li>
<li><a href="../modules/Noble.html#getConfig">getConfig</a></li>
</ul>
</dd>
<dt>
<a name = "resetConfig"></a>
<span class="item-name">resetConfig()<span>
</dt>
<dd>
Reset miscellaneous Noble Engine configuration values to their defaults.
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.html#getConfig">getConfig</a></li>
<li><a href="../modules/Noble.html#setConfig">setConfig</a></li>
</ul>
</dd>
<dt>
<a name = "transition"></a>
<span class="item-name">transition(NewScene[, __duration=1.5[, __transition=Noble.TransitionType.DIP_TO_BLACK[, __transitionProperties={}]]])<span>
</dt>
<dd>
Transition to a new scene (at the end of this frame).
This method will create a new scene, mark the previous one for garbage collection, and animate between them.
Additional calls to this method within the same frame (before the already-called transition begins), will override previous calls. Any calls to this method once a transition begins will be ignored until the transition completes.
<h3>Parameters</h3>
<ul class="parameters">
<li><span class="parameter">NewScene</span>
<span class="types"><a class="type" href="../classes/NobleScene.html#">NobleScene</a></span>
<br/>
The scene to transition to. Pass the scene's class, not an instance of the scene. You always transition from <a href="../modules/Noble.html#currentScene">Noble.currentScene</a>
</li>
<li><span class="parameter">__duration</span>
<span class="types"><span class="type">number</span></span>
<span class="default">= <span class="value">1.5</span> (default)</span>
<br/>
The length of the transition, in seconds.
</li>
<li><span class="parameter">__transition</span>
<span class="types"><span class="type">Noble.Transition</span></span>
<span class="default">= <span class="value">Noble.TransitionType.DIP_TO_BLACK</span> (default)</span>
<br/>
If a transition duration is set, use this transition type. If not set, it will use the value of <code>configuration.defaultTransition</code>.
</li>
<li><span class="parameter">__transitionProperties</span>
<span class="types"><span class="type">table</span></span>
<span class="default">= <span class="value">{}</span> (default)</span>
<br/>
A table consisting of properties for this transition. Properties not set here will use values that transition's <code>defaultProperties</code> table.
</li>
</ul>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.html#isTransitioning">Noble.isTransitioning</a></li>
<li><a href="../classes/NobleScene.html#">NobleScene</a></li>
<li><a href="../modules/Noble.Transition.html#">Noble.Transition</a></li>
<li><a href="../modules/Noble.Transition.html#Noble.Transition.SpotlightMask.defaultProperties">Noble.Transition.defaultProperties</a></li>
</ul>
<h3>Usage</h3>
<pre class="example">Noble.<span class="function-name">transition</span>(Level2, <span class="number">1</span>, Noble.Transition.CrossDissolve, {
dither = Graphics.image.kDitherTypeDiagonalLine
ease = Ease.outQuint
})
<span class="comment">--
</span>Noble.<span class="function-name">transition</span>(Level2, <span class="number">1</span>, Noble.Transition.DipToBlack, {
holdTime = <span class="number">0.5</span>,
ease = Ease.outInElastic
})
<span class="comment">--
</span>Noble.<span class="function-name">transition</span>(Level2, <span class="number">1</span>, Noble.Transition.SlideOff, {
x = <span class="number">400</span>,
y = <span class="number">150</span>
rotation = <span class="number">45</span>
})</pre>
</dd>
<dt>
<a name = "currentScene"></a>
<span class="item-name">currentScene()<span>
</dt>
<dd>
Get the current scene object
<h3>Returns</h3>
<ol>
<span class="types"><a class="type" href="../classes/NobleScene.html#">NobleScene</a></span>
</ol>
</dd>
<dt>
<a name = "currentSceneName"></a>
<span class="item-name">currentSceneName()<span>
</dt>
<dd>
Get the name of the current scene
<h3>Returns</h3>
<ol>
<span class="types"><span class="type">string</span></span>
</ol>
</dd>
<dt>
<a name = "isTransitioning"></a>
<span class="item-name">isTransitioning()<span>
</dt>
<dd>
Check to see if the game is transitioning between scenes.
Useful to control game logic that lives outside of a scene's <code>update()</code> method.
<h3>Returns</h3>
<ol>
<span class="types"><span class="type">bool</span></span>
</ol>
</dd>
</dl>
<h2 class="section-header "><a name="Tables"></a>Tables</h2>
<!-- -->
<dl class="function">
<dt>
<a name = "configuration"></a>
<span class="item-name">configuration<span>
</dt>
<dd>
Miscellaneous Noble Engine configuration options / default values.
This table cannot be edited directly. Use <a href="../modules/Noble.html#getConfig">Noble.getConfig</a> and <a href="../modules/Noble.html#setConfig">Noble.setConfig</a>.
<h3>Fields</h3>
<ul class="parameters">
<li><span class="parameter">defaultTransition</span>
<span class="types"><span class="type">Noble.Transition</span></span>
<span class="default">= <span class="value">Noble.Transition.DipToBlack</span> (default)</span>
<br/>
When running <a href="../modules/Noble.html#transition">Noble.transition</a> if the transition is unspecified, it will use this one.
</li>
<li><span class="parameter">defaultTransitionDuration</span>
<span class="types"><span class="type">number</span></span>
<span class="default">= <span class="value">1.5</span> (default)</span>
<br/>
When running <a href="../modules/Noble.html#transition">Noble.transition</a> if the scene transition duration is unspecified, it will take this long in seconds.
</li>
<li><span class="parameter">enableDebugBonkChecking</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">false</span> (default)</span>
<br/>
Noble Engine-specific errors are called "Bonks." You can set this to true during development in order to check for more of them. However, it uses resources, so you will probably want to turn it off before release.
</li>
<li><span class="parameter">alwaysRedraw</span>
<span class="types"><span class="type">boolean</span></span>
<span class="default">= <span class="value">true</span> (default)</span>
<br/>
This sets the Playdate SDK method <code>playdate.graphics.sprite.setAlwaysRedraw</code>. See the Playdate SDK for details on how this function works, and the reasons you might want to set it as true or false for your project.
</li>
</ul>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.html#getConfig">Noble.getConfig</a></li>
<li><a href="../modules/Noble.html#setConfig">Noble.setConfig</a></li>
<li><a href="../modules/Noble.Bonk.html#Noble.Bonk.startCheckingDebugBonks">Noble.Bonk.startCheckingDebugBonks</a></li>
</ul>
</dd>
</dl>
<h2 class="section-header "><a name="Fields"></a>Fields</h2>
<!-- -->
<dl class="function">
<dt>
<a name = "showFPS"></a>
<span class="item-name">showFPS<span>
</dt>
<dd>
Show/hide the Playdate SDK's FPS counter.
<ul class="parameters">
<li><span class="parameter">bool</span>
<br/>
</li>
</ul>
</dd>
</dl>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<span><a href="https://github.com/NobleRobot/NobleEngine">Noble Engine</a> by Mark LaCroix, <a href="https://noblerobot.com">Noble Robot</a></span>
<span style="float:right;">
Documentation created using <a href="https://github.com/stevedonovan/LDoc">LDoc 1.5.0</a>.
</span>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

View File

@@ -0,0 +1,92 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Noble Engine API reference</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
<link rel="icon" href="favicon.ico">
</head>
<body>
<div id="container">
<div id="main">
<!-- Menu -->
<div id="navigation">
<a href="../index.html"><div class="logo">
<h1>Noble Engine</h1>
</div></a>
<div class="nav-modules">
<div class="nav-kind">
<h3>Modules</h3>
<ul>
<li><a href="../modules/Noble.html">Noble</a></li>
<li><a href="../modules/Noble.Animation.html">Noble.Animation</a></li>
<li><a href="../modules/Noble.Bonk.html">Noble.Bonk</a></li>
<li><a href="../modules/Noble.GameData.html">Noble.GameData</a></li>
<li><a href="../modules/Noble.Input.html">Noble.Input</a></li>
<li><a href="../modules/Noble.Menu.html">Noble.Menu</a></li>
<li><a href="../modules/Noble.Settings.html">Noble.Settings</a></li>
<li><a href="../modules/Noble.Text.html">Noble.Text</a></li>
<li><a href="../modules/Noble.Transition.html">Noble.Transition</a></li>
<li><span class="selected">modules.Noble.Transition.Imagetable</span></li>
<li><a href="../modules/modules.Noble.Transition.ImagetableMask.html">modules.Noble.Transition.ImagetableMask</a></li>
<li><a href="../modules/Ease.html">Ease</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Classes</h3>
<ul>
<li><a href="../classes/NobleScene.html">NobleScene</a></li>
<li><a href="../classes/NobleSprite.html">NobleSprite</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Examples</h3>
<ul>
<li><a href="../examples/SceneTemplate.lua.html">SceneTemplate.lua</a></li>
</ul>
</div>
</div>
</div>
<div id="content">
<h1>modules.Noble.Transition.Imagetable</h1>
<p>Transition properties.</p>
<p>
</p>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.html#transition">Noble.transition</a></li>
<li><a href="../modules/Noble.Transition.html#Noble.Transition.setDefaultProperties">Noble.Transition.setDefaultProperties</a></li>
</ul>
<hr/>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<span><a href="https://github.com/NobleRobot/NobleEngine">Noble Engine</a> by Mark LaCroix, <a href="https://noblerobot.com">Noble Robot</a></span>
<span style="float:right;">
Documentation created using <a href="https://github.com/stevedonovan/LDoc">LDoc 1.5.0</a>.
</span>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

View File

@@ -0,0 +1,92 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>Noble Engine API reference</title>
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
<link rel="icon" href="favicon.ico">
</head>
<body>
<div id="container">
<div id="main">
<!-- Menu -->
<div id="navigation">
<a href="../index.html"><div class="logo">
<h1>Noble Engine</h1>
</div></a>
<div class="nav-modules">
<div class="nav-kind">
<h3>Modules</h3>
<ul>
<li><a href="../modules/Noble.html">Noble</a></li>
<li><a href="../modules/Noble.Animation.html">Noble.Animation</a></li>
<li><a href="../modules/Noble.Bonk.html">Noble.Bonk</a></li>
<li><a href="../modules/Noble.GameData.html">Noble.GameData</a></li>
<li><a href="../modules/Noble.Input.html">Noble.Input</a></li>
<li><a href="../modules/Noble.Menu.html">Noble.Menu</a></li>
<li><a href="../modules/Noble.Settings.html">Noble.Settings</a></li>
<li><a href="../modules/Noble.Text.html">Noble.Text</a></li>
<li><a href="../modules/Noble.Transition.html">Noble.Transition</a></li>
<li><a href="../modules/modules.Noble.Transition.Imagetable.html">modules.Noble.Transition.Imagetable</a></li>
<li><span class="selected">modules.Noble.Transition.ImagetableMask</span></li>
<li><a href="../modules/Ease.html">Ease</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Classes</h3>
<ul>
<li><a href="../classes/NobleScene.html">NobleScene</a></li>
<li><a href="../classes/NobleSprite.html">NobleSprite</a></li>
</ul>
</div>
<div class="nav-kind">
<h3>Examples</h3>
<ul>
<li><a href="../examples/SceneTemplate.lua.html">SceneTemplate.lua</a></li>
</ul>
</div>
</div>
</div>
<div id="content">
<h1>modules.Noble.Transition.ImagetableMask</h1>
<p>Transition properties.</p>
<p>
</p>
<h3>See</h3>
<ul>
<li><a href="../modules/Noble.html#transition">Noble.transition</a></li>
<li><a href="../modules/Noble.Transition.html#Noble.Transition.setDefaultProperties">Noble.Transition.setDefaultProperties</a></li>
</ul>
<hr/>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<span><a href="https://github.com/NobleRobot/NobleEngine">Noble Engine</a> by Mark LaCroix, <a href="https://noblerobot.com">Noble Robot</a></span>
<span style="float:right;">
Documentation created using <a href="https://github.com/stevedonovan/LDoc">LDoc 1.5.0</a>.
</span>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>