diff options
| -rw-r--r-- | docs/FelFlame.html | 2 | ||||
| -rw-r--r-- | docs/FelFlame/ComponentManager.html | 182 | ||||
| -rw-r--r-- | docs/FelFlame/Components.html | 6 | ||||
| -rw-r--r-- | docs/FelFlame/Entities.html | 104 | ||||
| -rw-r--r-- | docs/FelFlame/Scenes.html | 120 | ||||
| -rw-r--r-- | docs/FelFlame/Stage.html | 58 | ||||
| -rw-r--r-- | docs/FelFlame/Systems.html | 346 | ||||
| -rw-r--r-- | docs/Felflame_.html | 2 | ||||
| -rw-r--r-- | docs/_index.html | 2 | ||||
| -rw-r--r-- | docs/file.README.html | 2 | ||||
| -rw-r--r-- | docs/index.html | 2 | ||||
| -rw-r--r-- | docs/method_list.html | 54 | ||||
| -rw-r--r-- | docs/top-level-namespace.html | 2 | ||||
| -rw-r--r-- | lib/felflame/component_manager.rb | 53 | ||||
| -rw-r--r-- | lib/felflame/entity_manager.rb | 35 | ||||
| -rw-r--r-- | lib/felflame/scene_manager.rb | 12 | ||||
| -rw-r--r-- | lib/felflame/stage_manager.rb | 32 | ||||
| -rw-r--r-- | lib/felflame/system_manager.rb | 47 | ||||
| -rw-r--r-- | spec/component_manager_spec.rb | 32 | ||||
| -rw-r--r-- | spec/entity_manager_spec.rb | 33 | ||||
| -rw-r--r-- | spec/scene_manager_spec.rb | 4 | ||||
| -rw-r--r-- | spec/stage_manager_spec.rb | 79 | ||||
| -rw-r--r-- | spec/system_manager_spec.rb | 42 |
23 files changed, 611 insertions, 640 deletions
diff --git a/docs/FelFlame.html b/docs/FelFlame.html index 8fd0fd6..ef9cb69 100644 --- a/docs/FelFlame.html +++ b/docs/FelFlame.html @@ -293,7 +293,7 @@ </div> <div id="footer"> - Generated on Thu Dec 30 07:28:05 2021 by + Generated on Mon Jan 3 06:20:47 2022 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.26 (ruby-2.7.3). </div> diff --git a/docs/FelFlame/ComponentManager.html b/docs/FelFlame/ComponentManager.html index 599b547..119a7ed 100644 --- a/docs/FelFlame/ComponentManager.html +++ b/docs/FelFlame/ComponentManager.html @@ -531,23 +531,23 @@ <pre class="lines"> -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122</pre> +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 109</span> + <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 156</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='op'>**</span><span class='id identifier rubyid_attrs'>attrs</span><span class='rparen'>)</span> <span class='comment'># Prepare the object @@ -614,12 +614,12 @@ <pre class="lines"> -159 -160 -161</pre> +206 +207 +208</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 159</span> + <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 206</span> <span class='kw'>def</span> <span class='id identifier rubyid_addition_triggers'>addition_triggers</span> <span class='ivar'>@addition_triggers</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> @@ -670,12 +670,12 @@ <pre class="lines"> -175 -176 -177</pre> +222 +223 +224</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 175</span> + <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 222</span> <span class='kw'>def</span> <span class='id identifier rubyid_attr_triggers'>attr_triggers</span> <span class='ivar'>@attr_triggers</span> <span class='op'>||=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> @@ -726,12 +726,12 @@ <pre class="lines"> -167 -168 -169</pre> +214 +215 +216</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 167</span> + <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 214</span> <span class='kw'>def</span> <span class='id identifier rubyid_removal_triggers'>removal_triggers</span> <span class='ivar'>@removal_triggers</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> @@ -787,12 +787,12 @@ <pre class="lines"> -86 -87 -88</pre> +133 +134 +135</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 86</span> + <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 133</span> <span class='kw'>def</span> <span class='id identifier rubyid_addition_triggers'>addition_triggers</span> <span class='ivar'>@addition_triggers</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> @@ -843,12 +843,12 @@ <pre class="lines"> -102 -103 -104</pre> +149 +150 +151</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 102</span> + <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 149</span> <span class='kw'>def</span> <span class='id identifier rubyid_attr_triggers'>attr_triggers</span> <span class='ivar'>@attr_triggers</span> <span class='op'>||=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> @@ -899,12 +899,12 @@ <pre class="lines"> -94 -95 -96</pre> +141 +142 +143</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 94</span> + <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 141</span> <span class='kw'>def</span> <span class='id identifier rubyid_removal_triggers'>removal_triggers</span> <span class='ivar'>@removal_triggers</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> @@ -965,18 +965,18 @@ <pre class="lines"> -213 -214 -215 -216 -217 -218 -219 -220 -221</pre> +260 +261 +262 +263 +264 +265 +266 +267 +268</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 213</span> + <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 260</span> <span class='kw'>def</span> <span class='id identifier rubyid_attr_changed_trigger_systems'>attr_changed_trigger_systems</span><span class='lparen'>(</span><span class='id identifier rubyid_attr'>attr</span><span class='rparen'>)</span> <span class='id identifier rubyid_systems_to_execute'>systems_to_execute</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_attr_triggers'>attr_triggers</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr'>attr</span><span class='rbracket'>]</span> @@ -1036,22 +1036,22 @@ <pre class="lines"> -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236</pre> +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 224</span> + <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 271</span> <span class='kw'>def</span> <span class='id identifier rubyid_delete'>delete</span> <span class='id identifier rubyid_addition_triggers'>addition_triggers</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_system'>system</span><span class='op'>|</span> @@ -1110,12 +1110,12 @@ <pre class="lines"> -188 -189 -190</pre> +235 +236 +237</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 188</span> + <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 235</span> <span class='kw'>def</span> <span class='id identifier rubyid_entities'>entities</span> <span class='ivar'>@entities</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> @@ -1164,17 +1164,17 @@ <pre class="lines"> -194 -195 -196 -197 -198 -199 -200 -201</pre> +241 +242 +243 +244 +245 +246 +247 +248</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 194</span> + <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 241</span> <span class='kw'>def</span> <span class='id identifier rubyid_entity'>entity</span> <span class='kw'>if</span> <span class='id identifier rubyid_entities'>entities</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> @@ -1233,16 +1233,16 @@ <pre class="lines"> -239 -240 -241 -242 -243 -244 -245</pre> +286 +287 +288 +289 +290 +291 +292</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 239</span> + <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 286</span> <span class='kw'>def</span> <span class='id identifier rubyid_to_h'>to_h</span> <span class='id identifier rubyid_return_hash'>return_hash</span> <span class='op'>=</span> <span class='id identifier rubyid_instance_variables'>instance_variables</span><span class='period'>.</span><span class='id identifier rubyid_each_with_object'>each_with_object</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_final'>final</span><span class='op'>|</span> @@ -1300,14 +1300,14 @@ <pre class="lines"> -205 -206 -207 -208 -209</pre> +252 +253 +254 +255 +256</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 205</span> + <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 252</span> <span class='kw'>def</span> <span class='id identifier rubyid_update_attrs'>update_attrs</span><span class='lparen'>(</span><span class='op'>**</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span> @@ -1324,7 +1324,7 @@ </div> <div id="footer"> - Generated on Thu Dec 30 07:28:06 2021 by + Generated on Mon Jan 3 06:20:47 2022 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.26 (ruby-2.7.3). </div> diff --git a/docs/FelFlame/Components.html b/docs/FelFlame/Components.html index e3b6167..33d82b3 100644 --- a/docs/FelFlame/Components.html +++ b/docs/FelFlame/Components.html @@ -277,7 +277,8 @@ 43 44 45 -46</pre> +46 +47</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/felflame/component_manager.rb', line 18</span> @@ -289,6 +290,7 @@ <span class='id identifier rubyid_const_set'>const_set</span><span class='lparen'>(</span><span class='id identifier rubyid_component_name'>component_name</span><span class='comma'>,</span> <span class='const'>Class</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="ComponentManager.html" title="FelFlame::ComponentManager (class)">ComponentManager</a></span></span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span> + <span class='id identifier rubyid_update_const_cache'>update_const_cache</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_attr'>attr</span><span class='op'>|</span> <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="FelFlame::Components (module)">Components</a></span></span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='id identifier rubyid_component_name'>component_name</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_method_defined?'>method_defined?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_attr'>attr</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="FelFlame::Components (module)">Components</a></span></span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='id identifier rubyid_component_name'>component_name</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_method_defined?'>method_defined?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_attr'>attr</span><span class='embexpr_end'>}</span><span class='tstring_content'>=</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> @@ -321,7 +323,7 @@ </div> <div id="footer"> - Generated on Thu Dec 30 07:28:05 2021 by + Generated on Mon Jan 3 06:20:47 2022 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.26 (ruby-2.7.3). </div> diff --git a/docs/FelFlame/Entities.html b/docs/FelFlame/Entities.html index aca4cac..4308d4b 100644 --- a/docs/FelFlame/Entities.html +++ b/docs/FelFlame/Entities.html @@ -329,15 +329,7 @@ 8 9 10 -11 -12 -13 -14 -15 -16 -17 -18 -19</pre> +11</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/felflame/entity_manager.rb', line 7</span> @@ -345,14 +337,6 @@ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_components'>components</span><span class='rparen'>)</span> <span class='comment'># Add each component </span> <span class='id identifier rubyid_add'>add</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_components'>components</span><span class='rparen'>)</span> - - <span class='comment'># Fancy method redirection for when the `component` method is called -</span> <span class='ivar'>@component_redirect</span> <span class='op'>=</span> <span class='const'>Object</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> - <span class='ivar'>@component_redirect</span><span class='period'>.</span><span class='id identifier rubyid_instance_variable_set'>instance_variable_set</span><span class='lparen'>(</span><span class='symbol'>:@entity</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span> - <span class='ivar'>@component_redirect</span><span class='period'>.</span><span class='id identifier rubyid_define_singleton_method'>define_singleton_method</span><span class='lparen'>(</span><span class='symbol'>:[]</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_component_manager'>component_manager</span><span class='op'>|</span> - <span class='id identifier rubyid_instance_variable_get'>instance_variable_get</span><span class='lparen'>(</span><span class='symbol'>:@entity</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_component'>component</span><span class='lparen'>(</span><span class='id identifier rubyid_component_manager'>component_manager</span><span class='rparen'>)</span> - <span class='kw'>end</span> - <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid__data'>_data</span><span class='period'>.</span><span class='id identifier rubyid_push'>push</span> <span class='kw'>self</span> <span class='kw'>end</span></pre> </td> @@ -431,23 +415,23 @@ <pre class="lines"> +56 +57 +58 +59 +60 +61 +62 63 64 65 66 67 68 -69 -70 -71 -72 -73 -74 -75 -76</pre> +69</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/entity_manager.rb', line 63</span> + <pre class="code"><span class="info file"># File 'lib/felflame/entity_manager.rb', line 56</span> <span class='kw'>def</span> <span class='id identifier rubyid_add'>add</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_components_to_add'>components_to_add</span><span class='rparen'>)</span> <span class='id identifier rubyid_components_to_add'>components_to_add</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_component'>component</span><span class='op'>|</span> @@ -538,25 +522,27 @@ <pre class="lines"> +25 +26 +27 +28 +29 +30 +31 +32 33 34 35 36 -37 -38 -39 -40 -41 -42 -43 -44</pre> +37</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/entity_manager.rb', line 33</span> + <pre class="code"><span class="info file"># File 'lib/felflame/entity_manager.rb', line 25</span> <span class='kw'>def</span> <span class='id identifier rubyid_component'>component</span><span class='lparen'>(</span><span class='id identifier rubyid_manager'>manager</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_manager'>manager</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> - <span class='ivar'>@component_redirect</span> + <span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="FelFlame::Entities (class)">Entities</a></span></span><span class='period'>.</span><span class='id identifier rubyid_component_redirect'>component_redirect</span><span class='period'>.</span><span class='id identifier rubyid_entity'>entity</span> <span class='op'>=</span> <span class='kw'>self</span> + <span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="FelFlame::Entities (class)">Entities</a></span></span><span class='period'>.</span><span class='id identifier rubyid_component_redirect'>component_redirect</span> <span class='kw'>else</span> <span class='kw'>if</span> <span class='id identifier rubyid_components'>components</span><span class='lbracket'>[</span><span class='id identifier rubyid_manager'>manager</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>This entity(</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>) doesnt have any components of this type: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_manager'>manager</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span> @@ -610,12 +596,12 @@ <pre class="lines"> -23 -24 -25</pre> +15 +16 +17</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/entity_manager.rb', line 23</span> + <pre class="code"><span class="info file"># File 'lib/felflame/entity_manager.rb', line 15</span> <span class='kw'>def</span> <span class='id identifier rubyid_components'>components</span> <span class='ivar'>@components</span> <span class='op'>||=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> @@ -669,19 +655,19 @@ <pre class="lines"> +42 +43 +44 +45 +46 +47 +48 49 50 -51 -52 -53 -54 -55 -56 -57 -58</pre> +51</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/entity_manager.rb', line 49</span> + <pre class="code"><span class="info file"># File 'lib/felflame/entity_manager.rb', line 42</span> <span class='kw'>def</span> <span class='id identifier rubyid_delete'>delete</span> <span class='id identifier rubyid_components'>components</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_component_manager'>component_manager</span><span class='comma'>,</span> <span class='id identifier rubyid_component_array'>component_array</span><span class='op'>|</span> @@ -762,20 +748,20 @@ <pre class="lines"> +86 +87 +88 +89 +90 +91 +92 93 94 95 -96 -97 -98 -99 -100 -101 -102 -103</pre> +96</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/entity_manager.rb', line 93</span> + <pre class="code"><span class="info file"># File 'lib/felflame/entity_manager.rb', line 86</span> <span class='kw'>def</span> <span class='id identifier rubyid_remove'>remove</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_components_to_remove'>components_to_remove</span><span class='rparen'>)</span> <span class='id identifier rubyid_components_to_remove'>components_to_remove</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_component'>component</span><span class='op'>|</span> @@ -798,7 +784,7 @@ </div> <div id="footer"> - Generated on Thu Dec 30 07:28:05 2021 by + Generated on Mon Jan 3 06:20:47 2022 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.26 (ruby-2.7.3). </div> diff --git a/docs/FelFlame/Scenes.html b/docs/FelFlame/Scenes.html index 2c160fe..5a73e20 100644 --- a/docs/FelFlame/Scenes.html +++ b/docs/FelFlame/Scenes.html @@ -124,7 +124,7 @@ <li class="public "> <span class="summary_signature"> - <a href="#const_name-instance_method" title="#const_name (instance method)">#<strong>const_name</strong> ⇒ Object </a> + <a href="#priority-instance_method" title="#priority (instance method)">#<strong>priority</strong> ⇒ Object </a> @@ -133,8 +133,6 @@ - <span class="note title readonly">readonly</span> - @@ -144,7 +142,7 @@ <span class="summary_desc"><div class='inline'> -<p>The Constant name assigned to this Scene.</p> +<p>How early this Scene should be executed in a list of Scenes.</p> </div></span> </li> @@ -267,7 +265,7 @@ <li class="public "> <span class="summary_signature"> - <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(name) ⇒ Scenes </a> + <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(name, priority: 0) ⇒ Scenes </a> @@ -323,7 +321,7 @@ <div class="method_details first"> <h3 class="signature first" id="initialize-instance_method"> - #<strong>initialize</strong>(name) ⇒ <tt><span class='object_link'><a href="" title="FelFlame::Scenes (class)">Scenes</a></span></tt> + #<strong>initialize</strong>(name, priority: 0) ⇒ <tt><span class='object_link'><a href="" title="FelFlame::Scenes (class)">Scenes</a></span></tt> @@ -366,17 +364,17 @@ <pre class="lines"> -14 -15 -16 -17</pre> +20 +21 +22 +23</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 14</span> + <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 20</span> -<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span> +<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='label'>priority:</span> <span class='int'>0</span><span class='rparen'>)</span> + <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_priority'>priority</span> <span class='op'>=</span> <span class='id identifier rubyid_priority'>priority</span> <span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="FelFlame::Scenes (class)">Scenes</a></span></span><span class='period'>.</span><span class='id identifier rubyid_const_set'>const_set</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span> - <span class='ivar'>@const_name</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span> <span class='kw'>end</span></pre> </td> </tr> @@ -389,11 +387,11 @@ <h2>Instance Attribute Details</h2> - <span id=""></span> + <span id="priority=-instance_method"></span> <div class="method_details first"> - <h3 class="signature first" id="const_name-instance_method"> + <h3 class="signature first" id="priority-instance_method"> - #<strong>const_name</strong> ⇒ <tt>Object</tt> <span class="extras">(readonly)</span> + #<strong>priority</strong> ⇒ <tt>Object</tt> @@ -402,7 +400,7 @@ </h3><div class="docstring"> <div class="discussion"> -<p>The Constant name assigned to this Scene</p> +<p>How early this Scene should be executed in a list of Scenes</p> </div> @@ -416,15 +414,15 @@ <pre class="lines"> -4 -5 -6</pre> +10 +11 +12</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 4</span> + <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 10</span> -<span class='kw'>def</span> <span class='id identifier rubyid_const_name'>const_name</span> - <span class='ivar'>@const_name</span> +<span class='kw'>def</span> <span class='id identifier rubyid_priority'>priority</span> + <span class='ivar'>@priority</span> <span class='kw'>end</span></pre> </td> </tr> @@ -472,12 +470,12 @@ <pre class="lines"> -21 -22 -23</pre> +27 +28 +29</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 21</span> + <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 27</span> <span class='kw'>def</span> <span class='id identifier rubyid_systems'>systems</span> <span class='ivar'>@systems</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> @@ -538,20 +536,24 @@ <pre class="lines"> -34 -35 -36 -37 -38 -39</pre> +40 +41 +42 +43 +44 +45 +46 +47</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 34</span> + <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 40</span> <span class='kw'>def</span> <span class='id identifier rubyid_add'>add</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_systems_to_add'>systems_to_add</span><span class='rparen'>)</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_systems'>systems</span> <span class='op'>|=</span> <span class='id identifier rubyid_systems_to_add'>systems_to_add</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_systems'>systems</span> <span class='op'>=</span> <span class='id identifier rubyid_systems'>systems</span><span class='period'>.</span><span class='id identifier rubyid_sort_by'>sort_by</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:priority</span><span class='rparen'>)</span> - <span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Stage.html" title="FelFlame::Stage (module)">Stage</a></span></span><span class='period'>.</span><span class='id identifier rubyid_update_systems_list'>update_systems_list</span> <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Stage.html" title="FelFlame::Stage (module)">Stage</a></span></span><span class='period'>.</span><span class='id identifier rubyid_scenes'><span class='object_link'><a href="Stage.html#scenes-class_method" title="FelFlame::Stage.scenes (method)">scenes</a></span></span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='kw'>self</span> + <span class='id identifier rubyid_systems_to_add'>systems_to_add</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_system'>system</span><span class='op'>|</span> + <span class='id identifier rubyid_system'>system</span><span class='period'>.</span><span class='id identifier rubyid_scenes'>scenes</span> <span class='op'>|=</span> <span class='lbracket'>[</span><span class='kw'>self</span><span class='rbracket'>]</span> + <span class='kw'>end</span> <span class='kw'>true</span> <span class='kw'>end</span></pre> </td> @@ -603,13 +605,13 @@ <pre class="lines"> -27 -28 -29 -30</pre> +33 +34 +35 +36</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 27</span> + <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 33</span> <span class='kw'>def</span> <span class='id identifier rubyid_call'>call</span> <span class='id identifier rubyid_systems'>systems</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:call</span><span class='rparen'>)</span> @@ -664,19 +666,25 @@ <pre class="lines"> -52 -53 -54 -55 -56</pre> +58 +59 +60 +61 +62 +63 +64 +65</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 52</span> + <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 58</span> <span class='kw'>def</span> <span class='id identifier rubyid_clear'>clear</span> + <span class='id identifier rubyid_systems'>systems</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_system'>system</span><span class='op'>|</span> + <span class='id identifier rubyid_system'>system</span><span class='period'>.</span><span class='id identifier rubyid_scenes'>scenes</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span> <span class='kw'>self</span> + <span class='kw'>end</span> <span class='id identifier rubyid_systems'>systems</span><span class='period'>.</span><span class='id identifier rubyid_clear'>clear</span> - <span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Stage.html" title="FelFlame::Stage (module)">Stage</a></span></span><span class='period'>.</span><span class='id identifier rubyid_update_systems_list'>update_systems_list</span> <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Stage.html" title="FelFlame::Stage (module)">Stage</a></span></span><span class='period'>.</span><span class='id identifier rubyid_scenes'><span class='object_link'><a href="Stage.html#scenes-class_method" title="FelFlame::Stage.scenes (method)">scenes</a></span></span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='kw'>self</span> - <span class='kw'>true</span> + <span class='comment'>#FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self +</span> <span class='kw'>true</span> <span class='kw'>end</span></pre> </td> </tr> @@ -727,20 +735,16 @@ <pre class="lines"> -43 -44 -45 -46 -47 -48</pre> +51 +52 +53 +54</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 43</span> + <pre class="code"><span class="info file"># File 'lib/felflame/scene_manager.rb', line 51</span> <span class='kw'>def</span> <span class='id identifier rubyid_remove'>remove</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_systems_to_remove'>systems_to_remove</span><span class='rparen'>)</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_systems'>systems</span> <span class='op'>-=</span> <span class='id identifier rubyid_systems_to_remove'>systems_to_remove</span> - <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_systems'>systems</span> <span class='op'>=</span> <span class='id identifier rubyid_systems'>systems</span><span class='period'>.</span><span class='id identifier rubyid_sort_by'>sort_by</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:priority</span><span class='rparen'>)</span> - <span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Stage.html" title="FelFlame::Stage (module)">Stage</a></span></span><span class='period'>.</span><span class='id identifier rubyid_update_systems_list'>update_systems_list</span> <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Stage.html" title="FelFlame::Stage (module)">Stage</a></span></span><span class='period'>.</span><span class='id identifier rubyid_scenes'><span class='object_link'><a href="Stage.html#scenes-class_method" title="FelFlame::Stage.scenes (method)">scenes</a></span></span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='kw'>self</span> <span class='kw'>true</span> <span class='kw'>end</span></pre> </td> @@ -753,7 +757,7 @@ </div> <div id="footer"> - Generated on Thu Dec 30 07:28:05 2021 by + Generated on Mon Jan 3 06:20:47 2022 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.26 (ruby-2.7.3). </div> diff --git a/docs/FelFlame/Stage.html b/docs/FelFlame/Stage.html index b2e961b..892810b 100644 --- a/docs/FelFlame/Stage.html +++ b/docs/FelFlame/Stage.html @@ -289,12 +289,12 @@ <pre class="lines"> -58 -59 -60</pre> +40 +41 +42</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/stage_manager.rb', line 58</span> + <pre class="code"><span class="info file"># File 'lib/felflame/stage_manager.rb', line 40</span> <span class='kw'>def</span> <span class='id identifier rubyid_scenes'>scenes</span> <span class='ivar'>@scenes</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> @@ -359,20 +359,14 @@ 12 13 14 -15 -16 -17 -18</pre> +15</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/felflame/stage_manager.rb', line 11</span> <span class='kw'>def</span> <span class='id identifier rubyid_add'>add</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_scenes_to_add'>scenes_to_add</span><span class='rparen'>)</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_scenes'>scenes</span> <span class='op'>|=</span> <span class='id identifier rubyid_scenes_to_add'>scenes_to_add</span> - <span class='id identifier rubyid_scenes_to_add'>scenes_to_add</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_scene'>scene</span><span class='op'>|</span> - <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_systems'>systems</span> <span class='op'>|=</span> <span class='id identifier rubyid_scene'>scene</span><span class='period'>.</span><span class='id identifier rubyid_systems'>systems</span> - <span class='kw'>end</span> - <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_systems'>systems</span> <span class='op'>=</span> <span class='id identifier rubyid_systems'>systems</span><span class='period'>.</span><span class='id identifier rubyid_sort_by'>sort_by</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:priority</span><span class='rparen'>)</span> + <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_scenes'>scenes</span> <span class='op'>=</span> <span class='id identifier rubyid_scenes'>scenes</span><span class='period'>.</span><span class='id identifier rubyid_sort_by'>sort_by</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:priority</span><span class='rparen'>)</span> <span class='kw'>true</span> <span class='kw'>end</span></pre> </td> @@ -424,16 +418,16 @@ <pre class="lines"> -51 -52 -53 -54</pre> +33 +34 +35 +36</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/stage_manager.rb', line 51</span> + <pre class="code"><span class="info file"># File 'lib/felflame/stage_manager.rb', line 33</span> <span class='kw'>def</span> <span class='id identifier rubyid_call'>call</span> - <span class='id identifier rubyid_systems'>systems</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:call</span><span class='rparen'>)</span> + <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_scenes'>scenes</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:call</span><span class='rparen'>)</span> <span class='kw'>true</span> <span class='kw'>end</span></pre> </td> @@ -485,18 +479,16 @@ <pre class="lines"> -43 -44 -45 -46 -47</pre> +26 +27 +28 +29</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/stage_manager.rb', line 43</span> + <pre class="code"><span class="info file"># File 'lib/felflame/stage_manager.rb', line 26</span> <span class='kw'>def</span> <span class='id identifier rubyid_clear'>clear</span> - <span class='id identifier rubyid_systems'>systems</span><span class='period'>.</span><span class='id identifier rubyid_clear'>clear</span> - <span class='id identifier rubyid_scenes'>scenes</span><span class='period'>.</span><span class='id identifier rubyid_clear'>clear</span> + <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_scenes'>scenes</span><span class='period'>.</span><span class='id identifier rubyid_clear'>clear</span> <span class='kw'>true</span> <span class='kw'>end</span></pre> </td> @@ -548,18 +540,16 @@ <pre class="lines"> -22 -23 -24 -25 -26</pre> +19 +20 +21 +22</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/stage_manager.rb', line 22</span> + <pre class="code"><span class="info file"># File 'lib/felflame/stage_manager.rb', line 19</span> <span class='kw'>def</span> <span class='id identifier rubyid_remove'>remove</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_scenes_to_remove'>scenes_to_remove</span><span class='rparen'>)</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_scenes'>scenes</span> <span class='op'>-=</span> <span class='id identifier rubyid_scenes_to_remove'>scenes_to_remove</span> - <span class='id identifier rubyid_update_systems_list'>update_systems_list</span> <span class='kw'>true</span> <span class='kw'>end</span></pre> </td> @@ -572,7 +562,7 @@ </div> <div id="footer"> - Generated on Thu Dec 30 07:28:05 2021 by + Generated on Mon Jan 3 06:20:47 2022 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.26 (ruby-2.7.3). </div> diff --git a/docs/FelFlame/Systems.html b/docs/FelFlame/Systems.html index e549566..7f5d18c 100644 --- a/docs/FelFlame/Systems.html +++ b/docs/FelFlame/Systems.html @@ -85,11 +85,6 @@ - <dl> - <dt>Extended by:</dt> - <dd>Enumerable</dd> - </dl> - @@ -187,7 +182,7 @@ <li class="public "> <span class="summary_signature"> - <a href="#const_name-instance_method" title="#const_name (instance method)">#<strong>const_name</strong> ⇒ Object </a> + <a href="#priority-instance_method" title="#priority (instance method)">#<strong>priority</strong> ⇒ Object </a> @@ -196,8 +191,6 @@ - <span class="note title readonly">readonly</span> - @@ -207,7 +200,7 @@ <span class="summary_desc"><div class='inline'> -<p>The Constant name assigned to this System.</p> +<p>How early this System should be executed in a list of Systems.</p> </div></span> </li> @@ -216,7 +209,7 @@ <li class="public "> <span class="summary_signature"> - <a href="#priority-instance_method" title="#priority (instance method)">#<strong>priority</strong> ⇒ Object </a> + <a href="#removal_triggers-instance_method" title="#removal_triggers (instance method)">#<strong>removal_triggers</strong> ⇒ Array<Component> </a> @@ -225,6 +218,8 @@ + <span class="note title readonly">readonly</span> + @@ -234,7 +229,7 @@ <span class="summary_desc"><div class='inline'> -<p>How early this System should be executed in a list of Systems.</p> +<p>Stores references to components or their managers that trigger this component when a component or component from that manager is removed from an entity.</p> </div></span> </li> @@ -243,7 +238,7 @@ <li class="public "> <span class="summary_signature"> - <a href="#removal_triggers-instance_method" title="#removal_triggers (instance method)">#<strong>removal_triggers</strong> ⇒ Array<Component> </a> + <a href="#scenes-instance_method" title="#scenes (instance method)">#<strong>scenes</strong> ⇒ Object </a> @@ -252,8 +247,6 @@ - <span class="note title readonly">readonly</span> - @@ -262,9 +255,7 @@ - <span class="summary_desc"><div class='inline'> -<p>Stores references to components or their managers that trigger this component when a component or component from that manager is removed from an entity.</p> -</div></span> + <span class="summary_desc"><div class='inline'></div></span> </li> @@ -285,7 +276,7 @@ <li class="public "> <span class="summary_signature"> - <a href="#each-class_method" title="each (class method)">.<strong>each</strong>(&block) ⇒ Enumerator </a> + <a href="#const_cache-class_method" title="const_cache (class method)">.<strong>const_cache</strong> ⇒ Object </a> @@ -300,7 +291,7 @@ <span class="summary_desc"><div class='inline'> -<p>Iterate over all Systems, sorted by their priority.</p> +<p>Stores the systems in <span class='object_link'><a href="Components.html" title="FelFlame::Components (module)">Components</a></span>.</p> </div></span> </li> @@ -488,8 +479,7 @@ </ul> - - <div id="constructor_details" class="method_details_list"> +<div id="constructor_details" class="method_details_list"> <h2>Constructor Details</h2> <div class="method_details first"> @@ -586,21 +576,23 @@ <pre class="lines"> -71 -72 -73 -74 -75 -76</pre> +116 +117 +118 +119 +120 +121 +122</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 71</span> + <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 116</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='label'>priority:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span> <span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="FelFlame::Systems (class)">Systems</a></span></span><span class='period'>.</span><span class='id identifier rubyid_const_set'>const_set</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span> - <span class='ivar'>@const_name</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span> + <span class='const'><span class='object_link'><a href="../FelFlame.html" title="FelFlame (module)">FelFlame</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="FelFlame::Systems (class)">Systems</a></span></span><span class='period'>.</span><span class='id identifier rubyid_update_const_cache'>update_const_cache</span> <span class='ivar'>@priority</span> <span class='op'>=</span> <span class='id identifier rubyid_priority'>priority</span> <span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span> + <span class='ivar'>@scenes</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> <span class='kw'>end</span></pre> </td> </tr> @@ -653,12 +645,12 @@ <pre class="lines"> -24 -25 -26</pre> +33 +34 +35</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 24</span> + <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 33</span> <span class='kw'>def</span> <span class='id identifier rubyid_addition_triggers'>addition_triggers</span> <span class='ivar'>@addition_triggers</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> @@ -709,12 +701,12 @@ <pre class="lines"> -42 -43 -44</pre> +51 +52 +53</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 42</span> + <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 51</span> <span class='kw'>def</span> <span class='id identifier rubyid_attr_triggers'>attr_triggers</span> <span class='ivar'>@attr_triggers</span> <span class='op'>||=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> @@ -725,49 +717,6 @@ </div> - <span id=""></span> - <div class="method_details "> - <h3 class="signature " id="const_name-instance_method"> - - #<strong>const_name</strong> ⇒ <tt>Object</tt> <span class="extras">(readonly)</span> - - - - - -</h3><div class="docstring"> - <div class="discussion"> - -<p>The Constant name assigned to this System</p> - - - </div> -</div> -<div class="tags"> - - -</div><table class="source_code"> - <tr> - <td> - <pre class="lines"> - - -7 -8 -9</pre> - </td> - <td> - <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 7</span> - -<span class='kw'>def</span> <span class='id identifier rubyid_const_name'>const_name</span> - <span class='ivar'>@const_name</span> -<span class='kw'>end</span></pre> - </td> - </tr> -</table> -</div> - - <span id="priority=-instance_method"></span> <div class="method_details "> <h3 class="signature " id="priority-instance_method"> @@ -851,12 +800,12 @@ <pre class="lines"> -33 -34 -35</pre> +42 +43 +44</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 33</span> + <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 42</span> <span class='kw'>def</span> <span class='id identifier rubyid_removal_triggers'>removal_triggers</span> <span class='ivar'>@removal_triggers</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> @@ -866,6 +815,38 @@ </table> </div> + + <span id="scenes=-instance_method"></span> + <div class="method_details "> + <h3 class="signature " id="scenes-instance_method"> + + #<strong>scenes</strong> ⇒ <tt>Object</tt> + + + + + +</h3><table class="source_code"> + <tr> + <td> + <pre class="lines"> + + +17 +18 +19</pre> + </td> + <td> + <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 17</span> + +<span class='kw'>def</span> <span class='id identifier rubyid_scenes'>scenes</span> + <span class='ivar'>@scenes</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> +<span class='kw'>end</span></pre> + </td> + </tr> +</table> +</div> + </div> @@ -874,9 +855,9 @@ <div class="method_details first"> - <h3 class="signature first" id="each-class_method"> + <h3 class="signature first" id="const_cache-class_method"> - .<strong>each</strong>(&block) ⇒ <tt>Enumerator</tt> + .<strong>const_cache</strong> ⇒ <tt>Object</tt> @@ -885,26 +866,13 @@ </h3><div class="docstring"> <div class="discussion"> -<p>Iterate over all Systems, sorted by their priority. You also call other enumerable methods instead of each, such as <code>each_with_index</code> or <code>select</code></p> +<p>Stores the systems in <span class='object_link'><a href="Components.html" title="FelFlame::Components (module)">Components</a></span>. This is needed because calling `FelFlame::Components.constants` will not let you iterate over the value of the constants but will instead give you an array of symbols. This caches the convertion of those symbols to the actual value of the constants</p> </div> </div> <div class="tags"> -<p class="tag_title">Returns:</p> -<ul class="return"> - - <li> - - - <span class='type'>(<tt>Enumerator</tt>)</span> - - - - </li> - -</ul> </div><table class="source_code"> <tr> @@ -912,15 +880,15 @@ <pre class="lines"> -51 -52 -53</pre> +63 +64 +65</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 51</span> + <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 63</span> -<span class='kw'>def</span> <span class='id identifier rubyid_each'>each</span><span class='lparen'>(</span><span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span> - <span class='id identifier rubyid_constants'>constants</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_sym'>sym</span><span class='op'>|</span> <span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='id identifier rubyid_sym'>sym</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_sort_by'>sort_by</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:priority</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_reverse'>reverse</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lparen'>(</span><span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span> +<span class='kw'>def</span> <span class='id identifier rubyid_const_cache'>const_cache</span> + <span class='ivar'>@const_cache</span> <span class='op'>||</span> <span class='id identifier rubyid_update_const_cache'>update_const_cache</span> <span class='kw'>end</span></pre> </td> </tr> @@ -959,12 +927,12 @@ <pre class="lines"> -79 -80 -81</pre> +125 +126 +127</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 79</span> + <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 125</span> <span class='kw'>def</span> <span class='id identifier rubyid_call'>call</span> <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span> @@ -1077,52 +1045,6 @@ <pre class="lines"> -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 157 158 159 @@ -1143,10 +1065,56 @@ 174 175 176 -177</pre> +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 111</span> + <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 157</span> <span class='kw'>def</span> <span class='id identifier rubyid_clear_triggers'>clear_triggers</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_trigger_types'>trigger_types</span><span class='comma'>,</span> <span class='label'>component_or_manager:</span> <span class='kw'>nil</span><span class='rparen'>)</span> <span class='id identifier rubyid_trigger_types'>trigger_types</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='symbol'>:addition_triggers</span><span class='comma'>,</span> <span class='symbol'>:removal_triggers</span><span class='comma'>,</span> <span class='symbol'>:attr_triggers</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='id identifier rubyid_trigger_types'>trigger_types</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> @@ -1266,12 +1234,12 @@ <pre class="lines"> -84 -85 -86</pre> +130 +131 +132</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 84</span> + <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 130</span> <span class='kw'>def</span> <span class='id identifier rubyid_redefine'>redefine</span><span class='lparen'>(</span><span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span> <span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span> @@ -1345,14 +1313,14 @@ <pre class="lines"> -182 -183 -184 -185 -186</pre> +228 +229 +230 +231 +232</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 182</span> + <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 228</span> <span class='kw'>def</span> <span class='id identifier rubyid_trigger_when_added'>trigger_when_added</span><span class='lparen'>(</span><span class='id identifier rubyid_component_or_manager'>component_or_manager</span><span class='rparen'>)</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_addition_triggers'>addition_triggers</span> <span class='op'>|=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_component_or_manager'>component_or_manager</span><span class='rbracket'>]</span> @@ -1408,22 +1376,22 @@ <pre class="lines"> -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211</pre> +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 199</span> + <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 245</span> <span class='kw'>def</span> <span class='id identifier rubyid_trigger_when_is_changed'>trigger_when_is_changed</span><span class='lparen'>(</span><span class='id identifier rubyid_component_or_manager'>component_or_manager</span><span class='comma'>,</span> <span class='id identifier rubyid_attr'>attr</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_component_or_manager'>component_or_manager</span><span class='period'>.</span><span class='id identifier rubyid_attr_triggers'>attr_triggers</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr'>attr</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> @@ -1507,14 +1475,14 @@ <pre class="lines"> -191 -192 -193 -194 -195</pre> +237 +238 +239 +240 +241</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 191</span> + <pre class="code"><span class="info file"># File 'lib/felflame/system_manager.rb', line 237</span> <span class='kw'>def</span> <span class='id identifier rubyid_trigger_when_removed'>trigger_when_removed</span><span class='lparen'>(</span><span class='id identifier rubyid_component_or_manager'>component_or_manager</span><span class='rparen'>)</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_removal_triggers'>removal_triggers</span> <span class='op'>|=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_component_or_manager'>component_or_manager</span><span class='rbracket'>]</span> @@ -1531,7 +1499,7 @@ </div> <div id="footer"> - Generated on Thu Dec 30 07:28:05 2021 by + Generated on Mon Jan 3 06:20:47 2022 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.26 (ruby-2.7.3). </div> diff --git a/docs/Felflame_.html b/docs/Felflame_.html index ea9bbfc..eda8518 100644 --- a/docs/Felflame_.html +++ b/docs/Felflame_.html @@ -133,7 +133,7 @@ </div> <div id="footer"> - Generated on Thu Dec 30 07:28:05 2021 by + Generated on Mon Jan 3 06:20:47 2022 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.26 (ruby-2.7.3). </div> diff --git a/docs/_index.html b/docs/_index.html index 4b3f2de..a183a99 100644 --- a/docs/_index.html +++ b/docs/_index.html @@ -168,7 +168,7 @@ </div> <div id="footer"> - Generated on Thu Dec 30 07:28:05 2021 by + Generated on Mon Jan 3 06:20:46 2022 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.26 (ruby-2.7.3). </div> diff --git a/docs/file.README.html b/docs/file.README.html index 7deb23f..11b0848 100644 --- a/docs/file.README.html +++ b/docs/file.README.html @@ -514,7 +514,7 @@ E.g priority 1 will go first, priority 2 will go second, etcetera. </p> </div></div> <div id="footer"> - Generated on Thu Dec 30 07:28:05 2021 by + Generated on Mon Jan 3 06:20:46 2022 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.26 (ruby-2.7.3). </div> diff --git a/docs/index.html b/docs/index.html index a77181a..5333a27 100644 --- a/docs/index.html +++ b/docs/index.html @@ -514,7 +514,7 @@ E.g priority 1 will go first, priority 2 will go second, etcetera. </p> </div></div> <div id="footer"> - Generated on Thu Dec 30 07:28:05 2021 by + Generated on Mon Jan 3 06:20:46 2022 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.26 (ruby-2.7.3). </div> diff --git a/docs/method_list.html b/docs/method_list.html index 0efe4fe..d8253e9 100644 --- a/docs/method_list.html +++ b/docs/method_list.html @@ -198,21 +198,13 @@ <li class="even "> <div class="item"> - <span class='object_link'><a href="FelFlame/Scenes.html#const_name-instance_method" title="FelFlame::Scenes#const_name (method)">#const_name</a></span> - <small>FelFlame::Scenes</small> - </div> - </li> - - - <li class="odd "> - <div class="item"> - <span class='object_link'><a href="FelFlame/Systems.html#const_name-instance_method" title="FelFlame::Systems#const_name (method)">#const_name</a></span> + <span class='object_link'><a href="FelFlame/Systems.html#const_cache-class_method" title="FelFlame::Systems.const_cache (method)">const_cache</a></span> <small>FelFlame::Systems</small> </div> </li> - <li class="even "> + <li class="odd "> <div class="item"> <span class='object_link'><a href="FelFlame/Entities.html#delete-instance_method" title="FelFlame::Entities#delete (method)">#delete</a></span> <small>FelFlame::Entities</small> @@ -220,7 +212,7 @@ </li> - <li class="odd "> + <li class="even "> <div class="item"> <span class='object_link'><a href="FelFlame/ComponentManager.html#delete-instance_method" title="FelFlame::ComponentManager#delete (method)">#delete</a></span> <small>FelFlame::ComponentManager</small> @@ -228,14 +220,6 @@ </li> - <li class="even "> - <div class="item"> - <span class='object_link'><a href="FelFlame/Systems.html#each-class_method" title="FelFlame::Systems.each (method)">each</a></span> - <small>FelFlame::Systems</small> - </div> - </li> - - <li class="odd "> <div class="item"> <span class='object_link'><a href="FelFlame/ComponentManager.html#entities-instance_method" title="FelFlame::ComponentManager#entities (method)">#entities</a></span> @@ -294,13 +278,21 @@ <li class="even "> <div class="item"> + <span class='object_link'><a href="FelFlame/Scenes.html#priority-instance_method" title="FelFlame::Scenes#priority (method)">#priority</a></span> + <small>FelFlame::Scenes</small> + </div> + </li> + + + <li class="odd "> + <div class="item"> <span class='object_link'><a href="FelFlame/Systems.html#priority-instance_method" title="FelFlame::Systems#priority (method)">#priority</a></span> <small>FelFlame::Systems</small> </div> </li> - <li class="odd "> + <li class="even "> <div class="item"> <span class='object_link'><a href="FelFlame/Systems.html#redefine-instance_method" title="FelFlame::Systems#redefine (method)">#redefine</a></span> <small>FelFlame::Systems</small> @@ -308,7 +300,7 @@ </li> - <li class="even "> + <li class="odd "> <div class="item"> <span class='object_link'><a href="FelFlame/Systems.html#removal_triggers-instance_method" title="FelFlame::Systems#removal_triggers (method)">#removal_triggers</a></span> <small>FelFlame::Systems</small> @@ -316,7 +308,7 @@ </li> - <li class="odd "> + <li class="even "> <div class="item"> <span class='object_link'><a href="FelFlame/ComponentManager.html#removal_triggers-instance_method" title="FelFlame::ComponentManager#removal_triggers (method)">#removal_triggers</a></span> <small>FelFlame::ComponentManager</small> @@ -324,7 +316,7 @@ </li> - <li class="even "> + <li class="odd "> <div class="item"> <span class='object_link'><a href="FelFlame/ComponentManager.html#removal_triggers-class_method" title="FelFlame::ComponentManager.removal_triggers (method)">removal_triggers</a></span> <small>FelFlame::ComponentManager</small> @@ -332,7 +324,7 @@ </li> - <li class="odd "> + <li class="even "> <div class="item"> <span class='object_link'><a href="FelFlame/Scenes.html#remove-instance_method" title="FelFlame::Scenes#remove (method)">#remove</a></span> <small>FelFlame::Scenes</small> @@ -340,7 +332,7 @@ </li> - <li class="even "> + <li class="odd "> <div class="item"> <span class='object_link'><a href="FelFlame/Stage.html#remove-class_method" title="FelFlame::Stage.remove (method)">remove</a></span> <small>FelFlame::Stage</small> @@ -348,7 +340,7 @@ </li> - <li class="odd "> + <li class="even "> <div class="item"> <span class='object_link'><a href="FelFlame/Entities.html#remove-instance_method" title="FelFlame::Entities#remove (method)">#remove</a></span> <small>FelFlame::Entities</small> @@ -356,7 +348,7 @@ </li> - <li class="even "> + <li class="odd "> <div class="item"> <span class='object_link'><a href="FelFlame/Stage.html#scenes-class_method" title="FelFlame::Stage.scenes (method)">scenes</a></span> <small>FelFlame::Stage</small> @@ -364,6 +356,14 @@ </li> + <li class="even "> + <div class="item"> + <span class='object_link'><a href="FelFlame/Systems.html#scenes-instance_method" title="FelFlame::Systems#scenes (method)">#scenes</a></span> + <small>FelFlame::Systems</small> + </div> + </li> + + <li class="odd "> <div class="item"> <span class='object_link'><a href="FelFlame/Scenes.html#systems-instance_method" title="FelFlame::Scenes#systems (method)">#systems</a></span> diff --git a/docs/top-level-namespace.html b/docs/top-level-namespace.html index 26c3c67..9462bb1 100644 --- a/docs/top-level-namespace.html +++ b/docs/top-level-namespace.html @@ -127,7 +127,7 @@ </div> <div id="footer"> - Generated on Thu Dec 30 07:28:05 2021 by + Generated on Mon Jan 3 06:20:47 2022 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.26 (ruby-2.7.3). </div> diff --git a/lib/felflame/component_manager.rb b/lib/felflame/component_manager.rb index ca5be89..d015d99 100644 --- a/lib/felflame/component_manager.rb +++ b/lib/felflame/component_manager.rb @@ -22,6 +22,7 @@ module FelFlame const_set(component_name, Class.new(FelFlame::ComponentManager) {}) + update_const_cache attrs.each do |attr| if FelFlame::Components.const_get(component_name).method_defined?("#{attr}") || FelFlame::Components.const_get(component_name).method_defined?("#{attr}=") @@ -48,8 +49,51 @@ module FelFlame # Makes component module behave like an array of component # managers with additional methods for managing the array # @!visibility private + ##def respond_to_missing?(method, *) + # if constants.respond_to? method + # true + # else + # super + # end + #end + + ## Makes component module behave like arrays with additional + ## methods for managing the array + ## @!visibility private + #def method_missing(method, *args, **kwargs, &block) + # if constants.respond_to? method + # constants.send(method, *args, **kwargs, &block) + # else + # super + # end + #end + + # Stores the components managers in {FelFlame::Components}. This + # is needed because calling `FelFlame::Components.constants` + # will not let you iterate over the value of the constants + # but will instead give you an array of symbols. This caches + # the convertion of those symbols to the actual value of the + # constants + # @!visibility private + def const_cache + @const_cache || update_const_cache + end + + # Updates the array that stores the constants. + # Used internally by FelFlame + # @!visibility private + def update_const_cache + @const_cache = self.constants.map do |constant| + self.const_get constant + end + end + + # Forwards undefined methods to the array of constants + # if the array can handle the request. Otherwise tells + # the programmer their code errored + # @!visibility private def respond_to_missing?(method, *) - if constants.respond_to? method + if const_cache.respond_to? method true else super @@ -60,12 +104,15 @@ module FelFlame # methods for managing the array # @!visibility private def method_missing(method, *args, **kwargs, &block) - if constants.respond_to? method - constants.send(method, *args, **kwargs, &block) + if const_cache.respond_to? method + const_cache.send(method, *args, **kwargs, &block) else super end end + + + end end diff --git a/lib/felflame/entity_manager.rb b/lib/felflame/entity_manager.rb index 9489f29..2ae0849 100644 --- a/lib/felflame/entity_manager.rb +++ b/lib/felflame/entity_manager.rb @@ -7,14 +7,6 @@ module FelFlame def initialize(*components) # Add each component add(*components) - - # Fancy method redirection for when the `component` method is called - @component_redirect = Object.new - @component_redirect.instance_variable_set(:@entity, self) - @component_redirect.define_singleton_method(:[]) do |component_manager| - instance_variable_get(:@entity).component(component_manager) - end - self.class._data.push self end @@ -32,7 +24,8 @@ module FelFlame # @return [Component] def component(manager = nil) if manager.nil? - @component_redirect + FelFlame::Entities.component_redirect.entity = self + FelFlame::Entities.component_redirect else if components[manager].nil? raise "This entity(#{self}) doesnt have any components of this type: #{manager}" @@ -130,6 +123,30 @@ module FelFlame end end + # Fancy method redirection for when the `component` method is called + # in an Entity + # WARNING: This method will not correctly work with multithreading + # @!visibility private + def component_redirect + if @component_redirect + @component_redirect + else + @component_redirect = Object.new + @component_redirect.instance_variable_set(:@entity, nil) + @component_redirect.define_singleton_method(:entity) do + instance_variable_get(:@entity) + end + @component_redirect.define_singleton_method(:entity=) do |value| + instance_variable_set(:@entity, value) + end + @component_redirect.define_singleton_method(:[]) do |component_manager| + self.entity.component(component_manager) + end + @component_redirect + end + end + + # @return [Array<Entity>] Array of all Entities that exist # @!visibility private diff --git a/lib/felflame/scene_manager.rb b/lib/felflame/scene_manager.rb index 2b0d714..9ac7924 100644 --- a/lib/felflame/scene_manager.rb +++ b/lib/felflame/scene_manager.rb @@ -12,11 +12,13 @@ module FelFlame def priority=(priority) @priority = priority FelFlame::Stage.scenes = FelFlame::Stage.scenes.sort_by(&:priority) + priority end # Create a new Scene using the name given # @param name [String] String format must follow requirements of a constant - def initialize(name) + def initialize(name, priority: 0) + self.priority = priority FelFlame::Scenes.const_set(name, self) end @@ -41,19 +43,13 @@ module FelFlame systems_to_add.each do |system| system.scenes |= [self] end - #FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self - #true + true end # Removes any number of Systems from this Scene # @return [Boolean] +true+ def remove(*systems_to_remove) self.systems -= systems_to_remove - self.systems = systems.sort_by(&:priority) - #systems_to_remove.each do |system| - # system.scenes.delete system - #end - #FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self true end diff --git a/lib/felflame/stage_manager.rb b/lib/felflame/stage_manager.rb index 4ea33da..50dad5f 100644 --- a/lib/felflame/stage_manager.rb +++ b/lib/felflame/stage_manager.rb @@ -10,11 +10,7 @@ module FelFlame # @return [Boolean] +true+ def add(*scenes_to_add) self.scenes |= scenes_to_add - #scenes_to_add.each do |scene| - # self.systems |= scene.systems - #end self.scenes = scenes.sort_by(&:priority) - #self.systems = systems.sort_by(&:priority) true end @@ -22,37 +18,20 @@ module FelFlame # @return [Boolean] +true+ def remove(*scenes_to_remove) self.scenes -= scenes_to_remove - self.scenes = scenes.sort_by(&:priority) - #update_systems_list true end - # Updates the list of systems from the Scenes added to the Stage and make sure they are ordered correctly - # This is used internally by FelFlame and shouldn't need to be ever used by developers - # @return [Boolean] +true+ - # @!visibility private - #def update_systems_list - # systems.clear - # scenes.each do |scene| - # self.systems |= scene.systems - # end - # self.systems = systems.sort_by(&:priority) - # true - #end - # Clears all Scenes that were added to the Stage # @return [Boolean] +true+ def clear - #systems.clear - scenes.clear + self.scenes.clear true end # Executes one frame of the game. This executes all the Systems in the Scenes added to the Stage. Systems that exist in two or more different Scenes will still only get executed once. # @return [Boolean] +true+ def call - #systems.each(&:call) - scenes.each(&:call) + self.scenes.each(&:call) true end @@ -61,13 +40,6 @@ module FelFlame def scenes @scenes ||= [] end - - # Stores systems in the order the stage manager needs to call them - # This method should generally only need to be used internally and not by a game developer - # @!visibility private - #def systems - # @systems ||= [] - #end end end end diff --git a/lib/felflame/system_manager.rb b/lib/felflame/system_manager.rb index ab9b3b3..480b84a 100644 --- a/lib/felflame/system_manager.rb +++ b/lib/felflame/system_manager.rb @@ -53,13 +53,49 @@ module FelFlame end class <<self - include Enumerable - # Iterate over all Systems, sorted by their priority. You also call other enumerable methods instead of each, such as +each_with_index+ or +select+ - # @return [Enumerator] - def each(&block) - constants.map { |sym| const_get(sym) }.sort_by(&:priority).reverse.each(&block) + # Stores the systems in {FelFlame::Components}. This + # is needed because calling `FelFlame::Components.constants` + # will not let you iterate over the value of the constants + # but will instead give you an array of symbols. This caches + # the convertion of those symbols to the actual value of the + # constants + def const_cache + @const_cache || update_const_cache end + + # Updates the array that stores the constants. + # Used internally by FelFlame + # @!visibility private + def update_const_cache + @const_cache = self.constants.map do |constant| + self.const_get constant + end + end + + # Forwards undefined methods to the array of constants + # if the array can handle the request. Otherwise tells + # the programmer their code errored + # @!visibility private + def respond_to_missing?(method, *) + if const_cache.respond_to? method + true + else + super + end + end + + # Makes system module behave like arrays with additional + # methods for managing the array + # @!visibility private + def method_missing(method, *args, **kwargs, &block) + if const_cache.respond_to? method + const_cache.send(method, *args, **kwargs, &block) + else + super + end + end + end # Creates a new System which can be accessed as a constant under the namespace {FelFlame::Systems}. @@ -79,6 +115,7 @@ module FelFlame # @param block [Proc] The code you wish to be executed when the system is triggered. Can be defined by using a +do end+ block or using +{ }+ braces. def initialize(name, priority: 0, &block) FelFlame::Systems.const_set(name, self) + FelFlame::Systems.update_const_cache @priority = priority @block = block @scenes = [] diff --git a/spec/component_manager_spec.rb b/spec/component_manager_spec.rb index 6fedf78..f6f1398 100644 --- a/spec/component_manager_spec.rb +++ b/spec/component_manager_spec.rb @@ -42,6 +42,9 @@ describe 'Components' do it 'responds to array methods' do expect(@component_manager.respond_to?(:[])).to be true expect(@component_manager.respond_to?(:each)).to be true + @component_manager.each do |component| + expect(component.respond_to? :param1).to be true + end expect(@component_manager.respond_to?(:filter)).to be true expect(@component_manager.respond_to?(:first)).to be true expect(@component_manager.respond_to?(:last)).to be true @@ -55,6 +58,9 @@ describe 'Components' do it 'Component module responds to array methods' do expect(FelFlame::Components.respond_to?(:[])).to be true expect(FelFlame::Components.respond_to?(:each)).to be true + FelFlame::Components.each do |component_manager| + expect(component_manager.respond_to? :addition_triggers).to be true + end expect(FelFlame::Components.respond_to?(:filter)).to be true expect(FelFlame::Components.respond_to?(:first)).to be true expect(FelFlame::Components.respond_to?(:last)).to be true @@ -77,13 +83,13 @@ describe 'Components' do end it 'can iterate component managers' do - all_components = FelFlame::Components.constants + all_components_symbols = FelFlame::Components.constants + all_components = all_components_symbols.map do |symbol| + FelFlame::Components.const_get symbol + end + expect(all_components).to eq(FF::Components.each.to_a) expect(all_components.length).to be > 0 expect(FelFlame::Components.each).to be_an Enumerator - FelFlame::Components.each do |component_manager| - all_components.delete component_manager.to_s.to_sym - end - expect(all_components).to eq([]) end it 'can change params on initialization' do @@ -117,17 +123,11 @@ describe 'Components' do expect(@component_manager.first).to eq(@cmp0) end - #it 'can be accessed' do - # expect(@cmp0).to eq(@component_manager[0]) - # expect(@cmp1).to eq(@component_manager[1]) - # expect(@cmp2).to eq(@component_manager[2]) - #end - - #it 'can get id from to_i' do - # expect(@cmp0.id).to eq(@cmp0.to_i) - # expect(@cmp1.id).to eq(@cmp1.to_i) - # expect(@cmp2.id).to eq(@cmp2.to_i) - #end + it 'can be accessed' do + expect(@component_manager[0].respond_to? :param1).to eq(true) + expect(@component_manager[1].respond_to? :param1).to eq(true) + expect(@component_manager[2].respond_to? :param1).to eq(true) + end it 'cant overwrite exiting component managers' do FelFlame::Components.new('TestComponent1') diff --git a/spec/entity_manager_spec.rb b/spec/entity_manager_spec.rb index 424b162..0a18495 100644 --- a/spec/entity_manager_spec.rb +++ b/spec/entity_manager_spec.rb @@ -4,10 +4,6 @@ require_relative '../lib/felflame.rb' describe 'Entities' do - #let :component_manager do - # @component_manager ||= FelFlame::Components.new('Test', :param1, param2: 'def') - #end - before :all do $VERBOSE = nil @component_manager ||= FelFlame::Components.new('TestEntity', :param1, param2: 'def') @@ -33,8 +29,6 @@ describe 'Entities' do it 'can get a single component' do expect { @ent0.component[@component_manager] }.to raise_error(RuntimeError) - #$stderr.rewind - #$stderr.string.chomp.should eq("This component belongs to NO entities but you called the method that is intended for components belonging to a single entity.\nYou may have a bug in your logic.") @ent0.add @cmp0 expect(@ent0.component[@component_manager]).to eq(@cmp0) expect(@ent0.component[@component_manager]).to eq(@ent0.component(@component_manager)) @@ -53,6 +47,9 @@ describe 'Entities' do it 'responds to array methods' do expect(FelFlame::Entities.respond_to?(:[])).to be true expect(FelFlame::Entities.respond_to?(:each)).to be true + FelFlame::Entities.each do |entity| + expect(entity.respond_to? :components).to be true + end expect(FelFlame::Entities.respond_to?(:filter)).to be true expect(FelFlame::Entities.respond_to?(:first)).to be true expect(FelFlame::Entities.respond_to?(:last)).to be true @@ -69,21 +66,15 @@ describe 'Entities' do expect(@ent0.components[@component_manager].count).to eq(2) end - #it 'has correct ID\'s' do - # expect(@ent0.id).to eq(0) - # expect(@ent1.id).to eq(1) - # expect(@ent2.id).to eq(2) - #end - - #it 'can be accessed' do - # expect(@ent0).to eq(FelFlame::Entities[0]) - # expect(@ent1).to eq(FelFlame::Entities[1]) - # expect(@ent2).to eq(FelFlame::Entities[2]) - #end + it 'can be accessed' do + expect(FelFlame::Entities[0].respond_to? :components).to eq(true) + expect(FelFlame::Entities[1].respond_to? :components).to eq(true) + expect(FelFlame::Entities[2].respond_to? :components).to eq(true) + end it 'can have components attached' do @ent0.add @cmp0 - expect(@ent0.components[@component_manager][0]).to eq(@cmp0) + expect(@ent0.component[@component_manager]).to eq(@cmp0) @ent1.add @cmp1, @cmp2 expect(@ent1.components[@component_manager].length).to eq(2) @@ -91,12 +82,6 @@ describe 'Entities' do expect(@ent1.components[@component_manager].include?(@cmp2)).to be true end - #it 'can get id from to_i' do - # expect(@ent0.id).to eq(@ent0.to_i) - # expect(@ent1.id).to eq(@ent1.to_i) - # expect(@ent2.id).to eq(@ent2.to_i) - #end - it 'can have components removed' do @ent0.add @cmp0 expect(@ent0.remove @cmp0).to be true diff --git a/spec/scene_manager_spec.rb b/spec/scene_manager_spec.rb index 0a209a3..3f305b9 100644 --- a/spec/scene_manager_spec.rb +++ b/spec/scene_manager_spec.rb @@ -65,4 +65,8 @@ describe 'Scenes' do @scene.call expect(@cmp.order).to eq([3, 1, 2]) end + + it 'will return priority when setting priority' do + expect(@scene.priority = 3).to eq(3) + end end diff --git a/spec/stage_manager_spec.rb b/spec/stage_manager_spec.rb index 0aa8690..b8fc70c 100644 --- a/spec/stage_manager_spec.rb +++ b/spec/stage_manager_spec.rb @@ -5,36 +5,30 @@ require_relative '../lib/felflame.rb' describe 'Stage' do before :all do @component_manager ||= FelFlame::Components.new('TestStage', order: Array.new) - @system2 = FelFlame::Systems.new('StageTest', priority: 50) do - @component_manager.each do |component| - component.order.push 2 - end + @system2 = FelFlame::Systems.new('StageTest', priority: 1) do + @component_manager.first.order.push 2 end - @system1 = FelFlame::Systems.new('StageMana', priority: 1) do - @component_manager.each do |component| - component.order.push 1 - end + @system1 = FelFlame::Systems.new('StageMana', priority: 3) do + @component_manager.first.order.push 1 end - @system3 = FelFlame::Systems.new('StageSpell', priority: 100) do - @component_manager.each do |component| - component.order.push 3 - end + @system3 = FelFlame::Systems.new('StageSpell', priority: 2) do + @scene1.add @system1 + @scene2.add @system2 + @scene3.add @system3 + @component_manager.first.order.push 3 end - @scene1 = FelFlame::Scenes.new('TestStage1') - @scene2 = FelFlame::Scenes.new('TestStage2') - @scene3 = FelFlame::Scenes.new('TestStage3') + @scene1 = FelFlame::Scenes.new('TestStage1', priority: 1) + @scene2 = FelFlame::Scenes.new('TestStage2', priority: 2) + @scene3 = FelFlame::Scenes.new('TestStage3', priority: 3) end before :each do @cmp = @component_manager.new - @scene1.add @system1 - @scene2.add @system2 - @scene3.add @system3 end after :each do - FelFlame::Entities.each(&:delete) - @component_manager.each(&:delete) + FelFlame::Entities.reverse_each(&:delete) + @component_manager.reverse_each(&:delete) @scene1.clear @scene2.clear @scene3.clear @@ -43,61 +37,28 @@ describe 'Stage' do it 'can add Scenes' do FelFlame::Stage.add @scene2, @scene1, @scene3 - expect(FelFlame::Stage.scenes).to eq([@scene2, @scene1, @scene3]) - expect(FelFlame::Stage.systems).to eq([@system1, @system2, @system3]) + expect(FelFlame::Stage.scenes).to eq([@scene1, @scene2, @scene3]) end it 'can remove Scenes' do FelFlame::Stage.add @scene1, @scene2, @scene3 FelFlame::Stage.remove @scene1, @scene3 expect(FelFlame::Stage.scenes).to eq([@scene2]) - expect(FelFlame::Stage.systems).to eq([@system2]) end it 'can clear Scenes' do FelFlame::Stage.add @scene1, @scene2, @scene3 FelFlame::Stage.clear expect(FelFlame::Stage.scenes).to eq([]) - expect(FelFlame::Stage.systems).to eq([]) - end - - it 'can execute Systems in the correct order' do - FelFlame::Stage.add @scene2, @scene1, @scene3 - FelFlame::Stage.call - expect(@cmp.order).to eq([1, 2, 3]) end - it 'can add Systems to Scenes already added in Stage' do + it 'can call Scenes in correct order' do FelFlame::Stage.add @scene2, @scene1, @scene3 - system2p5 = FelFlame::Systems.new('StageAddingTest', priority: 75) do - @component_manager.each do |component| - component.order.push 2.5 - end - end - @scene2.add system2p5 - @scene3.add system2p5 - FelFlame::Stage.call - expect(@cmp.order).to eq([1,2,2.5,3]) - end - - it 'can remove Systems to Scenes already added in Stage' do - FelFlame::Stage.add @scene2, @scene1, @scene3 - system2p5 = FelFlame::Systems.new('StageAddingTest', priority: 75) do - @component_manager.each do |component| - component.order.push 2.5 - end - end - @scene2.add system2p5 - @scene3.add system2p5 - @scene2.remove @system2 + @scene1.add @system1 + @scene2.add @system2 + @scene3.add @system3 FelFlame::Stage.call - expect(@cmp.order).to eq([1,2.5,3]) + expect(@component_manager.first.order).to eq([1,2,3]) end - it 'can have Systems change priority in an existing Stage' do - FelFlame::Stage.add @scene2, @scene1, @scene3 - @system2.priority = 0 - FelFlame::Stage.call - expect(@cmp.order).to eq([2,1,3]) - end end diff --git a/spec/system_manager_spec.rb b/spec/system_manager_spec.rb index 3d2e3dc..f15ebaa 100644 --- a/spec/system_manager_spec.rb +++ b/spec/system_manager_spec.rb @@ -1,6 +1,6 @@ require_relative '../lib/felflame.rb' -describe 'Components' do +describe 'Systems' do before :all do @component_manager ||= FelFlame::Components.new('TestSystems', health: 10, whatever: 'imp', mana: 10) @@ -23,10 +23,11 @@ describe 'Components' do end it 'can create a system' do - FelFlame::Systems.new('Test99') do + @@testitr += 1 + sys = FelFlame::Systems.new("Test#{@@testitr}") do 'Works' end - expect(FelFlame::Systems::Test99.call).to eq('Works') + expect(sys.call).to eq('Works') end it 'can be redefined' do @@ -36,26 +37,27 @@ describe 'Components' do expect(@system.call).to eq('very neat') end - it 'can iterate over the sorted systems by priority' do - FelFlame::Systems.new('Test2', priority: 1) {} - FelFlame::Systems.new('Test3', priority: 50) {} - FelFlame::Systems.new('Test4', priority: 7) {} - answer_key = ['Test3', 'Test4', 'Test2'] - test = FelFlame::Systems.each.to_a - # converts the system name to the constant, compares their positions making sure they are sorted - # higher priority should be placed first - expect(test.map(&:const_name).find_index(answer_key[0])).to be <= test.map(&:const_name).find_index(answer_key[1]) - expect(test.map(&:const_name).find_index(answer_key[0])).to be <= test.map(&:const_name).find_index(answer_key[2]) - expect(test.map(&:const_name).find_index(answer_key[1])).to be >= test.map(&:const_name).find_index(answer_key[0]) - expect(test.map(&:const_name).find_index(answer_key[1])).to be <= test.map(&:const_name).find_index(answer_key[2]) - expect(test.map(&:const_name).find_index(answer_key[2])).to be >= test.map(&:const_name).find_index(answer_key[0]) - expect(test.map(&:const_name).find_index(answer_key[2])).to be >= test.map(&:const_name).find_index(answer_key[1]) + it 'responds to array methods' do + expect(FelFlame::Systems.respond_to?(:[])).to be true + expect(FelFlame::Systems.respond_to?(:each)).to be true + FelFlame::Systems.each do |system| + expect(system.respond_to? :call).to be true + end + expect(FelFlame::Systems.respond_to?(:filter)).to be true + expect(FelFlame::Systems.respond_to?(:first)).to be true + expect(FelFlame::Systems.respond_to?(:last)).to be true + expect(FelFlame::Systems.respond_to?(:somethingwrong)).to be false + end + + it 'dont respond to missing methods' do + expect { FelFlame::Systems.somethingwrong }.to raise_error(NoMethodError) end it 'can manipulate components' do init1 = 27 init2 = 130 multiple = 3 + iter = 10 first = @component_manager.new(health: init1) second = @component_manager.new(health: init2) @system.redefine do @@ -66,11 +68,11 @@ describe 'Components' do @system.call expect(first.health).to eq(init1 -= multiple) expect(second.health).to eq(init2 -= multiple) - 10.times do + iter.times do @system.call end - expect(first.health).to eq(init1 - (multiple * 10)) - expect(second.health).to eq(init2 - (multiple * 10)) + expect(first.health).to eq(init1 - (multiple * iter)) + expect(second.health).to eq(init2 - (multiple * iter)) end it 'can clear triggers from components and systems' do |
