local addonName, addonData = ...
local addonLoaded = false
local calendarLoaded = false
local guildLoaded = false
local calendarOpened = false
XGIDB_Data = {}
XGIDB_Data.index = 0
local function OnEvent(self,event,...)
local args = { ... }
print(event,...)
XGIDB_Data.index = XGIDB_Data.index or 0
XGIDB_Data.index = XGIDB_Data.index + 1
XGIDB_Data[XGIDB_Data.index] = {}
XGIDB_Data[XGIDB_Data.index][event] = {}
XGIDB_Data[XGIDB_Data.index][event]["Arguments"] = {}
for i,v in pairs(args) do
tinsert(XGIDB_Data[XGIDB_Data.index][event]["Arguments"],v)
end
if ( event == "ADDON_LOADED" and args[1] == addonName) then
if not IsAddOnLoaded("Blizzard_Calendar") then
LoadAddOn("Blizzard_Calendar")
end
addonLoaded = true
end
if ( event == "ADDON_LOADED" and args[1] == "Blizzard_Calendar") then
calendarLoaded = true
end
if ( event == "UPDATE_FACTION") then
local numFactions = GetNumFactions()
XGIDB_Data[XGIDB_Data.index]["Factions"] = {}
XGIDB_Data[XGIDB_Data.index]["Factions"].Count = numFactions
for index = 1,numFactions do
local name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild = GetFactionInfo(index)
if ( name == "Guild" ) then
XGIDB_Data[XGIDB_Data.index]["GuildRep"] =
{
description = description,
standing = standingID,
hasRep = hasRep,
value = barValue,
max = barMax,
}
end
end
end
if ( event == "GUILD_ROSTER_UPDATE") then
QueryGuildXP()
QueryGuildEventLog()
end
if ( event == "GUILD_XP_UPDATE" ) then
local currentXP, nextLevelXP, dailyXP, maxDailyXP, weeklyXP, totalXP, isUncapped = UnitGetGuildXP("player")
XGIDB_Data[XGIDB_Data.index]["GuildXP"] =
{
CurrentXP = currentXP,
DailyXP = dailyXP,
WeeklyXP = weeklyXP,
TotalXP = totalXP,
}
end
if ( event == "GUILD_EVENT_LOG_UPDATE" ) then
local numEvents = GetNumGuildEvents()
XGIDB_Data[XGIDB_Data.index]["GuildEvents"] = {}
XGIDB_Data[XGIDB_Data.index]["GuildEvents"]["Number of Events"] = numEvents
for index = 1,numEvents do
local type, player1, player2, rank, year, month, day, hour = GetGuildEventInfo(index)
tinsert(XGIDB_Data[XGIDB_Data.index]["GuildEvents"],
{
Index = index,
Type = type,
Source = player1,
Target = player2,
Rank = rank,
Year = year,
Month = month,
Day = day,
Hour = hour,
}
)
end
end
if ( event == "PLAYER_GUILD_UPDATE") then
if ( args[1] == "player" ) then
GuildRoster()
end
end
if ( event == "CALENDAR_UPDATE_GUILD_EVENTS") then
local numEvents = CalendarGetNumGuildEvents()
XGIDB_Data[XGIDB_Data.index]["GuildCalendarEvents"] = {}
XGIDB_Data[XGIDB_Data.index]["GuildCalendarEvents"]["Number of Events"] = numEvents
for index = 1,numEvents do
local month, day, weekday, hour, minute, eventType, title, calendarType, textureName = CalendarGetGuildEventInfo(index)
tinsert(XGIDB_Data[XGIDB_Data.index]["GuildCalendarEvents"],
{
Index = index,
CalendarType = calendarType,
EventType = eventType,
Title = title,
Month = month,
Day = day,
Hour = hour,
Weekday = weekday,
}
)
end
end
if ( event == "CALENDAR_UPDATE_EVENT_LIST") then
local weekday,month,day,year = CalendarGetDate()
local numEvents = CalendarGetNumDayEvents(0, day)
XGIDB_Data[XGIDB_Data.index]["CalendarEvents"] = {}
XGIDB_Data[XGIDB_Data.index]["CalendarEvents"]["Number of Events"] = numEvents
for index = 1,numEvents do
local title, hour, minute, calendarType, sequenceType, eventType, texture, modStatus, inviteStatus, invitedBy, difficulty, inviteType = CalendarGetDayEvent(0, day, index)
tinsert(XGIDB_Data[XGIDB_Data.index]["CalendarEvents"],
{
Index = index,
CalendarType = calendarType,
EventType = eventType,
Title = title,
Month = month,
Day = day,
Hour = hour,
Weekday = weekday,
}
)
end
end
if addonLoaded and calendarLoaded and not calendarOpened then
local weekday,month,day,year = CalendarGetDate()
local month, year, numDays, firstWeekday = CalendarGetMonth(0)
CalendarSetAbsMonth(month,year)
OpenCalendar()
calendarOpened = true
end
end
local frame = CreateFrame("Frame","XGIFrame",UIParent)
frame:RegisterEvent("ADDON_LOADED")
frame:RegisterEvent("UPDATE_FACTION")
frame:RegisterEvent("PLAYER_GUILD_UPDATE")
frame:RegisterEvent("GUILD_ROSTER_UPDATE")
frame:RegisterEvent("GUILD_XP_UPDATE")
frame:RegisterEvent("GUILD_EVENT_LOG_UPDATE")
frame:RegisterEvent("CALENDAR_UPDATE_GUILD_EVENTS")
frame:RegisterEvent("CALENDAR_UPDATE_EVENT_LIST")
frame:SetScript("OnEvent",OnEvent)