Добавлены все обновления от сообщества, вплоть до #148
This commit is contained in:
143
mining-patch-planner/mpp/drawing.lua
Normal file
143
mining-patch-planner/mpp/drawing.lua
Normal file
@@ -0,0 +1,143 @@
|
||||
-- debug rendering library
|
||||
local table_insert = table.insert
|
||||
|
||||
---@class DebugRendering
|
||||
---@field _state State
|
||||
---@field _enabled boolean Does drawing do anything
|
||||
---@field _register boolean Add to render objects to be removed
|
||||
local drawing_meta = {}
|
||||
drawing_meta.__index = drawing_meta
|
||||
|
||||
function drawing_meta:draw_circle(t)
|
||||
if not self._enabled then return end
|
||||
local state = self._state --[[@as State]]
|
||||
|
||||
local C = state.coords
|
||||
local x, y
|
||||
if t.integer then
|
||||
x, y = C.ix1, C.iy1
|
||||
else
|
||||
x, y = C.gx, C.gy
|
||||
end
|
||||
local tx, ty = t.x, t.y
|
||||
|
||||
t.surface = state.surface
|
||||
t.players = {state.player}
|
||||
t.width = t.width or 3
|
||||
t.color = t.color or {1, 1, 1}
|
||||
t.radius = t.radius or 0.5
|
||||
t.target = { x + tx, y + ty }
|
||||
local id = rendering.draw_circle(t)
|
||||
if self._register then
|
||||
table_insert(state._render_objects, id)
|
||||
end
|
||||
end
|
||||
|
||||
function drawing_meta:draw_line(t)
|
||||
if not self._enabled then return end
|
||||
local state = self._state --[[@as State]]
|
||||
|
||||
local C = state.coords
|
||||
local x, y
|
||||
if t.integer then
|
||||
x, y = C.ix1, C.iy1
|
||||
else
|
||||
x, y = C.gx, C.gy
|
||||
end
|
||||
|
||||
local tx, ty = t.x or t.x1, t.y or t.y1
|
||||
local target1 = {x + tx, y + ty}
|
||||
local target2
|
||||
if t.x2 and t.y2 then
|
||||
target2 = {x + t.x2, y + t.y2}
|
||||
elseif t.w and t.h then
|
||||
target2 = {x + tx + (t.w or 0), y + ty + (t.h or 0)}
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
t.surface = state.surface
|
||||
t.players = {state.player}
|
||||
t.width = t.width or 3
|
||||
t.color = t.color or {1, 1, 1}
|
||||
t.from = t.from or target1
|
||||
t.to = t.to or target2
|
||||
local id = rendering.draw_line(t)
|
||||
if self._register then
|
||||
table_insert(state._render_objects, id)
|
||||
end
|
||||
end
|
||||
|
||||
function drawing_meta:draw_rectangle(t)
|
||||
if not self._enabled then return end
|
||||
|
||||
local state = self._state --[[@as State]]
|
||||
|
||||
local C = state.coords
|
||||
local x, y
|
||||
if t.integer then
|
||||
x, y = C.ix1, C.iy1
|
||||
else
|
||||
x, y = C.gx, C.gy
|
||||
end
|
||||
|
||||
local tx, ty = t.x or t.x1, t.y or t.y1
|
||||
local target1 = {x + tx, y + ty}
|
||||
local target2
|
||||
if t.x2 and t.y2 then
|
||||
target2 = {x + t.x2, y + t.y2}
|
||||
elseif t.w and t.h then
|
||||
target2 = {x + tx + (t.w or 0), y + ty + (t.h or 0)}
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
t.surface = state.surface
|
||||
t.players = {state.player}
|
||||
t.width = t.width or 3
|
||||
t.color = t.color or {1, 1, 1}
|
||||
t.left_top = t.left_top or target1
|
||||
t.right_bottom = t.right_bottom or target2
|
||||
local id = rendering.draw_rectangle(t)
|
||||
if self._register then
|
||||
table_insert(state._render_objects, id)
|
||||
end
|
||||
end
|
||||
|
||||
function drawing_meta:draw_text(t)
|
||||
if not self._enabled then return end
|
||||
|
||||
local state = self._state --[[@as State]]
|
||||
|
||||
local C = state.coords
|
||||
local x, y
|
||||
if t.integer then
|
||||
x, y = C.ix1, C.iy1
|
||||
else
|
||||
x, y = C.gx, C.gy
|
||||
end
|
||||
local tx, ty = t.x, t.y
|
||||
|
||||
t.surface = state.surface
|
||||
t.players = {state.player}
|
||||
t.width = t.width or 3
|
||||
t.color = t.color or {1, 1, 1}
|
||||
t.target = { x + tx, y + ty }
|
||||
t.scale = t.scale or 1
|
||||
t.alignment = t.alignment or "center"
|
||||
t.vertical_alignment = t.vertical_alignment or "middle"
|
||||
|
||||
local id = rendering.draw_text(t)
|
||||
if self._register then
|
||||
table_insert(state._render_objects, id)
|
||||
end
|
||||
end
|
||||
|
||||
---comment
|
||||
---@param state State
|
||||
---@param enabled boolean Enable drawing
|
||||
local function drawing(state, enabled, register)
|
||||
return setmetatable({_state=state, _enabled=(not not enabled), _register=(not not register)}, drawing_meta)
|
||||
end
|
||||
|
||||
return drawing
|
||||
Reference in New Issue
Block a user