MicroController/stdlib/game.lua

63 lines
2.0 KiB
Lua
Raw Normal View History

2019-03-05 19:50:21 +08:00
--- Game module
-- @module Game
Game = {}
Game.VALID_FILTER = function(v)
return v.valid
end
--- Messages all players currently connected to the game
-- @param msg message to send to players
-- @param condition (optional) optional condition to be true for the player to be messaged
-- @return the number of players who received the message. Offline players are not counted as having received the message.
function Game.print_all(msg, condition)
local num = 0
for _, player in pairs(game.players) do
if player.valid then
if condition == nil or select(2, pcall(condition, player)) then
player.print(msg)
if player.connected then
num = num + 1
end
end
end
end
return num
end
--- Messages all players with the given force connected to the game
-- <b>Deprecated for Factorio 0.14+</b>, see force.print(msg) instead.
-- @param force (may be force name string, or force object) the players with the given force to message
-- @param msg message to send to players
-- @return the number of players who received the message
function Game.print_force(force, msg)
local force_name
if type(force) == "string" then
force_name = force
else
force_name = force.name
end
return Game.print_all(msg, function(player)
return player.force.name == force_name
end)
end
--- Messages all players with the given surface connected to the game
-- <b>Deprecated for Factorio 0.14+</b>, see surface.print(msg) instead.
-- @param surface the players with the given surface to message
-- @param msg message to send to players
-- @return the number of players who received the message
function Game.print_surface(surface, msg)
local surface_name
if type(surface) == "string" then
surface_name = surface
else
surface_name = surface.name
end
return Game.print_all(msg, function(player)
return player.surface.name == surface_name
end)
end
return Game