mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-08 00:39:30 +02:00
166 lines
5.4 KiB
Lua
166 lines
5.4 KiB
Lua
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
|
|
|
|
|
|
local Common = require 'maps.pirates.common'
|
|
local Balance = require 'maps.pirates.balance'
|
|
-- local Utils = require 'maps.pirates.utils_local'
|
|
-- local Math = require 'maps.pirates.math'
|
|
local _inspect = require 'utils.inspect'.inspect
|
|
local Boats = require 'maps.pirates.structures.boats.boats'
|
|
local Memory = require 'maps.pirates.memory'
|
|
local Kraken = require 'maps.pirates.surfaces.sea.kraken'
|
|
local Public = {}
|
|
|
|
-- local GuiCommon = require 'maps.pirates.gui.common'
|
|
|
|
-- local button_sprites = {
|
|
-- ['small-biter'] = 0,
|
|
-- ['medium-biter'] = 0.2,
|
|
-- ['small-spitter'] = 0.25,
|
|
-- ['medium-spitter'] = 0.4,
|
|
-- ['big-spitter'] = 0.5,
|
|
-- ['big-biter'] = 0.501,
|
|
-- ['behemoth-spitter'] = 0.9,
|
|
-- ['behemoth-biter'] = 0.901
|
|
-- }
|
|
|
|
-- local function get_alien_name(evolution_factor)
|
|
-- local last_match = 'fish'
|
|
-- for name, alien_threshold in pairs(button_sprites) do
|
|
-- if evolution_factor == alien_threshold then
|
|
-- return name
|
|
-- end
|
|
|
|
-- -- next alien evolution_factor isn't reached
|
|
-- if alien_threshold > evolution_factor then
|
|
-- return last_match
|
|
-- end
|
|
|
|
-- -- surpassed this alien evolution_factor
|
|
-- if alien_threshold < evolution_factor then
|
|
-- last_match = name
|
|
-- end
|
|
-- end
|
|
|
|
-- return last_match
|
|
-- end
|
|
|
|
|
|
|
|
-- function Public.regular_update(player)
|
|
|
|
-- end
|
|
|
|
function Public.full_update(player)
|
|
if Public.regular_update then Public.regular_update(player) end
|
|
|
|
local memory = Memory.get_crew_memory()
|
|
local pirates_flow = player.gui.top
|
|
|
|
local button = pirates_flow.evo_piratebutton_frame.evo_piratebutton
|
|
if button and button.valid then
|
|
local evo = memory.evolution_factor or 0
|
|
-- local evo = Math.floor(evo * 1000) * 0.001
|
|
-- local current_alien = get_alien_name(evolution_factor)
|
|
-- local sprite = 'entity/' .. current_alien
|
|
|
|
-- if evolution_factor == 0 or (memory.boat and (memory.boat.state == Boats.enum_state.ATSEA_SAILING or memory.boat.state == Boats.enum_state.ATSEA_LOADING_MAP)) then
|
|
-- button.number = 0
|
|
-- button.tooltip = 'Local biter evolution\n\n0'
|
|
-- else
|
|
|
|
local destination = Common.current_destination()
|
|
|
|
local evolution_leagues = 0
|
|
local evolution_kraken = 0
|
|
local evolution_time = 0
|
|
local evolution_silo = 0
|
|
local evolution_nests = 0
|
|
local evolution_sandwurms = 0
|
|
local evolution_total
|
|
|
|
local types = {'leagues', 'kraken', 'time', 'silo', 'nests', 'sandwurms'}
|
|
|
|
if Boats.is_boat_at_sea() then
|
|
local krakens = false
|
|
if memory.active_sea_enemies and memory.active_sea_enemies.krakens then
|
|
for i = 1, Kraken.kraken_slots do
|
|
if memory.active_sea_enemies.krakens[i] then krakens = true break end
|
|
end
|
|
end
|
|
if krakens then
|
|
evolution_leagues = evo - (memory.dynamic_kraken_evo or 0)
|
|
evolution_kraken = Balance.kraken_static_evo + (memory.dynamic_kraken_evo or 0)
|
|
evolution_total = evo + Balance.kraken_static_evo
|
|
else
|
|
evolution_leagues = evo
|
|
evolution_total = evo
|
|
end
|
|
else
|
|
if destination and destination.dynamic_data then
|
|
evolution_leagues = destination.dynamic_data.evolution_accrued_leagues
|
|
evolution_time = destination.dynamic_data.evolution_accrued_time
|
|
evolution_nests = destination.dynamic_data.evolution_accrued_nests
|
|
evolution_silo = destination.dynamic_data.evolution_accrued_silo
|
|
evolution_sandwurms = destination.dynamic_data.evolution_accrued_sandwurms
|
|
end
|
|
evolution_total = (evolution_leagues or 0) + (evolution_time or 0) + (evolution_nests or 0) + (evolution_silo or 0) + (evolution_sandwurms or 0) + (evolution_kraken or 0)
|
|
end
|
|
|
|
local str = {'',{'pirates.gui_evo_tooltip_1', string.format('%.2f', evolution_total)}}
|
|
|
|
if evolution_leagues or evolution_time or evolution_nests or evolution_silo or evolution_sandwurms then
|
|
str[#str+1] = {'','\n'}
|
|
end
|
|
|
|
for _, type in ipairs(types) do
|
|
if type == 'leagues' then
|
|
if evolution_leagues then
|
|
str[#str+1] = {'','\n',{'pirates.gui_evo_tooltip_2', string.format('%.2f', evolution_leagues)}}
|
|
end
|
|
elseif type == 'kraken' then
|
|
if evolution_kraken then
|
|
str[#str+1] = {'','\n',{'pirates.gui_evo_tooltip_3', string.format('%.2f', evolution_kraken)}}
|
|
end
|
|
elseif type == 'time' then
|
|
if evolution_time then
|
|
str[#str+1] = {'','\n',{'pirates.gui_evo_tooltip_4', string.format('%.2f', evolution_time)}}
|
|
end
|
|
elseif type == 'silo' then
|
|
if evolution_silo then
|
|
str[#str+1] = {'','\n',{'pirates.gui_evo_tooltip_5', string.format('%.2f', evolution_silo)}}
|
|
end
|
|
elseif type == 'nests' then
|
|
if evolution_nests then
|
|
str[#str+1] = {'','\n',{'pirates.gui_evo_tooltip_6', string.format('%.2f', evolution_nests)}}
|
|
end
|
|
elseif type == 'sandwurms' then
|
|
if evolution_sandwurms then
|
|
str[#str+1] = {'','\n',{'pirates.gui_evo_tooltip_7', string.format('%.2f', evolution_sandwurms)}}
|
|
end
|
|
end
|
|
end
|
|
|
|
button.number = evolution_total
|
|
button.tooltip = str
|
|
|
|
if evolution_total > 1.0 then
|
|
button.sprite = 'entity/behemoth-worm-turret'
|
|
elseif evolution_total >= 0.9 then
|
|
button.sprite = 'entity/behemoth-biter'
|
|
elseif evolution_total >= 0.5 then
|
|
button.sprite = 'entity/big-biter'
|
|
elseif evolution_total >= 0.4 then
|
|
button.sprite = 'entity/medium-spitter'
|
|
elseif evolution_total >= 0.25 then
|
|
button.sprite = 'entity/small-spitter'
|
|
elseif evolution_total >= 0.2 then
|
|
button.sprite = 'entity/medium-biter'
|
|
else
|
|
button.sprite = 'entity/small-biter'
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
return Public |