1
0
mirror of https://github.com/veden/Rampant.git synced 2024-12-28 21:08:22 +02:00

added versioning and on config change

This commit is contained in:
veden 2016-08-24 17:05:20 -07:00
parent d40ea6fd3d
commit acfb7fe621
3 changed files with 70 additions and 28 deletions

View File

@ -29,5 +29,8 @@ Base Expansion
# Version History
0.0.5 - fix for nil chunk in ai attack, checks for main surface
0.0.5 - fix for nil chunk in ai attack (https://mods.factorio.com/mods/Veden/Rampant/discussion/2512)
checks for main surface (https://forums.factorio.com/viewtopic.php?f=94&t=31445&p=198228#p198563)
updated info with forum homepage
0.0.4 - initial release

View File

@ -36,22 +36,33 @@ local retreatUnits = aiDefense.retreatUnits
local addRemoveObject = mapUtils.addRemoveObject
-- local references to global
local regionMap
local natives
local pendingChunks
-- hook functions
function onInit()
-- print("init")
global.version = constants.VERSION_5
global.regionMap = {}
global.pendingChunks = {}
global.natives = {}
global.regionMap.pQ = {{}} -- processing queue
global.regionMap.pI = 1 -- insertion location for chunk processing
global.regionMap.pP = 1 -- index for the chunk set to process
global.regionMap.pR = -1 -- current processing roll
global.natives.squads = {}
global.natives.scouts = {}
global.natives.tunnels = {}
global.natives.points = 0
regionMap = global.regionMap
natives = global.natives
pendingChunks = global.pendingChunks
regionMap.pQ = {{}} -- processing queue
regionMap.pI = 1 -- insertion location for chunk processing
regionMap.pP = 1 -- index for the chunk set to process
regionMap.pR = -1 -- current processing roll
natives.squads = {}
natives.scouts = {}
natives.tunnels = {}
natives.points = 0
-- game.forces.player.research_all_technologies()
@ -66,16 +77,39 @@ end
function onLoad()
-- print("load")
-- regionMap = global.regionMap
-- pendingChunks = global.pendingChunks
-- natives = global.natives
regionMap = global.regionMap
natives = global.natives
pendingChunks = global.pendingChunks
end
function onConfigChanged()
if (global.version == nil) then
-- print("reprocess")
regionMap.pQ = {{}} -- processing queue
regionMap.pI = 1 -- insertion location for chunk processing
regionMap.pP = 1 -- index for the chunk set to process
regionMap.pR = -1 -- current processing roll
natives.squads = {}
natives.scouts = {}
natives.tunnels = {}
natives.points = 0
pendingChunks = {}
local surface = game.surfaces[1]
for chunk in surface.get_chunks() do
onChunkGenerated({ surface = surface,
area = { left_top = { x = chunk.x * 32,
y = chunk.y * 32 }}})
end
global.version = constants.VERSION_5
end
end
function onChunkGenerated(event)
-- queue generated chunk for delayed processing, queuing is required because some mods (RSO) mess with chunk as they
-- are generated, which messes up the scoring.
if (event.surface.index == 1) then
global.pendingChunks[#global.pendingChunks+1] = event
pendingChunks[#pendingChunks+1] = event
end
end
@ -88,33 +122,33 @@ function onTick(event)
-- game.players[1].cheat_mode = true
-- end
accumulatePoints(global.natives)
accumulatePoints(natives)
-- put down player pheromone for player hunters
playerScent(global.regionMap, game.players)
playerScent(regionMap, game.players)
regroupSquads(global.natives)
regroupSquads(natives)
-- scouting(regionMap, surface, natives)
squadAttackPlayer(global.natives, game.players)
squadAttackPlayer(natives, game.players)
squadBeginAttack(global.natives)
squadAttackLocation(global.regionMap, surface, global.natives)
squadBeginAttack(natives)
squadAttackLocation(regionMap, surface, natives)
end
processPendingChunks(global.regionMap, surface, global.natives, global.pendingChunks)
processPendingChunks(regionMap, surface, natives, pendingChunks)
processMap(global.regionMap, surface, global.natives, game.evolution_factor)
processMap(regionMap, surface, natives, game.evolution_factor)
end
end
function onBuild(event)
addRemoveObject(global.regionMap, event.created_entity, global.natives, true)
addRemoveObject(regionMap, event.created_entity, natives, true)
end
function onPickUp(event)
addRemoveObject(global.regionMap, event.entity, global.natives, false)
addRemoveObject(regionMap, event.entity, natives, false)
end
function onDeath(event)
@ -125,19 +159,19 @@ function onDeath(event)
local entityPosition = entity.position
-- drop death pheromone where unit died
deathScent(global.regionMap, entityPosition.x, entityPosition.y)
deathScent(regionMap, entityPosition.x, entityPosition.y)
if (event.force ~= nil) and (event.force.name == "player") then
local squad = convertUnitGroupToSquad(global.natives, entity.unit_group)
retreatUnits(entityPosition, squad, global.regionMap, game.surfaces[1], global.natives)
local squad = convertUnitGroupToSquad(natives, entity.unit_group)
retreatUnits(entityPosition, squad, regionMap, game.surfaces[1], natives)
end
-- removeScout(entity, global.natives)
elseif (entity.type == "unit-spawner") then
addRemoveObject(global.regionMap, entity, global.natives, false)
addRemoveObject(regionMap, entity, natives, false)
end
elseif (entity.force.name == "player") then
addRemoveObject(global.regionMap, entity, global.natives, false)
addRemoveObject(regionMap, entity, natives, false)
end
end
end
@ -153,6 +187,7 @@ end
script.on_init(onInit)
script.on_load(onLoad)
script.on_configuration_changed(onConfigChanged)
script.on_event(defines.events.on_player_built_tile, onPutItem)

View File

@ -1,5 +1,9 @@
local constants = {}
-- versions
constants.VERSION_5 = 5
-- misc
constants.MAGIC_MAXIMUM_NUMBER = 1e99 -- used in loops trying to find the lowest/highest score