mirror of
https://github.com/Refactorio/RedMew.git
synced 2025-01-30 04:30:58 +02:00
utils->core, list_utils->table, overhaul both and updated extant uses
This commit is contained in:
parent
c7201e119b
commit
ae024c4e10
@ -16,9 +16,9 @@ local name_combinations = #naming_words.adverbs * #naming_words.adjectives * #na
|
|||||||
-- @returns name as a string
|
-- @returns name as a string
|
||||||
local function create_name(words_table)
|
local function create_name(words_table)
|
||||||
local adverb, adjective, noun
|
local adverb, adjective, noun
|
||||||
adverb = table.get_random(words_table.adverbs)
|
adverb = table.get_random(words_table.adverbs, true)
|
||||||
adjective = table.get_random(words_table.adjectives)
|
adjective = table.get_random(words_table.adjectives, true)
|
||||||
noun = table.get_random(words_table.nouns)
|
noun = table.get_random(words_table.nouns, true)
|
||||||
return adverb .. '_' .. adjective .. '_' .. noun
|
return adverb .. '_' .. adjective .. '_' .. noun
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1,16 +1,22 @@
|
|||||||
local Module = {}
|
local Module = {}
|
||||||
local Game = require 'utils.game'
|
local Game = require 'utils.game'
|
||||||
local prefix = '## - '
|
local prefix = '## - '
|
||||||
|
local minutes_to_ticks = 60 * 60
|
||||||
|
local hours_to_ticks = 60 * 60 * 60
|
||||||
|
local ticks_to_minutes = 1 / minutes_to_ticks
|
||||||
|
local ticks_to_hours = 1 / hours_to_ticks
|
||||||
|
|
||||||
|
--- Measures distance between pos1 and pos2
|
||||||
Module.distance = function(pos1, pos2)
|
Module.distance = function(pos1, pos2)
|
||||||
local dx = pos2.x - pos1.x
|
local dx = pos2.x - pos1.x
|
||||||
local dy = pos2.y - pos1.y
|
local dy = pos2.y - pos1.y
|
||||||
return math.sqrt(dx * dx + dy * dy)
|
return math.sqrt(dx * dx + dy * dy)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Takes msg and prints it to all players except provided player
|
||||||
Module.print_except = function(msg, player)
|
Module.print_except = function(msg, player)
|
||||||
for _, p in pairs(game.players) do
|
for _, p in pairs(game.connected_players) do
|
||||||
if p.connected and p ~= player then
|
if p ~= player then
|
||||||
p.print(msg)
|
p.print(msg)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -93,10 +99,7 @@ Module.ternary = function(c, t, f)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local minutes_to_ticks = 60 * 60
|
--- Takes a time in ticks and returns a string with the time in format "x hour(s) x minute(s)"
|
||||||
local hours_to_ticks = 60 * 60 * 60
|
|
||||||
local ticks_to_minutes = 1 / minutes_to_ticks
|
|
||||||
local ticks_to_hours = 1 / hours_to_ticks
|
|
||||||
Module.format_time = function(ticks)
|
Module.format_time = function(ticks)
|
||||||
local result = {}
|
local result = {}
|
||||||
|
|
||||||
@ -123,15 +126,15 @@ Module.format_time = function(ticks)
|
|||||||
end
|
end
|
||||||
|
|
||||||
--- Prints a message letting the player know they cannot run a command
|
--- Prints a message letting the player know they cannot run a command
|
||||||
-- @param1 name of the command
|
-- @param name string name of the command
|
||||||
Module.cant_run = function(name)
|
Module.cant_run = function(name)
|
||||||
Game.player_print("Can't run command (" .. name .. ') - insufficient permission.')
|
Game.player_print("Can't run command (" .. name .. ') - insufficient permission.')
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Logs the use of a command and its user
|
--- Logs the use of a command and its user
|
||||||
-- @param1 takes a string with the actor's name (usually acquired by calling get_actor)
|
-- @param actor string with the actor's name (usually acquired by calling get_actor)
|
||||||
-- @param2 the command's name as table element
|
-- @param command the command's name as table element
|
||||||
-- @param3 the command's parameters as a table element (optional)
|
-- @param parameters the command's parameters as a table (optional)
|
||||||
Module.log_command = function(actor, command, parameters)
|
Module.log_command = function(actor, command, parameters)
|
||||||
local action = table.concat {'[Admin-Command] ', actor, ' used: ', command}
|
local action = table.concat {'[Admin-Command] ', actor, ' used: ', command}
|
||||||
if parameters then
|
if parameters then
|
||||||
@ -145,4 +148,17 @@ Module.comma_value = function(n) -- credit http://richard.warburton.it
|
|||||||
return left .. (num:reverse():gsub('(%d%d%d)', '%1,'):reverse()) .. right
|
return left .. (num:reverse():gsub('(%d%d%d)', '%1,'):reverse()) .. right
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Asserts the argument is one of type arg_types
|
||||||
|
-- @param arg the variable to check
|
||||||
|
-- @param arg_types the type as a table of sings
|
||||||
|
-- @return boolean
|
||||||
|
Module.verify_mult_types = function(arg, arg_types)
|
||||||
|
for _, arg_type in pairs(arg_types) do
|
||||||
|
if type(arg) == arg_type then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
return Module
|
return Module
|
@ -1,17 +1,7 @@
|
|||||||
-- Functions that perform actions on tables
|
--- Searches a table to remove a specific element without an index
|
||||||
|
|
||||||
local function assert_argument_valid(a, arg_type)
|
|
||||||
arg_type = arg_type or 'table'
|
|
||||||
if type(a) ~= arg_type then
|
|
||||||
error("bad argument #1 to '" .. debug.getinfo(2, 'n').name .. "' (table expected, got " .. type(a) .. ')', 3)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Removes a specific element from a table
|
|
||||||
-- @param t table to search
|
-- @param t table to search
|
||||||
-- @param element to search for
|
-- @param element to search for
|
||||||
table.remove_element = function(t, element)
|
table.remove_element = function(t, element)
|
||||||
assert_argument_valid(t)
|
|
||||||
for k, v in pairs(t) do
|
for k, v in pairs(t) do
|
||||||
if v == element then
|
if v == element then
|
||||||
table.remove(t, k)
|
table.remove(t, k)
|
||||||
@ -20,9 +10,10 @@ table.remove_element = function(t, element)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Adds the contents of table t2 to table t1
|
||||||
|
-- @param t1 table to insert into
|
||||||
|
-- @param t2 table to insert from
|
||||||
table.add_all = function(t1, t2)
|
table.add_all = function(t1, t2)
|
||||||
assert_argument_valid(t1)
|
|
||||||
assert_argument_valid(t2)
|
|
||||||
for k, v in pairs(t2) do
|
for k, v in pairs(t2) do
|
||||||
if tonumber(k) then
|
if tonumber(k) then
|
||||||
table.insert(t1, v)
|
table.insert(t1, v)
|
||||||
@ -32,21 +23,11 @@ table.add_all = function(t1, t2)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
table.size = function(t)
|
|
||||||
assert_argument_valid(t)
|
|
||||||
local size = 0
|
|
||||||
for _ in pairs(t) do
|
|
||||||
size = size + 1
|
|
||||||
end
|
|
||||||
return size
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Checks if a table contains an element
|
--- Checks if a table contains an element
|
||||||
-- @param t table to search
|
-- @param t table to search
|
||||||
-- @param e element to search for
|
-- @param e element to search for
|
||||||
-- @returns the index of an element or -1
|
-- @returns the index of an element or -1
|
||||||
table.index_of = function(t, e)
|
table.index_of = function(t, e)
|
||||||
assert_argument_valid(t)
|
|
||||||
local i = 1
|
local i = 1
|
||||||
for _, v in pairs(t) do
|
for _, v in pairs(t) do
|
||||||
if v == e then
|
if v == e then
|
||||||
@ -62,13 +43,14 @@ end
|
|||||||
-- @param e element to search for
|
-- @param e element to search for
|
||||||
-- @returns true or false
|
-- @returns true or false
|
||||||
table.contains = function(t, e)
|
table.contains = function(t, e)
|
||||||
assert_argument_valid(t)
|
|
||||||
return table.index_of(t, e) > -1
|
return table.index_of(t, e) > -1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Adds an element into a specific index position while shuffling the rest down
|
||||||
|
-- @param t table to add into
|
||||||
|
-- @param index the position in the table to add to
|
||||||
|
-- @param element to add
|
||||||
table.set = function(t, index, element)
|
table.set = function(t, index, element)
|
||||||
assert_argument_valid(t)
|
|
||||||
assert_argument_valid(index, 'number')
|
|
||||||
local i = 1
|
local i = 1
|
||||||
for k in pairs(t) do
|
for k in pairs(t) do
|
||||||
if i == index then
|
if i == index then
|
||||||
@ -80,22 +62,22 @@ table.set = function(t, index, element)
|
|||||||
error('Index out of bounds', 2)
|
error('Index out of bounds', 2)
|
||||||
end
|
end
|
||||||
|
|
||||||
table.get = function(t, index)
|
|
||||||
assert_argument_valid(t)
|
|
||||||
assert_argument_valid(index, 'number')
|
|
||||||
local i = 1
|
|
||||||
for k in pairs(t) do
|
|
||||||
if i == index then
|
|
||||||
return t[k]
|
|
||||||
end
|
|
||||||
i = i + 1
|
|
||||||
end
|
|
||||||
error('Index out of bounds', 2)
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Chooses a random entry from a table
|
--- Chooses a random entry from a table
|
||||||
table.get_random = function(this_table)
|
--@param t table to select an element from
|
||||||
return this_table[math.random(#this_table)]
|
--@param sorted boolean to indicate whether the table is sorted by numerical index or not
|
||||||
|
--@return a random element of table t
|
||||||
|
table.get_random = function(t, sorted)
|
||||||
|
if sorted then
|
||||||
|
return t[math.random(#t)]
|
||||||
|
else
|
||||||
|
local target_index = math.random(1, table_size(t))
|
||||||
|
local count = 1
|
||||||
|
for _, v in pairs(t) do
|
||||||
|
if target_index == count then
|
||||||
|
return t[v]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Chooses a random entry from a weighted table
|
--- Chooses a random entry from a weighted table
|
||||||
@ -140,8 +122,6 @@ end
|
|||||||
table.binary_search =
|
table.binary_search =
|
||||||
function(t, target)
|
function(t, target)
|
||||||
--For some reason bit32.bnot doesn't return negative numbers so I'm using ~x = -1 - x instead.
|
--For some reason bit32.bnot doesn't return negative numbers so I'm using ~x = -1 - x instead.
|
||||||
assert_argument_valid(t)
|
|
||||||
assert_argument_valid(target, 'number')
|
|
||||||
|
|
||||||
local lower = 1
|
local lower = 1
|
||||||
local upper = #t
|
local upper = #t
|
Loading…
x
Reference in New Issue
Block a user