2021-02-06 12:42:10 -08:00
|
|
|
local Table = require 'modules.scrap_towny_ffa.table'
|
|
|
|
|
|
|
|
local crash_site = {
|
|
|
|
-- simple entity with owner
|
|
|
|
"crash-site-spaceship-wreck-small-1",
|
|
|
|
"crash-site-spaceship-wreck-small-2",
|
|
|
|
"crash-site-spaceship-wreck-small-3",
|
|
|
|
"crash-site-spaceship-wreck-small-4",
|
|
|
|
"crash-site-spaceship-wreck-small-5",
|
|
|
|
"crash-site-spaceship-wreck-small-6",
|
|
|
|
-- containers
|
|
|
|
"big-ship-wreck-1",
|
|
|
|
"big-ship-wreck-2",
|
|
|
|
"big-ship-wreck-3",
|
|
|
|
"crash-site-chest-1",
|
|
|
|
"crash-site-chest-2",
|
|
|
|
"crash-site-spaceship-wreck-medium-1",
|
|
|
|
"crash-site-spaceship-wreck-medium-2",
|
|
|
|
"crash-site-spaceship-wreck-medium-3",
|
|
|
|
"crash-site-spaceship-wreck-big-1",
|
|
|
|
"crash-site-spaceship-wreck-big-2",
|
|
|
|
"crash-site-spaceship"
|
|
|
|
}
|
|
|
|
|
|
|
|
local function is_crash_site(entity)
|
|
|
|
if not entity.valid then return false end
|
|
|
|
local f = false
|
|
|
|
for i = 1, #crash_site, 1 do
|
|
|
|
if entity.name == crash_site[i] then f = true end
|
|
|
|
end
|
|
|
|
return f
|
|
|
|
end
|
|
|
|
|
|
|
|
local function mining_sound(player)
|
|
|
|
if game.tick % 15 ~= 0 then return end
|
|
|
|
local target = player.selected
|
2021-02-07 23:01:20 -08:00
|
|
|
if target == nil or not target.valid then return end
|
|
|
|
local surface = target.surface
|
|
|
|
local position = target.position
|
|
|
|
local path = "entity-mining/" .. target.name
|
|
|
|
surface.play_sound({path = path, position = position, volume_modifier = 1, override_sound_type = "game-effect" })
|
2021-02-06 12:42:10 -08:00
|
|
|
end
|
|
|
|
|
|
|
|
local function on_tick()
|
|
|
|
local ffatable = Table.get_table()
|
|
|
|
for index, player in pairs(game.players) do
|
|
|
|
if player.character ~= nil then
|
|
|
|
local mining = player.mining_state.mining
|
|
|
|
if ffatable.mining[index] ~= mining then
|
|
|
|
ffatable.mining[index] = mining
|
|
|
|
-- state change
|
|
|
|
if mining == true then
|
|
|
|
--log(player.name .. " started mining")
|
|
|
|
local target = player.selected
|
|
|
|
if target ~= nil and target.valid then
|
|
|
|
--log("target name = " .. target.prototype.name)
|
|
|
|
--log("position = " .. serpent.block(target.position))
|
|
|
|
--log("mineable_properties = " .. serpent.block(target.prototype.mineable_properties))
|
|
|
|
if is_crash_site(target) then
|
|
|
|
-- mining crash site
|
|
|
|
mining_sound(player)
|
|
|
|
ffatable.mining_target[index] = target
|
|
|
|
end
|
|
|
|
end
|
|
|
|
else
|
|
|
|
--log(player.name .. " stopped mining")
|
|
|
|
local target = ffatable.mining_target[index]
|
|
|
|
if target ~= nil then
|
|
|
|
ffatable.mining_target[index] = nil
|
|
|
|
end
|
|
|
|
end
|
|
|
|
else
|
|
|
|
if mining == true then
|
|
|
|
local target = player.selected
|
|
|
|
if target ~= nil and target.valid then
|
|
|
|
--local progress = player.character_mining_progress
|
|
|
|
--log("progress = " .. progress)
|
|
|
|
if is_crash_site(target) then
|
|
|
|
-- mining crash site
|
|
|
|
mining_sound(player)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
local on_init = function ()
|
|
|
|
local ffatable = Table.get_table()
|
|
|
|
ffatable.mining = {}
|
|
|
|
ffatable.mining_entity = {}
|
|
|
|
ffatable.mining_target = {}
|
|
|
|
end
|
|
|
|
|
|
|
|
local Event = require 'utils.event'
|
|
|
|
Event.on_init(on_init)
|
|
|
|
Event.add(defines.events.on_tick, on_tick)
|