diff --git a/ChatSaver.lua b/ChatSaver.lua index 26f218a..1f8b128 100644 --- a/ChatSaver.lua +++ b/ChatSaver.lua @@ -1,44 +1,72 @@ -ChatSaver = LibStub('AceAddon-3.0'):NewAddon('ChatSaver','AceHook-3.0','AceEvent-3.0'); +ChatSaver = LibStub('AceAddon-3.0'):NewAddon('ChatSaver','AceConsole-3.0','AceHook-3.0','AceEvent-3.0'); local core = ChatSaver; local db; function core:OnInitialize() - self:RegisterEvent('PLAYER_LOGIN','ReloadUI'); self:Hook(SlashCmdList,'JOIN','JoinChannel',true); + self:Hook(SlashCmdList,'LEAVE','LeaveChannel',true); + + self:RegisterChatCommand('cs','SlashCommand'); + + if(ChatSaverDB == nil) then ChatSaverDB = {}; end end -function core:ReloadUI() - channelList = {}; - +function core:OnEnable() + self:RegisterEvent('CHAT_MSG_CHANNEL_NOTICE','RejoinChannels'); +end + +function core:SlashCommand() + core:RejoinChannels(); +end + +function core:RejoinChannels(event,message,...) + if(message == 'YOU_LEFT') then + return; + end + + local channelList = {}; for i = 1, select("#",GetChannelList()), 2 do local index,channel = select(i,GetChannelList()); channelList[index] = channel; end - --force channel list for now - myChannels = {}; - myChannels[1] = 'General'; - myChannels[2] = 'Trade'; - myChannels[3] = 'LocalDefense'; - myChannels[4] = 'ncaheal'; - myChannels[5] = 'ncabads'; - myChannels[6] = 'ncafail'; - - for index,channel in pairs(myChannels) do - if(channel ~= channelList[index]) then - print('Channel ',channel,' not joined. Rejoining now!'); - JoinPermanentChannel(channel); - - local i = 1; - while ( DEFAULT_CHAT_FRAME.channelList[i] ) do - i = i + 1; + for index,channel in pairs(ChatSaverDB) do + local found = false; + for jIndex,jChannel in pairs(channelList) do + if(jChannel == channel) then + found = true; end - DEFAULT_CHAT_FRAME.channelList[i] = channel; + end + + if(found == false) then + JoinPermanentChannel(channel); + DEFAULT_CHAT_FRAME.channelList[table.getn(DEFAULT_CHAT_FRAME.channelList) + 1] = channel; end end end -function core:JoinChannel() +function core:InChannels() + +end + +function core:JoinChannel(msg) + local name = gsub(msg, "%s*([^%s]+).*", "%1"); --need to store channel in db -end \ No newline at end of file + local channelCount = table.getn(ChatSaverDB); + ChatSaverDB[channelCount + 1] = name; +end + +function core:LeaveChannel(msg) + local number = gsub(msg, "%s*([^%s]+).*", "%1"); + local _,name = GetChannelName(number); + + pos = 9; + for index,channel in pairs(ChatSaverDB) do + if(channel == name) then + pos = index; + end + end + + table.remove(ChatSaverDB,pos); +end diff --git a/ChatSaver.toc b/ChatSaver.toc index 0d68b93..c4abe43 100644 --- a/ChatSaver.toc +++ b/ChatSaver.toc @@ -6,11 +6,12 @@ ## Dependencies: ## OptionalDeps: ## DefaultState: enabled -## SavedVariables: ChatSaverDB +## SavedVariablesPerCharacter: ChatSaverDB Libs\LibStub\LibStub.lua Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml Libs\AceAddon-3.0\AceAddon-3.0.xml +Libs\AceAddon-3.0\AceConsole-3.0.xml Libs\AceEvent-3.0\AceEvent-3.0.xml Libs\AceHook-3.0\AceHook-3.0.xml