remoteMap prescan spawn and also scan newly generated chunks

This commit is contained in:
Danielv123 committed 2018-03-26 16:11:56 +02:00
1 parent 2ab163ab68
commit 0aa25544b0
4 files changed
+54 -18

No files matched your search

+41 -10
View File
@@ -22,10 +22,6 @@
-- DEALINGS IN THE SOFTWARE.
function write_file(data)
if must_write_initstuff then
must_write_initstuff = false
writeout_initial_stuff()
end
stringsToWriteNextTick = stringsToWriteNextTick .. data .. '\n'
-- game.write_file("remoteMap.txt", data, true)
end
@@ -42,9 +38,15 @@ function complain(text)
end
local todo_next_tick = {}
must_write_initstuff = true
function on_tick(event)
dump_cached_writes()
stringsToWriteNextTick = ''
if must_write_initstuff then
must_write_initstuff = false
log("I must write init stuff!")
writeout_initial_stuff()
end
if #todo_next_tick > 0 then
complain("on_tick executing "..#todo_next_tick.." stored callbacks")
for _,func in ipairs(todo_next_tick) do
@@ -54,24 +56,50 @@ function on_tick(event)
end
end
function writeout_initial_stuff()
log("Writing out initial stuff...")
writeout_objects(game.surfaces['nauvis'], {left_top={x=-64,y=-64},right_bottom={x=64,y=64}})
end
function writeout_objects(surface, area)
--if my_client_id ~= 1 then return end
line = ''
for idx, ent in pairs(surface.find_entities(area)) do
if area.left_top.x <= ent.position.x and ent.position.x < area.right_bottom.x and area.left_top.y <= ent.position.y and ent.position.y < area.right_bottom.y then
if ent.prototype.collision_mask ~= nil and ent.prototype.collision_mask['player-layer'] then
line = line .. ent.name.." "..ent.position.x.." "..ent.position.y.."\n"
-- line = line .. ent.name.." "..ent.position.x.." "..ent.position.y.."\n"
-- local line = ent.name..","..ent.position.x..","..ent.position.y
-- if ent.supports_direction then
-- line = line .. ",rot="..ent.direction
-- end
-- write_file(line)
on_some_entity_created(nil, ent)
end
end
end
write_file(line)
--write_file(header..table.concat(lines,"").."\n")
--write_file(table.concat(lines,"").."\n")
line=nil
end
function on_chunk_generated(event)
local area = event.area
local surface = event.surface
--print("chunk generated at ("..area.left_top.x..","..area.left_top.y..") -- ("..area.right_bottom.x..","..area.right_bottom.y..")")
function on_some_entity_created(event)
local ent = event.entity or event.created_entity or nil
if surface ~= game.surfaces['nauvis'] then -- we only support one surface
return
end
-- writeout_resources(surface, area)
writeout_objects(surface, area)
-- writeout_tiles(surface, area)
end
function on_some_entity_created(event, entp)
local ent
if entp then
ent = entp
else
ent = event.entity or event.created_entity or nil
end
if ent == nil then
complain("wtf, on_some_entity_created has nil entity")
return
@@ -80,6 +108,7 @@ function on_some_entity_created(event)
if ent.supports_direction then
entityData = entityData .. ",rot="..ent.direction
end
-- log(entityData)
write_file(entityData)
--writeout_objects(ent.surface, {left_top={x=math.floor(ent.position.x), y=math.floor(ent.position.y)}, right_bottom={x=math.floor(ent.position.x)+1, y=math.floor(ent.position.y)+1}})
--complain("on_some_entity_created: "..ent.name.." at "..ent.position.x..","..ent.position.y)
@@ -102,6 +131,7 @@ function on_some_entity_deleted(event)
end
script.on_event(defines.events.on_tick, on_tick)
script.on_event(defines.events.on_chunk_generated, on_chunk_generated)
script.on_event(defines.events.on_biter_base_built, on_some_entity_created) --entity
script.on_event(defines.events.on_built_entity, on_some_entity_created) --created_entity
@@ -112,3 +142,4 @@ script.on_event(defines.events.on_entity_died, on_some_entity_deleted) --entity
script.on_event(defines.events.on_player_mined_entity, on_some_entity_deleted) --entity
script.on_event(defines.events.on_robot_mined_entity, on_some_entity_deleted) --entity
script.on_event(defines.events.on_resource_depleted, on_some_entity_deleted) --entity
@@ -0,0 +1,5 @@
/c
local toDelete = game.surfaces[1].find_entities({{3,7},{4,8}})
for i, entity in pairs(toDelete) do
entity.die()
end
+6 -6
View File
@@ -13,8 +13,8 @@ class remoteMap {
// initialize chunk database
this.chunkMap = new chunkStore(this.config.unique, 64, "./database/chunkStore/");
this.chunkMap.onEntityChange(entity => {
console.log("Entity changed: ")
console.log(entity);
this.messageInterface("Entity changed: ")
this.messageInterface(entity);
// check valid coordinates (dunno what could go wrong, but can never be too sure)
if(entity && entity.x !== undefined && !isNaN(Number(entity.x)) && entity.y !== undefined && !isNaN(Number(entity.y))){
this.socket.emit("sendEntity", entity);
@@ -31,7 +31,7 @@ class remoteMap {
},10000);
});
this.socket.on("getChunk", req => {
console.log("getChunk is not supported!");
this.messageInterface("getChunk is not supported!");
/*this.chunkMap.getChunk(req.x, req.y).then(chunk => {
chunk.requesterID = req.requesterID;
this.socket.emit("sendChunk", chunk);
@@ -54,7 +54,7 @@ class remoteMap {
// both placing and deleting entities via the web interface
this.socket.on("placeEntity", req => {
// game.player.surface.create_entity{name="small-ship-wreck", position={game.player.position.x-2, game.player.position.y+1}, direction=..., force=...}
console.log("placing "+JSON.stringify(req));
this.messageInterface("placing "+JSON.stringify(req));
if(req.name && typeof req.name == "string" && req.position && !isNaN(Number(req.position.x)) && !isNaN(Number(req.position.y))){
if(req.name == "deleted"){ // {{'+req.position.x+','+req.position.y+'},{'+req.position.x+','+req.position.y+'}}
this.messageInterface('/silent-command local toDelete = game.surfaces[1].find_entities({{'+req.position.x+','+req.position.y+'},{'+(req.position.x+1)+','+(req.position.y+1)+'}}) for i, entity in pairs(toDelete) do entity.die() end');
@@ -96,8 +96,8 @@ class remoteMap {
// express-transport-belt,-35.5,-14.5,[...]
data = data.split(",");
if(data && data[0] == undefined){
console.log("empty: ");
console.log(data);
this.messageInterface("empty: ");
this.messageInterface(data);
return
}
let name = data[0];
+2 -2
View File
@@ -2,10 +2,10 @@
{
"name": "remoteMap",
"title": "Clusterio remote map",
"version": "2.1.0",
"version": "2.2.0",
"date": "18-11-2017",
"author": "Danielv123",
"dependencies": ["base >= 0.15"],
"factorio_version": "0.16",
"description": "Clusterio plugin for external mapping and soon also building. Mobile factorio confirmed"
"description": "Clusterio plugin for mapping and building through the browser. No more need to start game, download and catching up for every game, also mobile factorio confirmed?"
}