Prototype Done with docs

This commit is contained in:
Cooldude2606
2019-08-25 00:50:42 +01:00
parent e05edf5fef
commit a749c90529
98 changed files with 1890 additions and 11250 deletions

View File

@@ -348,7 +348,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -349,7 +349,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -376,7 +376,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -585,7 +585,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -349,7 +349,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -404,7 +404,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -460,7 +460,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -404,7 +404,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -320,7 +320,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -404,7 +404,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -376,7 +376,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -388,7 +388,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -500,7 +500,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -361,7 +361,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -388,7 +388,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -365,7 +365,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -360,7 +360,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -404,7 +404,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -458,7 +458,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -416,7 +416,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -611,7 +611,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -389,7 +389,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -360,7 +360,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -388,7 +388,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -321,7 +321,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -585,7 +585,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -557,7 +557,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -389,7 +389,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -443,7 +443,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -484,7 +484,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -569,7 +569,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -506,7 +506,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -237,7 +237,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -485,7 +485,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -294,7 +294,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -320,7 +320,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -442,7 +442,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -354,7 +354,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -338,7 +338,7 @@ see ./expcore/commands.lua for more details</p>
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -354,7 +354,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -416,7 +416,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -237,7 +237,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -240,7 +240,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -295,7 +295,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -812,7 +812,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -384,7 +384,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -414,7 +414,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -324,7 +324,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -414,7 +414,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -834,7 +834,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -292,7 +292,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -354,7 +354,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -388,7 +388,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -744,7 +744,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -384,7 +384,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -355,7 +355,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -684,7 +684,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -1208,7 +1208,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -1329,7 +1329,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -1110,7 +1110,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -984,7 +984,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -1039,7 +1039,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -1465,7 +1465,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -1413,7 +1413,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -1972,7 +1972,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -2480,7 +2480,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@@ -1432,7 +1432,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -3152,7 +3152,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -241,15 +241,19 @@
<span class="keyword">local</span> team_scores = <span class="string">'team-scores'</span>
<span class="comment">-- Setting and getting data is then as simple as
</span><span class="comment">-- note that when storing a table you must use Store.update
</span>Store.set(scenario_difficuly,<span class="string">'Hard'</span>)
Store.set(team_scores,game.player.force.name,<span class="number">20</span>)
Store.get(scenario_difficuly) <span class="comment">-- returns 'Hard'
</span>Store.get(team_scores,game.player.force.name) <span class="comment">-- returns 20
</span>
Store.update(team_scores,game.player.force.name,<span class="keyword">function</span>(value,key)
<span class="keyword">return</span> value + <span class="number">10</span> <span class="comment">-- add 10 to the score
</span><span class="keyword">end</span>)
<span class="comment">-- The reason for using stores over global is the abilty to watch for updates
</span><span class="comment">-- for stores to work you must register them, often at the end of the file
</span><span class="comment">-- note that storing a table value may cause issues as a key changing does not cause the set function to trigger
</span>Store.register(scenario_difficuly,<span class="keyword">function</span>(value)
game.<span class="global">print</span>(<span class="string">'Scenario difficulty has been set to: '</span>..value)
<span class="keyword">end</span>)
@@ -309,8 +313,12 @@ Store.register(team_scores,<span class="keyword">function</span>(value,key)
<td class="summary">Sets the value at a location, this location must be registered</td>
</tr>
<tr>
<td class="name"><a href="#update">update(location[, key])</a></td>
<td class="summary">Triggers the change handler manually</td>
<td class="name"><a href="#update">update(location[, key][, update_callback])</a></td>
<td class="summary">Allows for updating a value based on the current value; only valid way to change tables in a store</td>
</tr>
<tr>
<td class="name"><a href="#update_all">update_all(location[, update_callback])</a></td>
<td class="summary">Allows for updating all values at a location based on the current value; only valid way to change tables in a store</td>
</tr>
<tr>
<td class="name"><a href="#clear">clear(location[, key][, from_sync=false])</a></td>
@@ -718,13 +726,13 @@ Store.register(team_scores,<span class="keyword">function</span>(value,key)
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#update" class="fragment-hashtag">#</a>
<span class="section-item-title" id="update">update(location[, key])</span>
<span class="section-item-title" id="update">update(location[, key][, update_callback])</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<p class="section-item-summary">Triggers the change handler manually</p>
<p class="section-item-summary">Allows for updating a value based on the current value; only valid way to change tables in a store</p>
<p class="section-item-description"></p>
<!-- parameters start -->
@@ -766,6 +774,90 @@ Store.register(team_scores,<span class="keyword">function</span>(value,key)
</li>
<li class="section-subitem-li">
<strong><em>update_callback</em></strong>
<strong> : </strong>
(<span class="types"><a class="type" href="https://www.lua.org/pil/2.6.html">function</a></span>)
the function called to update the value stored, rtn value to set new value
(<em>optional</em>)
</li>
</ul>
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#update_all" class="fragment-hashtag">#</a>
<span class="section-item-title" id="update_all">update_all(location[, update_callback])</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<p class="section-item-summary">Allows for updating all values at a location based on the current value; only valid way to change tables in a store</p>
<p class="section-item-description"></p>
<!-- parameters start -->
<strong>Parameters:</strong>
<ul>
<li class="section-subitem-li">
<strong><em>location</em></strong>
<strong> : </strong>
(<span class="types"><a class="type" href="http://lua-api.factorio.com/latest/Builtin-Types.html#string">string</a></span>)
the location to set the data to
</li>
<li class="section-subitem-li">
<strong><em>update_callback</em></strong>
<strong> : </strong>
(<span class="types"><a class="type" href="https://www.lua.org/pil/2.6.html">function</a></span>)
the function called to update the value stored
(<em>optional</em>)
</li>
</ul>
<!-- parameters end -->
@@ -1036,7 +1128,7 @@ Store.register(team_scores,<span class="keyword">function</span>(value,key)
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -544,7 +544,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -626,7 +626,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -629,7 +629,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -449,7 +449,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -632,7 +632,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -837,7 +837,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -56,11 +56,7 @@
</tr>
<tr>
<td class="name"><a href="core/Gui.html">Gui</a></td>
<td class="summary"><span>Core Module - Gui
- This file is used to require all the different elements of the gui module
- each module has an outline here but for more details see their separate files in ./gui
- please read the files for more documentation that cant be shown here
- please note there is a rework planned but not started</span></td>
<td class="summary"><span>Core Module - Gui</span></td>
</tr>
<tr>
<td class="name"><a href="core/Permissions-Groups.html">Permissions-Groups</a></td>
@@ -514,7 +510,7 @@ see ./expcore/commands.lua for more details</span></td>
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -41,8 +41,7 @@
<li class="nav-item">
<h2>Sections</h2>
<ul class="nav">
<li class="nav-item"><a href="#Dependencies"><span class="fragment-hashtag">#</span> Dependencies</a></li>
<li class="nav-item"><a href="#Test"><span class="fragment-hashtag">#</span> Test </a></li>
<li class="nav-item"><a href="#Functions"><span class="fragment-hashtag">#</span> Functions</a></li>
</ul>
</li>
</ul>
@@ -52,20 +51,6 @@
<ul class="nav">
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/control.html"><span class="module-name-item">control</span></a></div></li>
<li class="nav-item active"><div class="nav-item-block-active block"><a href="../modules/Gui.html"><span class="module-name-item">Gui</span></a><i class="icon icon-arrow-left icon-arrow-left-custom"></i></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.concepts.center.html"><span class="module-name-item">expcore.gui.concepts.center</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.concepts.left.html"><span class="module-name-item">expcore.gui.concepts.left</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.concepts.popups.html"><span class="module-name-item">expcore.gui.concepts.popups</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.concepts.toolbar.html"><span class="module-name-item">expcore.gui.concepts.toolbar</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.core.html"><span class="module-name-item">expcore.gui.core</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.buttons.html"><span class="module-name-item">expcore.gui.elements.buttons</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.checkbox.html"><span class="module-name-item">expcore.gui.elements.checkbox</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.dropdown.html"><span class="module-name-item">expcore.gui.elements.dropdown</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.elem-button.html"><span class="module-name-item">expcore.gui.elements.elem-button</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.progress-bar.html"><span class="module-name-item">expcore.gui.elements.progress-bar</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.slider.html"><span class="module-name-item">expcore.gui.elements.slider</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.text.html"><span class="module-name-item">expcore.gui.elements.text</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.instances.html"><span class="module-name-item">expcore.gui.instances</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.prototype.html"><span class="module-name-item">expcore.gui.prototype</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/utils.alien_evolution_progress.html"><span class="module-name-item">utils.alien_evolution_progress</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/utils.core.html"><span class="module-name-item">utils.core</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/utils.debug.html"><span class="module-name-item">utils.debug</span></a></div></li>
@@ -216,8 +201,7 @@
<li class="nav-item">
<h4>Jump to Section</h4>
<ul class="nav">
<li class="nav-item"><a href="#Dependencies"><span class="fragment-hashtag">#</span> Dependencies</a></li>
<li class="nav-item"><a href="#Test"><span class="fragment-hashtag">#</span> Test </a></li>
<li class="nav-item"><a href="#Functions"><span class="fragment-hashtag">#</span> Functions</a></li>
</ul>
</li>
</ul>
@@ -237,9 +221,7 @@
<!-- module content header start -->
<h2><span class="body-module-name"><strong><em>Gui</em></strong></span> module</h2>
<p>Core Module - Gui
- This file is used to require all the different elements of the gui module
- each module has an outline here but for more details see their separate files in ./gui</p>
<p>Core Module - Gui</p>
<p></p>
@@ -254,71 +236,17 @@
<!-- module section list start -->
<table class="section-content-list">
<thead>
<h3><a href="#Dependencies">Dependencies</a></h3>
<h3><a href="#Functions">Functions</a></h3>
<span></span>
</thead>
<tbody>
<tr>
<td class="name"><a href="#expcore.gui.core">expcore.gui.core</a></td>
<td class="name"><a href="#on_custom_event">on_custom_event(handler)</a></td>
<td class="summary">Adds a custom event handler, replace with the name of the event</td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.instances">expcore.gui.instances</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.buttons">expcore.gui.elements.buttons</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.checkbox">expcore.gui.elements.checkbox</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.dropdown">expcore.gui.elements.dropdown</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.slider">expcore.gui.elements.slider</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.text">expcore.gui.elements.text</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.elem-button">expcore.gui.elements.elem-button</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.progress-bar">expcore.gui.elements.progress-bar</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.concepts.toolbar">expcore.gui.concepts.toolbar</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.concepts.left">expcore.gui.concepts.left</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.concepts.center">expcore.gui.concepts.center</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.concepts.popups">expcore.gui.concepts.popups</a></td>
</tr>
</tbody>
</table>
<table class="section-content-list">
<thead>
<h3><a href="#Test">Test </a></h3>
<span></span>
</thead>
<tbody>
<tr>
<td class="name"><a href="#expcore.gui">expcore.gui</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.common">expcore.common</a></td>
</tr>
<tr>
<td class="name"><a href="#resources.color_presets">resources.color_presets</a></td>
</tr>
<tr>
<td class="name"><a href="#utils.event">utils.event</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.store">expcore.store</a></td>
<td class="name"><a href="#set_custom_property">set_custom_property(value)</a></td>
<td class="summary">Sets a new value for a property, triggers setter method if provided, replace with property name</td>
</tr>
</tbody>
</table>
@@ -327,23 +255,56 @@
<br />
<!-- section start -->
<h3><span id="Dependencies" class="section-title"><a href="#Dependencies">Dependencies</a></span></h3>
<h3><span id="Functions" class="section-title"><a href="#Functions">Functions</a></span></h3>
<dl class="section-body-container">
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.core" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.core">expcore.gui.core</span>
<a href="#on_custom_event" class="fragment-hashtag">#</a>
<span class="section-item-title" id="on_custom_event">on_custom_event(handler)</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<p class="section-item-summary">Adds a custom event handler, replace with the name of the event</p>
<p class="section-item-description"></p>
<!-- parameters start -->
<strong>Parameters:</strong>
<ul>
<li class="section-subitem-li">
<strong><em>handler</em></strong>
<strong> : </strong>
(<span class="types"><a class="type" href="https://www.lua.org/pil/2.6.html">function</a></span>)
the function which will recive the event
</li>
</ul>
<!-- parameters end -->
<!-- returns start -->
<strong>Returns:</strong>
<ul>
<li>
(<span class="types"><span class="type">GuiConcept</span></span>)
<span class="return-text">to allow chaing of functions
[[@usage</span>
</li>
</ul>
<!-- returns end -->
@@ -357,421 +318,51 @@
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.instances" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.instances">expcore.gui.instances</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.buttons" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.buttons">expcore.gui.elements.buttons</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.checkbox" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.checkbox">expcore.gui.elements.checkbox</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.dropdown" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.dropdown">expcore.gui.elements.dropdown</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.slider" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.slider">expcore.gui.elements.slider</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.text" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.text">expcore.gui.elements.text</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.elem-button" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.elem-button">expcore.gui.elements.elem-button</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.progress-bar" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.progress-bar">expcore.gui.elements.progress-bar</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.concepts.toolbar" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.concepts.toolbar">expcore.gui.concepts.toolbar</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.concepts.left" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.concepts.left">expcore.gui.concepts.left</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.concepts.center" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.concepts.center">expcore.gui.concepts.center</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.concepts.popups" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.concepts.popups">expcore.gui.concepts.popups</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
</dl>
<h3><span id="Test" class="section-title"><a href="#Test">Test </a></span></h3>
<dl class="section-body-container">
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui">expcore.gui</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.common" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.common">expcore.common</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#resources.color_presets" class="fragment-hashtag">#</a>
<span class="section-item-title" id="resources.color_presets">resources.color_presets</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#utils.event" class="fragment-hashtag">#</a>
<span class="section-item-title" id="utils.event">utils.event</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.store" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.store">expcore.store</span>
<a href="#set_custom_property" class="fragment-hashtag">#</a>
<span class="section-item-title" id="set_custom_property">set_custom_property(value)</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<p class="section-item-summary">Sets a new value for a property, triggers setter method if provided, replace with property name</p>
<p class="section-item-description"></p>
<!-- parameters start -->
<strong>Parameters:</strong>
<ul>
<li class="section-subitem-li">
<strong><em>value</em></strong>
<strong> : </strong>
(<span class="types"><span class="type">any</span></span>)
the value that you want to set for this property
</li>
</ul>
<!-- parameters end -->
<!-- returns start -->
<strong>Returns:</strong>
<ul>
<li>
(<span class="types"><span class="type">GuiConcept</span></span>)
<span class="return-text">to allow chaing of functions
[[@usage</span>
</li>
</ul>
<!-- returns end -->
@@ -797,7 +388,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-09 17:56:43 UTC</i>
<i>Last updated 2019-08-25 00:34:29 UTC</i>
</div>
</div>
</div>

View File

@@ -351,7 +351,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -37,35 +37,13 @@
<!-- sidebar navigation -->
<!-- list of items in a module -->
<ul class="nav nav-module-contents">
<li class="nav-item">
<h2>Sections</h2>
<ul class="nav">
<li class="nav-item"><a href="#Dependencies"><span class="fragment-hashtag">#</span> Dependencies</a></li>
</ul>
</li>
</ul>
<ul class="nav nav-modules">
<li class="nav-item">
<h2>Modules</h2>
<ul class="nav">
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/control.html"><span class="module-name-item">control</span></a></div></li>
<li class="nav-item active"><div class="nav-item-block-active block"><a href="../modules/expcore.gui.html"><span class="module-name-item">expcore.gui</span></a><i class="icon icon-arrow-left icon-arrow-left-custom"></i></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.concepts.center.html"><span class="module-name-item">expcore.gui.concepts.center</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.concepts.left.html"><span class="module-name-item">expcore.gui.concepts.left</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.concepts.popups.html"><span class="module-name-item">expcore.gui.concepts.popups</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.concepts.toolbar.html"><span class="module-name-item">expcore.gui.concepts.toolbar</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.core.html"><span class="module-name-item">expcore.gui.core</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.buttons.html"><span class="module-name-item">expcore.gui.elements.buttons</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.checkbox.html"><span class="module-name-item">expcore.gui.elements.checkbox</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.dropdown.html"><span class="module-name-item">expcore.gui.elements.dropdown</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.elem-button.html"><span class="module-name-item">expcore.gui.elements.elem-button</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.progress-bar.html"><span class="module-name-item">expcore.gui.elements.progress-bar</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.slider.html"><span class="module-name-item">expcore.gui.elements.slider</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.elements.text.html"><span class="module-name-item">expcore.gui.elements.text</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.instances.html"><span class="module-name-item">expcore.gui.instances</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.prototype.html"><span class="module-name-item">expcore.gui.prototype</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/expcore.gui.test.html"><span class="module-name-item">expcore.gui.test</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/Gui.html"><span class="module-name-item">Gui</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/utils.alien_evolution_progress.html"><span class="module-name-item">utils.alien_evolution_progress</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/utils.core.html"><span class="module-name-item">utils.core</span></a></div></li>
<li class="nav-item"><div class="nav-item-block-inactive block"><a href="../modules/utils.debug.html"><span class="module-name-item">utils.debug</span></a></div></li>
@@ -212,14 +190,6 @@
</div>
<div class="up-to-top">
<!-- list of items in a module -->
<ul class="nav nav-module-contents">
<li class="nav-item">
<h4>Jump to Section</h4>
<ul class="nav">
<li class="nav-item"><a href="#Dependencies"><span class="fragment-hashtag">#</span> Dependencies</a></li>
</ul>
</li>
</ul>
<a href="#">Top <i class="icon icon-upward"></i></a>
</div>
</div>
@@ -236,8 +206,7 @@
<!-- module content header start -->
<h2><span class="body-module-name"><strong><em>expcore.gui</em></strong></span> module</h2>
<p>This file is used to require all the different elements of the gui module
each module has an outline here but for more details see their separate files in ./gui</p>
<p>This file combines all the other gui files</p>
<p></p>
@@ -250,389 +219,11 @@
<!-- module content header end -->
<!-- module section list start -->
<table class="section-content-list">
<thead>
<h3><a href="#Dependencies">Dependencies</a></h3>
<span></span>
</thead>
<tbody>
<tr>
<td class="name"><a href="#expcore.gui.core">expcore.gui.core</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.instances">expcore.gui.instances</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.buttons">expcore.gui.elements.buttons</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.checkbox">expcore.gui.elements.checkbox</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.dropdown">expcore.gui.elements.dropdown</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.slider">expcore.gui.elements.slider</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.text">expcore.gui.elements.text</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.elem-button">expcore.gui.elements.elem-button</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.elements.progress-bar">expcore.gui.elements.progress-bar</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.concepts.toolbar">expcore.gui.concepts.toolbar</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.concepts.left">expcore.gui.concepts.left</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.concepts.center">expcore.gui.concepts.center</a></td>
</tr>
<tr>
<td class="name"><a href="#expcore.gui.concepts.popups">expcore.gui.concepts.popups</a></td>
</tr>
</tbody>
</table>
<!-- module section list end -->
<br />
<!-- section start -->
<h3><span id="Dependencies" class="section-title"><a href="#Dependencies">Dependencies</a></span></h3>
<dl class="section-body-container">
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.core" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.core">expcore.gui.core</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<p class="section-item-summary"></p>
<p class="section-item-description">
[[</p>
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.instances" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.instances">expcore.gui.instances</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.buttons" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.buttons">expcore.gui.elements.buttons</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.checkbox" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.checkbox">expcore.gui.elements.checkbox</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.dropdown" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.dropdown">expcore.gui.elements.dropdown</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.slider" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.slider">expcore.gui.elements.slider</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.text" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.text">expcore.gui.elements.text</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.elem-button" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.elem-button">expcore.gui.elements.elem-button</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.elements.progress-bar" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.elements.progress-bar">expcore.gui.elements.progress-bar</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.concepts.toolbar" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.concepts.toolbar">expcore.gui.concepts.toolbar</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.concepts.left" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.concepts.left">expcore.gui.concepts.left</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.concepts.center" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.concepts.center">expcore.gui.concepts.center</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
<dt>
<div class="divider divider-custom"></div>
<div class="block section-item-header">
<a href="#expcore.gui.concepts.popups" class="fragment-hashtag">#</a>
<span class="section-item-title" id="expcore.gui.concepts.popups">expcore.gui.concepts.popups</span>
</div>
</dt>
<dd>
<div class="section-item-body">
<!-- parameters start -->
<!-- parameters end -->
<!-- returns start -->
<!-- returns end -->
<!-- see also start -->
<!-- see also end -->
<!-- usage start -->
<!-- usage end -->
</dd>
</dl>
<!-- section end -->
@@ -647,7 +238,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-09 17:49:43 UTC</i>
<i>Last updated 2019-08-25 00:33:31 UTC</i>
</div>
</div>
</div>

View File

@@ -419,7 +419,7 @@ fraction will decide a chance to spawn. 1 alien for 2 spawner's will have 50% on
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -1164,7 +1164,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -654,7 +654,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -323,7 +323,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -1292,7 +1292,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -434,7 +434,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -338,7 +338,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -441,7 +441,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -752,7 +752,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -1382,7 +1382,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -651,7 +651,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -442,7 +442,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -789,7 +789,7 @@ Public License instead of this License. But first, please read
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -332,7 +332,7 @@
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc </a></i>
</div>
<div class="content-footer column col-9 col-sm-12">
<i>Last updated 2019-08-23 21:40:48 UTC</i>
<i>Last updated 2019-08-25 00:50:15 UTC</i>
</div>
</div>
</div>

View File

@@ -1,4 +1,7 @@
--- This file combines all the other gui files
--[[-- Core Module - Gui
@core Gui
@alias Gui
]]
local Gui = require 'expcore.gui.core'

View File

@@ -3,6 +3,10 @@
@alias Gui
]]
--- Core.
-- Functions that act as a landing point for the other funtions
-- @section core
local Event = require 'utils.event' -- @dep utils.event
local Prototype = require 'expcore.gui.prototype'
@@ -25,4 +29,17 @@ function Gui.get_concept(name)
return Gui.concepts[name] or error('Gui concept "'..name..'" is not defind',2)
end
function Gui.clone_concept(name,new_name)
local concept = Gui.concepts[name] or error('Gui concept "'..name..'" is not defind',2)
if Gui.concepts[name] then
error('Gui concept "'..name..'" is already defind',2)
end
local new_concept = concept:clone(new_name)
Gui.concepts[new_name] = new_concept
return new_concept
end
return Gui

View File

@@ -2,52 +2,48 @@
@module Gui
@alias Prototype
readme define
@usage
local button =
Gui.new_concept('Button')
:new_event('on_click',defines.events.on_gui_click)
:new_property('tooltip')
:new_property('caption',nil,function(properties,value)
properties.caption = value
properties.sprite = nil
properties.type = 'button'
end)
:new_property('sprite',nil,function(properties,value)
properties.image = value
properties.caption = nil
properties.type = 'sprite-button'
end)
local button =
-- starts the defination of a new concept
Gui.new_concept('button')
-- event linked to a factorio event
:new_event('on_click',defines.events.on_gui_click)
-- event linked conditionaly to a factorio event
:new_event('on_admin_click',defines.events.on_gui_click,function(event)
return event.player.admin
end)
-- a property which can be set
:new_property('caption',function(concept,value,...)
concept.draw_data.caption = value
end,"Change Me")
-- the draw function for this concept
:define_draw(function(concept,parent,element,...)
element =
parent.draw{
name=concept.name,
type='button',
caption=concept.caption
}
local custom_button =
button:clone('CustomButton')
:new_event('on_admin_clicked',defines.events.on_gui_click,function(event)
return event.player.admin -- only raise custom event when an admin clicks the button
end)
:set_caption('Custom Button')
:set_tooltip('Only admins can press this button')
:on_click(function(event)
if not event.player.admin then
event.player.print('You must be admin to use this button')
end
end)
:on_admin_clicked(function(event)
-- Yes i know this can just be an if else but its an example
game.print(event.player.name..' pressed my admin button')
end)
return element
end)
local toggle_cheat_mode =
-- starts the defination of a new concept based on "button"
button:clone('toggle_cheat_mode')
-- sets the already existing property of "caption"
:set_caption('Toggle Cheat Mode')
-- using the admin click event toggle cheat mode
:on_admin_click(function(event)
event.player.cheat_mode = not event.player.cheat_mode
end)
-- adds a draw event on top of the button draw event, element is now defined
:define_draw(function(concept,parent,element,...)
element.style.font_color = {r=1,g=0,b=0}
end)
-- draws the toggle cheat mode button, extra arguments can be passed
toggle_cheat_mode:draw(game.player.gui.left,...)
custom_button:draw(game.player.gui.left)
]]
--- Concept Base.
-- Functions that are used to make concepts
-- @section concept-base
local Event = require 'utils.event' -- @dep utils.event
local Store = require 'expcore.store' -- @dep expcore.store
local Game = require 'utils.game' -- @dep utils.game
local Factorio_Events = {}
@@ -57,6 +53,7 @@ local Prototype = {
events = {}
}
--- Acts as a gernal handler for any factorio event
local function factorio_event_handler(event)
local element = event.element
if element then
@@ -64,53 +61,110 @@ local function factorio_event_handler(event)
local concept_name = element.name
local concept_event = Factorio_Events[event.name][concept_name]
concept_event[1]:raise_event(concept_event[2],event,true)
else
local events_handlers = Factorio_Events[event.name]
for _,concept_event in pairs(events_handlers) do
concept_event[1]:raise_event(concept_event[2],event,true)
end
end
end
--[[-- Used to copy all the settings from one concept to another and removing links to the orginal
@tparam string concept_name the name of the new concept; must be unique
@treturn GuiConcept the base for building a custom gui
@usage
local custom_button =
Gui.get_concept('Button'):clone('CustomButton')
]]
function Prototype:clone(concept_name)
local concept = {
name = concept_name,
events = {}
}
local concept = table.deep_copy(self)
-- Replace name of the concept
concept.name = concept_name
concept.properties.name = concept_name
-- Remove all event handlers that were copied
concept.events = {}
for event_name,_ in pairs(self.events) do
concept.events[event_name] = {}
end
for key,value in pairs(self) do
if not concept[key] then
concept[key] = table.deep_copy(value)
end
-- Remove all refrences to an instance store
if concept.instance_store then
concept.instance_store = nil
concept.get_instances = nil
concept.add_instance = nil
concept.update_instances = nil
end
-- Remove all refrences to a data store
if concept.data_store then
concept.data_store = nil
concept.get_data = nil
concept.set_data = nil
concept.clear_data = nil
concept.update_data = nil
concept.on_data_store_update = nil
concept.events.on_data_store_update = nil
end
-- Remove all refrences to a combined store
if concept.set_instance_from_store then
concept.set_instance_from_store = nil
concept.set_store_from_instance = nil
end
return concept
end
--[[-- Adds a new event trigger to the concept which can be linked to a factorio event
@tparam string event_name the name of the event to add, must be unique, recomented to start with "on_"
@tparam[opt] defines.events factorio_event when given will fire the custom event when the factorio event is raised
@tparam[opt] function event_condition used to filter when a factorio event triggers the custom event; if the event contains a reference to an element then names are automatically filtered
@treturn GuiConcept to allow chaing of functions
@usage
local custom_button =
Gui.get_concept('Button'):clone('CustomButton')
:new_event('on_admin_clicked',defines.events.on_gui_click,function(event)
return event.player.admin -- only raise custom event when an admin clicks the button
end)
]]
function Prototype:new_event(event_name,factorio_event,event_condition)
-- Check the event does not already exist
if self.events[event_name] then
error('Event is already defined',2)
end
local handlers = {}
self.events[event_name] = handlers
self[event_name] = function(handler)
--[[-- Adds a custom event handler, replace with the name of the event
@function Prototype:on_custom_event
@tparam function handler the function which will recive the event
@treturn GuiConcept to allow chaing of functions
@usage
local custom_button =
Gui.get_concept('CustomButton'):clone('MyCustomButton')
:on_admin_clicked(function(event)
game.print(event.player.name..' pressed my admin button')
end)
]]
-- Adds a handler table and the event handler adder, comment above not indented to look better in docs
self.events[event_name] = {}
self[event_name] = function(concept,handler)
if type(handler) ~= 'function' then
error('Event handler must be a function',2)
end
local handlers = concept.events[event_name]
handlers[#handlers] = handler
return self
return concept
end
-- Adds the factorio event handler if this event is linked to one
if factorio_event then
handlers.factorio_handler = event_condition
self.events[event_name].factorio_handler = event_condition
if not Factorio_Events[factorio_event] then
Factorio_Events[factorio_event] = {}
Event.add(factorio_event,factorio_event_handler)
@@ -119,26 +173,45 @@ function Prototype:new_event(event_name,factorio_event,event_condition)
end
return self
end
--[[-- Raises a custom event, folowing keys included automaticlly: concept, event name, game tick, player from player_index, element if valid
@tparam string event_name the name of the event that you want to raise
@tparam[opt={}] table event table containg data you want to send with the event, some keys already included
@tparam[opt=false] boolean from_factorio internal use, if the raise came from the factorio event handler
@usage
local custom_button =
Gui.get_concept('CustomButton')
-- Note that this is an example and would not work due it expecting a valid element for event.element
-- this will however work fine if you can provide all expected keys, or its not linked to any factorio event
custom_button:raise_event('on_admin_clicked',{
player_index = game.player.index
})
]]
function Prototype:raise_event(event_name,event,from_factorio)
-- Check that the event exists
if not self.events[event_name] then
error('Event is not defined',2)
end
-- Setup the event table with automatic keys
event = event or {}
event.concept = self
event.name = event.name or event_name
event.tick = event.tick or game.tick
event.player = event.player_index and Game.get_player_by_index(event.player_index) or nil
if event.element and not event.element.valid then return end
-- Get the event handlers
local handlers = self.events[event_name]
-- If it is from factorio and the filter fails
if from_factorio and handlers.factorio_handler and not handlers.factorio_handler(event) then
return
end
-- Trigger every handler
for _,handler in ipairs(handlers) do
local success, err = pcall(handler,event)
if not success then
@@ -147,50 +220,408 @@ function Prototype:raise_event(event_name,event,from_factorio)
end
end
--[[-- Adds a new property to the concept, such as caption, tooltip, or some custom property you want to control
@tparam string property_name the name of the new property, must be unique
@tparam any default the default value for this property, although not strictly required is is strongly recomented
@tparam[opt] function setter_callback this function is called when set is called, if not provided then key in concept.properties is updated to new value
@treturn GuiConcept to allow chaing of functions
@usage
local button =
Gui.get_concept('Button')
:new_property('tooltip')
:new_property('caption',nil,function(properties,value)
properties.caption = value
properties.sprite = nil
properties.type = 'button'
end)
:new_property('sprite',nil,function(properties,value)
properties.image = value
properties.caption = nil
properties.type = 'sprite-button'
end)
]]
function Prototype:new_property(property_name,default,setter_callback)
-- Check that the property does not already exist
if self.properties[property_name] then
error('Property is already defined',2)
end
-- Set the property to its default
self.properties[property_name] = default
self['set_'..property_name] = function(value,...)
--[[-- Sets a new value for a property, triggers setter method if provided, replace with property name
@function Prototype:set_custom_property
@tparam any value the value that you want to set for this property
@treturn GuiConcept to allow chaing of functions
@usage
local custom_button =
Gui.get_concept('Button')
:set_caption('Default Button')
@usage
-- In our examples CustomButton is cloned from Button, this means the caption property already exists
-- note that what ever values that properties have at the time of cloning are also copied
local custom_button =
Gui.get_concept('CustomButton')
:set_caption('Custom Button')
]]
self['set_'..property_name] = function(concept,value,...)
if setter_callback then
local success, err = pcall(setter_callback,value,...)
-- Call the setter method to update values if present
local success, err = pcall(setter_callback,concept.properties,value,...)
if not success then
print('Gui property handler error with '..self.name..'/'..property_name..': '..err)
print('Gui property handler error with '..concept.name..'/'..property_name..': '..err)
end
else
self.properties[property_name] = value
-- Otherwise just update the key
concept.properties[property_name] = value
end
return self
return concept
end
return self
end
--[[-- Used to define how the concept is turned into an ingame element or "instance" as we may refer to them
@tparam function draw_callback the function that will be called to draw/update the instance; this function must return the instance or the new acting instance
@treturn GuiConcept to allow chaing of functions
@usage
local button =
Gui.get_concept('Button')
:define_draw(function(properties,parent,element)
-- Note that element might be nil if this is the first draw function
-- for this example we assume button was cloned from Prototype and so has no other draw functions defined
-- although not shown here you also can recive any extra arguments here from the call to draw
if properties.type == 'button' then
element = parent.draw{
type = properties.type,
name = properties.name,
caption = properties.caption,
tooltip = properties.tooltip
}
else
element = parent.draw{
type = properties.type,
name = properties.name,
sprite = properties.sprite,
tooltip = properties.tooltip
}
end
-- We must return the element or what we want to be seen as the instance
-- this is so other draw functions have access to it, say if our custom button defined a draw function to change the font color to red
return element
end)
]]
function Prototype:define_draw(draw_callback)
-- Check that it is a function that is being added
if type(draw_callback) ~= 'function' then
error('Draw define must be a function',2)
end
-- Add the draw function
self.draw_callbacks[#self.draw_callbacks+1] = draw_callback
return self
end
--[[-- Calls all the draw functions in order to create this concept in game; will also store and sync the instance if stores are used
@tparam LuaGuiElement parent_element the element that the concept will use as a base
@treturn LuaGuiElement the element that was created and then passed though and returned by the draw functions
@usage
local custom_button =
Gui.get_concept('CustomButton')
-- Note that the draw function from button was cloned, so unless we want to alter the base button we dont need a new draw define
custom_button:draw(game.player.gui.left)
]]
function Prototype:draw(parent_element,...)
local element
-- Loop over all the draw defines, element is updated when a value is returned
for _,draw_callback in pairs(self.draw_callbacks) do
local success, rtn = pcall(draw_callback,concept,parent_element,element,...)
local success, rtn = pcall(draw_callback,self.properties,parent_element,element,...)
if success and rtn then
element = rtn
elseif not success then
print('Gui draw handler error with '..self.name..': '..rtn)
end
end
-- Adds the instance if instance store is used
if self.add_instance then
self.add_instance(element)
end
-- Syncs the instance if there is a combined store
if self.set_instance_from_store then
self.set_instance_from_store(element)
end
return element
end
--- Concept Instances.
-- Functions that are used to make store concept instances
-- @section concept-instances
--[[-- Adds an instance store to the concept; when a new instance is made it is stored so you can access it later
@tparam[opt] function category_callback when given will act as a way to turn an element into a string to act as a key; keys returned can over lap
@treturn GuiConcept to allow chaing of functions
@usage
-- Note even thou this is a copy of Button; if Button had an instance store it would not be cloned over
local custom_button =
Gui.get_concept('CustomButton')
:define_instance_store(function(element)
return element.player_index -- The instances are stored based on player id
end)
]]
function Prototype:define_instance_store(category_callback)
self.instance_store = Store.register('gui_instances_'..self.name)
local valid_category = category_callback and type(category_callback) == 'function'
local function get_category(category)
return valid_category and type(category) == 'table' and category_callback(category) or category
end
--[[-- Gets all insatnces in a category, category may be nil to return all
@function Prototype.get_instances
@tparam[opt] ?string|LuaGuiElement category the category to get, can only be nil if categories are not used
@treturn table a table which contains all the instances
@usage
local custom_button =
Gui.get_concept('CustomButton')
custom_button.get_instances(1) -- player index 1
]]
function self.get_instances(category)
return Store.get(self.instance_store,get_category(category))
end
--[[-- Adds an instance to this concept, used automatically during concept:draw
@function Prototype.add_instance
@tparam LuaGuiElement element the element that will be added as an instance
@tparam[opt] string category the category to add this element under, if nil the category callback is used to assign one
@usage
local custom_button =
Gui.get_concept('CustomButton')
custom_button.add_instance(element) -- normally not needed due to use in concept:draw
]]
function self.add_instance(element,category)
category = category or get_category(element)
if not valid_category then category = nil end
return Store.update(self.instance_store,category,function(tbl)
if type(tbl) ~= 'table' then
return {element}
else
table.insert(tbl,element)
end
end)
end
--[[-- Applies an update function to all instances, simialr use to what table.forEach would be
@function Prototype.update_instances
@tparam[opt] ?string|LuaGuiElement category the category to get, can only be nil if categories are not used
@tparam function update_callback the function which is called on each instance, recives other args passed to update_instances
@usage
local custom_button =
Gui.get_concept('CustomButton')
-- Change all the instances to have red text for player 1
custom_button.update_instances(1,function(element)
element.style.font_color = {r=1,g=0,b=0}
end)
]]
function self.update_instances(category,update_callback,...)
local arg1
if type(category) == 'function' then
arg1 = update_callback
update_callback = category
category = nil
end
local instances = Store.get(self.instance_store,get_category(category))
for key,instance in pairs(instances) do
if not instance or not instance.valid then
instances[key] = nil
end
update_callback(instance,arg1,...)
end
end
return self
end
--- Concept Data.
-- Functions that are used to store concept data
-- @section concept-data
--[[-- Adds a data store to this concept which allows you to store synced/percistent data between instances
@tparam[opt] function category_callback when given will act as a way to turn an element into a string to act as a key; keys returned can over lap
@treturn GuiConcept to allow chaing of functions
@usage
-- Note even thou this is a copy of Button; if Button had an data store it would not be cloned over
local custom_button =
Gui.get_concept('CustomButton')
:define_data_store(function(element)
return element.player_index -- The data is stored based on player id
end)
]]
function Prototype:define_data_store(category_callback)
self:new_event('on_data_store_update')
self.data_store = Store.register('gui_data_'..self.name,function(value,key)
self:raise_event('on_data_store_update',{
category = key,
value = value
})
end)
local valid_category = category_callback and type(category_callback) == 'function'
local function get_category(category)
return valid_category and type(category) == 'table' and category_callback(category) or category
end
--[[-- Gets the data that is stored for this category
@function Prototype.get_data
@tparam[opt] ?string|LuaGuiElement category the category to get, can only be nil if categories are not used
@treturn any the data that you had stored in this location
@usage
local custom_button =
Gui.get_concept('CustomButton')
custom_button.get_data(1) -- player index 1
]]
function self.get_data(category)
return Store.get(self.data_store,get_category(category))
end
--[[-- Sets the data that is stored for this category
@function Prototype.set_data
@tparam[opt] ?string|LuaGuiElement category the category to set, can only be nil if categories are not used
@tparam any value the data that you want to stored in this location
@usage
local custom_button =
Gui.get_concept('CustomButton')
-- A table is used to show correct way to use a table with self.update_data
-- but a table is not required and can be any data, however upvalues may cause desyncs
custom_button.set_data(1,{
clicks = 0,
required_clicks = 100
}) -- player index 1
]]
function self.set_data(category,value)
return Store.set(self.data_store,get_category(category),value)
end
--[[-- Clears the data that is stored for this category
@function Prototype.clear_data
@tparam[opt] ?string|LuaGuiElement category the category to clear, can only be nil if categories are not used
@usage
local custom_button =
Gui.get_concept('CustomButton')
custom_button.clear_data(1) -- player index 1
]]
function self.clear_data(category)
return Store.clear(self.data_store,get_category(category))
end
--[[-- Updates the data that is stored for this category
@function Prototype.update_data
@tparam[opt] ?string|LuaGuiElement category the category to clear, can only be nil if categories are not used
@tparam function update_callback the function which is called to update the data
@usage
local custom_button =
Gui.get_concept('CustomButton')
custom_button.update_data(1,function(tbl)
tbl.clicks = tbl.clicks + 1 -- here we are incrementing the clicks by 1
end) -- player index 1
@usage
-- Alterative method more useful when not using a table
-- so for this example assume that we did custom_button.set_data(1,0)
custom_button.update_data(1,function(value)
return value + 1 -- here we are incrementing the value by 1, we may only be tracking clicks
end) -- player index 1
]]
function self.update_data(category,update_callback,...)
return Store.update(self.data_store,get_category(category),update_callback,...)
end
return self
end
--[[-- Used to add a both instance and data stores which are linked together, new instances are synced to current value, changing one instances changes them all
@tparam[opt] function category_callback when given will act as a way to turn an element into a string to act as a key; keys returned can over lap
@tparam function get_callback the function which is called when you set the store from an instance
@tparam function set_callback the function which is called when you update an instance using the value in the store
@treturn GuiConcept to allow chaing of functions
@usage
local custom_button =
Gui.get_concept('CustomButton')
:define_combined_store(
function(element)
return element.player_index -- The data is stored based on player id
end,
function(element)
return element.caption -- We want to store the caption
end,
function(element,value)
element.caption = value -- This is the inverse of above
end)
]]
function Prototype:define_combined_store(category_callback,get_callback,set_callback)
if set_callback == nil then
set_callback = get_callback
get_callback = category_callback
category_callback = nil
end
self:define_data_store(category_callback)
self:define_instance_Store(category_callback)
-- Will update all instances when the data store updates
self:on_data_store_update(function(event)
self.update_instances(event.category,set_callback,event.value)
end)
--[[-- Will set the state of an instance based on the value in the store
@function Prototype.set_instance_from_store
@tparam LuaGuiElement the element that you want to have update
@usage
local custom_button =
Gui.get_concept('CustomButton')
-- Used internally when first draw and automatically when the store updates
custom_button.set_instance_from_store(element)
]]
function self.set_instance_from_store(element)
set_callback(element,self.get_data(element))
end
--[[-- Will set the value in the store and update the other instances based on the instance given
@function Prototype.set_store_from_instance
@tparam LuaGuiElement the element that you want to use to update the store
@usage
local custom_button =
Gui.get_concept('CustomButton')
-- You may want to use this with gui events
custom_button.set_store_from_instance(element)
]]
function self.set_store_from_instance(element)
self.set_data(element,get_callback(element))
end
return self
end
return Prototype

View File

@@ -11,15 +11,19 @@ local scenario_difficuly = Store.uid_location()
local team_scores = 'team-scores'
-- Setting and getting data is then as simple as
-- note that when storing a table you must use Store.update
Store.set(scenario_difficuly,'Hard')
Store.set(team_scores,game.player.force.name,20)
Store.get(scenario_difficuly) -- returns 'Hard'
Store.get(team_scores,game.player.force.name) -- returns 20
Store.update(team_scores,game.player.force.name,function(value,key)
return value + 10 -- add 10 to the score
end)
-- The reason for using stores over global is the abilty to watch for updates
-- for stores to work you must register them, often at the end of the file
-- note that storing a table value may cause issues as a key changing does not cause the set function to trigger
Store.register(scenario_difficuly,function(value)
game.print('Scenario difficulty has been set to: '..value)
end)
@@ -152,20 +156,67 @@ function Store.set(location,key,value,from_sync)
return true
end
--- Triggers the change handler manually
--- Allows for updating a value based on the current value; only valid way to change tables in a store
-- @tparam string location the location to set the data to
-- @tparam[opt] string key the key location if required
function Store.update(location,key)
-- @tparam[opt] function update_callback the function called to update the value stored, rtn value to set new value
function Store.update(location,key,update_callback,...)
local value = Store.get(location,key)
script.raise_event(Store.events.on_value_changed,{
tick=game.tick,
location=location,
key=key,
value=value,
from_sync=false
})
local arg1
if type(key) == 'function' then
arg1 = update_callback
update_callback = key
key = nil
end
local rtn
if update_callback and type(update_callback) == 'function' then
rtn = update_callback(value,key,arg1,...)
end
if rtn then
Store.set(location,key,rtn)
else
script.raise_event(Store.events.on_value_changed,{
tick=game.tick,
location=location,
key=key,
value=value,
from_sync=false
})
end
end
--- Allows for updating all values at a location based on the current value; only valid way to change tables in a store
-- @tparam string location the location to set the data to
-- @tparam[opt] function update_callback the function called to update the value stored
function Store.update_all(location,update_callback,...)
local data = Store.get(location)
error_not_table(data)
for key,value in pairs(data) do
local rtn
if update_callback and type(update_callback) == 'function' then
rtn = update_callback(value,key,...)
end
if rtn then
Store.set(location,key,rtn)
else
script.raise_event(Store.events.on_value_changed,{
tick=game.tick,
location=location,
key=key,
value=value,
from_sync=false
})
end
end
end
--- Sets the value at a location to nil, this location must be registered
-- @tparam string location the location to set the data to