1
0
mirror of https://github.com/veden/Rampant.git synced 2024-12-26 20:54:12 +02:00
Rampant/libs/ChunkPropertyUtils.lua

241 lines
6.0 KiB
Lua
Raw Normal View History

2019-02-16 06:17:30 +02:00
if chunkPropertyUtilsG then
return chunkPropertyUtilsG
end
local chunkPropertyUtils = {}
2018-09-24 06:56:45 +02:00
local constants = require("Constants")
2019-03-08 05:40:55 +02:00
local tRemove = table.remove
-- imported functions
2018-09-26 07:14:13 +02:00
local MOVEMENT_GENERATOR_PERSISTANCE = constants.MOVEMENT_GENERATOR_PERSISTANCE
2018-09-24 06:56:45 +02:00
local CHUNK_ALL_DIRECTIONS = constants.CHUNK_ALL_DIRECTIONS
-- module code
function chunkPropertyUtils.getNestCount(map, chunk)
return map.chunkToNests[chunk] or 0
end
function chunkPropertyUtils.getWormCount(map, chunk)
return map.chunkToWorms[chunk] or 0
end
function chunkPropertyUtils.setWormCount(map, chunk, count)
if (count == 0) then
map.chunkToWorms[chunk] = nil
else
map.chunkToWorms[chunk] = count
end
end
function chunkPropertyUtils.setNestCount(map, chunk, count)
if (count == 0) then
map.chunkToNests[chunk] = nil
else
map.chunkToNests[chunk] = count
end
end
2018-02-17 05:31:29 +02:00
function chunkPropertyUtils.getChunkSettlerTick(map, chunk)
return map.chunkToSettler[chunk] or 0
end
function chunkPropertyUtils.setChunkSettlerTick(map, chunk, tick)
if (tick == 0) then
map.chunkToSettler[chunk] = nil
else
map.chunkToSettler[chunk] = tick
end
end
function chunkPropertyUtils.getNestCount(map, chunk)
return map.chunkToNests[chunk] or 0
end
function chunkPropertyUtils.getChunkBase(map, chunk)
return map.chunkToBase[chunk]
end
function chunkPropertyUtils.setChunkBase(map, chunk, base)
map.chunkToBase[chunk] = base
end
function chunkPropertyUtils.getWormCount(map, chunk)
return map.chunkToWorms[chunk] or 0
end
function chunkPropertyUtils.getEnemyStructureCount(map, chunk)
return (map.chunkToNests[chunk] or 0) + (map.chunkToWorms[chunk] or 0)
end
function chunkPropertyUtils.getRetreatTick(map, chunk)
return map.chunkToRetreats[chunk] or 0
end
function chunkPropertyUtils.getRallyTick(map, chunk)
return map.chunkToRallys[chunk] or 0
end
function chunkPropertyUtils.setRallyTick(map, chunk, tick)
2019-02-16 06:17:30 +02:00
map.chunkToRallys[chunk] = tick
end
function chunkPropertyUtils.setRetreatTick(map, chunk, tick)
map.chunkToRetreats[chunk] = tick
end
function chunkPropertyUtils.setResourceGenerator(map, chunk, resourceGenerator)
if (resourceGenerator == 0) then
map.chunkToResource[chunk] = nil
else
map.chunkToResource[chunk] = resourceGenerator
end
end
2018-02-12 05:21:28 +02:00
function chunkPropertyUtils.setChunkSpawnerEggTick(map, chunk, tick)
map.chunkToSpawner[chunk] = tick
end
function chunkPropertyUtils.getChunkSpawnerEggTick(map, chunk)
return map.chunkToSpawner[chunk] or 0
end
function chunkPropertyUtils.getResourceGenerator(map, chunk)
return map.chunkToResource[chunk] or 0
end
function chunkPropertyUtils.addResourceGenerator(map, chunk, delta)
map.chunkToResource[chunk] = (map.chunkToResource[chunk] or 0) + delta
end
2018-09-24 06:56:45 +02:00
function chunkPropertyUtils.getDeathGenerator(map, chunk)
return map.chunkToDeathGenerator[chunk] or 0
end
function chunkPropertyUtils.getPassable(map, chunk)
return map.chunkToPassable[chunk] or CHUNK_ALL_DIRECTIONS
end
2019-02-20 08:16:43 +02:00
function chunkPropertyUtils.getRaidNestActiveness(map, chunk)
return map.chunkToActiveRaidNest[chunk] or 0
end
function chunkPropertyUtils.setRaidNestActiveness(map, chunk, value)
if (value <= 0) then
map.chunkToActiveRaidNest[chunk] = nil
else
map.chunkToActiveRaidNest[chunk] = value
end
end
function chunkPropertyUtils.getNestActiveness(map, chunk)
return map.chunkToActiveNest[chunk] or 0
end
function chunkPropertyUtils.setNestActiveness(map, chunk, value)
if (value <= 0) then
map.chunkToActiveNest[chunk] = nil
else
map.chunkToActiveNest[chunk] = value
end
end
2018-09-24 06:56:45 +02:00
function chunkPropertyUtils.setPassable(map, chunk, value)
if (value == CHUNK_ALL_DIRECTIONS) then
map.chunkToPassable[chunk] = nil
else
map.chunkToPassable[chunk] = value
end
end
function chunkPropertyUtils.getPathRating(map, chunk)
return map.chunkToPathRating[chunk] or 1
end
function chunkPropertyUtils.setPathRating(map, chunk, value)
if (value == 1) then
map.chunkToPathRating[chunk] = nil
else
map.chunkToPathRating[chunk] = value
end
end
2018-09-26 07:14:13 +02:00
function chunkPropertyUtils.addDeathGenerator(map, chunk, value)
map.chunkToDeathGenerator[chunk] = (map.chunkToDeathGenerator[chunk] or 0) + value
2018-09-24 06:56:45 +02:00
end
function chunkPropertyUtils.decayDeathGenerator(map, chunk)
local gen = map.chunkToDeathGenerator[chunk]
if gen and (gen > 0) then
2018-09-26 07:14:13 +02:00
gen = gen * MOVEMENT_GENERATOR_PERSISTANCE
if (gen >= -2) and (gen <= 2) then
map.chunkToDeathGenerator[chunk] = nil
else
map.chunkToDeathGenerator[chunk] = gen
end
2019-02-16 06:17:30 +02:00
end
2018-09-24 06:56:45 +02:00
end
function chunkPropertyUtils.getPlayerBaseGenerator(map, chunk)
return map.chunkToPlayerBase[chunk] or 0
end
function chunkPropertyUtils.addSquadToChunk(map, chunk, squad)
local chunkToSquad = map.chunkToSquad
if squad.chunk ~= chunk then
chunkPropertyUtils.removeSquadFromChunk(map, squad)
end
2019-02-16 06:17:30 +02:00
2019-03-08 05:40:55 +02:00
local squads = chunkToSquad[chunk]
if not squads then
squads = {}
chunkToSquad[chunk] = squads
end
2019-03-08 05:40:55 +02:00
squads[#squads+1] = squad
2019-02-16 06:17:30 +02:00
squad.chunk = chunk
end
function chunkPropertyUtils.removeSquadFromChunk(map, squad)
local chunkToSquad = map.chunkToSquad
local chunk = squad.chunk
if chunk then
local squads = chunkToSquad[chunk]
if squads then
2019-03-08 05:40:55 +02:00
for i=1,#squads do
if (squads[i] == squad) then
tRemove(squads, i)
break
end
end
2019-03-08 05:40:55 +02:00
if (#squads == 0) then
chunkToSquad[chunk] = nil
end
end
end
end
function chunkPropertyUtils.getSquadsOnChunk(map, chunk)
return map.chunkToSquad[chunk] or {}
end
function chunkPropertyUtils.setPlayerBaseGenerator(map, chunk, playerGenerator)
if (playerGenerator == 0) then
map.chunkToPlayerBase[chunk] = nil
else
map.chunkToPlayerBase[chunk] = playerGenerator
end
end
function chunkPropertyUtils.addPlayerBaseGenerator(map, chunk, playerGenerator)
map.chunkToPlayerBase[chunk] = (map.chunkToPlayerBase[chunk] or 0) + playerGenerator
end
2019-02-16 06:17:30 +02:00
chunkPropertyUtilsG = chunkPropertyUtils
return chunkPropertyUtils