Thread Tools Display Modes
Prev Previous Post   Next Post Next
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
 

WoWInterface » Developer Discussions » General Authoring Discussion » Need Help Creating an "Install" Splash for my UI


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off