View Single Post
10-23-14, 12:48 AM   #1
Cerberux19
A Murloc Raider
AddOn Compiler - Click to view compilations
Join Date: Feb 2013
Posts: 4
Need Help Creating an "Install" Splash for my UI

Hey all, I was looking to make my UI a bit more user friendly and create a separate addon that will simply load a splash screen the first time a character logs in and needs to set up my UI.

Currently I am using a string that incorporates the addon "Reflux" to load all addons in a single profile.

I have been trying, with no luck, in creating my own addon. And I am at a total loss atm.

The folder so far consists of the following files:

CerberuxUI > Core > Settings.lua
Media > Install > INSTALL.tga and Logo.tga
CerberuxUI.toc
Core.lua



These are the codes I currently have in each file:
Could someone please take a look and see where I might have gone wrong?

Settings.lua
Code:
local CerberuxUI = LibStub("AceAddon-3.0"):GetAddon("CerberuxUI")
local db, dbc, dbg

local CerberuxUICharacter_defaults = {
	initialized = false,
	needchatmoved = true,
}

local IWTextures = {
	Logo = [[Interface\AddOns\CerberuxUI\Media\Install\Logo.tga]],
}

local IWF = {}

---- Misc functions
CerberuxUI.deepCopyHash = function(t)
	local nt = {}
	for k, v in pairs(t) do
		if type(v) == "table" then
			nt[k] = CerberuxUI.deepCopyHash(v)
		else
			nt[k] = v
		end
	end
	return nt
end

-- Set default Chat frame position (called from Core.lua "PLAYER_ENTERING_WORLD")
function CerberuxUI:SetChatPosition()
	if CerberuxUICharacter.needchatmoved then
		ChatFrame1:ClearAllPoints()
		ChatFrame1:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", 6, 32)
		ChatFrame1:SetFrameLevel(15)
		ChatFrame1:SetHeight(170)
		ChatFrame1:SetWidth(380)
		ChatFrame1:SetUserPlaced(true)
		FCF_SavePositionAndDimensions(ChatFrame1)
		CerberuxUICharacter.needchatmoved = false
	end
end

-- CVars
local function SetDefaultCVars()
	-- Sound
	SetCVar("Sound_EnableErrorSpeech", 0)
	-- Nameplates
	SetCVar("bloatTest", 0)
	SetCVar("bloatnameplates", 0)
	SetCVar("bloatthreat", 0)
	-- Screenshots
	SetCVar("screenshotFormat", "jpg")				-- JPG format
	SetCVar("screenshotQuality", "10")				-- Highest quality
	-- Help
	SetCVar("showGameTips", 0)						-- Turn off Loading Screen Tips
	SetCVar("showTutorials", 0)						-- Turn off Tutorials
	SetCVar("UberTooltips", 1)						-- Turn on Enhanced Tooltips
	SetCVar("scriptErrors", 1)						-- Turn on Display Lua Errors
	-- Controls
	SetCVar("deselectOnClick", 1)					-- Turn off Sticky Targeting (inverted)
	-- Combat
	SetCVar("displaySpellActivationOverlays", 1)	-- Turn on Spell Alerts
	-- Display
	SetCVar("emphasizeMySpellEffects", 0)			-- Turn off Emphasize My Spell Effects
	SetCVar("SpellTooltip_DisplayAvgValues", 0)		-- Turn off Display Points As Average
	-- Social
	SetCVar("chatStyle", "classic")					-- Chat Style = "Classic"
	SetCVar("conversationMode", "inline")			-- Conversation Mode = "In-line"
	-- Quality of Life
	SetCVar("guildShowOffline", 0)					-- Hide Offline Guild Members
	SetCVar("profanityFilter", 0)					-- Turn off Profanity Filter
end

-- Initial Settings
local function InitialSettings()
	---- Chat
	-- Lock chat frames
	for i = 1,10 do
		local cf = _G["ChatFrame"..i]
		if cf then FCF_SetLocked(cf, 1) end
    end

	-- Set all chat channels to color player names by class
	for k, v in pairs(CHAT_CONFIG_CHAT_LEFT) do
		ToggleChatColorNamesByClassGroup(true, v.type)
	end
	for iCh = 1, 15 do
		ToggleChatColorNamesByClassGroup(true, "CHANNEL"..iCh)
	end

	-- Make Chat windows transparent
	SetChatWindowAlpha(1, 0)
	SetChatWindowAlpha(2, 0)
	
	-- Initial Settings done
	CerberuxUICharacter.initialized = true
end

---- Primary Installation
---- Stage 1
function CerberuxUI_RunStage1()
	dbc.installation.stage = -1
	
	if dbg.tags.firsttime then
		dbg.tags.firsttime = false
	end
	
	-- Make Chat windows transparent (again)
	SetChatWindowAlpha(1, 0)
	SetChatWindowAlpha(2, 0)
	
	end

	-- Reflux
	local RefluxArg = string.format("%s %s", "switch", "Cerberux")
    SlashCmdList.REFLUX(RefluxArg) -- This will cause a UI reload
end

local function CreateIWTextureFrame(texture, width, height, position, color)
	local frame = CreateFrame("Frame", nil, IWF)
	frame:SetParent(IWF)
	frame:SetPoint(unpack(position))
	frame:SetFrameStrata("DIALOG")
	frame:SetFrameLevel(IWF:GetFrameLevel() + 1)
	frame:SetWidth(width)
	frame:SetHeight(height)
	
	frame.bg = frame:CreateTexture()
	frame.bg:SetAllPoints(frame)
	frame.bg:SetTexture(texture)
	frame.bg:SetVertexColor(unpack(color))
	
	return frame
end

local function CreateInstallWindow()
	-- Background
	IWF = CreateFrame("Frame", nil, UIParent)
	IWF:SetParent(UIParent)
	IWF:SetAllPoints(UIParent)
	IWF:SetFrameStrata("DIALOG")
	IWF:SetFrameLevel(0)
	IWF:SetBackdrop({
		bgFile = "interface\\addons\\CerberuxUI\\Media\\Install\\INSTALL.tga",
	})
	IWF:SetBackdropColor(0, 0, 0, 0.9)
	
	-- Button
	IWF.install = CreateFrame("Button", "CerberuxUI_Install", IWF, "SecureActionButtonTemplate")
	IWF.install:SetPoint("CENTER", IWF, "CENTER", 40, 40)
	IWF.install:SetWidth(512)
	IWF.install:SetHeight(256)
	IWF.install:SetNormalFontObject(NumberFontNormal)
	IWF.install:SetText("")
	IWF.install:RegisterForClicks("LeftButtonUp")
	IWF.install:SetScript("OnClick", function()
		CerberuxUI_RunStage1()
	end)
	
		
	-- Logo
	IWF.logo = CreateIWTextureFrame(IWTextures.Logo, 256, 64, {"CENTER", IWF, "CENTER", 0, 60}, {1, 1, 1, 1})
end

local function InstallationStage1()
	---- Create Installation Window
	CreateInstallWindow()
	
	---- First Time
	if dbg.tags.firsttime then
		-- CVars
		SetDefaultCVars()
	end
	
	---- Initial Character Settings
	if not CerberuxUICharacter.initialized then
		if StaticPopup1 then StaticPopup1:Hide() end
		InitialSettings()
	end
	
	DEFAULT_CHATFRAME_ALPHA = 0
end

---- Process
local function PrimaryInstallation()
	if dbc.installation.stage > -1 then
		InstallationStage1()
	end
end

---- Install Procedure
function CerberuxUI:InstallProcedure()
	db = self.db.profile
	dbc = self.db.char
	dbg = self.db.global
	
	-- Set Char defaults
	if not(CerberuxUICharacter) then
		CerberuxUICharacter = CerberuxUICharacter_defaults
	end
	
	-- Primary Stages
	if dbc.installation.stage > -1 then
		PrimaryInstallation()
	end
end
CerberuxUI.toc

Code:
## Interface: 60000
## Title: |cffF58CBAC|cff0070DEL|cff69CCF0A|cffC41F3BS|cff00FF96S|r |cffABD473C|cffFFFFFFO|cffFFF569L|cff9482C9O|cffC79C6ER|cffFF7D0AS|r |cff00FF00by|r |cff00FF00Cerberux|r
## Author: Cerberux
## Notes: CerberuxUI core functionality
## SavedVariables: CerberuxUIDB
## SavedVariablesPerCharacter: CerberuxUICharacter
## OptionalDeps: Ace3, LibSharedMedia-3.0, AceGUI-3.0-SharedMediaWidgets
## RequiredDeps: Reflux

# Ace3
Libs\Embeds.xml

Core.lua
Core.xml
Core.lua

Code:
local CerberuxUI = LibStub("AceAddon-3.0"):NewAddon("CerberuxUI", "AceConsole-3.0", "AceEvent-3.0")
local db, dbg

-- Default Options
local defaults = {
	global = {
		tags = {
			firsttime = false,
		},
	},
	char = {
		installation = {
			stage = 0,
		},
	},
}

function CerberuxUI:UPDATE_PENDING_MAIL()
	self:UnregisterEvent("UPDATE_PENDING_MAIL")
	CancelEmote()	-- Cancel Map Holding animation
end

function CerberuxUI:PLAYER_LOGIN()
	-- Check if Installation/Patch is necessary
	self:InstallProcedure()
end

function CerberuxUI:ADDON_LOADED(event, addon)
	if addon ~= "CerberuxUI" then return end
	
	-- Open before login to stop taint
	ToggleFrame(SpellBookFrame)
	PetJournal_LoadUI()
	
	-- Remove Interface Options cancel button because it = taint
	InterfaceOptionsFrameCancel:Hide()
	InterfaceOptionsFrameOkay:SetAllPoints(InterfaceOptionsFrameCancel)

	-- Make clicking cancel the same as clicking okay
	InterfaceOptionsFrameCancel:SetScript("OnClick", function()
		InterfaceOptionsFrameOkay:Click()
	end)
end

function CerberuxUI:OnInitialize()
	-- Initialize settings, options, slash commands
	self.db = LibStub("AceDB-3.0"):New("CerberuxUIDB", defaults, "CerberuxUI")
	dbc = self.db.char
	dbg = self.db.global
	
	-- Vars
	self.realm = GetRealmName()
	self.class = select(2, UnitClass("player"))
	self.name = UnitName("player")
	self.key = string.format("%s - %s", self.name, self.realm)
	
	-- Register events
	self:RegisterEvent("ADDON_LOADED")
	self:RegisterEvent("PLAYER_LOGIN")
	self:RegisterEvent("UPDATE_PENDING_MAIL")
	
	-- Chat Commands
	self:RegisterChatCommand("rl", function() ReloadUI() end)

	-- Synch user's settings
	if dbg.tags.firsttime then
		SetCVar("synchronizeSettings", 1)
		SetCVar("synchronizeConfig", 1)
		SetCVar("synchronizeBindings", 1)
		SetCVar("synchronizeMacros", 1)
	end
	
	-- Done
	print("CerberuxUI loaded.")
end
p.s. I am very new to LUA and creating addons and recycled this code from a similar style splash so please pardon the ignorance.

Last edited by Cerberux19 : 10-23-14 at 02:32 AM.
  Reply With Quote