summaryrefslogtreecommitdiff
path: root/Data/BuiltIn/Libraries/lua-addons/addons/shoutHelper/blackboard.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Data/BuiltIn/Libraries/lua-addons/addons/shoutHelper/blackboard.lua')
-rw-r--r--Data/BuiltIn/Libraries/lua-addons/addons/shoutHelper/blackboard.lua150
1 files changed, 150 insertions, 0 deletions
diff --git a/Data/BuiltIn/Libraries/lua-addons/addons/shoutHelper/blackboard.lua b/Data/BuiltIn/Libraries/lua-addons/addons/shoutHelper/blackboard.lua
new file mode 100644
index 0000000..998e7bb
--- /dev/null
+++ b/Data/BuiltIn/Libraries/lua-addons/addons/shoutHelper/blackboard.lua
@@ -0,0 +1,150 @@
+--[[
+Copyright (c) 2013, Chiara De Acetis
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of <addon name> nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL <your name> BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+-- Blackboard object (wrapper to text box)
+-- Manage the textbox alliance list
+local Alliance = require 'Alliance'
+require 'logger'
+
+local Blackboard = {
+visible = true,
+settings = nil,
+tb_name = 'shoutHelper',
+allyName = 'Alliance'
+}
+
+function Blackboard:new(settings)
+ local o = {}
+ self.settings = settings
+ o = {ally = Alliance:new()}
+ setmetatable(o, self)
+ self.__index = self
+ windower.text.create(self.tb_name)
+ windower.text.set_bg_color(self.tb_name, self.settings.bgtransparency, 30, 30, 30)
+ windower.text.set_color(self.tb_name, 255, 225, 225, 225)
+ windower.text.set_location(self.tb_name, self.settings.posx, self.settings.posy)
+ windower.text.set_visibility(self.tb_name, self.visible)
+ windower.text.set_bg_visibility(self.tb_name, 1)
+ return o
+end
+
+function Blackboard:set_position(posx, posy)
+ self.settings.posx = posx
+ self.settings.posy = posy
+ windower.text.set_location(self.tb_name, posx, posy)
+end
+
+function Blackboard:show()
+ self.visible = true
+ windower.text.set_visibility(self.tb_name, true)
+end
+
+function Blackboard:hide()
+ self.visible = false
+ windower.text.set_visibility(self.tb_name, false)
+end
+
+function Blackboard:set(party, jobs)
+ --need to check here party format string
+ local ptBool = (party == ('party1')) or (party == ('pt1')) or (party == ('1'))
+ if(ptBool) then
+ self.ally:setParty1(jobs)
+ end
+ ptBool = (party == ('party2')) or (party == ('pt2')) or (party == ('2'))
+ if(ptBool) then
+ self.ally:setParty2(jobs)
+ end
+ ptBool = (party == ('party3')) or (party == ('pt3')) or (party == ('3'))
+ if(ptBool) then
+ self.ally:setParty3(jobs)
+ end
+ self:update()
+end
+
+function Blackboard:deleteJob(job, party)
+ local ptBool = (party == ('party1')) or (party == ('pt1')) or (party == ('1'))
+ local party = nil
+ if(ptBool) then
+ party = 'party1'
+ end
+ ptBool = (party == ('party2')) or (party == ('pt2')) or (party == ('2'))
+ if(ptBool) then
+ party = 'party2'
+ end
+ ptBool = (party == ('party3')) or (party == ('pt3')) or (party == ('3'))
+ if(ptBool) then
+ party = 'party3'
+ end
+ self.ally:deleteJob(job, party)
+ self:update()
+end
+
+function Blackboard:addPlayer(job, name)
+ self.ally:addPlayer(job, name)
+ self:update()
+end
+
+function Blackboard:rmPlayer(name)
+ self.ally:removePlayer(name)
+ self:update()
+end
+
+function Blackboard:update()
+ local string = self.ally:printAlly()
+ windower.text.set_text(self.tb_name, self.allyName..'\n'..string)
+ if (not self.visible) then
+ self:show()
+ end
+end
+
+function Blackboard:reset(party)
+ if not party then
+ self.ally:deleteAll()
+ else
+ local ptBool = (party == ('party1')) or (party == ('pt1')) or (party == ('1'))
+ if(ptBool) then
+ party = 'party1'
+ end
+ ptBool = (party == ('party2')) or (party == ('pt2')) or (party == ('2'))
+ if(ptBool) then
+ party = 'party2'
+ end
+ ptBool = (party == ('party3')) or (party == ('pt3')) or (party == ('3'))
+ if(ptBool) then
+ party = 'party3'
+ end
+ self.ally:delete(party)
+ end
+ self:update()
+end
+
+function Blackboard:destroy()
+windower.text.delete(self.tb_name)
+end
+
+return Blackboard