comparison Lists.lua @ 29:731182d55b6c

Bug fix (iterate list by ipairs) Cleanup to RemovePerson
author John@Yosemite-PC
date Sun, 11 Mar 2012 17:47:26 -0400
parents eb3a3f69559e
children 7b01c9b2b411
comparison
equal deleted inserted replaced
28:eb3a3f69559e 29:731182d55b6c
423 return false 423 return false
424 end 424 end
425 local listsTheyreOn = {} 425 local listsTheyreOn = {}
426 -- check if they're active on any loot list 426 -- check if they're active on any loot list
427 for i,v in pairs(bsk.lists) do 427 for i,v in pairs(bsk.lists) do
428 for x,y in ipairs(v) do 428 if bsk:IdIsInList(id,v) then
429 if y.id == id then 429 tinsert(listsTheyreOn,v.name)
430 tinsert(listsTheyreOn,v.name) 430 break
431 break
432 end
433 end 431 end
434 end 432 end
435 if getn(listsTheyreOn) > 0 then 433 if getn(listsTheyreOn) > 0 then
436 self:Print(sformat("Cannot remove person %s because they are on one or more lists (%s)",name,table.concat(listsTheyreOn,", "))) 434 self:Print(sformat("Cannot remove person %s because they are on one or more lists (%s)",name,table.concat(listsTheyreOn,", ")))
437 return false 435 return false
503 end 501 end
504 end--}}} 502 end--}}}
505 function bsk:DoRemovePersonFromList(change)--{{{ 503 function bsk:DoRemovePersonFromList(change)--{{{
506 local list = bsk.lists[change.arg.listIndex] 504 local list = bsk.lists[change.arg.listIndex]
507 505
508 for i,v in pairs(list) do 506 for i,v in ipairs(list) do
509 if v.id == change.arg.id then 507 if v.id == change.arg.id then
510 table.remove(list,i) 508 table.remove(list,i)
511 break 509 break
512 end 510 end
513 end 511 end
516 return true 514 return true
517 end--}}} 515 end--}}}
518 function bsk:RemovePersonFromList(name,listName)--{{{ 516 function bsk:RemovePersonFromList(name,listName)--{{{
519 local listIndex = bsk:GetListIndex(listName) 517 local listIndex = bsk:GetListIndex(listName)
520 local pid = personName2id[name] 518 local pid = personName2id[name]
519 -- todo: check that they're on the list in the first place
521 local change = {action="RemovePersonFromList",arg={id=pid,listIndex=listIndex}} 520 local change = {action="RemovePersonFromList",arg={id=pid,listIndex=listIndex}}
522 bsk:StartChange(change) 521 bsk:StartChange(change)
523 if bsk:DoRemovePersonFromList(change) then 522 if bsk:DoRemovePersonFromList(change) then
524 bsk:CommitChange(change) 523 bsk:CommitChange(change)
525 end 524 end
574 bsk:AddPerson(name) 573 bsk:AddPerson(name)
575 end 574 end
576 end 575 end
577 -- TODO: batch into a single op - no need to spam 25 messages in a row 576 -- TODO: batch into a single op - no need to spam 25 messages in a row
578 end 577 end
578
579 function bsk:PopulateListRandom(listIndex) 579 function bsk:PopulateListRandom(listIndex)
580 -- difference (raid+reserve)-list, then random shuffle that, then add 580 -- difference (raid+reserve)-list, then random shuffle that, then add
581 bsk:PopulateRaidList() 581 bsk:PopulateRaidList()
582 local list = bsk.lists[listIndex] 582 local list = bsk.lists[listIndex]
583 583