comparison Squawk.lua @ 2:75a76882c343

more work on the controller
author wobin
date Thu, 16 Apr 2009 22:05:24 +1000
parents 188273d0efad
children 1cc6e4710e2e
comparison
equal deleted inserted replaced
1:188273d0efad 2:75a76882c343
76 76
77 function Squawk:Sort(Squawks) 77 function Squawk:Sort(Squawks)
78 return table.sort(Squawks, function(a,b) return a.Time < b.Time end) 78 return table.sort(Squawks, function(a,b) return a.Time < b.Time end)
79 end 79 end
80 80
81 function Squawk:GetOwn(Squawks)
82 local mine = {}
83 for _, squawk in ipairs(Squawks) do
84 if squawk.Owner == UnitName("player") then
85 table.insert(mine, squawk)
86 end
87 end
88 return self:Sort(mine)
89 end
90
81 function Settings:IsPrivate() 91 function Settings:IsPrivate()
82 return Settings.Private 92 return Settings.Private
83 end 93 end
84 94
85 function Settings:AddFollower(Name) 95 function Settings:AddFollower(Name)
86 table.insert(Settings.Follower, Name) 96 Settings.Follower[Name] = 1
87 end 97 end
88 98
89 function Settings:AddFollowing(Name) 99 function Settings:AddFollowing(Name)
90 table.insert(Settings.Following, Name) 100 Settings.Following[Name] = 1
91 end 101 end
92 102
93 function Settings:AddBlock(Name) 103 function Settings:AddBlock(Name)
94 table.insert(Settings.Blocked, Name) 104 Settings.Blocked[Name] = 1
95 end 105 end
96 106
97 function Settings:RemoveFollower(Name) 107 function Settings:RemoveFollower(Name)
98 for i,v in ipairs(Settings.Follower) do 108 if Settings.Follower[Name] then
99 if v == Name then 109 Settings.Follower[Name] = nil
100 table.remove(Settings.Follower, i)
101 return
102 end
103 end 110 end
104 end 111 end
105 112
106 function Settings:RemoveFollowing(Name) 113 function Settings:RemoveFollowing(Name)
107 for i,v in ipairs(Settings.Following) do 114 if Settings.Following[Name] then
108 if v == Name then 115 Settings.Following[Name] = nil
109 table.remove(Settings.Following, i)
110 return
111 end
112 end 116 end
113 end 117 end
114 118
115 function Settings:RemoveBlock(Name) 119 function Settings:RemoveBlock(Name)
116 for i,v in ipairs(Settings.Blocked) do 120 if Settings.Blocked[Name] then
117 if v == Name then 121 Settings.Blocked[Name] = nil
118 table.remove(Settings.Blocked, i)
119 return
120 end
121 end 122 end
122 end 123 end
123 124
124 --Controller-- 125 --Controller--
125 126
133 self:SendMessageToTarget(Name, "#Follow|"..UnitName("player")) 134 self:SendMessageToTarget(Name, "#Follow|"..UnitName("player"))
134 end 135 end
135 end 136 end
136 137
137 function Controller:IWantToFollowThem(Name) 138 function Controller:IWantToFollowThem(Name)
138 139 self:SendMessageToTarget(Name, "#Request|"..UnitName("player"))
139 end 140 end
140 141
141 function Controller:IAmNowFollowingThem(Name) 142 function Controller:IAmNowFollowingThem(Name)
142 Settings:AddFollowing(Name) 143 Settings:AddFollowing(Name)
143 View:NotifyOfNewFollowing(Name) 144 View:NotifyOfNewFollowing(Name)
144 end 145 end
145 146
146 function Controller:AddANewSquawk(Name, Message) 147 function Controller:AddANewSquawk(Name, Message)
147 table.insert(Model.db.Squawks, Squawk:new(Message, Name)) 148 table.insert(Model.db.Squawks, Squawk:new(Message, Name))
148 View:UpdateSquawkList() 149 View:UpdateSquawkList()
150 end
151
152 function Controller:SendNewSquawk(Message)
153 if not Model:IsPrivate() then
154 self:SendMessageToGuild("#Squawk|"..UnitName("player").."|"..Message)
155 end
156
157 self:AddANewSquawk(UnitName("player"), Message)
158
159 for name, _ in pairs(Model.Following) do
160 self:SendMessageToTarget(name, "#Squawk|"..UnitName("player").."|"..Message)
161 end
149 end 162 end
150 163
151 function Controller:ImPending(Name) 164 function Controller:ImPending(Name)
152 View:NotifyOfPending(Name) 165 View:NotifyOfPending(Name)
153 end 166 end
161 end 174 end
162 175
163 local Parse = { 176 local Parse = {
164 ["#Pending"] = Controller.ImPending, 177 ["#Pending"] = Controller.ImPending,
165 ["#Follow"] = Controller.IAmNowFollowingThem, 178 ["#Follow"] = Controller.IAmNowFollowingThem,
166 ["#Squawk"] = Controller.AddANewSquawk 179 ["#Squawk"] = Controller.AddANewSquawk,
180 ["#Request"] = Controller.TheyWantToFollowMe,
167 } 181 }
168 182
169 function Controller:ReceiveMessage(Prefix, Message, Distribution, Sender) 183 function Controller:ReceiveMessage(Prefix, Message, Distribution, Sender)
170 local command, name, info = strsplit("|",Message) 184 local command, name, info = strsplit("|",Message)
171 Parse[command](self, name, info) 185 Parse[command](self, name, info)