On Multiplayer Load, Register Table.
Posted: Sun Sep 04, 2016 6:17 pm
While this seems to work for the player who hosts, people who join don't seem to have this run. I am unsure how to do this properly.
Code: Select all
script.on_configuration_changed(function(data)
-- If anything changes, at all, refresh everything.
-- All mods altering this stuff must do so as well.
refresh_equipment()
--[[if data.mod_charges ~= nil then
refresh_equipment()
end]]--
--[[if data.mod_changes ~= nil and data.mod_changes["Modular-Armor"] ~= nil then
if data.mod_changes["Modular-Armor"].old_version == nil then
-- "My Mod" was added to an existing game
refresh_equipment()
elseif data.mod_changes["Modular-Armor"].old_version ~= data.mod_changes["Modular-Armor"].new_version then
refresh_equipment()
end
end]]--
end)
function registerEquipmentGroup(iGroup)
--iGroup.mod = iMod
if not RanaMods.ModularArmor.equipmentData then
RanaMods.ModularArmor.equipmentData = {}
end
if iGroup and iGroup.name and iGroup.type then
for _, v in pairs(RanaMods.ModularArmor.equipmentData) do
if v.name == iGroup.name then
return
end
end
table.insert(RanaMods.ModularArmor.equipmentData, iGroup)
else
return "Invalid Table"
end
end
function registerPrototype (iGroup,iPrototype,iType)
-- Ideally, this will register equipment group itself, if it doesn't yet exist.
if not RanaMods.ModularArmor.equipmentData then
RanaMods.ModularArmor.equipmentData = {}
end
if iGroup and iGroup.name and iGroup.type then
if iPrototype and iPrototype.name and iPrototype.power then
iPrototype.power = iPrototype.power * RanaMods.ModularArmor.config.powerCoef *RanaMods.ModularArmor.config.secondsPerTick
for _, v in pairs(RanaMods.ModularArmor.equipmentData) do
if v.name == iGroup.name then
thisTable = nil
--[[if iType == "equipment" then
if not v.equipment then
v.equipment = {}
end
thisTable = v.equipment
elseif iType == "fuel" then
if not v.fuel then
v.fuel = {}
end
thisTable = v.fuel
else
globalPrint("Invalid Type "..iType)
return "Invalid Type"
end]]--
if not v[iType] then
v[iType] = {}
end
for _, data in pairs(v[iType]) do
if data.name == iPrototype.name then
-- if it already exists, overwrite it.
data = iPrototype
return
end
end
table.insert(v[iType], iPrototype)
break
end
end
else
return "Invalid iPrototype"
end
else
return "Invalid iGroup"
end
end
function refresh_equipment()
--[[luadata = {raw = loadstring(game.entity_prototypes["DATA_RAW"].order)()}
reset_equipment()
for i, equipment in pairs (luadata.raw["battery-equipment"]) do
if equipment.rana_mod then
if equipment.rana_mod.powerType then
-- This will happen repeatedly, but it should work correctly even with duplicate registrations, just failing instead.
registerEquipmentGroup({name = equipment.rana_mod.powerGroup,type = equipment.rana_mod.powerType})
registerPrototype({name = equipment.rana_mod.powerGroup,type = equipment.rana_mod.powerType},{name = equipment.name ,power = equipment.rana_mod.fuelPower},"equipment")
end
-- might have more data attachment types later.
end
end
for i, fuel in pairs (luadata.raw["item"]) do
if fuel.rana_mod then
if fuel.rana_mod.powerType then
registerEquipmentGroup({name = fuel.rana_mod.powerGroup,type = fuel.rana_mod.powerType})
registerPrototype({name = fuel.rana_mod.powerGroup,type = fuel.rana_mod.powerType},{name = fuel.name ,power = fuel.rana_mod.fuelPower},"fuel")
end
end
end]]--
registerEquipmentGroup({name = "conduit",type = "conduit"})
registerEquipmentGroup({name = "burner" ,type = "fuelled"})
registerEquipmentGroup({name = "fusion" ,type = "fuelled"})
registerPrototype({name = "conduit",type = "conduit"},{name = "semiconductor-conduit-equipment" ,power = 40 * 1000},"equipment")
registerPrototype({name = "conduit",type = "conduit"},{name = "superconductor-conduit-equipment" ,power = 720 * 1000},"equipment")
registerPrototype({name = "burner" ,type = "fuelled"},{name = "engine-equipment" ,power = 100 * 1000},"equipment")
registerPrototype({name = "fusion" ,type = "fuelled"},{name = "fusion-reactor-equipment" ,power = 960 * 1000},"equipment")
registerPrototype({name = "burner" ,type = "fuelled"},{name = "solid-fuel" ,power = 25 * 1000 * 1000},"fuel")
registerPrototype({name = "burner" ,type = "fuelled"},{name = "coal" ,power = 8. * 1000 * 1000},"fuel")
registerPrototype({name = "burner" ,type = "fuelled"},{name = "raw-wood" ,power = 4. * 1000 * 1000},"fuel")
registerPrototype({name = "fusion" ,type = "fuelled"},{name = "alien-fuel" ,power = 200. * 1000 * 1000},"fuel")
end