mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-27 11:35:22 +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',
|
'gui/warp-list/edit',
|
||||||
'command/save-quickbar',
|
'command/save-quickbar',
|
||||||
'gui/vlayer-edit',
|
'gui/vlayer-edit',
|
||||||
|
'command/vlayer-info',
|
||||||
'command/personal-logistic',
|
'command/personal-logistic',
|
||||||
'command/auto-research',
|
'command/auto-research',
|
||||||
'command/set-trains-to-automatic',
|
'command/set-trains-to-automatic',
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ return {
|
|||||||
production = 0.06 -- MW
|
production = 0.06 -- MW
|
||||||
},
|
},
|
||||||
['accumulator'] = {
|
['accumulator'] = {
|
||||||
starting_value = 2,
|
starting_value = 0,
|
||||||
required_area = 4,
|
required_area = 4,
|
||||||
discharge = 0.3, -- MW
|
discharge = 0.3, -- MW
|
||||||
capacity = 5 -- MJ
|
capacity = 5 -- MJ
|
||||||
@@ -54,7 +54,7 @@ return {
|
|||||||
['landfill'] = {
|
['landfill'] = {
|
||||||
starting_value = 0,
|
starting_value = 0,
|
||||||
required_area = 0,
|
required_area = 0,
|
||||||
surface_area = 4 -- Tiles
|
surface_area = 6 -- Tiles
|
||||||
}
|
}
|
||||||
-- TODO: Can convert wood directly to energy to reduce trash
|
-- 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
|
local armor = player.get_inventory(defines.inventory.character_armor)[1].grid
|
||||||
|
|
||||||
for i=1, #armor.equipment do
|
for i=1, #armor.equipment do
|
||||||
if armor.equipment[i].energy < (armor.equipment[i].max_energy * amount) then
|
local target = math.floor(armor.equipment[i].max_energy * amount)
|
||||||
local energy_required = (armor.equipment[i].max_energy * amount) - armor.equipment[i].energy
|
|
||||||
|
|
||||||
if vlayer.power.energy >= energy_required then
|
if armor.equipment[i].energy < target then
|
||||||
armor.equipment[i].energy = armor.equipment[i].max_energy * amount
|
local energy_required = math.min(math.floor(target - armor.equipment[i].energy), vlayer.get_statistics()['energy_storage'])
|
||||||
vlayer.power.energy = vlayer.power.energy - energy_required
|
armor.equipment[i].energy = armor.equipment[i].energy + energy_required
|
||||||
else
|
vlayer.energy_changed(- energy_required)
|
||||||
armor.equipment[i].energy = armor.equipment[i].energy + vlayer.power.energy
|
|
||||||
vlayer.power.energy = 0
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return Commands.success
|
return Commands.success
|
||||||
end)
|
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 day_duration = 1 - surface.dawn + surface.dusk
|
||||||
local sunset_duration = surface.evening - surface.dusk
|
local sunset_duration = surface.evening - surface.dusk
|
||||||
local sunrise_duration = surface.dawn - surface.morning
|
local sunrise_duration = surface.dawn - surface.morning
|
||||||
|
|
||||||
return mul * (day_duration + (0.5 * (sunset_duration + sunrise_duration)))
|
return mul * (day_duration + (0.5 * (sunset_duration + sunrise_duration)))
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -300,6 +301,7 @@ local function handle_input_interfaces()
|
|||||||
else
|
else
|
||||||
vlayer.insert_item(name, count)
|
vlayer.insert_item(name, count)
|
||||||
end
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
vlayer.insert_item(name, count)
|
vlayer.insert_item(name, count)
|
||||||
end
|
end
|
||||||
@@ -395,6 +397,7 @@ function vlayer.get_statistics()
|
|||||||
return {
|
return {
|
||||||
total_surface_area = vlayer_data.properties.total_surface_area,
|
total_surface_area = vlayer_data.properties.total_surface_area,
|
||||||
used_surface_area = vlayer_data.properties.used_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_production = vlayer_data.properties.production * mega * get_production_multiplier(),
|
||||||
energy_sustained = vlayer_data.properties.production * mega * get_sustained_multiplier(),
|
energy_sustained = vlayer_data.properties.production * mega * get_sustained_multiplier(),
|
||||||
energy_capacity = vlayer_data.properties.capacity * mega,
|
energy_capacity = vlayer_data.properties.capacity * mega,
|
||||||
@@ -404,10 +407,17 @@ function vlayer.get_statistics()
|
|||||||
}
|
}
|
||||||
end
|
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
|
--- Circuit signals used for the statistics
|
||||||
local circuit_signals = {
|
function vlayer.get_circuits()
|
||||||
|
return {
|
||||||
total_surface_area = 'signal-A',
|
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_production = 'signal-P',
|
||||||
energy_sustained = 'signal-S',
|
energy_sustained = 'signal-S',
|
||||||
energy_capacity = 'signal-C',
|
energy_capacity = 'signal-C',
|
||||||
@@ -415,6 +425,7 @@ local circuit_signals = {
|
|||||||
day = 'signal-D',
|
day = 'signal-D',
|
||||||
time = 'signal-T',
|
time = 'signal-T',
|
||||||
}
|
}
|
||||||
|
end
|
||||||
|
|
||||||
--- Create a new circuit interface
|
--- Create a new circuit interface
|
||||||
-- @tparam LuaSurface surface The surface to place the interface onto
|
-- @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 circuit_oc = interface.get_or_create_control_behavior()
|
||||||
local max_signals = circuit_oc.signals_count
|
local max_signals = circuit_oc.signals_count
|
||||||
local signal_index = 1
|
local signal_index = 1
|
||||||
|
local circuit = vlayer.get_circuits()
|
||||||
|
|
||||||
-- Set the virtual signals based on the vlayer stats
|
-- 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
|
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)})
|
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
|
if not circuit_oc.get_signal(clear_index).signal then
|
||||||
break -- There are no more signals to clear
|
break -- There are no more signals to clear
|
||||||
end
|
end
|
||||||
|
|
||||||
circuit_oc.set_signal(clear_index, nil)
|
circuit_oc.set_signal(clear_index, nil)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user