Reorganize code

master
BrunoMine 2019-12-04 00:16:30 -03:00
parent f47479a6cb
commit 2e7ebb18e7
17 changed files with 190 additions and 152 deletions

View File

@ -1,95 +0,0 @@
API de Desenvolvimento Lua para mod HardTorch 0.5.0
===================================================
Introdução
---------------------------------------------------
Esse Mod possui alguns metodos para registrar
tochas e combustiveis compativeis, bem como outros
recursos para apoiar o desenvolvimento de outras
modificações afim de manter compatibilidade.
### Registros
Ao registrar uma tocha, nenhum item (node, tool e etc)
é criado, o registro serve apenas para que a API faça
com que um determinado item, ou conjunto de itens, funcionem
de maneira sistematica para funcionarem como uma tocha.
Geralmente uma tocha é composta por varios itens os quais
a funcionam de forma sistematica para parecerem uma simples
tocha no jogo. Essa sistematização foi elaborada para permitir
ao desenvolvedor personalizar o maior número de caracteristicas
dos itens.
Ao ver os parametros fornecidos ao registrar uma tocha,
combustivel ou qualquer outra coisa, verifique as mudanças
que serão realizadas nos itens que serão usados para a formação
da tocha, combustivel ou outro.
* `hardtorch.register_torch(name, definições da tocha)`: Registra uma ferramenta de iluminação
* `name`: Itemstring da tocha. Chamadas (Callbacks) `on_use` e `on_place` são alterados pela API.
* Um item com itemstring igual a `name` com prefixo "_on" precisa estar registrado em Minetest
e representara a ferramenta acesa. Chamadas (Callbacks) `on_use`, `on_drop` e `on_place`
são alterados pela API.
* Adiciona tocha registrada em `hardtorch.registered_torchs`
* `hardtorch.register_fuel(name, definições do combustivel)`: Registra uma combustivel
* `name`: Nome do item do tipo ferramenta que vai representar o combustivel
* Adiciona combustivel registrado em `hardtorch.registered_fuels`
* `hardtorch.register_lighter(name, definições do acendedor)`: Registra um acendedor
* `name`: Nome do item do tipo ferramenta que vai representar o acendedor
* Adiciona combustivel registrado em `hardtorch.registered_lighters`
### Definições do node (`register_torch`)
{
light_source = 13, --[[
^ Intensidade de iluminação da tocha ao ser segurada acesa
^ Mínimo é 1 e máximo é 14 ]]
nodes = { --[[
^ Todos os nodes informados terão as chamadas (callbacks) `on_dig`, `on_use`, `on_timer`
e `after_place_node`. Parametro `drop` do node tambem será mudado.]]
fire_source = true, --[[
^ Registra automaticamente esses nodes como fontes de fogo
^ Se omitido, serão registrados ]]
node = "default:torch", -- Node que ilumina quando colocado no mapa
node_ceiling = "default:torch_ceiling", -- Opcional para nodes wallmounted
node_wall = "default:torch_wall", -- Opcional para nodes wallmounted
},
nodes_off = { -- Nodes que representam a tocha esgotada.
node = "default:torch_off", -- Node apagado quando colocado no mapa
node_ceiling = "default:torch_off_ceiling", -- Opcional para nodes wallmounted
node_wall = "default:torch_off_wall", -- Opcional para nodes wallmounted
},
sounds = {
turn_on = {name="sound_file", gain=1.0}, -- Som emitido ao acender a tocha
turn_off = {name="sound_file", gain=1.0}, -- Som emitido apagar a tocha
water_turn_off = {name="sound_file", gain=1.0}, -- Som emitido ao apagar a tocha quando em contato com agua
},
fuel = {"mymod:fuel_1", "mymod:fuel_2"}, --[[
^ Lista de itens consumiveis
^ Precisam ser ferramentas desgastaveis ]]
drop_on_water = "", --[[
^ Itemstring do item dropado quando a tocha é apagada pela agua
^ Se omitido, dropa a propria tocha apagada ]]
}
### Definições do combustivel (`register_fuel`)
{
turns = 1.0,
^ Noites de duração
}
### Definições do acendedor (`register_lighter`)
{
wear_by_use = 1000,
^ Desgaste causado na ferramenta
}

13
api.lua
View File

@ -8,8 +8,8 @@
API
]]
-- Global Table
-- Tabela Global
-- Torchs table
-- Tabela de tochas
hardtorch.registered_torchs = {}
-- Register torch
@ -40,3 +40,12 @@ hardtorch.register_torch = function(name, def)
end
-- Lighters table
-- Tabela de acendedores
hardtorch.registered_lighters = {}
-- Register lighter
-- Registrar Acendedor
hardtorch.register_lighter = function(name, def)
hardtorch.registered_lighters[name] = def
end

94
doc/API-pt_br.md Normal file
View File

@ -0,0 +1,94 @@
API de Desenvolvimento Lua para o mod HardTorch
===============================================
Introdução
----------
Esse Mod possui alguns metodos para registrar tochas e combustiveis compativeis, bem como outros
recursos para apoiar o desenvolvimento de outras modificações afim de manter compatibilidade.
Tabelas globais
---------------
* `hardtorch.registered_torchs`: Definições de tochas registradas, indexado por itemstring.
* `hardtorch.registered_fuels`: Definições de combustiveis registrados, indexado por itemstring.
* `hardtorch.registered_lighters`: Definições de acendedores registrados, indexado por itemstring.
* `hardtorch.registered_nodes`: Definições de nós/blocos de tocha registrados, indexado por itemstring.
* `hardtorch.fire_sources`: Lista de fontes de calor, indexado por itemstring.
* `hardtorch.not_place_torch_on`: Lista de nós/blocos evitaveis para colocação de tochas, não indexado.
### Tochas
Ao registrar uma tocha, nenhum item (nó ou ferramenta) é criado. A API irá modificar os itens já
registrados em Minetest afim de funcionarem como um único item que é a tocha. Portanto, toda a
arte e aspectos físicos da tocha não é realizado pela API e deve ser previamente criado,
isso permite mais personalização de cada tocha.
Os itens previamente criados, e que serão usados para registrar a tocha são:
* Tocha: Item do tipo ferramenta que será usado como tocha apagada no inventario.
* Tocha acesa: Item do tipo ferramenta que será usado como tocha acesa no invenario.
* Bloco de tocha: Item do tipo nó/bloco que será colocado no chão como uma tocha apagada.
* Bloco de tocha acesa: Item do tipo nó/bloco que será colocado no chão como uma tocha acesa.
* Combustivel: Item do tipo ferramenta que será desgastado enquanto a tocha estiver acesa.
#### Combustivel
O combustivel é um item do tipo ferramenta que será consumido enquanto o jogador estiver com uma
tocha acesa ou repassado para a tocha acesa que for colocada como bloco. Todos os combustiveis
precisam ser previamente registrados como tal atravez do método correspondente.
#### Acendedor
O acendedor é um item do tipo ferramenta usado para acender uma tocha no inventario. Todos os
acendedores precisam ser previamente registrados como tal atravez do método correspondente.
A necessidade do acendedor é desabilitada por padrão nas configurações de jogo.
#### Fontes de calor
As fontes de calor são blocos que podem ser usados para acender uma tocha. Os nodes que podem ser
usados como fonte de calor precisar ser inseridos na tabela correspondente.
A necessidade da fonte de calor para acender tochas é desabilitada por padrão nas configurações de jogo.
### Methods
* `hardtorch.register_torch(itemstring, {definições da tocha})`: Registra uma tocha.
* `hardtorch.register_fuel(itemstring, {definições do combustivel})`: Registra uma combustivel.
* `hardtorch.register_lighter(itemstring, {definições do acendedor})`: Registra um acendedor.
### Definições do node (`register_torch`)
{
light_source = 13, -- Intensidade de iluminação da tocha (máximo é 14)
nodes = { -- Blocos de tocha acesa
node = "bloco_padrao", -- Bloco padrão padrão
node_ceiling = "bloco_no_teto", -- Blocos colocados no teto <opicional>
node_wall = "bloco_na_parede", -- Blocos colocados na parede <opicional>
fire_source = true, -- Registra como fonte de fogo (padrão é `true`) <opicional>
},
nodes_off = { -- Bloco de tocha apagada
node = "bloco_padrao_apagado", -- Bloco apagado quando colocado no mapa
node_ceiling = "bloco_no_teto", -- Opcional para nodes wallmounted
node_wall = "bloco_na_parede", -- Opcional para nodes wallmounted
},
sounds = { -- Sons
turn_on = {name="som", gain=1.0}, -- Som de acender tocha
turn_off = {name="som", gain=1.0}, -- Som de apagar tocha de forma generica
water_turn_off = {name="som", gain=1.0}, -- Som de apagar tocha com agua
},
fuel = {"combustivel1", "combustivel2"}, -- Lista de combustiveis
drop_on_water = "item_dropado", -- Item caido se molhar a tocha (por padrão é a tocha) <opicional>
}
### Definições do combustivel (`register_fuel`)
{
turns = 1.0, -- Noites de duração
}
### Definições do acendedor (`register_lighter`)
{
wear_by_use = 1000, -- Desgaste causado na ferramenta
}

51
features/api.lua Normal file
View File

@ -0,0 +1,51 @@
--[[
Mod HardTorch for Minetest
Copyright (C) 2019 BrunoMine (https://github.com/BrunoMine)
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>5.
API
]]
-- Global Table
-- Tabela Global
hardtorch.registered_torchs = {}
-- Register torch
-- Registrar tocha
hardtorch.register_torch = function(name, def)
hardtorch.registered_torchs[name] = def
-- Consolidate data
-- Consolidar dados
hardtorch.registered_torchs[name].sounds = def.sounds or {}
-- Register tools (off and on)
-- Registrar ferramentas (apagada e acesa)
hardtorch.register_tool(name, def)
-- Register node
-- Registrar node
hardtorch.register_node(name, def)
-- Turn off the torch on joining the server
-- Desligue a tocha ao ingressar no servidor
minetest.register_on_joinplayer(function(player)
if hardtorch.find_item(player, name.."_on") == true then
hardtorch.turnoff_torch(player, name)
end
end)
end
-- Global Table
-- Tabela global
hardtorch.registered_lighters = {}
-- Register lighter
-- Registrar Acendedor
hardtorch.register_lighter = function(name, def)
hardtorch.registered_lighters[name] = def
end

View File

@ -8,36 +8,32 @@
]]
-- Global Table
-- Tabela Global
-- Global Tables
-- API Table
-- Tabela da API
hardtorch = {}
-- Players in loop to torchs on
-- Players in loop to lit torch
-- Jogadores em loop de tocha acesa
hardtorch.in_loop = {}
-- Require fire source to light torch
-- Requerer fonte de fogo para acender tocha
hardtorch.torch_lighter = (minetest.settings:get("hardtorch_torch_lighter") == "true") or false
-- Fire sources (nodes that act as fire sources to light torches)
-- Fontes de fogo (nodes que funcionam como fontes de fogo para acender tochas)
hardtorch.fire_sources = {}
-- Nodes to avoid when placing torches
-- Nodes para evitar ao colocar tochas
hardtorch.not_place_torch_on = {}
-- Anvil Mod
if minetest.get_modpath("anvil") then
table.insert(hardtorch.not_place_torch_on, "anvil:anvil")
end
-- Load settings
-- Require fire source to light torch
-- Requerer fonte de fogo para acender tocha
hardtorch.torch_lighter = (minetest.settings:get("hardtorch_torch_lighter") == "true") or false
-- Fixed time for a night
-- Tempo fixo de duração de uma noite
hardtorch.night_time = tonumber(minetest.settings:get("hardtorch_fixed_night_time") or 0)
@ -50,6 +46,9 @@ if hardtorch.night_time == 0 then
end
-- Load scripts
-- Notify load
-- Notificador de Inicializador
local notify = function(msg)
@ -58,32 +57,27 @@ local notify = function(msg)
end
end
-- Modpath
local modpath = minetest.get_modpath("hardtorch")
-- Carregar scripts
notify("Loading...")
-- API
dofile(modpath.."/common.lua")
dofile(modpath.."/light.lua")
dofile(modpath.."/tool.lua")
dofile(modpath.."/node.lua")
dofile(modpath.."/lighter.lua")
dofile(modpath.."/fuel.lua")
dofile(modpath.."/api.lua")
-- API features
dofile(modpath.."/features/common.lua")
dofile(modpath.."/features/light.lua")
dofile(modpath.."/features/tool.lua")
dofile(modpath.."/features/node.lua")
dofile(modpath.."/features/fuel.lua")
dofile(modpath.."/features/api.lua")
-- Content
dofile(modpath.."/oil.lua")
dofile(modpath.."/torchs/torch.lua")
dofile(modpath.."/torchs/lamp.lua")
dofile(modpath.."/torchs/xdecor_candle.lua")
dofile(modpath.."/content/oil.lua")
dofile(modpath.."/content/torch.lua")
dofile(modpath.."/content/lamp.lua")
dofile(modpath.."/content/xdecor_candle.lua")
notify("OK!")
-- Preset
-- Presets
-- Pré ajustes
-- Lighter Flint and Steel
@ -100,7 +94,12 @@ hardtorch.fire_sources["default:lava_source"] = true
hardtorch.fire_sources["fire:basic_flame"] = true
hardtorch.fire_sources["fire:permanent_flame"] = true
-- Campfire Mod
-- Campfire mod
if minetest.get_modpath("campfire") then
hardtorch.fire_sources["campfire:campfire_active"] = true
end
-- Anvil mod
if minetest.get_modpath("anvil") then
table.insert(hardtorch.not_place_torch_on, "anvil:anvil")
end

View File

@ -1,20 +0,0 @@
--[[
Mod HardTorch for Minetest
Copyright (C) 2019 BrunoMine (https://github.com/BrunoMine)
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>5.
Lighter
]]
-- Global Table
-- Tabela global
hardtorch.registered_lighters = {}
-- Register lighter
-- Registrar Acendedor
hardtorch.register_lighter = function(name, def)
hardtorch.registered_lighters[name] = def
end

View File

@ -1,4 +1,4 @@
name = hardtorch
description = Tochas realistas (Realistic torchs)
description = Realistic torchs
depends = default, fire
optional_depends = xdecor, campfire