Browse Source

refactor pressure logic toggle to act as option enum

tags/20180717
thetaepsilon-gamedev 2 years ago
parent
commit
75978a0207
5 changed files with 17 additions and 10 deletions
  1. +12
    -2
      default_settings.lua
  2. +1
    -4
      init.lua
  3. +1
    -1
      pipes.lua
  4. +1
    -1
      pressure_logic/abm_register.lua
  5. +2
    -2
      pressure_logic/flowable_node_registry_install.lua

+ 12
- 2
default_settings.lua View File

@@ -29,16 +29,22 @@ local settings = {
delete_item_on_clearobject = true,
}

pipeworks.toggles = {}
-- documentation for toggles controlling pressure logic features.
-- do not edit this file directly;
-- instead, create pipeworks_settings.txt in your world directory,
-- and copy the uncommented lines from the block comments below into it.
--[[
-- flow logic implementation.
-- set to one of the following strings.
-- "classic": classic mode written by VanessaE
-- "pressure": pressure metadata based, written by thetaepsilon.
-- has caveats such as water speed issues though.
-- setting to nil inhibits all flow logic, useful for debugging ABM crashes,
-- or for rendering the pipes purely decorative.
]]
pipeworks.toggles.pipe_mode = "classic"
--[[
pipeworks.toggles.pressure_logic = true

-- force-enable finite water handling mode.
-- this changes the way that water node placement is handled;
-- volume will always be preserved,

+ 1
- 4
init.lua View File

@@ -15,17 +15,13 @@ pipeworks.modpath = minetest.get_modpath("pipeworks")

dofile(pipeworks.modpath.."/default_settings.lua")
-- Read the external config file if it exists.


pipeworks.toggles = {}
local worldsettingspath = pipeworks.worldpath.."/pipeworks_settings.txt"
local worldsettingsfile = io.open(worldsettingspath, "r")
if worldsettingsfile then
worldsettingsfile:close()
dofile(worldsettingspath)
end
if pipeworks.toggles.pressure_logic then
if pipeworks.toggles.pipe_mode == "pressure" then
minetest.log("warning", "pipeworks pressure logic mode comes with caveats and differences in behaviour, you have been warned!")
end


+ 1
- 1
pipes.lua View File

@@ -213,7 +213,7 @@ pipeworks.pipes_empty_nodenames = pipes_empty_nodenames



if not pipeworks.toggles.pressure_logic then
if pipeworks.toggles.pipe_mode == "classic" then




+ 1
- 1
pressure_logic/abm_register.lua View File

@@ -10,7 +10,7 @@ local flowlogic = pipeworks.flowlogic
-- see flowlogic.run() in abms.lua.

local register_flowlogic_abm = function(nodename)
if pipeworks.toggles.pressure_logic then
if pipeworks.toggles.pipe_mode == "pressure" then
minetest.register_abm({
label = "pipeworks new_flow_logic run",
nodenames = { nodename },

+ 2
- 2
pressure_logic/flowable_node_registry_install.lua View File

@@ -20,14 +20,14 @@ local insertbase = function(nodename)
if checkexists(nodename) then error("pipeworks.flowables duplicate registration!") end
pipeworks.flowables.list.all[nodename] = true
-- table.insert(pipeworks.flowables.list.nodenames, nodename)
if pipeworks.toggles.pressure_logic then
if pipeworks.toggles.pipe_mode == "pressure" then
abmregister.flowlogic(nodename)
end
end

local regwarning = function(kind, nodename)
local tail = ""
if not pipeworks.toggles.pressure_logic then tail = " but pressure logic not enabled" end
if pipeworks.toggles.pipe_mode ~= "pressure" then tail = " but pressure logic not enabled" end
--pipeworks.logger(kind.." flow logic registry requested for "..nodename..tail)
end


Loading…
Cancel
Save