Mercurial > wow > squawk
comparison Model.lua @ 19:431f2fce08f2
Added in link stripping
Coloured class names
Reply to specific squawk
Related squawks fixed
new arrow to indicate reply
limit to 140 characters
| author | wobin |
|---|---|
| date | Tue, 12 May 2009 00:57:59 +1000 |
| parents | a3328fffef5c |
| children | 8df5d8ef2e27 |
comparison
equal
deleted
inserted
replaced
| 18:a3328fffef5c | 19:431f2fce08f2 |
|---|---|
| 46 Model.Squawks = {} | 46 Model.Squawks = {} |
| 47 local Squawks = Model.Squawks | 47 local Squawks = Model.Squawks |
| 48 Squawks.Main = {} | 48 Squawks.Main = {} |
| 49 Squawks.Owners = {} | 49 Squawks.Owners = {} |
| 50 | 50 |
| 51 | |
| 52 local classcolours = { | |
| 53 ["DEATHKNIGHT"] = "C41F3B", | |
| 54 ["DRUID"] = "FF7D0A", | |
| 55 ["HUNTER"] = "ABD473", | |
| 56 ["MAGE"] = "69CCF0", | |
| 57 ["PALADIN"] = "F58CBA", | |
| 58 ["PRIEST"] = "FFFFFF", | |
| 59 ["ROGUE"] = "FFF569", | |
| 60 ["SHAMAN"] = "2459FF", | |
| 61 ["WARLOCK"] = "9482C9", | |
| 62 ["WARRIOR"] = "C79C6E", | |
| 63 } | |
| 64 | |
| 51 local function wrap(str, limit) | 65 local function wrap(str, limit) |
| 52 limit = limit or 72 | 66 limit = limit or 72 |
| 53 local here = 1 | 67 local here = 1 |
| 54 return str:gsub("(%s+)()(%S+)()", | 68 return str:gsub("|c%x-|H.-|h(.-)|h|r", "%1"):gsub("(%s+)()(%S+)()", |
| 55 function(sp, st, word, fi) | 69 function(sp, st, word, fi) |
| 56 if fi-here > limit then | 70 if fi-here > limit then |
| 57 here = st | 71 here = st |
| 58 return "\n"..word | 72 return "\n"..word |
| 59 end | 73 end |
| 60 end) | 74 end) |
| 61 end | 75 end |
| 62 | 76 |
| 63 function Squawks:new(Message, Owner) | 77 function Squawks:new(Message, Owner, Class, ReplyStamp) |
| 78 View:Print("New: "..ReplyStamp) | |
| 64 local o = {} | 79 local o = {} |
| 65 o.Owner = Owner or UnitName("player") | 80 o.Owner = Owner or UnitName("player") |
| 66 o.Message = wrap(Message) | 81 o.Message = wrap(Message) |
| 67 o.Time = time() | 82 o.Time = time() |
| 68 local reply, to = strsplit("@", ((strsplit(" ", Message)))) | 83 local reply, to = strsplit("@", ((strsplit(" ", Message)))) |
| 69 if reply == "" then | 84 if reply == "" then |
| 70 o.ReplyTo = to | 85 o.ReplyTo = to:match("%P+") -- Get everything except punctuation |
| 86 o.ReplyStamp = ReplyStamp | |
| 71 end | 87 end |
| 72 | 88 |
| 73 o.Related = {} | 89 o.Related = {} |
| 74 | 90 |
| 75 for word in string.gmatch(Message, "@(%a+)") do | 91 for word in string.gmatch(Message, "@(%S+)") do |
| 76 if word ~= o.ReplyTo or "" then | 92 if word ~= o.ReplyTo or "" then |
| 77 table.insert(o.Related, word) | 93 table.insert(o.Related, word) |
| 78 end | 94 end |
| 79 end | 95 end |
| 80 | 96 |
| 82 o.Related = nil | 98 o.Related = nil |
| 83 end | 99 end |
| 84 | 100 |
| 85 table.insert(self.Main, o) | 101 table.insert(self.Main, o) |
| 86 | 102 |
| 103 if not self.Squawkers[Owner] then | |
| 104 self.Squawkers[Owner] = {name = Owner, class=Class} | |
| 105 end | |
| 106 | |
| 87 if not self.Owners[Owner] then | 107 if not self.Owners[Owner] then |
| 88 self.Owners[Owner] = {} | 108 self.Owners[Owner] = {} |
| 89 end | 109 end |
| 110 | |
| 90 table.insert(self.Owners[Owner], o) | 111 table.insert(self.Owners[Owner], o) |
| 91 return o | 112 return o |
| 113 end | |
| 114 | |
| 115 function Squawks:OwnerString(squawk) | |
| 116 return "|cff"..classcolours[self.Squawkers[squawk.Owner].class or "WARRIOR"]..squawk.Owner.."|r" | |
| 92 end | 117 end |
| 93 | 118 |
| 94 function Squawks:Reload() | 119 function Squawks:Reload() |
| 95 for _,squawk in ipairs(Model.Squawks.Main) do | 120 for _,squawk in ipairs(Model.Squawks.Main) do |
| 96 if not self.Owners[squawk.Owner] then | 121 if not self.Owners[squawk.Owner] then |
