From 766e96a9fcd8cb11b2c33789c22cdf7be5bb3c70 Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Sun, 23 Feb 2025 14:33:39 +0900 Subject: [PATCH] . --- exp_legacy/module/modules/gui/bonus.lua | 50 ++++++++++++------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/exp_legacy/module/modules/gui/bonus.lua b/exp_legacy/module/modules/gui/bonus.lua index 965a7a6f..126c0381 100644 --- a/exp_legacy/module/modules/gui/bonus.lua +++ b/exp_legacy/module/modules/gui/bonus.lua @@ -12,9 +12,7 @@ local format_number = require("util").format_number --- @dep util local bonus_container -local bonus_data = { - score_limit = {} -} +local bonus_data_score_limit = {} --- @param player LuaPlayer --- @param container LuaGuiElement? @@ -106,8 +104,10 @@ local function apply_periodic_bonus(player) end end -local function bonus_score_limit_calc(player) - return math.floor(config.pts.base * (1 + config.pts.increase_percentage_per_role_level * (Roles.get_role_by_name(config.pts.role_name).index - Roles.get_player_highest_role(player).index))) +local function bonus_score_limit(player) + if not bonus_data_score_limit[player] then + bonus_data_score_limit[player] = math.floor(config.pts.base * (1 + config.pts.increase_percentage_per_role_level * (Roles.get_role_by_name(config.pts.role_name).index - Roles.get_player_highest_role(player).index))) + end end --- Control label for the bonus points available @@ -158,9 +158,9 @@ local bonus_gui_control_reset = Gui.element("bonus_gui_control_reset") disp[slider.tags.counter].caption = format_number(slider.slider_value, false) local n = bonus_gui_pts_needed(player) - bonus_data.score_limit[player] = bonus_score_limit_calc(player) - element.parent[bonus_gui_control_pts_count.name].caption = n .. " / " .. bonus_data.score_limit[player] - element.parent[bonus_gui_control_pts_count.name].value = n / bonus_data.score_limit[player] + bonus_score_limit(player) + element.parent[bonus_gui_control_pts_count.name].caption = n .. " / " .. bonus_data_score_limit[player] + element.parent[bonus_gui_control_pts_count.name].value = n / bonus_data_score_limit[player] end) --- A button used for pts apply @@ -174,11 +174,11 @@ local bonus_gui_control_apply = Gui.element("bonus_gui_control_apply") width = config.gui_display_width["half"], }:on_click(function(def, player, element) local n = bonus_gui_pts_needed(player) - bonus_data.score_limit[player] = bonus_score_limit_calc(player) - element.parent[bonus_gui_control_pts_count.name].caption = n .. " / " .. bonus_data.score_limit[player] - element.parent[bonus_gui_control_pts_count.name].value = n / bonus_data.score_limit[player] + bonus_score_limit(player) + element.parent[bonus_gui_control_pts_count.name].caption = n .. " / " .. bonus_data_score_limit[player] + element.parent[bonus_gui_control_pts_count.name].value = n / bonus_data_score_limit[player] - if n <= bonus_data.score_limit[player] then + if n <= bonus_data_score_limit[player] then apply_bonus(player) end end) @@ -241,9 +241,9 @@ local bonus_gui_slider = Gui.element("bonus_gui_slider") local container = Gui.get_left_element(bonus_container, player) local disp = container.frame["bonus_st_1"].disp.table local n = bonus_gui_pts_needed(player) - bonus_data.score_limit[player] = bonus_score_limit_calc(player) - disp[bonus_gui_control_pts_count.name].caption = n .. " / " .. bonus_data.score_limit[player] - disp[bonus_gui_control_pts_count.name].value = n / bonus_data.score_limit[player] + bonus_score_limit(player) + disp[bonus_gui_control_pts_count.name].caption = n .. " / " .. bonus_data_score_limit[player] + disp[bonus_gui_control_pts_count.name].value = n / bonus_data_score_limit[player] end) --- A vertical flow containing all the bonus data @@ -274,9 +274,9 @@ bonus_container = Gui.element("bonus_container") local disp = container["bonus_st_1"].disp.table local n = bonus_gui_pts_needed(player, container.parent) - bonus_data.score_limit[player] = bonus_score_limit_calc(player) - disp[bonus_gui_control_pts_count.name].caption = n .. " / " .. bonus_data.score_limit[player] - disp[bonus_gui_control_pts_count.name].value = n / bonus_data.score_limit[player] + bonus_score_limit(player) + disp[bonus_gui_control_pts_count.name].caption = n .. " / " .. bonus_data_score_limit[player] + disp[bonus_gui_control_pts_count.name].value = n / bonus_data_score_limit[player] return container.parent end) @@ -309,14 +309,12 @@ end) Event.add(Roles.events.on_role_assigned, function(event) local player = game.players[event.player_index] - bonus_data.score_limit[player] = bonus_score_limit_calc(player) - apply_bonus(player) + bonus_data_score_limit[player] = nil end) Event.add(Roles.events.on_role_unassigned, function(event) local player = game.players[event.player_index] - bonus_data.score_limit[player] = bonus_score_limit_calc(player) - apply_bonus(player) + bonus_data_score_limit[player] = nil end) --- When a player respawns re-apply bonus @@ -325,11 +323,11 @@ Event.add(defines.events.on_player_respawned, function(event) local container = Gui.get_left_element(bonus_container, player) local disp = container.frame["bonus_st_1"].disp.table local n = bonus_gui_pts_needed(player) - bonus_data.score_limit[player] = bonus_score_limit_calc(player) - disp[bonus_gui_control_pts_count.name].caption = n .. " / " .. bonus_data.score_limit[player] - disp[bonus_gui_control_pts_count.name].value = n / bonus_data.score_limit[player] + bonus_score_limit(player) + disp[bonus_gui_control_pts_count.name].caption = n .. " / " .. bonus_data_score_limit[player] + disp[bonus_gui_control_pts_count.name].value = n / bonus_data_score_limit[player] - if n <= bonus_data.score_limit[player] then + if n <= bonus_data_score_limit[player] then apply_bonus(player) end end)