Skip to content

Commit

Permalink
Merge pull request #1032 from BlueRock2/develop
Browse files Browse the repository at this point in the history
Diggy-map patch
  • Loading branch information
grilledham authored Feb 15, 2020
2 parents 1e708bf + 0abf22a commit 84ccb2a
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 27 deletions.
42 changes: 21 additions & 21 deletions features/create_particles.lua
Original file line number Diff line number Diff line change
Expand Up @@ -114,68 +114,68 @@ local function scale_floor(count)
end

local on_play_particle = Token.register(function (params)
params.surface.create_entity(params.prototype)
params.surface.create_particle(params.prototype)
end)

local function play_particle_sequence(surface, sequences)
local create_entity = surface.create_entity
local create_particle = surface.create_particle
for i = 1, #sequences do
local sequence = sequences[i]
local frame = sequence.frame
if frame == 1 then
create_entity(sequence.prototype)
create_particle(sequence.prototype)
else
Task.set_timeout_in_ticks(frame, on_play_particle, {surface = surface, prototype = sequence.prototype})
end
end
end

---@param create_entity function a reference to a surface.create_entity
---@param create_particle function a reference to a surface.create_particle
---@param particle_count number particle count to spawn
---@param position Position
function CreateParticles.destroy_rock(create_entity, particle_count, position)
function CreateParticles.destroy_rock(create_particle, particle_count, position)
for _ = scale_floor(particle_count), 1, -1 do
settings.particles_spawned_buffer = settings.particles_spawned_buffer + 1
create_entity({
position = position,
create_particle({
name = 'stone-particle',
position = position,
movement = {random(-5, 5) * 0.01, random(-5, 5) * 0.01},
frame_speed = 1,
vertical_speed = random(12, 14) * 0.01,
height = random(9, 11) * 0.1,
vertical_speed = random(12, 14) * 0.01,
frame_speed = 1,
})
end
end

---@param create_entity function a reference to a surface.create_entity
---@param create_particle function a reference to a surface.create_particle
---@param particle_count number particle count to spawn
---@param position Position
function CreateParticles.blood_explosion(create_entity, particle_count, position)
function CreateParticles.blood_explosion(create_particle, particle_count, position)
for _ = particle_count, 1, -1 do
create_entity({
position = position,
create_particle({
name = 'blood-particle',
position = position,
movement = {random(-5, 5) * 0.01, random(-5, 5) * 0.01},
frame_speed = 1,
vertical_speed = random(10, 12) * 0.01,
height = random(5, 15) * 0.1,
vertical_speed = random(10, 12) * 0.01,
frame_speed = 1,
})
end
end

---@param create_entity function a reference to a surface.create_entity
---@param create_particle function a refrence to a surface.create_particle
---@param particle_count number particle count to spawn
---@param position Position
function CreateParticles.mine_rock(create_entity, particle_count, position)
function CreateParticles.mine_rock(create_particle, particle_count, position)
for _ = scale_floor(particle_count), 1, -1 do
settings.particles_spawned_buffer = settings.particles_spawned_buffer + 1
create_entity({
position = position,
create_particle({
name = 'stone-particle',
position = position,
movement = {random(-5, 5) * 0.01, random(-5, 5) * 0.01},
frame_speed = 1,
vertical_speed = random(8, 10) * 0.01,
height = random(5, 8) * 0.1,
vertical_speed = random(8, 10) * 0.01,
frame_speed = 1,
})
end
end
Expand Down
3 changes: 2 additions & 1 deletion map_gen/maps/diggy/feature/alien_spawner.lua
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ local rocks_to_find = Template.diggy_rocks
local do_alien_mining = Token.register(function(params)
local surface = params.surface
local create_entity = surface.create_entity
local create_particle = surface.create_particle
local find_non_colliding_position = surface.find_non_colliding_position

local rocks = surface.find_entities_filtered({area = params.clear_area, name = rocks_to_find})
Expand All @@ -76,7 +77,7 @@ local do_alien_mining = Token.register(function(params)
for rock_index = rock_count, 1, -1 do
local rock = rocks[rock_index]
raise_event(defines.events.on_entity_died, {entity = rock})
destroy_rock(create_entity, particle_count, rock.position)
destroy_rock(create_particle, particle_count, rock.position)
rock.destroy()
end
end
Expand Down
9 changes: 5 additions & 4 deletions map_gen/maps/diggy/feature/diggy_hole.lua
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ function DiggyHole.register(cfg)
end
diggy_hole(entity)
if event.cause then
destroy_rock(entity.surface.create_entity, 10, entity.position)
destroy_rock(entity.surface.create_particle, 10, entity.position)
end
end)

Expand Down Expand Up @@ -200,19 +200,20 @@ function DiggyHole.register(cfg)

local graphics_variation = entity.graphics_variation
local create_entity = entity.surface.create_entity
local create_particle = entity.surface.create_particle
local position = entity.position
local force = event.robot.force

if health < 1 then
raise_event(defines.events.on_entity_died, {entity = entity, force = force})
mine_rock(create_entity, 6, position)
mine_rock(create_particle, 6, position)
entity.destroy()
return
end
entity.destroy()

local rock = create_entity({name = name, position = position})
mine_rock(create_entity, 1, position)
mine_rock(create_particle, 1, position)
rock.graphics_variation = graphics_variation
rock.order_deconstruction(force)
rock.health = health
Expand All @@ -228,7 +229,7 @@ function DiggyHole.register(cfg)
event.buffer.clear()

diggy_hole(entity)
mine_rock(entity.surface.create_entity, 6, entity.position)
mine_rock(entity.surface.create_particle, 6, entity.position)
end)

Event.add(defines.events.on_robot_mined_tile, function (event)
Expand Down
3 changes: 2 additions & 1 deletion map_gen/shared/hail_hydra.lua
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ local on_died =
local cause = event.cause
local surface = entity.surface
local create_entity = surface.create_entity
local create_particle = surface.create_particle
local find_non_colliding_position = surface.find_non_colliding_position

local command = create_attack_command(position, cause)
Expand Down Expand Up @@ -136,7 +137,7 @@ local on_died =
particle_count = amount * 15
end

CreateParticles.blood_explosion(create_entity, particle_count, position)
CreateParticles.blood_explosion(create_particle, particle_count, position)

for _ = amount, 1, -1 do
position = find_non_colliding_position(hydra_spawn, position, 2, 0.4) or position
Expand Down

0 comments on commit 84ccb2a

Please sign in to comment.