mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-27 03:25:23 +09:00
Vlayer Changes (#286)
* Update vlayer.lua * Update vlayer.lua * Update vlayer.lua * Update vlayer.lua * Update vlayer.lua * Update vlayer.lua * Update vlayer.lua * Update vlayer.lua * Update vlayer.lua * Update roles.lua * Update vlayer.lua * Update vlayer.lua * Update vlayer.lua * Update vlayer.lua * Update vlayer.lua
This commit is contained in:
@@ -229,6 +229,7 @@ Roles.new_role('Member','Mem')
|
||||
'gui/warp-list/edit',
|
||||
'command/save-quickbar',
|
||||
'gui/vlayer-edit',
|
||||
'command/vlayer-info',
|
||||
'command/personal-logistic',
|
||||
'command/auto-research',
|
||||
'command/set-trains-to-automatic',
|
||||
|
||||
@@ -46,7 +46,7 @@ return {
|
||||
production = 0.06 -- MW
|
||||
},
|
||||
['accumulator'] = {
|
||||
starting_value = 2,
|
||||
starting_value = 0,
|
||||
required_area = 4,
|
||||
discharge = 0.3, -- MW
|
||||
capacity = 5 -- MJ
|
||||
@@ -54,7 +54,7 @@ return {
|
||||
['landfill'] = {
|
||||
starting_value = 0,
|
||||
required_area = 0,
|
||||
surface_area = 4 -- Tiles
|
||||
surface_area = 6 -- Tiles
|
||||
}
|
||||
-- TODO: Can convert wood directly to energy to reduce trash
|
||||
--[[
|
||||
|
||||
@@ -11,18 +11,23 @@ Commands.new_command('personal-battery-recharge', 'Recharge Player Battery upto
|
||||
local armor = player.get_inventory(defines.inventory.character_armor)[1].grid
|
||||
|
||||
for i=1, #armor.equipment do
|
||||
if armor.equipment[i].energy < (armor.equipment[i].max_energy * amount) then
|
||||
local energy_required = (armor.equipment[i].max_energy * amount) - armor.equipment[i].energy
|
||||
local target = math.floor(armor.equipment[i].max_energy * amount)
|
||||
|
||||
if vlayer.power.energy >= energy_required then
|
||||
armor.equipment[i].energy = armor.equipment[i].max_energy * amount
|
||||
vlayer.power.energy = vlayer.power.energy - energy_required
|
||||
else
|
||||
armor.equipment[i].energy = armor.equipment[i].energy + vlayer.power.energy
|
||||
vlayer.power.energy = 0
|
||||
end
|
||||
if armor.equipment[i].energy < target then
|
||||
local energy_required = math.min(math.floor(target - armor.equipment[i].energy), vlayer.get_statistics()['energy_storage'])
|
||||
armor.equipment[i].energy = armor.equipment[i].energy + energy_required
|
||||
vlayer.energy_changed(- energy_required)
|
||||
end
|
||||
end
|
||||
|
||||
return Commands.success
|
||||
end)
|
||||
|
||||
Commands.new_command('vlayer-info', 'Vlayer Info')
|
||||
:register(function(_)
|
||||
local c = vlayer.get_circuits()
|
||||
|
||||
for k, v in pairs(c) do
|
||||
Commands.print(v .. ' : ' .. k)
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -148,6 +148,7 @@ local function get_sustained_multiplier()
|
||||
local day_duration = 1 - surface.dawn + surface.dusk
|
||||
local sunset_duration = surface.evening - surface.dusk
|
||||
local sunrise_duration = surface.dawn - surface.morning
|
||||
|
||||
return mul * (day_duration + (0.5 * (sunset_duration + sunrise_duration)))
|
||||
end
|
||||
|
||||
@@ -300,6 +301,7 @@ local function handle_input_interfaces()
|
||||
else
|
||||
vlayer.insert_item(name, count)
|
||||
end
|
||||
|
||||
else
|
||||
vlayer.insert_item(name, count)
|
||||
end
|
||||
@@ -395,26 +397,35 @@ function vlayer.get_statistics()
|
||||
return {
|
||||
total_surface_area = vlayer_data.properties.total_surface_area,
|
||||
used_surface_area = vlayer_data.properties.used_surface_area,
|
||||
remaining_surface_area = math.max(vlayer_data.properties.total_surface_area - vlayer_data.properties.used_surface_area, 0),
|
||||
energy_production = vlayer_data.properties.production * mega * get_production_multiplier(),
|
||||
energy_sustained = vlayer_data.properties.production * mega * get_sustained_multiplier(),
|
||||
energy_capacity = vlayer_data.properties.capacity * mega,
|
||||
energy_storage = vlayer_data.storage.energy,
|
||||
day = math.floor(game.tick / vlayer_data.surface.ticks_per_day),
|
||||
time =math.floor(vlayer_data.surface.daytime * vlayer_data.surface.ticks_per_day)
|
||||
time = math.floor(vlayer_data.surface.daytime * vlayer_data.surface.ticks_per_day)
|
||||
}
|
||||
end
|
||||
|
||||
--- add or reduce vlayer power
|
||||
function vlayer.energy_changed(power)
|
||||
vlayer_data.storage.energy = vlayer_data.storage.energy + power
|
||||
end
|
||||
|
||||
--- Circuit signals used for the statistics
|
||||
local circuit_signals = {
|
||||
function vlayer.get_circuits()
|
||||
return {
|
||||
total_surface_area = 'signal-A',
|
||||
used_surface_area = 'signal-B',
|
||||
used_surface_area = 'signal-U',
|
||||
remaining_surface_area = 'signal-R',
|
||||
energy_production = 'signal-P',
|
||||
energy_sustained = 'signal-S',
|
||||
energy_capacity = 'signal-C',
|
||||
energy_storage = 'signal-E',
|
||||
day = 'signal-D',
|
||||
time = 'signal-T',
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
--- Create a new circuit interface
|
||||
-- @tparam LuaSurface surface The surface to place the interface onto
|
||||
@@ -447,9 +458,10 @@ local function handle_circuit_interfaces()
|
||||
local circuit_oc = interface.get_or_create_control_behavior()
|
||||
local max_signals = circuit_oc.signals_count
|
||||
local signal_index = 1
|
||||
local circuit = vlayer.get_circuits()
|
||||
|
||||
-- Set the virtual signals based on the vlayer stats
|
||||
for stat_name, signal_name in pairs(circuit_signals) do
|
||||
for stat_name, signal_name in pairs(circuit) do
|
||||
if stat_name:find('energy') then
|
||||
circuit_oc.set_signal(signal_index, {signal={type='virtual', name=signal_name}, count=math.floor(stats[stat_name] / mega)})
|
||||
|
||||
@@ -476,6 +488,7 @@ local function handle_circuit_interfaces()
|
||||
if not circuit_oc.get_signal(clear_index).signal then
|
||||
break -- There are no more signals to clear
|
||||
end
|
||||
|
||||
circuit_oc.set_signal(clear_index, nil)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user