Skip to content

Commit

Permalink
Add some utility functions to help clarify the merge mode being used …
Browse files Browse the repository at this point in the history
…when assigning terrains
  • Loading branch information
CelticMinstrel committed Feb 20, 2021
1 parent fb5d355 commit 998a0ec
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions data/lua/core.lua
Expand Up @@ -635,6 +635,52 @@ if wesnoth.kernel_type() == "Game Lua Kernel" then
if type(side) == 'number' then side = wesnoth.sides[side] end
return side.starting_location
end

--[========[Map module]========]

function wesnoth.map.split_terrain_code(code)
return table.unpack(code:split('^', {remove_empty = false}))
end

-- possible terrain string inputs:
-- A A^ A^B ^ ^B
-- implied mode:
-- both base both overlay overlay
function wesnoth.map.replace_base(code)
local base, overlay = wesnoth.map.split_terrain_code(code)
if base == nil then -- ^ or ^B
-- There's no base to replace with, so do nothing
return ''
else
-- Use the specified base but ignore the overlay
return base .. '^'
end
end
function wesnoth.map.replace_overlay(code)
local base, overlay = wesnoth.map.split_terrain_code(code)
if overlay == nil or overlay == '' then -- A or A^
-- No overlay was specified, so we want to clear the overlay without touching the base
return '^'
else
-- An overlay was specified, so use that and ignore the base
new_ter = '^' .. overlay
end
end
function wesnoth.map.replace_both(code)
local base, overlay = wesnoth.map.split_terrain_code(code)
if base == '' then -- ^ or ^B
-- There's no way to find a base to replace with in this case.
-- Could use the existing base, but that's not really replacing both, is it?
error('replace_both: no base terrain specified')
elseif overlay == '' then -- A^
-- This would normally mean replace base while preserving overlay,
-- but we actually want to replace base and clear overlay.
return base
else
-- It's already going to replace both, so return unchanged
return code
end
end
else
--[========[Backwards compatibility for wml.tovconfig]========]
local fake_vconfig_mt = {
Expand Down

0 comments on commit 998a0ec

Please sign in to comment.