Modulo:Discendenza/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
Nessun oggetto della modifica
Riga 11:
local err = '-'
 
while (dati[n]) do n = n+1 end
n = n+1
end
n = n-1
 
Line 21 ⟶ 19:
err = 'id ' .. dati[m-3] .. ' utilizzato per elementi diversi'
else
pers[tonumber(dati[m-3])] = { id = tonumber(dati[m-3]), padre = tonumber(dati[m-2]), testo = dati[m-1], nota = dati[m], id2id = -1, x = -1, y = -1, sp = 0, figli = {} }
end
else
Line 29 ⟶ 27:
end
if (err == '-' and resto > 0) then
err = 'numero di dati ' .. n .. ' non valido (restoelementi =in più: ' .. resto .. ')'
end
return err
Line 37 ⟶ 35:
local nn = 1
pers[pid].y = plev -- assegna y ad ogni persona
if (not tabella[plev]) then tabella[plev] = {} end
tabella[plev] = {}
end
table.insert(tabella[plev], pid) -- inserisce la persona in tabella
for i, v in pairs(pers[pid].figli) do
pers[v].id2id = i -- assegna numero del figlio
nn = nn + organizza(v, plev+1) -- ricorsione per assegnare y ai figli e contarli
end
Line 98 ⟶ 94:
local sposta = 0
 
local fine = pers[pid].id2id
local frt = 1
local frt2, n
while (frt < fine) do -- controlla tutti i rami fratelli da 1 fino al ramo corrente
frt2 = pers[pers[pers[pid].padre].figli[frt]].id
tDx = limDx(frt2, 0, {}) -- elementi più a destra del ramo fratello per ogni y
tSx = limSx(pid, 0, {}) -- elementi più a sinistra del ramo corrente per ogni y
Line 133 ⟶ 129:
if (pers[pid].padre == -1) then -- è capostipite
pers[pid].x = 0
elseif (pers[pid].id2id == 1) then -- è primo figlio
pers[pid].x = 0
else -- è figlio successivo
pers[pid].x = pers[pers[pers[pid].padre].figli[pers[pid].id2id - 1]].x + 2
end
elseif (tt == 1) then -- ha un figlio
if (pers[pid].padre == -1) then -- è capostipite
pers[pid].x = pers[pers[pid].figli[1]].x
elseif (pers[pid].id2id == 1) then -- è primo figlio
pers[pid].x = pers[pers[pid].figli[1]].x
else -- è figlio successivo
pers[pid].x = pers[pers[pers[pid].padre].figli[pers[pid].id2id - 1]].x + 2
pers[pid].sp = pers[pid].x - pers[pers[pid].figli[1]].x
verifica(pid)
Line 152 ⟶ 148:
if (pers[pid].padre == -1) then -- è capostipite
pers[pid].x = media
elseif (pers[pid].id2id == 1) then -- è primo figlio
pers[pid].x = media
else -- è figlio successivo
pers[pid].x = pers[pers[pers[pid].padre].figli[pers[pid].id2id - 1]].x + 2
pers[pid].sp = pers[pid].x - media
verifica(pid)
Line 286 ⟶ 282:
local larg = args['larghezza'] or '300'
err = dividi(args)
 
if (err == '-') then
n1 = 0
Line 293 ⟶ 288:
if (v.padre == -1) then
if (capo == -1) then
capo = v.idi
else
err = 'più elementi (id: ' .. capo .. ', ' .. v.idi .. ') indicati come capostipite'
end
else
if (v.padre == v.idi) then
err = 'elemento con id ' .. i .. ' indicato come figlio di se stesso'
elseif (pers[v.padre]) then