diff Hansgar_And_Franzok_Assist.lua @ 7:fe47845b3f17

- frames movable.
author Tercio
date Fri, 13 Mar 2015 17:56:08 -0300
parents 3121ac72fcda
children 3a6b062ecaac
line wrap: on
line diff
--- a/Hansgar_And_Franzok_Assist.lua	Sat Mar 07 18:17:16 2015 -0300
+++ b/Hansgar_And_Franzok_Assist.lua	Fri Mar 13 17:56:08 2015 -0300
@@ -9,14 +9,14 @@
 
 local f = CreateFrame ("frame", "Hansgar_And_Franzok_Assist", UIParent)
 f:SetFrameStrata ("DIALOG")
-f.version = "v0.7"
+f.version = "v0.8"
 
 local tframe = CreateFrame ("frame", "Hansgar_And_Franzok_Assist_PTrack", UIParent)
 
 f:SetSize (155, 156)
 f:SetBackdrop ({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16, insets = {left = -1, right = -1, top = -1, bottom = -1},
 edgeFile = "Interface\\AddOns\\Hansgar_And_Franzok_Assist\\border_2", edgeSize = 8})
-f:SetPoint ("center", UIParent, "center")
+f:SetPoint ("center", UIParent, "center", 300, 200)
 f:SetBackdropColor (0, 0, 0, 0)
 f:SetBackdropBorderColor (0, 0, 0, 1)
 f:SetMovable (true)
@@ -36,34 +36,112 @@
 frame_event:RegisterEvent ("ADDON_LOADED")
 
 --
-local player_bar = CreateFrame ("statusbar", "Hansgar_And_Franzok_AssistPlayerBar", f)
-player_bar:SetPoint ("topleft", f, "bottomleft", 0, -3)
-player_bar:SetPoint ("topright", f, "bottomright", 0, -3)
-player_bar:SetHeight (14)
+local player_bar = CreateFrame ("statusbar", "Hansgar_And_Franzok_PlayerAssistBar", UIParent)
+
+--player_bar:SetPoint ("topleft", f, "bottomleft", 0, -3)
+--player_bar:SetPoint ("topright", f, "bottomright", 0, -3)
+
+player_bar:SetPoint ("center", UIParent, "center", 0, 300)
+player_bar:SetSize (280, 22)
+
+player_bar:SetMovable (true)
+player_bar:EnableMouse (true)
+player_bar:SetResizable (true)
 player_bar:SetStatusBarColor (0, 0, 0, 0)
 player_bar:SetMinMaxValues (0, 100)
 player_bar:SetValue (0)
+player_bar:SetMinResize (50, 15)
+player_bar:SetMaxResize (500, 40)
+player_bar:Hide()
+
+local player_bar_backgroud = player_bar:CreateTexture (nil, "background")
+player_bar_backgroud:SetTexture (0, 0, 0, 0.2)
+player_bar_backgroud:SetAllPoints()
+
+local icon = player_bar:CreateTexture (nil, "overlay")
+icon:SetTexture ([[Interface\HELPFRAME\ReportLagIcon-Movement]])
+icon:SetPoint ("left", player_bar, "left")
+icon:SetDesaturated (true)
+player_bar.icon = icon
+
+local text = player_bar:CreateFontString (nil, "overlay", "GameFontNormal")
+text:SetPoint ("right", player_bar, "right", -2, 0)
+player_bar.text = text
+
+player_bar:SetScript ("OnMouseDown", function (self)
+	if (not self.isMoving) then
+		self:StartMoving()
+		self.isMoving = true
+	end
+end)
+player_bar:SetScript ("OnMouseUp", function (self)
+	if (self.isMoving) then
+		self:StopMovingOrSizing()
+		self.isMoving = false
+	end
+end)
+player_bar:SetScript ("OnSizeChanged", function (self)
+	self.icon:SetSize (self:GetHeight(), self:GetHeight())
+	
+end)
+local grip = CreateFrame ("button", "Hansgar_And_Franzok_AssistPlayerBarButton", player_bar)
+grip:SetPoint ("bottomright", player_bar, "bottomright")
+grip:SetSize (16, 16)
+grip:SetScript ("OnMouseDown", function (self, button)
+	if (not player_bar.isMoving and button == "LeftButton") then
+		player_bar:StartSizing ("bottomright")
+		player_bar.isMoving = true
+	end
+end)
+grip:SetScript ("OnMouseUp", function (self, button)
+	if (player_bar.isMoving and button == "LeftButton") then
+		player_bar:StopMovingOrSizing()
+		player_bar.isMoving = false
+	end
+end)
+grip:SetNormalTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Up]])
+grip:SetHighlightTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Highlight]])
+grip:SetPushedTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Down]])
+
+player_bar.grip = grip
 f.player_bar = player_bar
 
+
 player_bar.texture = player_bar:CreateTexture (nil, "overlay")
 player_bar.texture:SetTexture ("Interface\\AddOns\\Hansgar_And_Franzok_Assist\\bar_skyline")
 player_bar:SetStatusBarTexture (player_bar.texture)
 
 --
 
-local player_pos_frame = CreateFrame ("frame", "Hansgar_And_Franzok_Assist_DanceBar", UIParent)
-player_pos_frame:SetPoint ("topleft", player_bar, "bottomleft", 0, -3)
-player_pos_frame:SetPoint ("topright", player_bar, "bottomright", 0, -3)
-player_pos_frame:SetHeight (14)
-player_pos_frame:SetBackdrop ({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16, insets = {left = -1, right = -1, top = -1, bottom = -1},
-edgeFile = "Interface\\AddOns\\Hansgar_And_Franzok_Assist\\border_2", edgeSize = 8})
-player_pos_frame:SetBackdropColor (0, 0, 0, 1)
+local player_pos_frame = CreateFrame ("frame", "Hansgar_And_Franzok_Assist_BarDance", UIParent)
+--player_pos_frame:SetPoint ("topleft", player_bar, "bottomleft", 0, -3)
+--player_pos_frame:SetPoint ("topright", player_bar, "bottomright", 0, -3)
+
+player_pos_frame:SetPoint ("center", UIParent, "center", 0, -75)
+
+player_pos_frame:SetSize (155, 6)
+player_pos_frame:SetBackdrop ({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16})
+player_pos_frame:SetBackdropColor (0, 0, 0, 0.4)
+player_pos_frame:SetMovable (true)
+player_pos_frame:EnableMouse (true)
+player_pos_frame:SetScript ("OnMouseDown", function (self)
+	if (not self.isMoving) then
+		self:StartMoving()
+		self.isMoving = true
+	end
+end)
+player_pos_frame:SetScript ("OnMouseUp", function (self)
+	if (self.isMoving) then
+		self:StopMovingOrSizing()
+		self.isMoving = false
+	end
+end)
 player_pos_frame:Hide()
 
 --red
 local t1 = player_pos_frame:CreateTexture (nil, "artwork")
 t1:SetPoint ("left", player_pos_frame, "left")
-t1:SetSize (player_pos_frame:GetWidth()*0.30, 14)
+t1:SetSize (player_pos_frame:GetWidth()*0.30, 6)
 t1:SetTexture (1, 1, 1)
 --t1:SetTexCoord (260/512, 430/512, 29/256, 82/256)
 t1:SetVertexColor (1, 0.2, 0.2, 0.4)
@@ -71,13 +149,13 @@
 --green
 local t2 = player_pos_frame:CreateTexture (nil, "artwork")
 t2:SetPoint ("left", t1, "right")
-t2:SetSize (player_pos_frame:GetWidth()*0.15, 14)
+t2:SetSize (player_pos_frame:GetWidth()*0.15, 6)
 t2:SetTexture (0.2, 1, 0.2, 0.4)
 
 --red
 local middle = player_pos_frame:CreateTexture (nil, "artwork")
 middle:SetPoint ("left", t2, "right")
-middle:SetSize (player_pos_frame:GetWidth()*0.10, 14)
+middle:SetSize (player_pos_frame:GetWidth()*0.10, 6)
 middle:SetTexture (1, 1, 1)
 --middle:SetTexCoord (260/512, 430/512, 29/256, 82/256)
 middle:SetVertexColor (1, 0.2, 0.2, 0.4)
@@ -85,13 +163,13 @@
 --green
 local t3 = player_pos_frame:CreateTexture (nil, "artwork")
 t3:SetPoint ("left", middle, "right")
-t3:SetSize (player_pos_frame:GetWidth()*0.15, 14)
+t3:SetSize (player_pos_frame:GetWidth()*0.15, 6)
 t3:SetTexture (0.2, 1, 0.2, 0.4)
 
 --red
 local t4 = player_pos_frame:CreateTexture (nil, "artwork")
 t4:SetPoint ("left", t3, "right")
-t4:SetSize (player_pos_frame:GetWidth()*0.30, 14)
+t4:SetSize (player_pos_frame:GetWidth()*0.30, 6)
 t4:SetTexture (1, 1, 1)
 --t4:SetTexCoord (260/512, 430/512, 29/256, 82/256)
 t4:SetVertexColor (1, 0.2, 0.2, 0.4)
@@ -194,8 +272,16 @@
 		if (db.FACING_SIDE == nil) then
 			db.FACING_SIDE = 1
 		end
+		if (db.SHOW_MAIN_FRAME == nil) then
+			db.SHOW_MAIN_FRAME = true
+		end
+		if (db.PLAY_SOUND == nil) then
+			db.PLAY_SOUND = false
+		end
 		--
-
+		
+		f:SetLockState (true)
+		
 	elseif (event == "ENCOUNTER_START" or event == "ENCOUNTER_END") then
 	
 		local encounterID, encounterName, difficultyID, raidSize = select (1, ...)
@@ -283,6 +369,11 @@
 		end
 		f:EndTrackPlayerPosition()
 
+	elseif (command == "unlock") then
+		db.FRAME_LOCK = true
+		f:SetLockState()
+		print ("|cFFFFAA00Hansgar and Franzok Assist|r frame unlocked.")
+
 	elseif (command == "lock") then
 		f:SetLockState()
 		
@@ -393,13 +484,19 @@
 		local time_limit_at = f.block_tracker [player_block] + db.STAMPERS_DELAY
 		local time_now = GetTime()
 		
-		f.player_bar:SetValue ((time_limit_at - time_now) / db.STAMPERS_DELAY * 100)
+		local timeleft = time_limit_at - time_now
+		f.player_bar:SetValue ((timeleft) / db.STAMPERS_DELAY * 100)
+		if (timeleft > 0) then
+			f.player_bar.text:SetText (format ("%.1f", timeleft))
+		else
+			f.player_bar.text:SetText ("Move!")
+		end
 		f.player_bar:Show()
-		
+
 		local block_frame = f.all_blocks [player_block]
 		f.player_loc_box:SetPoint ("center", block_frame, "center")
 		f.player_loc_box:Show()
-		player_bar:Show()
+
 	else
 		f.player_loc_box:Hide()
 		f.player_bar:Hide()
@@ -415,17 +512,19 @@
 	if (not f.frames_built) then
 		f:CreateWindow()
 	end
-	
+
 	f:ResetBlocks()
 	f.player_loc_box:Hide()
 
 	f.block_tracker = f.block_tracker or {}
 	table.wipe (f.block_tracker)
-	
+
 	SetMapToCurrentZone()
-	
+
 	frame_tracker:SetScript ("OnUpdate", on_update_tracker)
 	f:Show()
+	f.player_bar:Show()
+
 end
 
 function f:StopTracking()
@@ -436,6 +535,8 @@
 	table.wipe (f.block_tracker)
 	f.player_loc_box:Hide()
 	f:Hide()
+	f.player_bar:SetValue (0)
+	f.player_bar:Hide()
 end
 
 local on_mouse_down = function (self)
@@ -523,20 +624,46 @@
 	end
 end
 
-function f:SetLockState()
-	db.FRAME_LOCK = not db.FRAME_LOCK
+function f:SetLockState (just_refresh)
+
+	if (not just_refresh) then
+		db.FRAME_LOCK = not db.FRAME_LOCK
+	end
+	
 	if (db.FRAME_LOCK) then
 		--locked
 		f:EnableMouse (false)
+		player_bar:EnableMouse (false)
+		player_pos_frame:EnableMouse (false)
+		
 		for _, block in ipairs (f.all_blocks) do
 			block:EnableMouse (false)
 		end
+		
+		if (f.StampersPhase and not just_refresh) then
+			f:EndTrackPlayerPosition()
+			f:StopTracking()
+		end
 	else
 		--unlocked
 		f:EnableMouse (true)
+		player_bar:EnableMouse (true)
+		player_pos_frame:EnableMouse (true)
+		
 		for _, block in ipairs (f.all_blocks) do
 			block:EnableMouse (true)
 		end
+		
+		if (not f.StampersPhase and not just_refresh) then
+			f:StartTracking()
+			f:StartTrackPlayerPosition()
+		end
+	end
+	
+	if (not db.FRAME_LOCK) then
+		player_bar.grip:Show()
+	else
+		player_bar.grip:Hide()
 	end
 end
 
@@ -601,7 +728,7 @@
 		
 	end
 	
-	f:SetLockState()
+	f:SetLockState (true)
 	
 	f.frames_built = true
 	
@@ -642,7 +769,7 @@
 --	/hansgar test
 --	/run Hansgar_safe_track [1].block.x1 = 0.50154542922974
 
-local red_alpha_disabled = 0.15
+local red_alpha_disabled = 0.2
 local red_alpha_enabled = 0.5
 
 local green_alpha_disabled = 0.05