Mercurial > wow > ouroloot
comparison core.lua @ 24:61d932f0e8f2
Reassigning loot in the main tab also updates entries in the history tab.
| author | Farmbuyer of US-Kilrogg <farmbuyer@gmail.com> |
|---|---|
| date | Wed, 21 Sep 2011 06:21:48 +0000 |
| parents | 8664134bba4f |
| children | cb9635999171 |
comparison
equal
deleted
inserted
replaced
| 23:8664134bba4f | 24:61d932f0e8f2 |
|---|---|
| 1535 id = e.id, | 1535 id = e.id, |
| 1536 when = self:format_timestamp (g_today, e), | 1536 when = self:format_timestamp (g_today, e), |
| 1537 count = e.count, | 1537 count = e.count, |
| 1538 } | 1538 } |
| 1539 tinsert (h, 1, n) | 1539 tinsert (h, 1, n) |
| 1540 end | 1540 e.history_unique = n.id .. ' ' .. n.when |
| 1541 | 1541 end |
| 1542 | |
| 1543 -- Create new history table based on current loot. | |
| 1542 function addon:rewrite_history (realmname) | 1544 function addon:rewrite_history (realmname) |
| 1543 local r = assert(realmname) | 1545 local r = assert(realmname) |
| 1544 self.history_all[r] = self:_prep_new_history_category (nil, r) | 1546 self.history_all[r] = self:_prep_new_history_category (nil, r) |
| 1545 self.history = self.history_all[r] | 1547 self.history = self.history_all[r] |
| 1546 | 1548 |
| 1559 for i,h in ipairs(self.history) do | 1561 for i,h in ipairs(self.history) do |
| 1560 tsort (h, comp) | 1562 tsort (h, comp) |
| 1561 end | 1563 end |
| 1562 end | 1564 end |
| 1563 | 1565 |
| 1566 -- Clears all but latest entry for each player. | |
| 1564 function addon:preen_history (realmname) | 1567 function addon:preen_history (realmname) |
| 1565 local r = assert(realmname) | 1568 local r = assert(realmname) |
| 1566 for i,h in ipairs(self.history) do | 1569 for i,h in ipairs(self.history) do |
| 1567 tsort (h, comp) | 1570 tsort (h, comp) |
| 1568 while #h > 1 do | 1571 while #h > 1 do |
| 1569 tremove (h) | 1572 tremove (h) |
| 1570 end | 1573 end |
| 1571 end | 1574 end |
| 1575 end | |
| 1576 | |
| 1577 function addon:reassign_loot (index, name_to) | |
| 1578 local e = assert(g_loot[index], "trying to reassign nonexistant entry") | |
| 1579 assert(e.kind=='loot', "trying to reassign something that isn't loot") | |
| 1580 assert(type(name_to)=='string' and name_to:len()>0) | |
| 1581 | |
| 1582 local name_from = e.person | |
| 1583 local tag = e.history_unique | |
| 1584 local errtxt | |
| 1585 | |
| 1586 if not tag then | |
| 1587 errtxt = "Entry for %s is missing a history tag!" | |
| 1588 else | |
| 1589 local from_i,from_h = self:get_loot_history(name_from) | |
| 1590 local to_i,to_h = self:get_loot_history(name_to) | |
| 1591 | |
| 1592 local hi | |
| 1593 for i,h in ipairs(from_h) do | |
| 1594 local unique = h.id .. ' ' .. h.when | |
| 1595 if unique == tag then | |
| 1596 hi = i | |
| 1597 break | |
| 1598 end | |
| 1599 end | |
| 1600 if not hi then | |
| 1601 -- 1) loot an item, 2) clear old history, 3) reassign from current loot | |
| 1602 -- Bah. Anybody that tricky is already recoding the tables directly anyhow. | |
| 1603 errtxt = "There is no record of %s ever having been assigned!" | |
| 1604 else | |
| 1605 hi = tremove (from_h, hi) | |
| 1606 tinsert (to_h, 1, hi) | |
| 1607 tsort (from_h, comp) | |
| 1608 tsort (to_h, comp) | |
| 1609 end | |
| 1610 end | |
| 1611 | |
| 1612 if errtxt then | |
| 1613 self:Print(errtxt .. " Loot will be reassigned but history will NOT be updated.", e.itemlink) | |
| 1614 end | |
| 1615 e.person = name_to | |
| 1616 e.person_class = select(2,UnitClass(name_to)) | |
| 1617 | |
| 1618 self:Print("Reassigned entry %d from '%s' to '%s'.", index, name_from, name_to) | |
| 1572 end | 1619 end |
| 1573 end | 1620 end |
| 1574 | 1621 |
| 1575 | 1622 |
| 1576 ------ Player communication | 1623 ------ Player communication |
