Refactor village namegen
This commit is contained in:
parent
f87b82b670
commit
87e44a1cd8
@ -6,9 +6,9 @@ minetest.register_chatcommand("villages", {
|
|||||||
privs = { debug = true },
|
privs = { debug = true },
|
||||||
func = function(name, param)
|
func = function(name, param)
|
||||||
local list = {}
|
local list = {}
|
||||||
for _, village in pairs(village.villages) do
|
for _, vill in pairs(village.villages) do
|
||||||
-- <Village name>: Coordinates>
|
-- <Village name>: Coordinates>
|
||||||
table.insert(list, "• " .. S("@1: @2", village.name, minetest.pos_to_string(village.pos)))
|
table.insert(list, "• " .. S("@1: @2", vill.name, minetest.pos_to_string(vill.pos)))
|
||||||
end
|
end
|
||||||
if #list == 0 then
|
if #list == 0 then
|
||||||
return true, S("No villages.")
|
return true, S("No villages.")
|
||||||
@ -29,10 +29,10 @@ minetest.register_chatcommand("find_village", {
|
|||||||
return false, S("No player.")
|
return false, S("No player.")
|
||||||
end
|
end
|
||||||
local pos = player:get_pos()
|
local pos = player:get_pos()
|
||||||
local village = village.get_nearest_village(pos)
|
local vill = village.get_nearest_village(pos)
|
||||||
if not village then
|
if not vill then
|
||||||
return true, S("No villages.")
|
return true, S("No villages.")
|
||||||
end
|
end
|
||||||
return true, S("Nearest village is @1 at @2.", village.fname, minetest.pos_to_string(village.pos))
|
return true, S("Nearest village is @1 at @2.", vill.fname, minetest.pos_to_string(vill.pos))
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
@ -553,7 +553,7 @@ function after_village_area_emerged(blockpos, action, calls_remaining, params)
|
|||||||
|
|
||||||
minetest.log("info", "[rp_village] Village area emerged at startpos = "..minetest.pos_to_string(pos))
|
minetest.log("info", "[rp_village] Village area emerged at startpos = "..minetest.pos_to_string(pos))
|
||||||
|
|
||||||
local name = village.name.generate(pr)
|
local name = village.name.generate(pr, village.name.used)
|
||||||
|
|
||||||
local depth = pr:next(village.min_size, village.max_size)
|
local depth = pr:next(village.min_size, village.max_size)
|
||||||
|
|
||||||
|
@ -10,7 +10,12 @@ village.name.disambiguators = {"nova", "vino", "gemo", "bira", "leno", "gata"}
|
|||||||
-- value = true if village name is used
|
-- value = true if village name is used
|
||||||
village.name.used = {}
|
village.name.used = {}
|
||||||
|
|
||||||
function village.name.generate(pr)
|
-- Generates and returns a random village name.
|
||||||
|
-- * pr: PseudoRandom object
|
||||||
|
-- * used_names: Optional. If a table, is a name-index list of used names
|
||||||
|
--
|
||||||
|
-- Returns a village name. Sets used_names[<village name>] to true
|
||||||
|
function village.name.generate(pr, used_names)
|
||||||
local prefix = ""
|
local prefix = ""
|
||||||
local middle = ""
|
local middle = ""
|
||||||
local postfix = ""
|
local postfix = ""
|
||||||
@ -39,19 +44,21 @@ function village.name.generate(pr)
|
|||||||
|
|
||||||
name = name:gsub("^%l", string.upper)
|
name = name:gsub("^%l", string.upper)
|
||||||
|
|
||||||
-- If name is already taken, append random disambiguators
|
if used_names then
|
||||||
-- (extra suffixes) until the name is unique
|
-- If name is already taken, append random disambiguators
|
||||||
-- Name will be of the form "<Old name>-<Disambiguator>",
|
-- (extra suffixes) until the name is unique
|
||||||
-- e.g. "Iner" will become "Iner-Nova".
|
-- Name will be of the form "<Old name>-<Disambiguator>",
|
||||||
while village.name.used[name] do
|
-- e.g. "Iner" will become "Iner-Nova".
|
||||||
local rnd = pr:next(1, #village.name.disambiguators)
|
while village.name.used[name] do
|
||||||
local disambiguator = village.name.disambiguators[rnd]
|
local rnd = pr:next(1, #village.name.disambiguators)
|
||||||
disambiguator = disambiguator:gsub("^%l", string.upper)
|
local disambiguator = village.name.disambiguators[rnd]
|
||||||
local append = "-" .. disambiguator
|
disambiguator = disambiguator:gsub("^%l", string.upper)
|
||||||
name = name .. append
|
local append = "-" .. disambiguator
|
||||||
end
|
name = name .. append
|
||||||
|
end
|
||||||
|
|
||||||
village.name.used[name] = true
|
used_names[name] = true
|
||||||
|
end
|
||||||
|
|
||||||
return name
|
return name
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user