mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-27 19:45:22 +09:00
Merge pull request #137 from tovernaar123/master
Adding auto-station naming
This commit is contained in:
@@ -28,6 +28,7 @@ return {
|
||||
'modules.commands.bonus',
|
||||
'modules.commands.home',
|
||||
-- QoL Addons
|
||||
'modules.addons.station-auto-name',
|
||||
'modules.addons.chat-popups',
|
||||
'modules.addons.damage-popups',
|
||||
'modules.addons.death-logger',
|
||||
|
||||
66
modules/addons/station-auto-name.lua
Normal file
66
modules/addons/station-auto-name.lua
Normal file
@@ -0,0 +1,66 @@
|
||||
---LuaPlayerBuiltEntityEventFilters
|
||||
---Events.set_event_filter(defines.events.on_built_entity, {{filter = "name", name = "fast-inserter"}})
|
||||
local Event = require 'utils.event' --- @dep utils.event
|
||||
local station_name_changer =
|
||||
function(event)
|
||||
local enetety = event.created_entity
|
||||
local name = enetety.name
|
||||
|
||||
if name == "train-stop" then --only do the event if its a trainstop
|
||||
local boundingbox = enetety.bounding_box
|
||||
-- expanded box for recourse search:
|
||||
local bounding2 = { {boundingbox.left_top.x -100 ,boundingbox.left_top.y -100} , {boundingbox.right_bottom.x +100,boundingbox.right_bottom.y +100 } }
|
||||
--gets all resources in bounding_box2:
|
||||
local recoursec = game.surfaces[1].find_entities_filtered{area = bounding2, type = "resource"}
|
||||
|
||||
if #recoursec > 0 then -- save cpu time if their are no recourses in bounding_box2
|
||||
local closest_distance
|
||||
local px,py = boundingbox.left_top.x,boundingbox.left_top.y
|
||||
local recourse_closed
|
||||
|
||||
--Check which recource is closest
|
||||
for i, item in ipairs(recoursec) do
|
||||
local dx, dy = px - item.bounding_box.left_top.x, py - item.bounding_box.left_top.y
|
||||
local distance = (dx*dx)+(dy*dy)
|
||||
if not closest_distance or distance < closest_distance then
|
||||
recourse_closed = item
|
||||
closest_distance = distance
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
local item_name = recourse_closed.name
|
||||
if item_name then -- prevent errors if something went wrong
|
||||
local item_name2 = item_name:gsub("^%l", string.upper):gsub('-',' ') -- removing the - and making first letter capital
|
||||
--Final string:
|
||||
enetety.backer_name = string.format("[L] [img=item.%s] %s %s (%s)",item_name,item_name2,enetety.backer_name,Angle( enetety ))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
--add func to robot and player build entities
|
||||
Event.add(defines.events.on_built_entity,station_name_changer)
|
||||
Event.add(defines.events.on_robot_built_entity,station_name_changer)
|
||||
|
||||
|
||||
--Credit to Cooldude2606 for using his lua magic to make this function.
|
||||
local directions = {
|
||||
['W'] = -0.875,
|
||||
['NW'] = -0.625,
|
||||
['N'] = -0.375,
|
||||
['NE'] = -0.125,
|
||||
['E'] = 0.125,
|
||||
['SE'] = 0.375,
|
||||
['S'] = 0.625,
|
||||
['SW'] = 0.875
|
||||
}
|
||||
function Angle( enetety )
|
||||
local angle = math.atan2(enetety.position.y,enetety.position.x)/math.pi
|
||||
for direction, requiredAngle in pairs(directions) do
|
||||
if angle < requiredAngle then
|
||||
return direction
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user