Add two more development related lua scripts.
parent
dbd39af58a
commit
8185eec95c
@ -0,0 +1,42 @@
|
||||
-- Lists and/or compares two tiletype material groups.
|
||||
-- Usage: devel/cmptiles material1 [material2]
|
||||
|
||||
local nmat1,nmat2=...
|
||||
local mat1 = df.tiletype_material[nmat1]
|
||||
local mat2 = df.tiletype_material[nmat2]
|
||||
|
||||
local tmat1 = {}
|
||||
local tmat2 = {}
|
||||
|
||||
local attrs = df.tiletype.attrs
|
||||
|
||||
for i=df.tiletype._first_item,df.tiletype._last_item do
|
||||
local shape = df.tiletype_shape[attrs[i].shape] or ''
|
||||
local variant = df.tiletype_variant[attrs[i].variant] or ''
|
||||
local special = df.tiletype_special[attrs[i].special] or ''
|
||||
local direction = attrs[i].direction or ''
|
||||
local code = shape..':'..variant..':'..special..':'..direction
|
||||
|
||||
if attrs[i].material == mat1 then
|
||||
tmat1[code] = true
|
||||
end
|
||||
if attrs[i].material == mat2 then
|
||||
tmat2[code] = true
|
||||
end
|
||||
end
|
||||
|
||||
local function list_diff(n, t1, t2)
|
||||
local lst = {}
|
||||
for k,v in pairs(t1) do
|
||||
if not t2[k] then
|
||||
lst[#lst+1] = k
|
||||
end
|
||||
end
|
||||
table.sort(lst)
|
||||
for k,v in ipairs(lst) do
|
||||
print(n, v)
|
||||
end
|
||||
end
|
||||
|
||||
list_diff(nmat1,tmat1,tmat2)
|
||||
list_diff(nmat2,tmat2,tmat1)
|
@ -0,0 +1,74 @@
|
||||
-- Logs minecart coordinates and speeds to console.
|
||||
|
||||
last_stats = last_stats or {}
|
||||
|
||||
function compare_one(vehicle)
|
||||
local last = last_stats[vehicle.id]
|
||||
local item = df.item.find(vehicle.item_id)
|
||||
local ipos = item.pos
|
||||
local new = {
|
||||
ipos.x*100000 + vehicle.offset_x, vehicle.speed_x,
|
||||
ipos.y*100000 + vehicle.offset_y, vehicle.speed_y,
|
||||
ipos.z*100000 + vehicle.offset_z, vehicle.speed_z
|
||||
}
|
||||
|
||||
if (last == nil) or item.flags.on_ground then
|
||||
local delta = { vehicle.id }
|
||||
local show = (last == nil)
|
||||
|
||||
for i=1,6 do
|
||||
local rv = 0
|
||||
if last then
|
||||
rv = last[i]
|
||||
end
|
||||
delta[i*2] = new[i]/100000
|
||||
local dv = new[i] - rv
|
||||
delta[i*2+1] = dv/100000
|
||||
if dv ~= 0 then
|
||||
show = true
|
||||
end
|
||||
end
|
||||
|
||||
if show then
|
||||
print(table.unpack(delta))
|
||||
end
|
||||
end
|
||||
|
||||
last_stats[vehicle.id] = new
|
||||
end
|
||||
|
||||
function compare_all()
|
||||
local seen = {}
|
||||
for _,v in ipairs(df.global.world.vehicles.all) do
|
||||
seen[v.id] = true
|
||||
compare_one(v)
|
||||
end
|
||||
for k,v in pairs(last_stats) do
|
||||
if not seen[k] then
|
||||
print(k,'DEAD')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function start_timer()
|
||||
if not dfhack.timeout_active(timeout_id) then
|
||||
timeout_id = dfhack.timeout(1, 'ticks', function()
|
||||
compare_all()
|
||||
start_timer()
|
||||
end);
|
||||
if not timeout_id then
|
||||
dfhack.printerr('Could not start timer in watch-minecarts')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
compare_all()
|
||||
|
||||
local cmd = ...
|
||||
|
||||
if cmd == 'start' then
|
||||
start_timer()
|
||||
elseif cmd == 'stop' then
|
||||
dfhack.timeout_active(timeout_id, nil)
|
||||
end
|
||||
|
Loading…
Reference in New Issue