Tree Planter Tool (Open Source)

The Lua scripting language allows you to give your plugin more advanced features.
Previous topicNext topic
User avatar
Lobby
Inhabitant of a Supercluster
Reactions:
Posts: 3759
Joined: 26 Oct 2008, 10:34
Plugins: Showcase Store

Tree Planter Tool (Open Source)

Post by Lobby »

image.png
image.png
As of version 1.9.32 the game contains the so called tree planter tool that allows to plant a variety of trees easily by tapping somewhere on the map. This tool was implemented as a plugin and serves as a basic example of how to use Lua for tools and the new GUI features. The concept of the UI and the icon were made by @THEMAX .

The general structure of the code looks like that (omitted implementations for readability) :lua: :

Code: Select all    Reset

-- Some local variables used for state local minBrushSize local maxBrushSize local treeDrafts local density local roughness local brushSize local treeSelection -- Cache drawing functions for performance reasons local setTile = Drawing.setTile local drawTileFrame = Drawing.drawTileFrame -- Gets the storage table we use for saving/loading the settings local function getStorage() end -- Save settings to storage local function saveState() end -- Load settings from storage local function loadState() end -- Show about dialog local function about() end -- Show configuration dialog local function configure() end -- True if trees can be placed here in general local function isValid(x, y) end -- Initialize stuff, e.g. load settings function script:init() end -- Setup tool, including the buttons for configuration and about dialog function script:event(x, y, level, event) end -- Draw tile based overlay, red frame for invalid placed function script:draw(tileX, tileY, hoverX, hoverY) end -- Execute action function script:click(tileX, tileY) end
Lua editor
Run
The json features real time scripting for testing purposes :json :

Code: Select all    Reset

[ { "id":"$treeplantertool00_open", "type":"tool", "preview frames":[{"bmp":"icon.png"}], "title id":"draft_treeplantertool00_title", "text id":"draft_treeplantertool00_text", "category":"$cat_tree00", "script":"#LuaWrapper", "meta":{ "luawrapper":{ "script":"script.lua", "dev":true } } } ]
JSON checker
Check
:plugin
You'll find the git repository here: https://github.com/LobbyDivinus/TreePlanterTool
You can use the option "Download ZIP" to download the whole plugin.

:mine
Please feel free to create your own tools based on this one. You can also make changes to this tool and make a pull request of the changes on GitHub.

:jb:
More detailed documentation about the GUI features in Lua can be found in the GUI Compendium
You do not have the required permissions to view the files attached to this post.
Previous topicNext topic