Refactor village namegen
parent
f87b82b670
commit
87e44a1cd8
|
@ -6,9 +6,9 @@ minetest.register_chatcommand("villages", {
|
|||
privs = { debug = true },
|
||||
func = function(name, param)
|
||||
local list = {}
|
||||
for _, village in pairs(village.villages) do
|
||||
for _, vill in pairs(village.villages) do
|
||||
-- <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
|
||||
if #list == 0 then
|
||||
return true, S("No villages.")
|
||||
|
@ -29,10 +29,10 @@ minetest.register_chatcommand("find_village", {
|
|||
return false, S("No player.")
|
||||
end
|
||||
local pos = player:get_pos()
|
||||
local village = village.get_nearest_village(pos)
|
||||
if not village then
|
||||
local vill = village.get_nearest_village(pos)
|
||||
if not vill then
|
||||
return true, S("No villages.")
|
||||
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,
|
||||
})
|
||||
|
|
|
@ -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))
|
||||
|
||||
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)
|
||||
|
||||
|
|
|
@ -10,7 +10,12 @@ village.name.disambiguators = {"nova", "vino", "gemo", "bira", "leno", "gata"}
|
|||
-- value = true if village name is 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 middle = ""
|
||||
local postfix = ""
|
||||
|
@ -39,19 +44,21 @@ function village.name.generate(pr)
|
|||
|
||||
name = name:gsub("^%l", string.upper)
|
||||
|
||||
-- If name is already taken, append random disambiguators
|
||||
-- (extra suffixes) until the name is unique
|
||||
-- Name will be of the form "<Old name>-<Disambiguator>",
|
||||
-- e.g. "Iner" will become "Iner-Nova".
|
||||
while village.name.used[name] do
|
||||
local rnd = pr:next(1, #village.name.disambiguators)
|
||||
local disambiguator = village.name.disambiguators[rnd]
|
||||
disambiguator = disambiguator:gsub("^%l", string.upper)
|
||||
local append = "-" .. disambiguator
|
||||
name = name .. append
|
||||
end
|
||||
if used_names then
|
||||
-- If name is already taken, append random disambiguators
|
||||
-- (extra suffixes) until the name is unique
|
||||
-- Name will be of the form "<Old name>-<Disambiguator>",
|
||||
-- e.g. "Iner" will become "Iner-Nova".
|
||||
while village.name.used[name] do
|
||||
local rnd = pr:next(1, #village.name.disambiguators)
|
||||
local disambiguator = village.name.disambiguators[rnd]
|
||||
disambiguator = disambiguator:gsub("^%l", string.upper)
|
||||
local append = "-" .. disambiguator
|
||||
name = name .. append
|
||||
end
|
||||
|
||||
village.name.used[name] = true
|
||||
used_names[name] = true
|
||||
end
|
||||
|
||||
return name
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue