From 8b74f104fc584ecbf79b27a04fbd1a1a92d74b8e Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 21 Nov 2018 08:35:47 -0500 Subject: [PATCH] Formatting (#420) --- map_gen/day_night_cycles/day_night_cycle.lua | 2 +- map_gen/misc/car_body.lua | 23 +- map_gen/misc/change_landfill_tile.lua | 5 +- map_gen/misc/nightfall.lua | 53 +- map_gen/misc/rail_grid.lua | 510 ++++++++++++++----- map_gen/misc/rusky_pvp.lua | 302 +++++------ map_gen/misc/tris_chunk_grid.lua | 12 +- map_gen/misc/wreck_items.lua | 90 ++-- 8 files changed, 630 insertions(+), 367 deletions(-) diff --git a/map_gen/day_night_cycles/day_night_cycle.lua b/map_gen/day_night_cycles/day_night_cycle.lua index dab199ff..7b7523e0 100644 --- a/map_gen/day_night_cycles/day_night_cycle.lua +++ b/map_gen/day_night_cycles/day_night_cycle.lua @@ -1,4 +1,4 @@ -local Event = require "utils.event" +local Event = require 'utils.event' -- Uncomment the desired day/night cycle diff --git a/map_gen/misc/car_body.lua b/map_gen/misc/car_body.lua index cc2137a6..9ff5c02e 100644 --- a/map_gen/misc/car_body.lua +++ b/map_gen/misc/car_body.lua @@ -1,29 +1,28 @@ local Event = require 'utils.event' local Game = require 'utils.game' -local drivers_group = "Drivers" +local drivers_group = 'Drivers' local function transfer_body(player) -- Remove the player from their character and place them in a car. local surface = player.surface local force = player.force local pos = force.get_spawn_position(surface) - + -- Choose a random direction for the car to face - local dir = math.random (0,7) - + local dir = math.random(0, 7) + -- Remove the players' character if player.character then player.character.destroy() end - + --Find a place for a car, place a car, and place fuel+ammo in it local car_pos = surface.find_non_colliding_position('car', pos, 0, 3) local car = surface.create_entity {name = 'car', position = car_pos, direction = dir, force = force} - car.insert({name="coal", count=50}) - car.insert({name="firearm-magazine", count=10}) + car.insert({name = 'coal', count = 50}) + car.insert({name = 'firearm-magazine', count = 10}) car.set_driver(player) - end local function player_created(event) @@ -42,16 +41,16 @@ local function player_created(event) -- Disable leaving a vehicle permission_group.set_allows_action(defines.input_action.toggle_driving, false) end - + -- Add player to drivers group - permission_group.add_player(player) + permission_group.add_player(player) -- Put the new player into a car. transfer_body(player) - + -- Disable the god mode spotlight. player.disable_flashlight() - + -- Welcome message to the player. player.print('As though a dream, you find yourself without a body and instead as a sentient car. Strange...') end diff --git a/map_gen/misc/change_landfill_tile.lua b/map_gen/misc/change_landfill_tile.lua index 308abb58..75f1ef4d 100644 --- a/map_gen/misc/change_landfill_tile.lua +++ b/map_gen/misc/change_landfill_tile.lua @@ -4,7 +4,6 @@ local replacement_tiles local tile_count local random = math.random - Event.add( defines.events.on_player_built_tile, function(event) @@ -16,7 +15,7 @@ Event.add( if event.item.name == 'landfill' then local tiles = event.tiles for i = 1, #tiles do - tiles[i].name = replacement_tiles[random(1,tile_count)] + tiles[i].name = replacement_tiles[random(1, tile_count)] end local surface = game.surfaces[event.surface_index] surface.set_tiles(tiles) @@ -25,6 +24,6 @@ Event.add( ) return function(tiles) - replacement_tiles = tiles or {"sand-1"} + replacement_tiles = tiles or {'sand-1'} tile_count = #replacement_tiles end diff --git a/map_gen/misc/nightfall.lua b/map_gen/misc/nightfall.lua index 2de5c457..b5b2217b 100644 --- a/map_gen/misc/nightfall.lua +++ b/map_gen/misc/nightfall.lua @@ -13,6 +13,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI Biters in polluted areas become more aggressive at night. TODO: Look into triggering existing unit groups to attack in unison with the groups we generate. ]]-- + local Event = require 'utils.event' --basic interval for checks local timeinterval = 2689 --2700 is ~45 seconds at 60 UPS @@ -30,7 +31,7 @@ local insert = table.insert local function biter_attack() local maxindex = #global.bases local surface = game.surfaces[1] - for i=global.c_index, global.c_index+processchunk, 1 do + for i = global.c_index, global.c_index + processchunk, 1 do if i > maxindex then -- we're done here global.state = IDLE @@ -38,17 +39,17 @@ local function biter_attack() end if random() < surface.darkness then local base = global.bases[i] - local group=surface.create_unit_group{position=base} + local group = surface.create_unit_group {position = base} for _, biter in ipairs(surface.find_enemy_units(base, 16)) do group.add_member(biter) end - if #group.members==0 then + if #group.members == 0 then group.destroy() else --autonomous groups will attack polluted areas independently group.set_autonomous() if _DEBUG then - game.print("sending biters") + game.print('sending biters') end --group.set_command{ type=defines.command.attack_area, destination=game.players[1].position, radius=200, distraction=defines.distraction.by_anything } end @@ -62,11 +63,11 @@ local function biter_attack() end end -local function shuffle_table( t ) - assert( t, "shuffle_table() expected a table, got nil" ) +local function shuffle_table(t) + assert(t, 'shuffle_table() expected a table, got nil') local iterations = #t local j - + for i = iterations, 2, -1 do j = random(i) t[i], t[j] = t[j], t[i] @@ -80,7 +81,7 @@ local function find_bases() global.bases = {} end local maxindex = #global.chunklist - for i=global.c_index, global.c_index+processchunk, 1 do + for i = global.c_index, global.c_index + processchunk, 1 do if i > maxindex then -- we're done with the search global.state = ATTACKING @@ -88,9 +89,13 @@ local function find_bases() end if get_pollution(global.chunklist[i]) > 0.1 then local chunkcoord = global.chunklist[i] - if (count_entities_filtered{area={{chunkcoord.x-16, chunkcoord.y-16},{chunkcoord.x+16, chunkcoord.y+16}}, - type = "unit-spawner"}) > 0 then - insert(global.bases,chunkcoord) + if + (count_entities_filtered { + area = {{chunkcoord.x - 16, chunkcoord.y - 16}, {chunkcoord.x + 16, chunkcoord.y + 16}}, + type = 'unit-spawner' + }) > 0 + then + insert(global.bases, chunkcoord) end end end @@ -100,7 +105,7 @@ local function find_bases() global.c_index = 1 shuffle_table(global.bases) if _DEBUG then - game.print("bases added: " .. tostring(#global.bases)) + game.print('bases added: ' .. tostring(#global.bases)) end end end @@ -112,8 +117,8 @@ local function on_chunk_generated(event) if event.surface == game.surfaces[1] then local chunk = {} local coords = event.area.left_top - chunk.x = coords.x+16 - chunk.y = coords.y+16 + chunk.x = coords.x + 16 + chunk.y = coords.y + 16 insert(global.chunklist, chunk) end end @@ -130,26 +135,22 @@ local function on_tick() end local function on_interval() - if game.surfaces[1].darkness > 0.5 - and global.state == IDLE - and game.tick >= global.lastattack + timeinterval - and random() > 0.5 - then + if game.surfaces[1].darkness > 0.5 and global.state == IDLE and game.tick >= global.lastattack + timeinterval and random() > 0.5 then -- Search for bases, then attack global.state = BASE_SEARCH if _DEBUG then - game.surfaces[1].print("entering attack mode") --for debug + game.surfaces[1].print('entering attack mode') --for debug end end end local function on_init() - global.bases = {} - global.chunklist = {} - global.state = IDLE - --prevents attacks from happening too often - global.lastattack = 0 - global.c_index=1 + global.bases = {} + global.chunklist = {} + global.state = IDLE + --prevents attacks from happening too often + global.lastattack = 0 + global.c_index = 1 end Event.add(defines.events.on_chunk_generated, on_chunk_generated) diff --git a/map_gen/misc/rail_grid.lua b/map_gen/misc/rail_grid.lua index 3c10469e..2aced775 100644 --- a/map_gen/misc/rail_grid.lua +++ b/map_gen/misc/rail_grid.lua @@ -1,186 +1,438 @@ -local Event = require "utils.event" +local Event = require 'utils.event' mymodule = {} local function rot_pos(pos, rot) - local ctr = {x = 15, y = 15} - return { - x = ctr.x + (pos.x - ctr.x) * rot.x - (pos.y - ctr.y) * rot.y, - y = ctr.y + (pos.x - ctr.x) * rot.y + (pos.y - ctr.y) * rot.x - } + local ctr = {x = 15, y = 15} + return { + x = ctr.x + (pos.x - ctr.x) * rot.x - (pos.y - ctr.y) * rot.y, + y = ctr.y + (pos.x - ctr.x) * rot.y + (pos.y - ctr.y) * rot.x + } end local function rot_dir(dir, rot) - local cnt = 2 * math.atan2(rot.y, rot.x) / math.pi - return (dir + 2 * cnt) % 8 + local cnt = 2 * math.atan2(rot.y, rot.x) / math.pi + return (dir + 2 * cnt) % 8 end local rail_grid = { - ["allway"] = {{["name"] = "curved-rail", ["position"] = {["x"] = 10, ["y"] = 4}, ["direction"] = 5}, {["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 1}, ["direction"] = 0}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 12.5, ["y"] = 0.5}, ["direction"] = 4}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 17.5, ["y"] = 0.5}, ["direction"] = 0}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 1}, ["direction"] = 0}, {["name"] = "curved-rail", ["position"] = {["x"] = 20, ["y"] = 4}, ["direction"] = 4}, {["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 3}, ["direction"] = 0}, {["name"] = "big-electric-pole", ["position"] = {["x"] = 15, ["y"] = 3}, ["direction"] = 0}, {["name"] = "curved-rail", ["position"] = {["x"] = 20, ["y"] = 6}, ["direction"] = 4}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 3}, ["direction"] = 0}, {["name"] = "curved-rail", ["position"] = {["x"] = 12, ["y"] = 6}, ["direction"] = 6}, {["name"] = "curved-rail", ["position"] = {["x"] = 12, ["y"] = 8}, ["direction"] = 4}, {["name"] = "curved-rail", ["position"] = {["x"] = 18, ["y"] = 8}, ["direction"] = 5}, {["name"] = "curved-rail", ["position"] = {["x"] = 20, ["y"] = 6}, ["direction"] = 3}, {["name"] = "curved-rail", ["position"] = {["x"] = 4, ["y"] = 10}, ["direction"] = 2}, {["name"] = "curved-rail", ["position"] = {["x"] = 6, ["y"] = 10}, ["direction"] = 2}, {["name"] = "curved-rail", ["position"] = {["x"] = 6, ["y"] = 10}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 7, ["y"] = 7}, ["direction"] = 3}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 15.5, ["y"] = 6.5}, ["direction"] = 6}, {["name"] = "straight-rail", ["position"] = {["x"] = 23, ["y"] = 7}, ["direction"] = 5}, {["name"] = "curved-rail", ["position"] = {["x"] = 26, ["y"] = 10}, ["direction"] = 7}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 15.5, ["y"] = 9.5}, ["direction"] = 1}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 14.5, ["y"] = 9.5}, ["direction"] = 3}, {["name"] = "curved-rail", ["position"] = {["x"] = 24, ["y"] = 12}, ["direction"] = 0}, {["name"] = "straight-rail", ["position"] = {["x"] = 1, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 3, ["y"] = 11}, ["direction"] = 2}, {["name"] = "curved-rail", ["position"] = {["x"] = 8, ["y"] = 12}, ["direction"] = 3}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 13}, ["direction"] = 7}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 11}, ["direction"] = 5}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 13}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 11}, ["direction"] = 3}, {["name"] = "curved-rail", ["position"] = {["x"] = 22, ["y"] = 12}, ["direction"] = 6}, {["name"] = "straight-rail", ["position"] = {["x"] = 27, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 29, ["y"] = 11}, ["direction"] = 2}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 0.5, ["y"] = 12.5}, ["direction"] = 6}, {["name"] = "straight-rail", ["position"] = {["x"] = 13, ["y"] = 15}, ["direction"] = 7}, {["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 15}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 13, ["y"] = 13}, ["direction"] = 3}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 12.5, ["y"] = 12.5}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 17, ["y"] = 13}, ["direction"] = 5}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 15}, ["direction"] = 7}, {["name"] = "straight-rail", ["position"] = {["x"] = 17, ["y"] = 15}, ["direction"] = 1}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 17.5, ["y"] = 12.5}, ["direction"] = 3}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 29.5, ["y"] = 12.5}, ["direction"] = 6}, {["name"] = "big-electric-pole", ["position"] = {["x"] = 3, ["y"] = 15}, ["direction"] = 0}, {["name"] = "curved-rail", ["position"] = {["x"] = 8, ["y"] = 18}, ["direction"] = 2}, {["name"] = "curved-rail", ["position"] = {["x"] = 6, ["y"] = 18}, ["direction"] = 4}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 6.5, ["y"] = 14.5}, ["direction"] = 4}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 9.5, ["y"] = 15.5}, ["direction"] = 1}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 9.5, ["y"] = 14.5}, ["direction"] = 7}, {["name"] = "straight-rail", ["position"] = {["x"] = 13, ["y"] = 15}, ["direction"] = 5}, {["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 15}, ["direction"] = 3}, {["name"] = "straight-rail", ["position"] = {["x"] = 13, ["y"] = 17}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 17, ["y"] = 17}, ["direction"] = 7}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 15}, ["direction"] = 5}, {["name"] = "straight-rail", ["position"] = {["x"] = 17, ["y"] = 15}, ["direction"] = 3}, {["name"] = "curved-rail", ["position"] = {["x"] = 22, ["y"] = 18}, ["direction"] = 7}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 20.5, ["y"] = 15.5}, ["direction"] = 3}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 20.5, ["y"] = 14.5}, ["direction"] = 5}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 23.5, ["y"] = 15.5}, ["direction"] = 0}, {["name"] = "big-electric-pole", ["position"] = {["x"] = 27, ["y"] = 15}, ["direction"] = 0}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 0.5, ["y"] = 17.5}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 19}, ["direction"] = 7}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 17}, ["direction"] = 5}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 12.5, ["y"] = 17.5}, ["direction"] = 7}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 19}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 17}, ["direction"] = 3}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 17.5, ["y"] = 17.5}, ["direction"] = 5}, {["name"] = "curved-rail", ["position"] = {["x"] = 24, ["y"] = 20}, ["direction"] = 5}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 29.5, ["y"] = 17.5}, ["direction"] = 2}, {["name"] = "curved-rail", ["position"] = {["x"] = 4, ["y"] = 20}, ["direction"] = 3}, {["name"] = "straight-rail", ["position"] = {["x"] = 1, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 3, ["y"] = 19}, ["direction"] = 2}, {["name"] = "curved-rail", ["position"] = {["x"] = 12, ["y"] = 22}, ["direction"] = 1}, {["name"] = "curved-rail", ["position"] = {["x"] = 18, ["y"] = 22}, ["direction"] = 0}, {["name"] = "curved-rail", ["position"] = {["x"] = 24, ["y"] = 20}, ["direction"] = 6}, {["name"] = "curved-rail", ["position"] = {["x"] = 26, ["y"] = 20}, ["direction"] = 6}, {["name"] = "straight-rail", ["position"] = {["x"] = 27, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 29, ["y"] = 19}, ["direction"] = 2}, {["name"] = "curved-rail", ["position"] = {["x"] = 10, ["y"] = 24}, ["direction"] = 7}, {["name"] = "curved-rail", ["position"] = {["x"] = 10, ["y"] = 24}, ["direction"] = 0}, {["name"] = "straight-rail", ["position"] = {["x"] = 7, ["y"] = 23}, ["direction"] = 1}, {["name"] = "curved-rail", ["position"] = {["x"] = 18, ["y"] = 24}, ["direction"] = 2}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 15.5, ["y"] = 20.5}, ["direction"] = 7}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 14.5, ["y"] = 20.5}, ["direction"] = 5}, {["name"] = "straight-rail", ["position"] = {["x"] = 23, ["y"] = 23}, ["direction"] = 7}, {["name"] = "curved-rail", ["position"] = {["x"] = 10, ["y"] = 26}, ["direction"] = 0}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 14.5, ["y"] = 23.5}, ["direction"] = 2}, {["name"] = "curved-rail", ["position"] = {["x"] = 20, ["y"] = 26}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 27}, ["direction"] = 0}, {["name"] = "big-electric-pole", ["position"] = {["x"] = 15, ["y"] = 27}, ["direction"] = 0}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 27}, ["direction"] = 0}, {["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 29}, ["direction"] = 0}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 12.5, ["y"] = 29.5}, ["direction"] = 4}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 17.5, ["y"] = 29.5}, ["direction"] = 0}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 29}, ["direction"] = 0}}, - ["tshape"] = {{["name"] = "curved-rail", ["position"] = {["x"] = 4, ["y"] = 12}, ["direction"] = 3}, {["name"] = "straight-rail", ["position"] = {["x"] = 1, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 3, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 5, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 7, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 9, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 13, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 17, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 21, ["y"] = 11}, ["direction"] = 2}, {["name"] = "curved-rail", ["position"] = {["x"] = 26, ["y"] = 12}, ["direction"] = 6}, {["name"] = "straight-rail", ["position"] = {["x"] = 23, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 25, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 27, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 29, ["y"] = 11}, ["direction"] = 2}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 0.5, ["y"] = 12.5}, ["direction"] = 6}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 7.5, ["y"] = 12.5}, ["direction"] = 6}, {["name"] = "straight-rail", ["position"] = {["x"] = 7, ["y"] = 15}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 23, ["y"] = 15}, ["direction"] = 7}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 22.5, ["y"] = 12.5}, ["direction"] = 6}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 29.5, ["y"] = 12.5}, ["direction"] = 6}, {["name"] = "big-electric-pole", ["position"] = {["x"] = 3, ["y"] = 15}, ["direction"] = 0}, {["name"] = "straight-rail", ["position"] = {["x"] = 9, ["y"] = 15}, ["direction"] = 5}, {["name"] = "straight-rail", ["position"] = {["x"] = 9, ["y"] = 17}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 21, ["y"] = 17}, ["direction"] = 7}, {["name"] = "straight-rail", ["position"] = {["x"] = 21, ["y"] = 15}, ["direction"] = 3}, {["name"] = "big-electric-pole", ["position"] = {["x"] = 27, ["y"] = 15}, ["direction"] = 0}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 0.5, ["y"] = 17.5}, ["direction"] = 2}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 7.5, ["y"] = 17.5}, ["direction"] = 2}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 8.5, ["y"] = 17.5}, ["direction"] = 7}, {["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 17}, ["direction"] = 5}, {["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 19}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 19}, ["direction"] = 7}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 17}, ["direction"] = 3}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 21.5, ["y"] = 17.5}, ["direction"] = 5}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 22.5, ["y"] = 17.5}, ["direction"] = 2}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 29.5, ["y"] = 17.5}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 1, ["y"] = 19}, ["direction"] = 2}, {["name"] = "curved-rail", ["position"] = {["x"] = 4, ["y"] = 20}, ["direction"] = 3}, {["name"] = "straight-rail", ["position"] = {["x"] = 3, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 5, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 7, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 9, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 13, ["y"] = 19}, ["direction"] = 5}, {["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 13, ["y"] = 21}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 13, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 17, ["y"] = 21}, ["direction"] = 7}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 17, ["y"] = 19}, ["direction"] = 3}, {["name"] = "straight-rail", ["position"] = {["x"] = 17, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 21, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 23, ["y"] = 19}, ["direction"] = 2}, {["name"] = "curved-rail", ["position"] = {["x"] = 26, ["y"] = 20}, ["direction"] = 6}, {["name"] = "straight-rail", ["position"] = {["x"] = 25, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 27, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 29, ["y"] = 19}, ["direction"] = 2}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 7.5, ["y"] = 20.5}, ["direction"] = 3}, {["name"] = "straight-rail", ["position"] = {["x"] = 7, ["y"] = 23}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 21}, ["direction"] = 5}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 23}, ["direction"] = 7}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 23}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 21}, ["direction"] = 3}, {["name"] = "straight-rail", ["position"] = {["x"] = 23, ["y"] = 23}, ["direction"] = 7}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 22.5, ["y"] = 20.5}, ["direction"] = 1}, {["name"] = "curved-rail", ["position"] = {["x"] = 10, ["y"] = 26}, ["direction"] = 0}, {["name"] = "curved-rail", ["position"] = {["x"] = 12, ["y"] = 26}, ["direction"] = 1}, {["name"] = "curved-rail", ["position"] = {["x"] = 18, ["y"] = 26}, ["direction"] = 0}, {["name"] = "curved-rail", ["position"] = {["x"] = 20, ["y"] = 26}, ["direction"] = 1}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 15.5, ["y"] = 24.5}, ["direction"] = 7}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 14.5, ["y"] = 24.5}, ["direction"] = 5}, {["name"] = "big-electric-pole", ["position"] = {["x"] = 15, ["y"] = 27}, ["direction"] = 0}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 12.5, ["y"] = 29.5}, ["direction"] = 4}, {["name"] = "rail-chain-signal", ["position"] = {["x"] = 17.5, ["y"] = 29.5}, ["direction"] = 0}}, - ["straight"] = {{["name"] = "straight-rail", ["position"] = {["x"] = 1, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 3, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 5, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 7, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 9, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 13, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 17, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 21, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 23, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 25, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 27, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 29, ["y"] = 11}, ["direction"] = 2}, {["name"] = "rail-signal", ["position"] = {["x"] = 1.5, ["y"] = 12.5}, ["direction"] = 6}, {["name"] = "big-electric-pole", ["position"] = {["x"] = 3, ["y"] = 15}, ["direction"] = 0}, {["name"] = "big-electric-pole", ["position"] = {["x"] = 27, ["y"] = 15}, ["direction"] = 0}, {["name"] = "rail-signal", ["position"] = {["x"] = 28.5, ["y"] = 17.5}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 1, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 3, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 5, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 7, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 9, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 13, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 17, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 21, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 23, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 25, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 27, ["y"] = 19}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 29, ["y"] = 19}, ["direction"] = 2}}, - ["corner"] = {{["name"] = "straight-rail", ["position"] = {["x"] = 1, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 3, ["y"] = 11}, ["direction"] = 2}, {["name"] = "curved-rail", ["position"] = {["x"] = 8, ["y"] = 12}, ["direction"] = 3}, {["name"] = "rail-signal", ["position"] = {["x"] = 1.5, ["y"] = 12.5}, ["direction"] = 6}, {["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 15}, ["direction"] = 1}, {["name"] = "big-electric-pole", ["position"] = {["x"] = 3, ["y"] = 15}, ["direction"] = 0}, {["name"] = "straight-rail", ["position"] = {["x"] = 13, ["y"] = 15}, ["direction"] = 5}, {["name"] = "straight-rail", ["position"] = {["x"] = 13, ["y"] = 17}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 17}, ["direction"] = 5}, {["name"] = "straight-rail", ["position"] = {["x"] = 15, ["y"] = 19}, ["direction"] = 1}, {["name"] = "curved-rail", ["position"] = {["x"] = 4, ["y"] = 20}, ["direction"] = 3}, {["name"] = "curved-rail", ["position"] = {["x"] = 18, ["y"] = 22}, ["direction"] = 0}, {["name"] = "straight-rail", ["position"] = {["x"] = 7, ["y"] = 23}, ["direction"] = 1}, {["name"] = "curved-rail", ["position"] = {["x"] = 10, ["y"] = 26}, ["direction"] = 0}, {["name"] = "big-electric-pole", ["position"] = {["x"] = 15, ["y"] = 27}, ["direction"] = 0}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 27}, ["direction"] = 0}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 29}, ["direction"] = 0}}, - ["ushape"] = {{["name"] = "curved-rail", ["position"] = {["x"] = 12, ["y"] = 4}, ["direction"] = 6}, {["name"] = "curved-rail", ["position"] = {["x"] = 20, ["y"] = 4}, ["direction"] = 3}, {["name"] = "straight-rail", ["position"] = {["x"] = 9, ["y"] = 7}, ["direction"] = 7}, {["name"] = "straight-rail", ["position"] = {["x"] = 23, ["y"] = 7}, ["direction"] = 1}, {["name"] = "curved-rail", ["position"] = {["x"] = 4, ["y"] = 10}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 7, ["y"] = 7}, ["direction"] = 3}, {["name"] = "curved-rail", ["position"] = {["x"] = 26, ["y"] = 10}, ["direction"] = 0}, {["name"] = "rail-signal", ["position"] = {["x"] = 7.5, ["y"] = 9.5}, ["direction"] = 5}, {["name"] = "big-electric-pole", ["position"] = {["x"] = 3, ["y"] = 15}, ["direction"] = 0}, {["name"] = "straight-rail", ["position"] = {["x"] = 27, ["y"] = 15}, ["direction"] = 0}, {["name"] = "curved-rail", ["position"] = {["x"] = 26, ["y"] = 20}, ["direction"] = 5}, {["name"] = "curved-rail", ["position"] = {["x"] = 4, ["y"] = 20}, ["direction"] = 3}, {["name"] = "straight-rail", ["position"] = {["x"] = 7, ["y"] = 23}, ["direction"] = 1}, {["name"] = "straight-rail", ["position"] = {["x"] = 9, ["y"] = 23}, ["direction"] = 5}, {["name"] = "curved-rail", ["position"] = {["x"] = 12, ["y"] = 26}, ["direction"] = 7}, {["name"] = "curved-rail", ["position"] = {["x"] = 20, ["y"] = 26}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 23, ["y"] = 23}, ["direction"] = 3}, {["name"] = "train-stop", ["position"] = {["x"] = 25, ["y"] = 15}, ["direction"] = 4}} + ['allway'] = { + {['name'] = 'curved-rail', ['position'] = {['x'] = 10, ['y'] = 4}, ['direction'] = 5}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 1}, ['direction'] = 0}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 12.5, ['y'] = 0.5}, ['direction'] = 4}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 17.5, ['y'] = 0.5}, ['direction'] = 0}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 1}, ['direction'] = 0}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 20, ['y'] = 4}, ['direction'] = 4}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 3}, ['direction'] = 0}, + {['name'] = 'big-electric-pole', ['position'] = {['x'] = 15, ['y'] = 3}, ['direction'] = 0}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 20, ['y'] = 6}, ['direction'] = 4}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 3}, ['direction'] = 0}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 12, ['y'] = 6}, ['direction'] = 6}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 12, ['y'] = 8}, ['direction'] = 4}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 18, ['y'] = 8}, ['direction'] = 5}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 20, ['y'] = 6}, ['direction'] = 3}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 4, ['y'] = 10}, ['direction'] = 2}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 6, ['y'] = 10}, ['direction'] = 2}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 6, ['y'] = 10}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 7, ['y'] = 7}, ['direction'] = 3}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 15.5, ['y'] = 6.5}, ['direction'] = 6}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 23, ['y'] = 7}, ['direction'] = 5}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 26, ['y'] = 10}, ['direction'] = 7}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 15.5, ['y'] = 9.5}, ['direction'] = 1}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 14.5, ['y'] = 9.5}, ['direction'] = 3}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 24, ['y'] = 12}, ['direction'] = 0}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 1, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 3, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 8, ['y'] = 12}, ['direction'] = 3}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 13}, ['direction'] = 7}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 11}, ['direction'] = 5}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 13}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 11}, ['direction'] = 3}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 22, ['y'] = 12}, ['direction'] = 6}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 27, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 29, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 0.5, ['y'] = 12.5}, ['direction'] = 6}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 13, ['y'] = 15}, ['direction'] = 7}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 15}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 13, ['y'] = 13}, ['direction'] = 3}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 12.5, ['y'] = 12.5}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 17, ['y'] = 13}, ['direction'] = 5}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 15}, ['direction'] = 7}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 17, ['y'] = 15}, ['direction'] = 1}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 17.5, ['y'] = 12.5}, ['direction'] = 3}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 29.5, ['y'] = 12.5}, ['direction'] = 6}, + {['name'] = 'big-electric-pole', ['position'] = {['x'] = 3, ['y'] = 15}, ['direction'] = 0}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 8, ['y'] = 18}, ['direction'] = 2}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 6, ['y'] = 18}, ['direction'] = 4}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 6.5, ['y'] = 14.5}, ['direction'] = 4}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 9.5, ['y'] = 15.5}, ['direction'] = 1}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 9.5, ['y'] = 14.5}, ['direction'] = 7}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 13, ['y'] = 15}, ['direction'] = 5}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 15}, ['direction'] = 3}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 13, ['y'] = 17}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 17, ['y'] = 17}, ['direction'] = 7}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 15}, ['direction'] = 5}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 17, ['y'] = 15}, ['direction'] = 3}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 22, ['y'] = 18}, ['direction'] = 7}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 20.5, ['y'] = 15.5}, ['direction'] = 3}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 20.5, ['y'] = 14.5}, ['direction'] = 5}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 23.5, ['y'] = 15.5}, ['direction'] = 0}, + {['name'] = 'big-electric-pole', ['position'] = {['x'] = 27, ['y'] = 15}, ['direction'] = 0}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 0.5, ['y'] = 17.5}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 19}, ['direction'] = 7}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 17}, ['direction'] = 5}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 12.5, ['y'] = 17.5}, ['direction'] = 7}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 19}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 17}, ['direction'] = 3}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 17.5, ['y'] = 17.5}, ['direction'] = 5}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 24, ['y'] = 20}, ['direction'] = 5}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 29.5, ['y'] = 17.5}, ['direction'] = 2}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 4, ['y'] = 20}, ['direction'] = 3}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 1, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 3, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 12, ['y'] = 22}, ['direction'] = 1}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 18, ['y'] = 22}, ['direction'] = 0}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 24, ['y'] = 20}, ['direction'] = 6}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 26, ['y'] = 20}, ['direction'] = 6}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 27, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 29, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 10, ['y'] = 24}, ['direction'] = 7}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 10, ['y'] = 24}, ['direction'] = 0}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 7, ['y'] = 23}, ['direction'] = 1}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 18, ['y'] = 24}, ['direction'] = 2}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 15.5, ['y'] = 20.5}, ['direction'] = 7}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 14.5, ['y'] = 20.5}, ['direction'] = 5}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 23, ['y'] = 23}, ['direction'] = 7}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 10, ['y'] = 26}, ['direction'] = 0}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 14.5, ['y'] = 23.5}, ['direction'] = 2}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 20, ['y'] = 26}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 27}, ['direction'] = 0}, + {['name'] = 'big-electric-pole', ['position'] = {['x'] = 15, ['y'] = 27}, ['direction'] = 0}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 27}, ['direction'] = 0}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 29}, ['direction'] = 0}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 12.5, ['y'] = 29.5}, ['direction'] = 4}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 17.5, ['y'] = 29.5}, ['direction'] = 0}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 29}, ['direction'] = 0}, + }, + ['tshape'] = { + {['name'] = 'curved-rail', ['position'] = {['x'] = 4, ['y'] = 12}, ['direction'] = 3}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 1, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 3, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 5, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 7, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 9, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 13, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 17, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 21, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 26, ['y'] = 12}, ['direction'] = 6}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 23, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 25, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 27, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 29, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 0.5, ['y'] = 12.5}, ['direction'] = 6}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 7.5, ['y'] = 12.5}, ['direction'] = 6}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 7, ['y'] = 15}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 23, ['y'] = 15}, ['direction'] = 7}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 22.5, ['y'] = 12.5}, ['direction'] = 6}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 29.5, ['y'] = 12.5}, ['direction'] = 6}, + {['name'] = 'big-electric-pole', ['position'] = {['x'] = 3, ['y'] = 15}, ['direction'] = 0}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 9, ['y'] = 15}, ['direction'] = 5}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 9, ['y'] = 17}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 21, ['y'] = 17}, ['direction'] = 7}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 21, ['y'] = 15}, ['direction'] = 3}, + {['name'] = 'big-electric-pole', ['position'] = {['x'] = 27, ['y'] = 15}, ['direction'] = 0}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 0.5, ['y'] = 17.5}, ['direction'] = 2}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 7.5, ['y'] = 17.5}, ['direction'] = 2}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 8.5, ['y'] = 17.5}, ['direction'] = 7}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 17}, ['direction'] = 5}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 19}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 19}, ['direction'] = 7}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 17}, ['direction'] = 3}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 21.5, ['y'] = 17.5}, ['direction'] = 5}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 22.5, ['y'] = 17.5}, ['direction'] = 2}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 29.5, ['y'] = 17.5}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 1, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 4, ['y'] = 20}, ['direction'] = 3}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 3, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 5, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 7, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 9, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 13, ['y'] = 19}, ['direction'] = 5}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 13, ['y'] = 21}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 13, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 17, ['y'] = 21}, ['direction'] = 7}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 17, ['y'] = 19}, ['direction'] = 3}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 17, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 21, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 23, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 26, ['y'] = 20}, ['direction'] = 6}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 25, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 27, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 29, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 7.5, ['y'] = 20.5}, ['direction'] = 3}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 7, ['y'] = 23}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 21}, ['direction'] = 5}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 23}, ['direction'] = 7}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 23}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 21}, ['direction'] = 3}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 23, ['y'] = 23}, ['direction'] = 7}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 22.5, ['y'] = 20.5}, ['direction'] = 1}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 10, ['y'] = 26}, ['direction'] = 0}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 12, ['y'] = 26}, ['direction'] = 1}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 18, ['y'] = 26}, ['direction'] = 0}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 20, ['y'] = 26}, ['direction'] = 1}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 15.5, ['y'] = 24.5}, ['direction'] = 7}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 14.5, ['y'] = 24.5}, ['direction'] = 5}, + {['name'] = 'big-electric-pole', ['position'] = {['x'] = 15, ['y'] = 27}, ['direction'] = 0}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 12.5, ['y'] = 29.5}, ['direction'] = 4}, + {['name'] = 'rail-chain-signal', ['position'] = {['x'] = 17.5, ['y'] = 29.5}, ['direction'] = 0}, + }, + ['straight'] = { + {['name'] = 'straight-rail', ['position'] = {['x'] = 1, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 3, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 5, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 7, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 9, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 13, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 17, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 21, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 23, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 25, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 27, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 29, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'rail-signal', ['position'] = {['x'] = 1.5, ['y'] = 12.5}, ['direction'] = 6}, + {['name'] = 'big-electric-pole', ['position'] = {['x'] = 3, ['y'] = 15}, ['direction'] = 0}, + {['name'] = 'big-electric-pole', ['position'] = {['x'] = 27, ['y'] = 15}, ['direction'] = 0}, + {['name'] = 'rail-signal', ['position'] = {['x'] = 28.5, ['y'] = 17.5}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 1, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 3, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 5, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 7, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 9, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 13, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 17, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 21, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 23, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 25, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 27, ['y'] = 19}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 29, ['y'] = 19}, ['direction'] = 2}, + }, + ['corner'] = { + {['name'] = 'straight-rail', ['position'] = {['x'] = 1, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 3, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 8, ['y'] = 12}, ['direction'] = 3}, + {['name'] = 'rail-signal', ['position'] = {['x'] = 1.5, ['y'] = 12.5}, ['direction'] = 6}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 15}, ['direction'] = 1}, + {['name'] = 'big-electric-pole', ['position'] = {['x'] = 3, ['y'] = 15}, ['direction'] = 0}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 13, ['y'] = 15}, ['direction'] = 5}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 13, ['y'] = 17}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 17}, ['direction'] = 5}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 15, ['y'] = 19}, ['direction'] = 1}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 4, ['y'] = 20}, ['direction'] = 3}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 18, ['y'] = 22}, ['direction'] = 0}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 7, ['y'] = 23}, ['direction'] = 1}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 10, ['y'] = 26}, ['direction'] = 0}, + {['name'] = 'big-electric-pole', ['position'] = {['x'] = 15, ['y'] = 27}, ['direction'] = 0}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 27}, ['direction'] = 0}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 29}, ['direction'] = 0}, + }, + ['ushape'] = { + {['name'] = 'curved-rail', ['position'] = {['x'] = 12, ['y'] = 4}, ['direction'] = 6}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 20, ['y'] = 4}, ['direction'] = 3}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 9, ['y'] = 7}, ['direction'] = 7}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 23, ['y'] = 7}, ['direction'] = 1}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 4, ['y'] = 10}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 7, ['y'] = 7}, ['direction'] = 3}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 26, ['y'] = 10}, ['direction'] = 0}, + {['name'] = 'rail-signal', ['position'] = {['x'] = 7.5, ['y'] = 9.5}, ['direction'] = 5}, + {['name'] = 'big-electric-pole', ['position'] = {['x'] = 3, ['y'] = 15}, ['direction'] = 0}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 27, ['y'] = 15}, ['direction'] = 0}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 26, ['y'] = 20}, ['direction'] = 5}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 4, ['y'] = 20}, ['direction'] = 3}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 7, ['y'] = 23}, ['direction'] = 1}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 9, ['y'] = 23}, ['direction'] = 5}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 12, ['y'] = 26}, ['direction'] = 7}, + {['name'] = 'curved-rail', ['position'] = {['x'] = 20, ['y'] = 26}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 23, ['y'] = 23}, ['direction'] = 3}, + {['name'] = 'train-stop', ['position'] = {['x'] = 25, ['y'] = 15}, ['direction'] = 4}, + } } local paddings = { - [2] = {{["name"] = "straight-rail", ["position"] = {["x"] = 31, ["y"] = 11}, ["direction"] = 2}, {["name"] = "straight-rail", ["position"] = {["x"] = 31, ["y"] = 19}, ["direction"] = 2}}, - [4] = {{["name"] = "straight-rail", ["position"] = {["x"] = 11, ["y"] = 31}, ["direction"] = 0}, {["name"] = "straight-rail", ["position"] = {["x"] = 19, ["y"] = 31}, ["direction"] = 0}} + [2] = { + {['name'] = 'straight-rail', ['position'] = {['x'] = 31, ['y'] = 11}, ['direction'] = 2}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 31, ['y'] = 19}, ['direction'] = 2}, + }, + [4] = { + {['name'] = 'straight-rail', ['position'] = {['x'] = 11, ['y'] = 31}, ['direction'] = 0}, + {['name'] = 'straight-rail', ['position'] = {['x'] = 19, ['y'] = 31}, ['direction'] = 0}, + } } local function tbl2key(tbl) - return tbl[1] .. "," .. tbl[2] + return tbl[1] .. ',' .. tbl[2] end local cities = { - [tbl2key({6, -8})] = "Edinburgh Waverley", - [tbl2key({11, 0})] = "Newcastle Central", - [tbl2key({4, 9})] = "Liverpool Lime Street", - [tbl2key({9, 15})] = "Birmingham New Street", - [tbl2key({15, 21})] = "London Euston", - [tbl2key({4, 21})] = "Bristol Temple Meads", - [tbl2key({16, 15})] = "Cambridge", + [tbl2key({6, -8})] = 'Edinburgh Waverley', + [tbl2key({11, 0})] = 'Newcastle Central', + [tbl2key({4, 9})] = 'Liverpool Lime Street', + [tbl2key({9, 15})] = 'Birmingham New Street', + [tbl2key({15, 21})] = 'London Euston', + [tbl2key({4, 21})] = 'Bristol Temple Meads', + [tbl2key({16, 15})] = 'Cambridge', } local function connect_line(s, e) - local bitmap = global.bitmap - for i = s[1], e[1] do - if global.bitmap[i] == nil then - bitmap[i] = {} - end - bitmap[i][s[2]] = 1 - end - for j = s[2], e[2] do - if bitmap[e[1]] == nil then - bitmap[e[1]] = {} - end - bitmap[e[1]][j] = 1 - end + local bitmap = global.bitmap + for i = s[1], e[1] do + if global.bitmap[i] == nil then + bitmap[i] = {} + end + bitmap[i][s[2]] = 1 + end + for j = s[2], e[2] do + if bitmap[e[1]] == nil then + bitmap[e[1]] = {} + end + bitmap[e[1]][j] = 1 + end end local function on_init() - global.bitmap = {} - connect_line({ 6, -8}, { 6, 0}) - connect_line({ 6, 0}, { 11, 0}) - connect_line({ 9, 0}, { 9, 9}) - connect_line({ 4, 9}, { 12, 9}) - connect_line({ 9, 15}, { 16, 15}) - connect_line({ 12, 9}, { 12, 21}) - connect_line({ 4, 21}, { 15, 21}) + global.bitmap = {} + connect_line({6, -8}, {6, 0}) + connect_line({6, 0}, {11, 0}) + connect_line({9, 0}, {9, 9}) + connect_line({4, 9}, {12, 9}) + connect_line({9, 15}, {16, 15}) + connect_line({12, 9}, {12, 21}) + connect_line({4, 21}, {15, 21}) end Event.on_init(on_init) local function build_intersection(type, origin, rot) - local surface = game.surfaces[1] - for _, v in pairs(rail_grid[type]) do - local pos = rot_pos(v.position, rot) - local dir = rot_dir(v.direction, rot) - local ety = surface.create_entity{name=v.name, position={origin.x + pos.x, origin.y + pos.y}, force="neutral", direction=dir} - if v.name == "train-stop" then - ety.backer_name = cities[tbl2key({origin.x/32, origin.y/32})] - end - end + local surface = game.surfaces[1] + for _, v in pairs(rail_grid[type]) do + local pos = rot_pos(v.position, rot) + local dir = rot_dir(v.direction, rot) + local ety = surface.create_entity {name = v.name, position = {origin.x + pos.x, origin.y + pos.y}, force = 'neutral', direction = dir} + if v.name == 'train-stop' then + ety.backer_name = cities[tbl2key({origin.x / 32, origin.y / 32})] + end + end end -- dirs : {E, S, W, N}, array of 0/1 local function build_chunk(origin, dirs) - local surface = game.surfaces[1] - local cnt = 0 - local sum = {x = 0, y = 0} - local delta = {x = 1, y = 0} - for dir, b in ipairs(dirs) do - cnt = cnt + b - sum = {x = sum.x + delta.x * b, y = sum.y + delta.y * b} - delta = {x = -delta.y, y = delta.x} - if b == 1 and paddings[dir*2] ~= nil then - -- build paddings - for _, v in pairs(paddings[dir*2]) do - surface.create_entity{name=v.name, position={origin.x + v.position.x, origin.y + v.position.y}, force="neutral", direction=v.direction} - end + local surface = game.surfaces[1] + local cnt = 0 + local sum = {x = 0, y = 0} + local delta = {x = 1, y = 0} + for dir, b in ipairs(dirs) do + cnt = cnt + b + sum = {x = sum.x + delta.x * b, y = sum.y + delta.y * b} + delta = {x = -delta.y, y = delta.x} + if b == 1 and paddings[dir * 2] ~= nil then + -- build paddings + for _, v in pairs(paddings[dir * 2]) do + surface.create_entity {name = v.name, position = {origin.x + v.position.x, origin.y + v.position.y}, force = 'neutral', direction = v.direction} + end + end end - end - if cnt == 4 then - build_intersection("allway", origin, {x = 1, y = 0}) - elseif cnt == 3 then - build_intersection("tshape", origin, {x = sum.y, y = -sum.x}) - elseif cnt == 2 then - if sum.x == 0 and sum.y == 0 then - build_intersection("straight", origin, {x = dirs[1], y = dirs[2]}) - else - build_intersection("corner", origin, {x = (sum.y - sum.x) / 2, y = -(sum.y + sum.x) / 2}) + if cnt == 4 then + build_intersection('allway', origin, {x = 1, y = 0}) + elseif cnt == 3 then + build_intersection('tshape', origin, {x = sum.y, y = -sum.x}) + elseif cnt == 2 then + if sum.x == 0 and sum.y == 0 then + build_intersection('straight', origin, {x = dirs[1], y = dirs[2]}) + else + build_intersection('corner', origin, {x = (sum.y - sum.x) / 2, y = -(sum.y + sum.x) / 2}) + end + elseif cnt == 1 then + build_intersection('ushape', origin, {x = -sum.x, y = -sum.y}) end - elseif cnt == 1 then - build_intersection("ushape", origin, {x = -sum.x, y = -sum.y}) - end end local function is_on_grid(gx, gy) - local bitmap = global.bitmap - if bitmap[gx] and bitmap[gx][gy] == 1 then - return true - else - return false - end + local bitmap = global.bitmap + if bitmap[gx] and bitmap[gx][gy] == 1 then + return true + else + return false + end end local function find_connections(gx, gy) - local dd = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}} - if is_on_grid(gx, gy) then - local c = {} - for _, d in ipairs(dd) do - if is_on_grid(gx + d[1], gy + d[2]) then - table.insert(c, 1) - else - table.insert(c, 0) - end + local dd = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}} + if is_on_grid(gx, gy) then + local c = {} + for _, d in ipairs(dd) do + if is_on_grid(gx + d[1], gy + d[2]) then + table.insert(c, 1) + else + table.insert(c, 0) + end + end + return c + else + return {0, 0, 0, 0} end - return c - else - return {0,0,0,0} - end end local function disable_items() - force = game.forces["player"] - force.recipes["logistic-chest-requester"].enabled = false - force.recipes["underground-belt"].enabled = false - force.recipes["fast-underground-belt"].enabled = false - force.recipes["express-underground-belt"].enabled = false + force = game.forces['player'] + force.recipes['logistic-chest-requester'].enabled = false + force.recipes['underground-belt'].enabled = false + force.recipes['fast-underground-belt'].enabled = false + force.recipes['express-underground-belt'].enabled = false end - function mymodule.on_chunk_generated(event) - local bd_box = event.area - local surface = event.surface - local chunk_size = 32 - -- assert(chunk_size == bd_box.right_bottom.x - bd_box.left_top.x) - -- assert(chunk_size == bd_box.right_bottom.y - bd_box.left_top.y) - if surface ~= game.surfaces[1] then return end + local bd_box = event.area + local surface = event.surface + local chunk_size = 32 + -- assert(chunk_size == bd_box.right_bottom.x - bd_box.left_top.x) + -- assert(chunk_size == bd_box.right_bottom.y - bd_box.left_top.y) + if surface ~= game.surfaces[1] then + return + end - local gx = bd_box.left_top.x / 32 - local gy = bd_box.left_top.y / 32 + local gx = bd_box.left_top.x / 32 + local gy = bd_box.left_top.y / 32 - if is_on_grid(gx, gy) then - -- remove trees and resources - for _, e in pairs(surface.find_entities_filtered{area=bd_box, type="tree"}) do - e.destroy() + if is_on_grid(gx, gy) then + -- remove trees and resources + for _, e in pairs(surface.find_entities_filtered {area = bd_box, type = 'tree'}) do + e.destroy() + end + for _, e in pairs(surface.find_entities_filtered {area = bd_box, type = 'resource'}) do + e.destroy() + end + for _, e in pairs(surface.find_entities_filtered {area = bd_box, type = 'simple-entity'}) do + e.destroy() + end + for _, e in pairs(surface.find_entities_filtered {area = bd_box, force = 'enemy'}) do + e.destroy() + end + build_chunk({x = gx * chunk_size, y = gy * chunk_size}, find_connections(gx, gy)) end - for _, e in pairs(surface.find_entities_filtered{area=bd_box, type="resource"}) do - e.destroy() - end - for _, e in pairs(surface.find_entities_filtered{area=bd_box, type="simple-entity"}) do - e.destroy() - end - for _, e in pairs(surface.find_entities_filtered{area=bd_box, force="enemy"}) do - e.destroy() - end - build_chunk({x=gx*chunk_size, y=gy*chunk_size}, find_connections(gx, gy)) - end end - - return mymodule diff --git a/map_gen/misc/rusky_pvp.lua b/map_gen/misc/rusky_pvp.lua index 31a3b1fa..6b421a6c 100644 --- a/map_gen/misc/rusky_pvp.lua +++ b/map_gen/misc/rusky_pvp.lua @@ -1,180 +1,192 @@ -local Event = require "utils.event" +local Event = require 'utils.event' local Game = require 'utils.game' -Event.on_init(function() - - global.players = {} - - game.forces.enemy.set_cease_fire(game.forces.player ,true); - game.forces.player.disable_research(); - game.forces.player.disable_all_prototypes(); - game.forces.player.set_ammo_damage_modifier("rocket", -3); +Event.on_init( + function() + global.players = {} -end) + game.forces.enemy.set_cease_fire(game.forces.player, true) + game.forces.player.disable_research() + game.forces.player.disable_all_prototypes() + game.forces.player.set_ammo_damage_modifier('rocket', -3) + end +) -Event.add(defines.events.on_player_created, function(event) - local player = Game.get_player_by_index(event.player_index) - --player.print("Info: PVP server mod 'Bearded Snails' (c) byte"); - guiNewPlayer(player.gui.left); - printNewPlayer(player); - - player.insert{name="heavy-armor", count=1} - player.insert{name="iron-plate", count=8} - player.insert{name="pistol", count=1} - player.insert{name="firearm-magazine", count=10} - player.insert{name="burner-mining-drill", count = 1} - player.insert{name="stone-furnace", count = 1} - player.insert{name="shotgun", count = 1} - player.insert{name="shotgun-shell", count = 10} - player.character.character_running_speed_modifier = 0.5 - player.force.chart(player.surface, {{player.position.x - 200, player.position.y - 200}, {player.position.x + 200, player.position.y + 200}}) -end) +Event.add( + defines.events.on_player_created, + function(event) + local player = Game.get_player_by_index(event.player_index) + --player.print("Info: PVP server mod 'Bearded Snails' (c) byte"); + guiNewPlayer(player.gui.left) + printNewPlayer(player) -Event.add(defines.events.on_player_respawned, function(event) - local player = Game.get_player_by_index(event.player_index) - - player.insert{name="heavy-armor", count=1} - player.insert{name="pistol", count=1} - player.insert{name="firearm-magazine", count=10} - player.insert{name="shotgun", count = 1} - player.insert{name="shotgun-shell", count = 10} - player.character.character_running_speed_modifier = 0.5 -end) + player.insert {name = 'heavy-armor', count = 1} + player.insert {name = 'iron-plate', count = 8} + player.insert {name = 'pistol', count = 1} + player.insert {name = 'firearm-magazine', count = 10} + player.insert {name = 'burner-mining-drill', count = 1} + player.insert {name = 'stone-furnace', count = 1} + player.insert {name = 'shotgun', count = 1} + player.insert {name = 'shotgun-shell', count = 10} + player.character.character_running_speed_modifier = 0.5 + player.force.chart(player.surface, {{player.position.x - 200, player.position.y - 200}, {player.position.x + 200, player.position.y + 200}}) + end +) -Event.add(defines.events.on_rocket_launched, function(event) - local force = event.rocket.force - if event.rocket.get_item_count("satellite") > 0 then - if global.satellite_sent == nil then - global.satellite_sent = {} - end - if global.satellite_sent[force.name] == nil then - game.set_game_state{game_finished=true, player_won=true, can_continue=true} - global.satellite_sent[force.name] = 1 - else - global.satellite_sent[force.name] = global.satellite_sent[force.name] + 1 - end - for index, player in pairs(force.players) do - if player.gui.left.rocket_score == nil then - local frame = player.gui.left.add{name = "rocket_score", type = "frame", direction = "horizontal", caption={"gui.score"}} - frame.add{name="rocket_count_label", type = "label", caption={"", {"gui.rockets-sent"}, ":"}} - frame.add{name="rocket_count", type = "label", caption=tostring(global.satellite_sent[force.name])} - else - player.gui.left.rocket_score.rocket_count.caption = tostring(global.satellite_sent[force.name]) - end - end - else - for index, player in pairs(force.players) do - player.print({"msg.gui-rocket-silo.rocket-launched-without-satellite"}) - end - end -end) +Event.add( + defines.events.on_player_respawned, + function(event) + local player = Game.get_player_by_index(event.player_index) -Event.add(defines.events.on_gui_click, function(event) - local player = Game.get_player_by_index(event.player_index) - local gui = player.gui.left; + player.insert {name = 'heavy-armor', count = 1} + player.insert {name = 'pistol', count = 1} + player.insert {name = 'firearm-magazine', count = 10} + player.insert {name = 'shotgun', count = 1} + player.insert {name = 'shotgun-shell', count = 10} + player.character.character_running_speed_modifier = 0.5 + end +) - if player.force == game.forces.player and event.element.name == "new_button" then - if neForceNear(player.position) then - local force = game.create_force(player.name); - force.set_spawn_position(player.position, game.surfaces[1]); - player.force = force; - killBitters(player.position); - player.force.chart(player.surface, {{player.position.x - 200, player.position.y - 200}, {player.position.x + 200, player.position.y + 200}}) - player.force.set_ammo_damage_modifier("rocket", -3); - player.force.research_all_technologies(); - gui.new_force.destroy(); - guiForcePlayer(gui); - player.print{"msg.force-created"} - printForcePlayer(player) - else - player.print{"msg.close-position"} +Event.add( + defines.events.on_rocket_launched, + function(event) + local force = event.rocket.force + if event.rocket.get_item_count('satellite') > 0 then + if global.satellite_sent == nil then + global.satellite_sent = {} + end + if global.satellite_sent[force.name] == nil then + game.set_game_state {game_finished = true, player_won = true, can_continue = true} + global.satellite_sent[force.name] = 1 + else + global.satellite_sent[force.name] = global.satellite_sent[force.name] + 1 + end + for index, player in pairs(force.players) do + if player.gui.left.rocket_score == nil then + local frame = player.gui.left.add {name = 'rocket_score', type = 'frame', direction = 'horizontal', caption = {'gui.score'}} + frame.add {name = 'rocket_count_label', type = 'label', caption = {'', {'gui.rockets-sent'}, ':'}} + frame.add {name = 'rocket_count', type = 'label', caption = tostring(global.satellite_sent[force.name])} + else + player.gui.left.rocket_score.rocket_count.caption = tostring(global.satellite_sent[force.name]) + end + end + else + for index, player in pairs(force.players) do + player.print({'msg.gui-rocket-silo.rocket-launched-without-satellite'}) + end + end end - elseif event.element.name == "inv_button" then - local name = gui.own_force.inv_name.text; - if name ~= nil and validPlayer(name) then - local iplayer = Game.get_player_by_index(name); - local igui = iplayer.gui.left; - - iplayer.force = player.force; - iplayer.teleport(player.force.get_spawn_position(game.surfaces[1])); - - igui.new_force.destroy(); - guiForcePlayer(igui); - player.print{"msg.player-invated", name} - iplayer.print{"msg.you-invated", player.name} - else - player.print{"msg.invalid-name"} +) + +Event.add( + defines.events.on_gui_click, + function(event) + local player = Game.get_player_by_index(event.player_index) + local gui = player.gui.left + + if player.force == game.forces.player and event.element.name == 'new_button' then + if neForceNear(player.position) then + local force = game.create_force(player.name) + force.set_spawn_position(player.position, game.surfaces[1]) + player.force = force + killBitters(player.position) + player.force.chart(player.surface, {{player.position.x - 200, player.position.y - 200}, {player.position.x + 200, player.position.y + 200}}) + player.force.set_ammo_damage_modifier('rocket', -3) + player.force.research_all_technologies() + gui.new_force.destroy() + guiForcePlayer(gui) + player.print {'msg.force-created'} + printForcePlayer(player) + else + player.print {'msg.close-position'} + end + elseif event.element.name == 'inv_button' then + local name = gui.own_force.inv_name.text + if name ~= nil and validPlayer(name) then + local iplayer = Game.get_player_by_index(name) + local igui = iplayer.gui.left + + iplayer.force = player.force + iplayer.teleport(player.force.get_spawn_position(game.surfaces[1])) + + igui.new_force.destroy() + guiForcePlayer(igui) + player.print {'msg.player-invated', name} + iplayer.print {'msg.you-invated', player.name} + else + player.print {'msg.invalid-name'} + end + elseif event.element.name == 'leave_button' and gui.own_force.inv_name.text == 'leave' then + if #player.force.players == 1 then + game.merge_forces(player.force.name, game.forces.player.name) + gui.own_force.destroy() + guiNewPlayer(gui) + player.print {'msg.force-destroyed'} + elseif #player.force.players > 1 then + player.force = game.forces.player + player.character.die() + gui.own_force.destroy() + guiNewPlayer(gui) + player.print {'msg.force-leave'} + end + elseif event.element.name == 'leave_button' and gui.own_force.inv_name.text ~= 'leave' then + player.print {'msg.force-leave-confim'} + end end - elseif event.element.name == "leave_button" and gui.own_force.inv_name.text == "leave" then - if #player.force.players == 1 then - game.merge_forces(player.force.name, game.forces.player.name); - gui.own_force.destroy(); - guiNewPlayer(gui); - player.print{"msg.force-destroyed"} - elseif #player.force.players > 1 then - player.force = game.forces.player; - player.character.die(); - gui.own_force.destroy(); - guiNewPlayer(gui); - player.print{"msg.force-leave"} - end - elseif event.element.name == "leave_button" and gui.own_force.inv_name.text ~= "leave" then - player.print{"msg.force-leave-confim"} - end -end) +) function neForceNear(pos) - for k, v in pairs(game.forces) do - if dist(pos, v.get_spawn_position(game.surfaces[1])) <= 50 then - return false; + for k, v in pairs(game.forces) do + if dist(pos, v.get_spawn_position(game.surfaces[1])) <= 50 then + return false + end end - end - return true; + return true end function killBitters(pos) - for k, v in pairs(game.surfaces[1].find_entities_filtered({area={{pos.x - 250, pos.y - 250}, {pos.x + 250, pos.y + 250}}, force= "enemy"})) do - v.destroy(); - end + for k, v in pairs(game.surfaces[1].find_entities_filtered({area = {{pos.x - 250, pos.y - 250}, {pos.x + 250, pos.y + 250}}, force = 'enemy'})) do + v.destroy() + end end function dist(position1, position2) - return ((position1.x - position2.x)^2 + (position1.y - position2.y)^2)^0.5 + return ((position1.x - position2.x) ^ 2 + (position1.y - position2.y) ^ 2) ^ 0.5 end function validPlayer(name) - if name ~= nil and Game.get_player_by_index(name) ~= nil and Game.get_player_by_index(name).force == game.forces.player then - return true; - end - return false; + if name ~= nil and Game.get_player_by_index(name) ~= nil and Game.get_player_by_index(name).force == game.forces.player then + return true + end + return false end function guiNewPlayer(gui) - local frame = gui.add{type="frame", name="new_force", caption={"gui.create-force"}, direction="vertical"} - frame.add{type="button", name="new_button", caption={"gui.new-force"}} + local frame = gui.add {type = 'frame', name = 'new_force', caption = {'gui.create-force'}, direction = 'vertical'} + frame.add {type = 'button', name = 'new_button', caption = {'gui.new-force'}} end function guiForcePlayer(gui) - local frame = gui.add{type="frame", name="own_force", caption={"gui.force"}, direction="vertical"} - frame.add{type="textfield", name="inv_name"} - frame.add{type="button", name="inv_button", caption={"gui.invite"}} - frame.add{type="button", name="leave_button", caption={"gui.leave"}} + local frame = gui.add {type = 'frame', name = 'own_force', caption = {'gui.force'}, direction = 'vertical'} + frame.add {type = 'textfield', name = 'inv_name'} + frame.add {type = 'button', name = 'inv_button', caption = {'gui.invite'}} + frame.add {type = 'button', name = 'leave_button', caption = {'gui.leave'}} end function printNewPlayer(player) - --player.print{"msg.info13"} - --player.print{"msg.info14"} - player.print{"msg.info1"} - player.print{"msg.info2"} - player.print{"msg.info3"} - player.print{"msg.info4"} - player.print{"msg.info5"} - --player.print{"msg.info6"} - --player.print{"msg.info7"} - --player.print{"msg.info8"} + --player.print{"msg.info13"} + --player.print{"msg.info14"} + player.print {'msg.info1'} + player.print {'msg.info2'} + player.print {'msg.info3'} + player.print {'msg.info4'} + player.print {'msg.info5'} + --player.print{"msg.info6"} + --player.print{"msg.info7"} + --player.print{"msg.info8"} end function printForcePlayer(player) - player.print{"msg.info11"} - player.print{"msg.info12"} + player.print {'msg.info11'} + player.print {'msg.info12'} end diff --git a/map_gen/misc/tris_chunk_grid.lua b/map_gen/misc/tris_chunk_grid.lua index 967ac4b9..2ed167a0 100644 --- a/map_gen/misc/tris_chunk_grid.lua +++ b/map_gen/misc/tris_chunk_grid.lua @@ -1,13 +1,13 @@ -local b = require "map_gen.shared.builders" +local b = require 'map_gen.shared.builders' local size = 8 * 32 -local concrete = b.tile("concrete") -local hazard = b.change_tile(b.rectangle(size - 4, size - 4), true, "hazard-concrete-left") -local stone = b.change_tile(b.rectangle(size- 6, size -6), true, "stone-path") -local empty = b.rectangle(size-8, size-8) +local concrete = b.tile('concrete') +local hazard = b.change_tile(b.rectangle(size - 4, size - 4), true, 'hazard-concrete-left') +local stone = b.change_tile(b.rectangle(size - 6, size - 6), true, 'stone-path') +local empty = b.rectangle(size - 8, size - 8) -local shape = b.any{stone, hazard, concrete} +local shape = b.any {stone, hazard, concrete} shape = b.subtract(shape, empty) shape = b.single_pattern(shape, size, size) diff --git a/map_gen/misc/wreck_items.lua b/map_gen/misc/wreck_items.lua index 466e5476..fc5c639b 100644 --- a/map_gen/misc/wreck_items.lua +++ b/map_gen/misc/wreck_items.lua @@ -1,63 +1,63 @@ -- adds some wrecked items around the map, good for MP, reduces total resources pulled from factory, and adds incentive to push out -local Token = require "utils.global_token" +local Token = require 'utils.global_token' local wreck_item_pool = { - {name = "iron-gear-wheel", count = 32}, - {name = "iron-plate", count = 64}, - {name = "rocket-control-unit", count = 1}, - {name = "atomic-bomb", count = 1}, - {name = "rocket-fuel", count = 7}, - {name = "coal", count = 8}, - {name = "rocket-launcher", count = 1}, - {name = "rocket", count = 32}, - {name = "copper-cable", count = 128}, - {name = "land-mine", count = 64}, - {name = "railgun", count = 1}, - {name = "railgun-dart", count = 128}, - {name = "fast-inserter", count = 8}, - {name = "stack-filter-inserter", count = 2}, - {name = "belt-immunity-equipment", count = 1}, - {name = "fusion-reactor-equipment", count = 1}, - {name = "electric-engine-unit", count = 8}, - {name = "exoskeleton-equipment", count = 1}, - {name = "rocket-fuel", count = 10}, - {name = "used-up-uranium-fuel-cell", count = 3}, - {name = "uranium-fuel-cell", count = 2}, - {name = "power-armor", count = 1}, - {name = "modular-armor", count = 1}, - {name = "water-barrel", count = 4}, - {name = "sulfuric-acid-barrel", count = 6}, - {name = "crude-oil-barrel", count = 8}, - {name = "energy-shield-equipment", count = 1}, - {name = "explosive-rocket", count = 32} + {name = 'iron-gear-wheel', count = 32}, + {name = 'iron-plate', count = 64}, + {name = 'rocket-control-unit', count = 1}, + {name = 'atomic-bomb', count = 1}, + {name = 'rocket-fuel', count = 7}, + {name = 'coal', count = 8}, + {name = 'rocket-launcher', count = 1}, + {name = 'rocket', count = 32}, + {name = 'copper-cable', count = 128}, + {name = 'land-mine', count = 64}, + {name = 'railgun', count = 1}, + {name = 'railgun-dart', count = 128}, + {name = 'fast-inserter', count = 8}, + {name = 'stack-filter-inserter', count = 2}, + {name = 'belt-immunity-equipment', count = 1}, + {name = 'fusion-reactor-equipment', count = 1}, + {name = 'electric-engine-unit', count = 8}, + {name = 'exoskeleton-equipment', count = 1}, + {name = 'rocket-fuel', count = 10}, + {name = 'used-up-uranium-fuel-cell', count = 3}, + {name = 'uranium-fuel-cell', count = 2}, + {name = 'power-armor', count = 1}, + {name = 'modular-armor', count = 1}, + {name = 'water-barrel', count = 4}, + {name = 'sulfuric-acid-barrel', count = 6}, + {name = 'crude-oil-barrel', count = 8}, + {name = 'energy-shield-equipment', count = 1}, + {name = 'explosive-rocket', count = 32}, } local entity_list = { - {name = "big-ship-wreck-1", chance = 35000, force = "player"}, - {name = "big-ship-wreck-2", chance = 45000, force = "player"}, - {name = "big-ship-wreck-3", chance = 55000, force = "player"} + {name = 'big-ship-wreck-1', chance = 35000, force = 'player'}, + {name = 'big-ship-wreck-2', chance = 45000, force = 'player'}, + {name = 'big-ship-wreck-3', chance = 55000, force = 'player'}, } local callback = - Token.register( - function(entity) - entity.health = math.random(entity.health) + Token.register( + function(entity) + entity.health = math.random(entity.health) - entity.insert(wreck_item_pool[math.random(#wreck_item_pool)]) - entity.insert(wreck_item_pool[math.random(#wreck_item_pool)]) - entity.insert(wreck_item_pool[math.random(#wreck_item_pool)]) - end + entity.insert(wreck_item_pool[math.random(#wreck_item_pool)]) + entity.insert(wreck_item_pool[math.random(#wreck_item_pool)]) + entity.insert(wreck_item_pool[math.random(#wreck_item_pool)]) + end ) return function(x, y, world) - local ship = entity_list[math.random(#entity_list)] + local ship = entity_list[math.random(#entity_list)] - if math.random(ship.chance) ~= 1 then - return nil - end + if math.random(ship.chance) ~= 1 then + return nil + end - ship.callback = callback + ship.callback = callback - return ship + return ship end