Mercurial > wow > breuesk
comparison Lists.lua @ 18:bf3e94bc3bf5
Updated todos, lists using creation timestamp as keys
author | John@Doomsday |
---|---|
date | Fri, 09 Mar 2012 17:35:22 -0500 |
parents | 71fc79846a5d |
children | cdca1f2ae605 |
comparison
equal
deleted
inserted
replaced
17:71fc79846a5d | 18:bf3e94bc3bf5 |
---|---|
8 | 8 |
9 | 9 |
10 -- TODO: rename player | 10 -- TODO: rename player |
11 -- TODO: list trimming | 11 -- TODO: list trimming |
12 -- TODO: collapse slists into delimited strings for space | 12 -- TODO: collapse slists into delimited strings for space |
13 -- TODO: list-of-lists must not use int indices. those will lead to peril. | 13 -- TODO: organize working state data a little more carefully - hard to keep |
14 -- track of all the arrays that are floating out there | |
15 -- TODO: delete list | |
16 -- TODO: rename list | |
17 -- TODO: remove player from list | |
18 -- TODO: (meta) remove player from all lists | |
19 -- TODO: remove person (actually kinda tricky without casuality problems) | |
20 | |
14 -- holy crap long notes {{{ | 21 -- holy crap long notes {{{ |
15 -- notes on list storage: | 22 -- notes on list storage: |
16 -- Using names as keys as I do now is atrocious. | 23 -- Using names as keys as I do now is atrocious. |
17 -- It prevents insertions (twss) to the middle of the list because then it acts | 24 -- It prevents insertions (twss) to the middle of the list because then it acts |
18 -- as a side effect onto all the others. ie ABCD -> AXBCD would be phrased as | 25 -- as a side effect onto all the others. ie ABCD -> AXBCD would be phrased as |
55 -- it is declared invalid. tough tits. it's just not a fair | 62 -- it is declared invalid. tough tits. it's just not a fair |
56 -- distribution at that point. | 63 -- distribution at that point. |
57 -- * actually, fuck it. I'll give them an unlock command and | 64 -- * actually, fuck it. I'll give them an unlock command and |
58 -- let them screw over their lists :) | 65 -- let them screw over their lists :) |
59 --}}} | 66 --}}} |
67 | |
60 -- there are some dep chains here. for instance, to have a raidIdP value, a | 68 -- there are some dep chains here. for instance, to have a raidIdP value, a |
61 -- person must have a bsk.persons value which leads to a personName2id which | 69 -- person must have a bsk.persons value which leads to a personName2id which |
62 -- leads to a raidIdP | 70 -- leads to a raidIdP |
63 | 71 |
64 bsk.lists = {} | 72 bsk.lists = {} |
102 end | 110 end |
103 | 111 |
104 -- Debugging {{{ | 112 -- Debugging {{{ |
105 function bsk:PrettyPrintList(listIndex) | 113 function bsk:PrettyPrintList(listIndex) |
106 local list = bsk.lists[listIndex] | 114 local list = bsk.lists[listIndex] |
107 bsk:Print("List: " .. list.name .. " (" .. list.time .. ")") | 115 bsk:Print("List: " .. list.name .. " (" .. list.id .. ") - last modified" .. date(list.time) .. " (",for) |
108 for i = 1,#list do | 116 for i = 1,#list do |
109 bsk:Print(" " .. i .. " - " .. bsk.persons[list[i].id].main) | 117 bsk:Print(" " .. i .. " - " .. bsk.persons[list[i].id].main) |
110 end | 118 end |
111 end | 119 end |
112 function bsk:PrettyPrintLists() | 120 function bsk:PrettyPrintLists() |
318 bsk:CreateChange(change) | 326 bsk:CreateChange(change) |
319 end | 327 end |
320 end | 328 end |
321 | 329 |
322 function bsk:DoCreateList(change) | 330 function bsk:DoCreateList(change) |
323 -- TODO: this segment will probably be useful as bsk:SearchForListByName | 331 --if bsk:GetListIndex(change.arg.name) then |
324 local lists = bsk.lists | 332 -- self:Print(sformat("List %s already exists",v.name)) |
325 for i,v in pairs(lists) do | 333 -- return false |
326 if v.name == change.arg.name then | 334 --end |
327 self:Print(sformat("List %s already exists",v.name)) | 335 lists[change.arg.id]={name=change.arg.name,time=change.time} |
328 return false | |
329 end | |
330 end | |
331 tinsert(lists,{name=change.arg.name,time=change.time}) | |
332 return true | 336 return true |
333 end | 337 end |
334 | 338 |
335 function bsk:CreateList(name) | 339 function bsk:CreateList(name) |
336 -- require admin | 340 -- require admin |
337 local change={action="CreateList",arg={name=name}} | 341 local change={action="CreateList",arg={name=name}} |
338 bsk:StartChange(change) | 342 bsk:StartChange(change) |
343 change.arg.id=change.time -- use the creation timestamp as the list's index. it's as unique as anything... | |
339 self:Print("Creating ... " .. name) | 344 self:Print("Creating ... " .. name) |
340 if bsk:DoCreateList(change) then | 345 if bsk:DoCreateList(change) then |
341 bsk:CommitChange(change) | 346 bsk:CommitChange(change) |
342 end | 347 end |
343 end | 348 end |
447 end | 452 end |
448 end | 453 end |
449 | 454 |
450 function bsk:TrimLists(time) | 455 function bsk:TrimLists(time) |
451 if not bsk:CheckListCausality() then | 456 if not bsk:CheckListCausality() then |
452 self:Print("Unable to trim lists due to violated causality") | 457 self:Print("Unable to trim changelist due to violated causality") |
453 return false | 458 return false |
454 end | 459 end |
455 | 460 |
456 if type(time) ~= "number" then | 461 if type(time) ~= "number" then |
457 time = tonumber(time) | 462 time = tonumber(time) |