Tree Planter Tool (Open Source)

The Lua scripting language allows you to give your plugin more advanced features.

Moderators: Plugin Moderators, Scenario Moderators

User avatar
Lobby
Developer
Posts: 3719
Joined: 26 Oct 2008, 12:34
Plugins: Showcase Store
Version: Beta

Platform

Tree Planter Tool (Open Source)

#1

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
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lua editor

Output: Select all

...
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
}
}
}
]
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
JSON checker

Output: Select all

...
: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

Return to “Lua Scripting”