Merge Game, FlyingText, Common and table

This commit is contained in:
Cooldude2606
2024-09-30 22:32:35 +01:00
parent 3145f7e904
commit f8c74c9dd3
66 changed files with 817 additions and 2035 deletions

View File

@@ -4,7 +4,7 @@
@alias autofill
]]
local FloatingText = require("modules/exp_util/floating_text")
local FlyingText = require("modules/exp_util/flying_text")
local Gui = require("modules.exp_legacy.expcore.gui") -- @dep expcore.gui
local Roles = require("modules.exp_legacy.expcore.roles") -- @dep expcore.gui
local Storage = require("modules/exp_util/storage") -- @dep utils.global
@@ -12,8 +12,6 @@ local config = require("modules.exp_legacy.config.gui.autofill") -- @dep config.
local Event = require("modules/exp_legacy/utils/event") -- @dep utils.event
local table = require("modules.exp_legacy.overrides.table") -- @dep overrides.table
local print_text = FloatingText.print -- (surface, position, text, color)
--- Table that stores if autofill is enabled or not
local autofill_player_settings = {}
Storage.register(autofill_player_settings, function(tbl)
@@ -324,7 +322,6 @@ local function entity_build(event)
-- Get the inventory of the player
local player_inventory = player.get_main_inventory() --- @cast player_inventory -nil
local text_position = { x = entity.position.x, y = entity.position.y }
-- Loop over all possible items to insert into the entity
for _, item in pairs(entity_settings.items) do
-- Check if the item is enabled or goto next item
@@ -338,7 +335,6 @@ local function entity_build(event)
local item_amount = player_inventory.get_item_count(item.name)
if item_amount ~= 0 then
local inserted
text_position.y = text_position.y - 0.5
local color = { r = 0, g = 255, b = 0, a = 1 }
if item_amount >= preferd_amount then
-- Can item be inserted? no, goto next item!
@@ -351,7 +347,12 @@ local function entity_build(event)
color = { r = 255, g = 165, b = 0, a = 1 }
end
player_inventory.remove{ name = item.name, count = inserted }
print_text(entity.surface, text_position, { "autofill.inserted", inserted, rich_img("item", item.name), rich_img("entity", entity.name) }, color)
FlyingText.create_above_entity{
target_entity = entity,
text = { "autofill.inserted", inserted, rich_img("item", item.name), rich_img("entity", entity.name) },
player = player,
color = color,
}
end
::end_item::
end

View File

@@ -23,7 +23,7 @@ function Public.show(container)
local left_panel_style = left_panel.style
left_panel_style.width = 300
for name in pairs(table.keysort(Datastore.debug())) do
for name in pairs(table.key_sort(Datastore.debug())) do
local header = left_panel.add{ type = "flow" }.add{ type = "label", name = header_name, caption = name }
Gui.set_data(header, name)
end
@@ -69,7 +69,7 @@ Gui.on_click(
header_name,
function(event)
local element = event.element
local tableName = Gui.get_data(element)
local table_name = Gui.get_data(element)
local left_panel = element.parent.parent
local data = Gui.get_data(left_panel)
@@ -84,10 +84,10 @@ Gui.on_click(
element.style.font_color = Color.orange
data.selected_header = element
input_text_box.text = tableName
input_text_box.text = table_name
input_text_box.style.font_color = Color.black
local content = Datastore.debug(tableName)
local content = Datastore.debug(table_name)
local content_string = {}
for key, value in pairs(content) do
content_string[#content_string + 1] = key:gsub("^%l", string.upper) .. " = " .. dump(value)

View File

@@ -5,13 +5,12 @@
]]
-- luacheck:ignore 211/Colors
local ExpUtil = require("modules/exp_util")
local Gui = require("modules.exp_legacy.expcore.gui") --- @dep expcore.gui
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
local Datastore = require("modules.exp_legacy.expcore.datastore") --- @dep expcore.datastore
local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event
local config = require("modules.exp_legacy.config.gui.player_list_actions") --- @dep config.gui.player_list_actions
local Colors = require("modules/exp_util/include/color")
local format_time = _C.format_time --- @dep expcore.common
--- Stores all data for the warp gui
local PlayerListData = Datastore.connect("PlayerListData")
@@ -261,12 +260,15 @@ Gui.left_toolbar_button("entity/character", { "player-list.main-tooltip" }, play
return Roles.player_allowed(player, "gui/player-list")
end)
local online_time_format = ExpUtil.format_time_factory_locale{ format = "short", hours = true, minutes = true }
local afk_time_format = ExpUtil.format_time_factory_locale{ format = "long", minutes = true }
-- Get caption and tooltip format for a player
local function get_time_formats(online_time, afk_time)
local tick = game.tick > 0 and game.tick or 1
local percent = math.round(online_time / tick, 3) * 100
local caption = format_time(online_time)
local tooltip = { "player-list.afk-time", percent, format_time(afk_time, { minutes = true, long = true }) }
local caption = online_time_format(online_time)
local tooltip = { "player-list.afk-time", percent, afk_time_format(afk_time) }
return caption, tooltip
end
@@ -333,7 +335,7 @@ local function get_player_list_order()
index=0-i,
tag='',
role_name = 'Fake Player',
chat_color = table.get_random_dictionary_entry(Colors),
chat_color = table.get_random(Colors),
caption = caption,
tooltip = tooltip
}

View File

@@ -1,12 +1,12 @@
---- module pd
-- @gui PlayerData
local ExpUtil = require("modules/exp_util")
local Gui = require("modules.exp_legacy.expcore.gui") --- @dep expcore.gui
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event
local PlayerData = require("modules.exp_legacy.expcore.player_data") --- @dep expcore.player_data
require("modules.exp_legacy.modules.data.statistics")
local format_time = _C.format_time --- @dep expcore.common
local format_number = require("util").format_number --- @dep util
local pd_container
@@ -16,66 +16,60 @@ local label_width = {
["total"] = 480,
}
local function format_time_short(value)
return format_time(value * 3600, {
hours = true,
minutes = true,
seconds = false,
})
end
local short_time_format = ExpUtil.format_time_factory_locale{ format = "short", coefficient = 3600, hours = true, minutes = true }
local function format_number_n(n)
return format_number(math.floor(n)) .. string.format("%.2f", n % 1):sub(2)
end
local playerStats = PlayerData.Statistics
local PlayerStats = PlayerData.Statistics
local computed_stats = {
DamageDeathRatio = {
default = format_number_n(0),
calculate = function(player_name)
return format_number_n(playerStats["DamageDealt"]:get(player_name, 0) / playerStats["Deaths"]:get(player_name, 1))
return format_number_n(PlayerStats["DamageDealt"]:get(player_name, 0) / PlayerStats["Deaths"]:get(player_name, 1))
end,
},
KillDeathRatio = {
default = format_number_n(0),
calculate = function(player_name)
return format_number_n(playerStats["Kills"]:get(player_name, 0) / playerStats["Deaths"]:get(player_name, 1))
return format_number_n(PlayerStats["Kills"]:get(player_name, 0) / PlayerStats["Deaths"]:get(player_name, 1))
end,
},
SessionTime = {
default = format_time_short(0),
default = short_time_format(0),
calculate = function(player_name)
return format_time_short((playerStats["Playtime"]:get(player_name, 0) - playerStats["AfkTime"]:get(player_name, 0)) / playerStats["JoinCount"]:get(player_name, 1))
return short_time_format((PlayerStats["Playtime"]:get(player_name, 0) - PlayerStats["AfkTime"]:get(player_name, 0)) / PlayerStats["JoinCount"]:get(player_name, 1))
end,
},
BuildRatio = {
default = format_number_n(0),
calculate = function(player_name)
return format_number_n(playerStats["MachinesBuilt"]:get(player_name, 0) / playerStats["MachinesRemoved"]:get(player_name, 1))
return format_number_n(PlayerStats["MachinesBuilt"]:get(player_name, 0) / PlayerStats["MachinesRemoved"]:get(player_name, 1))
end,
},
RocketPerHour = {
default = format_number_n(0),
calculate = function(player_name)
return format_number_n(playerStats["RocketsLaunched"]:get(player_name, 0) * 60 / playerStats["Playtime"]:get(player_name, 1))
return format_number_n(PlayerStats["RocketsLaunched"]:get(player_name, 0) * 60 / PlayerStats["Playtime"]:get(player_name, 1))
end,
},
TreeKillPerMinute = {
default = format_number_n(0),
calculate = function(player_name)
return format_number_n(playerStats["TreesDestroyed"]:get(player_name, 0) / playerStats["Playtime"]:get(player_name, 1))
return format_number_n(PlayerStats["TreesDestroyed"]:get(player_name, 0) / PlayerStats["Playtime"]:get(player_name, 1))
end,
},
NetPlayTime = {
default = format_time_short(0),
default = short_time_format(0),
calculate = function(player_name)
return format_time_short((playerStats["Playtime"]:get(player_name, 0) - playerStats["AfkTime"]:get(player_name, 0)))
return short_time_format((PlayerStats["Playtime"]:get(player_name, 0) - PlayerStats["AfkTime"]:get(player_name, 0)))
end,
},
AFKTimeRatio = {
default = format_number_n(0),
calculate = function(player_name)
return format_number_n(playerStats["AfkTime"]:get(player_name, 0) * 100 / playerStats["Playtime"]:get(player_name, 1))
return format_number_n(PlayerStats["AfkTime"]:get(player_name, 0) * 100 / PlayerStats["Playtime"]:get(player_name, 1))
end,
},
}

View File

@@ -4,13 +4,13 @@
@alias readme
]]
local ExpUtil = require("modules/exp_util")
local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event
local Gui = require("modules.exp_legacy.expcore.gui") --- @dep expcore.gui
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
local Commands = require("modules.exp_legacy.expcore.commands") --- @dep expcore.commands
local PlayerData = require("modules.exp_legacy.expcore.player_data") --- @dep expcore.player_data
local External = require("modules.exp_legacy.expcore.external") --- @dep expcore.external
local format_time = _C.format_time --- @dep expcore.common
local format_number = require("util").format_number --- @dep util
local tabs = {}
@@ -109,6 +109,8 @@ local join_server =
External.request_connection(player, server_id, true)
end)
local welcome_time_format = ExpUtil.format_time_factory_locale{ format = "long", days = true, hours = true, minutes = true }
--- Content area for the welcome tab
-- @element welcome_content
define_tab({ "readme.welcome-tab" }, { "readme.welcome-tooltip" },
@@ -139,7 +141,7 @@ define_tab({ "readme.welcome-tab" }, { "readme.welcome-tooltip" },
-- Add the other information to the gui
container.add{ type = "flow" }.style.height = 4
local online_time = format_time(game.tick, { days = true, hours = true, minutes = true, long = true })
local online_time = welcome_time_format(game.tick)
Gui.centered_label(sub_content(container), frame_width, { "readme.welcome-general", server_details.reset_time, online_time })
Gui.centered_label(sub_content(container), frame_width, { "readme.welcome-roles", table.concat(role_names, ", ") })
Gui.centered_label(sub_content(container), frame_width, { "readme.welcome-chat" })

View File

@@ -1,12 +1,12 @@
--- research gui
-- @gui Research
local ExpUtil = require("modules/exp_util")
local Gui = require("modules.exp_legacy.expcore.gui") --- @dep expcore.gui
local Storage = require("modules/exp_util/storage")
local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
local config = require("modules.exp_legacy.config.research") --- @dep config.research
local format_time = _C.format_time --- @dep expcore.common
local research = {}
Storage.register(research, function(tbl)
@@ -16,22 +16,8 @@ end)
research.time = {}
research.res_queue_enable = false
local research_time_format = {
hours = true,
minutes = true,
seconds = true,
time = true,
string = true,
}
local empty_time = format_time(0, {
hours = true,
minutes = true,
seconds = true,
time = true,
string = true,
null = true,
})
local research_time_format = ExpUtil.format_time_factory{ format = "clock", hours = true, minutes = true, seconds = true }
local empty_time = research_time_format(nil)
local font_color = {
-- positive
@@ -57,7 +43,7 @@ do
res["disp"][i] = {
raw_name = k,
target = res_total,
target_disp = format_time(res_total, research_time_format),
target_disp = research_time_format(res_total),
}
i = i + 1
@@ -118,12 +104,12 @@ local function research_notification(event)
end
else
if not (event.by_script) then
game.print{ "expcom-res.inf", format_time(game.tick, research_time_format), event.research.name, event.research.level - 1 }
game.print{ "expcom-res.inf", research_time_format(game.tick), event.research.name, event.research.level - 1 }
end
end
else
if not (event.by_script) then
game.print{ "expcom-res.msg", format_time(game.tick, research_time_format), event.research.name }
game.print{ "expcom-res.msg", research_time_format(game.tick), event.research.name }
end
if config.bonus_inventory.enabled then
@@ -159,13 +145,13 @@ local function research_gui_update()
res_disp[i]["difference_color"] = font_color[1]
else
res_disp[i]["target"] = res["disp"][res_i].target_disp
res_disp[i]["attempt"] = format_time(research.time[res_i], research_time_format)
res_disp[i]["attempt"] = research_time_format(research.time[res_i])
if research.time[res_i] < res["disp"][res_i].target then
res_disp[i]["difference"] = "-" .. format_time(res["disp"][res_i].target - research.time[res_i], research_time_format)
res_disp[i]["difference"] = "-" .. research_time_format(res["disp"][res_i].target - research.time[res_i])
res_disp[i]["difference_color"] = font_color[1]
else
res_disp[i]["difference"] = format_time(research.time[res_i] - res["disp"][res_i].target, research_time_format)
res_disp[i]["difference"] = research_time_format(research.time[res_i] - res["disp"][res_i].target)
res_disp[i]["difference_color"] = font_color[2]
end
end
@@ -313,7 +299,7 @@ Event.add(defines.events.on_research_finished, function(event)
end)
Event.on_nth_tick(60, function()
local current_time = format_time(game.tick, research_time_format)
local current_time = research_time_format(game.tick)
for _, player in pairs(game.connected_players) do
local frame = Gui.get_left_element(player, research_container)

View File

@@ -4,19 +4,19 @@
@alias rocket_info
]]
local ExpUtil = require("modules/exp_util")
local Gui = require("modules.exp_legacy.expcore.gui") --- @dep expcore.gui
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event
local config = require("modules.exp_legacy.config.gui.rockets") --- @dep config.gui.rockets
local Colors = require("modules/exp_util/include/color")
local Rockets = require("modules.exp_legacy.modules.control.rockets") --- @dep modules.control.rockets
local format_time = _C.format_time --- @dep expcore.common
local time_formats = {
caption = function(value) return format_time(value, { minutes = true, seconds = true }) end,
caption_hours = function(value) return format_time(value) end,
tooltip = function(value) return format_time(value, { minutes = true, seconds = true, long = true }) end,
tooltip_hours = function(value) return format_time(value, { hours = true, minutes = true, seconds = true, long = true }) end,
caption = ExpUtil.format_time_factory_locale{ format = "short", minutes = true, seconds = true },
caption_hours = ExpUtil.format_time_factory_locale{ format = "short", hours = true, minutes = true },
tooltip = ExpUtil.format_time_factory_locale{ format = "long", minutes = true, seconds = true },
tooltip_hours = ExpUtil.format_time_factory_locale{ format = "long", hours = true, minutes = true, seconds = true },
}
--- Check if a player is allowed to use certain interactions

View File

@@ -4,15 +4,18 @@
@alias science_info
]]
local ExpUtil = require("modules/exp_util")
local Gui = require("modules.exp_legacy.expcore.gui") --- @dep expcore.gui
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.gui
local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event
local config = require("modules.exp_legacy.config.gui.science") --- @dep config.gui.science
local Production = require("modules.exp_legacy.modules.control.production") --- @dep modules.control.production
local format_time = _C.format_time --- @dep expcore.common
local null_time_short = { "science-info.eta-time", format_time(0, { hours = true, minutes = true, seconds = true, time = true, null = true }) }
local null_time_long = format_time(0, { hours = true, minutes = true, seconds = true, long = true, null = true })
local clock_time_format = ExpUtil.format_time_factory_locale{ format = "clock", hours = true, minutes = true, seconds = true }
local long_time_format = ExpUtil.format_time_factory_locale{ format = "long", hours = true, minutes = true, seconds = true }
local null_time_clock = { "science-info.eta-time", clock_time_format(nil) }
local null_time_long = long_time_format(nil)
--- Data label that contains the value and the surfix
-- @element production_label
@@ -235,16 +238,18 @@ local function get_eta_label_data(player)
-- Return the caption and tooltip
return limit and limit > 0 and {
research = true,
caption = format_time(limit, { hours = true, minutes = true, seconds = true, time = true }),
tooltip = format_time(limit, { hours = true, minutes = true, seconds = true, long = true }),
} or { research = false }
caption = clock_time_format(limit),
tooltip = long_time_format(limit),
} or {
research = false
}
end
-- Updates the eta label
local function update_eta_label(element, eta_label_data)
-- If no research selected show null
if not eta_label_data.research then
element.caption = null_time_short
element.caption = null_time_clock
element.tooltip = null_time_long
return
end
@@ -293,7 +298,7 @@ local science_info_container =
footer.add{
name = "label",
type = "label",
caption = null_time_short,
caption = null_time_clock,
tooltip = null_time_long,
style = "frame_title",
}

View File

@@ -3,13 +3,16 @@
@gui Task-List
@alias task_list
]]
local ExpUtil = require("modules/exp_util")
local Gui = require("modules.exp_legacy.expcore.gui") --- @dep expcore.gui
local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
local Datastore = require("modules.exp_legacy.expcore.datastore") --- @dep expcore.datastore
local config = require("modules.exp_legacy.config.gui.tasks") --- @dep config.gui.tasks
local Tasks = require("modules.exp_legacy.modules.control.tasks") --- @dep modules.control.tasks
local format_time = _C.format_time --- @dep expcore.common
local format_time = ExpUtil.format_time_factory_locale{ format = "short", hours = true, minutes = true }
--- Stores all data for the task gui by player
local TaskGuiData = Datastore.connect("TaskGuiData")

View File

@@ -4,6 +4,7 @@
@alias warp_list
]]
local ExpUtil = require("modules/exp_util")
local Gui = require("modules.exp_legacy.expcore.gui") --- @dep expcore.gui
local Datastore = require("modules.exp_legacy.expcore.datastore") --- @dep expcore.datastore
local Storage = require("modules/exp_util/storage")
@@ -12,7 +13,8 @@ local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
local Colors = require("modules/exp_util/include/color")
local config = require("modules.exp_legacy.config.gui.warps") --- @dep config.gui.warps
local Warps = require("modules.exp_legacy.modules.control.warps") --- @dep modules.control.warps
local format_time, player_return = _C.format_time, _C.player_return --- @dep expcore.common
local format_time = ExpUtil.format_time_factory_locale{ format = "short", hours = true, minutes = true }
--- Stores all data for the warp gui
local WrapGuiData = Datastore.connect("WrapGuiData")
@@ -94,7 +96,10 @@ local add_new_warp =
-- Check if the warp is too close to water
local water_tiles = surface.find_tiles_filtered{ collision_mask = "water-tile", radius = config.standard_proximity_radius + 1, position = position }
if #water_tiles > 0 then
player_return({ "expcore-commands.command-fail", { "warp-list.too-close-to-water", config.standard_proximity_radius + 1 } }, "orange_red", player)
player.print(
{ "expcore-commands.command-fail", { "warp-list.too-close-to-water", config.standard_proximity_radius + 1 } },
{ color = Colors.orange_red }
)
if game.player then game.player.play_sound{ path = "utility/wire_pickup" } end
for _, tile in pairs(water_tiles) do
rendering.draw_sprite{
@@ -121,7 +126,10 @@ local add_new_warp =
}
-- Remove 1 because that is the current player
if #entities > 1 then
player_return({ "expcore-commands.command-fail", { "warp-list.too-close-to-entities", config.standard_proximity_radius + 2.5 } }, "orange_red", player)
player.print(
{ "expcore-commands.command-fail", { "warp-list.too-close-to-entities", config.standard_proximity_radius + 2.5 } },
{ color = Colors.orange_red }
)
if game.player then game.player.play_sound{ path = "utility/wire_pickup" } end
local character = player.character
for _, entity in pairs(entities) do