initial commit
This commit is contained in:
153
Modules/Skins/Blizzard/TalkingHead.lua
Normal file
153
Modules/Skins/Blizzard/TalkingHead.lua
Normal file
@@ -0,0 +1,153 @@
|
||||
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
||||
local S = E:GetModule('Skins')
|
||||
|
||||
local _G = _G
|
||||
|
||||
--Just some test code
|
||||
--[[
|
||||
local talkingHeadTextureKitRegionFormatStrings = {
|
||||
TextBackground = '%s-TextBackground',
|
||||
Portrait = '%s-PortraitFrame',
|
||||
}
|
||||
local talkingHeadDefaultAtlases = {
|
||||
TextBackground = 'TalkingHeads-TextBackground',
|
||||
Portrait = 'TalkingHeads-Alliance-PortraitFrame',
|
||||
}
|
||||
local talkingHeadFontColor = {
|
||||
['TalkingHeads-Horde'] = {Name = CreateColor(0.28, 0.02, 0.02), Text = CreateColor(0.0, 0.0, 0.0), Shadow = CreateColor(0.0, 0.0, 0.0, 0.0)},
|
||||
['TalkingHeads-Alliance'] = {Name = CreateColor(0.02, 0.17, 0.33), Text = CreateColor(0.0, 0.0, 0.0), Shadow = CreateColor(0.0, 0.0, 0.0, 0.0)},
|
||||
['TalkingHeads-Neutral'] = {Name = CreateColor(0.33, 0.16, 0.02), Text = CreateColor(0.0, 0.0, 0.0), Shadow = CreateColor(0.0, 0.0, 0.0, 0.0)},
|
||||
['Normal'] = {Name = CreateColor(1, 0.82, 0.02), Text = CreateColor(1, 1, 1), Shadow = CreateColor(0.0, 0.0, 0.0, 1.0)},
|
||||
}
|
||||
|
||||
--test
|
||||
function TestTalkingHead()
|
||||
local frame = TalkingHeadFrame;
|
||||
local model = frame.MainFrame.Model;
|
||||
|
||||
if frame.finishTimer then
|
||||
frame.finishTimer:Cancel();
|
||||
frame.finishTimer = nil;
|
||||
end
|
||||
if frame.voHandle then
|
||||
StopSound(frame.voHandle);
|
||||
frame.voHandle = nil;
|
||||
end
|
||||
|
||||
local currentDisplayInfo = model:GetDisplayInfo();
|
||||
local displayInfo, cameraID, vo, duration, lineNumber, numLines, name, text, isNewTalkingHead, textureKitID
|
||||
|
||||
displayInfo = 76291
|
||||
cameraID = 1240
|
||||
vo = 103175
|
||||
duration = 20.220001220703
|
||||
lineNumber = 0
|
||||
numLines = 4
|
||||
name = 'Some Ugly Woman'
|
||||
text = 'Testing this sheet out Testing this sheet out Testing this sheet out Testing this sheet out Testing this sheet out Testing this sheet out Testing this sheet out '
|
||||
isNewTalkingHead = true
|
||||
textureKitID = 0
|
||||
|
||||
local textFormatted = format(text);
|
||||
if displayInfo and displayInfo ~= 0 then
|
||||
local textureKit;
|
||||
if textureKitID ~= 0 then
|
||||
SetupTextureKits(textureKitID, frame.BackgroundFrame, talkingHeadTextureKitRegionFormatStrings, false, true);
|
||||
SetupTextureKits(textureKitID, frame.PortraitFrame, talkingHeadTextureKitRegionFormatStrings, false, true);
|
||||
textureKit = GetUITextureKitInfo(textureKitID);
|
||||
else
|
||||
SetupAtlasesOnRegions(frame.BackgroundFrame, talkingHeadDefaultAtlases, true);
|
||||
SetupAtlasesOnRegions(frame.PortraitFrame, talkingHeadDefaultAtlases, true);
|
||||
textureKit = 'Normal';
|
||||
end
|
||||
local nameColor = talkingHeadFontColor[textureKit].Name;
|
||||
local textColor = talkingHeadFontColor[textureKit].Text;
|
||||
local shadowColor = talkingHeadFontColor[textureKit].Shadow;
|
||||
frame.NameFrame.Name:SetTextColor(nameColor:GetRGB());
|
||||
frame.NameFrame.Name:SetShadowColor(shadowColor:GetRGBA());
|
||||
frame.TextFrame.Text:SetTextColor(textColor:GetRGB());
|
||||
frame.TextFrame.Text:SetShadowColor(shadowColor:GetRGBA());
|
||||
frame:Show();
|
||||
if currentDisplayInfo ~= displayInfo then
|
||||
model.uiCameraID = cameraID;
|
||||
model:SetDisplayInfo(displayInfo);
|
||||
else
|
||||
if model.uiCameraID ~= cameraID then
|
||||
model.uiCameraID = cameraID;
|
||||
Model_ApplyUICamera(model, model.uiCameraID);
|
||||
end
|
||||
TalkingHeadFrame_SetupAnimations(model);
|
||||
end
|
||||
|
||||
if isNewTalkingHead then
|
||||
TalkingHeadFrame_Reset(frame, textFormatted, name);
|
||||
TalkingHeadFrame_FadeinFrames();
|
||||
else
|
||||
if name ~= frame.NameFrame.Name:GetText() then
|
||||
-- Fade out the old name and fade in the new name
|
||||
frame.NameFrame.Fadeout:Play();
|
||||
E:Delay(0.25, frame.NameFrame.Name.SetText, frame.NameFrame.Name, name);
|
||||
E:Delay(0.5, frame.NameFrame.Fadein.Play, frame.NameFrame.Fadein);
|
||||
|
||||
frame.MainFrame.TalkingHeadsInAnim:Play();
|
||||
end
|
||||
|
||||
if textFormatted ~= frame.TextFrame.Text:GetText() then
|
||||
-- Fade out the old text and fade in the new text
|
||||
frame.TextFrame.Fadeout:Play();
|
||||
E:Delay(0.25, frame.TextFrame.Text.SetText, frame.TextFrame.Text, textFormatted);
|
||||
E:Delay(0.5, frame.TextFrame.Fadein.Play, frame.TextFrame.Fadein);
|
||||
end
|
||||
end
|
||||
|
||||
local success, voHandle = PlaySound(vo, 'Talking Head', true, true);
|
||||
if success then
|
||||
frame.voHandle = voHandle;
|
||||
end
|
||||
end
|
||||
end]]
|
||||
|
||||
function S:Blizzard_TalkingHeadUI()
|
||||
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.talkinghead) then return end
|
||||
|
||||
local TalkingHeadFrame = _G.TalkingHeadFrame
|
||||
|
||||
TalkingHeadFrame.BackgroundFrame.TextBackground:SetAtlas(nil)
|
||||
TalkingHeadFrame.PortraitFrame.Portrait:SetAtlas(nil)
|
||||
TalkingHeadFrame.MainFrame.Model.PortraitBg:SetAtlas(nil)
|
||||
TalkingHeadFrame.PortraitFrame:StripTextures()
|
||||
|
||||
if E.db.general.talkingHeadFrameBackdrop then
|
||||
TalkingHeadFrame:StripTextures()
|
||||
TalkingHeadFrame.MainFrame:StripTextures()
|
||||
TalkingHeadFrame:CreateBackdrop('Transparent')
|
||||
|
||||
local button = TalkingHeadFrame.MainFrame.CloseButton
|
||||
S:HandleCloseButton(button)
|
||||
button:ClearAllPoints()
|
||||
button:Point('TOPRIGHT', TalkingHeadFrame.BackgroundFrame, 'TOPRIGHT', 0, -2)
|
||||
else
|
||||
TalkingHeadFrame.MainFrame.Model:CreateBackdrop('Transparent')
|
||||
TalkingHeadFrame.MainFrame.Model.backdrop:ClearAllPoints()
|
||||
TalkingHeadFrame.MainFrame.Model.backdrop:Point('CENTER')
|
||||
TalkingHeadFrame.MainFrame.Model.backdrop:Size(120, 119)
|
||||
|
||||
TalkingHeadFrame.MainFrame.CloseButton:Kill()
|
||||
end
|
||||
|
||||
TalkingHeadFrame.BackgroundFrame.TextBackground.SetAtlas = E.noop
|
||||
TalkingHeadFrame.PortraitFrame.Portrait.SetAtlas = E.noop
|
||||
TalkingHeadFrame.MainFrame.Model.PortraitBg.SetAtlas = E.noop
|
||||
|
||||
TalkingHeadFrame.NameFrame.Name:SetTextColor(1, 0.82, 0.02)
|
||||
TalkingHeadFrame.NameFrame.Name.SetTextColor = E.noop
|
||||
TalkingHeadFrame.NameFrame.Name:SetShadowColor(0, 0, 0, 1)
|
||||
TalkingHeadFrame.NameFrame.Name:SetShadowOffset(2, -2)
|
||||
|
||||
TalkingHeadFrame.TextFrame.Text:SetTextColor(1, 1, 1)
|
||||
TalkingHeadFrame.TextFrame.Text.SetTextColor = E.noop
|
||||
TalkingHeadFrame.TextFrame.Text:SetShadowColor(0, 0, 0, 1)
|
||||
TalkingHeadFrame.TextFrame.Text:SetShadowOffset(2, -2)
|
||||
end
|
||||
|
||||
S:AddCallbackForAddon('Blizzard_TalkingHeadUI')
|
||||
Reference in New Issue
Block a user