Add files via upload
This commit is contained in:
+41
-20
@@ -63,7 +63,7 @@ local totalRow = nil
|
||||
---------------------------------------------------------------
|
||||
local function NewStatBlock()
|
||||
return {
|
||||
wins = 0, losses = 0,
|
||||
wins = 0, draws = 0, losses = 0,
|
||||
kills = 0, deaths = 0, hk = 0,
|
||||
marks = 0, honor = 0,
|
||||
bestKB = 0, streak = 0, bestStreak = 0,
|
||||
@@ -84,6 +84,7 @@ local function EnsureDB()
|
||||
if s.bestStreak == nil then s.bestStreak = 0 end
|
||||
if s.hk == nil then s.hk = 0 end
|
||||
if s.marks == nil then s.marks = 0 end
|
||||
if s.draws == nil then s.draws = 0 end
|
||||
db.stats[k] = s
|
||||
end
|
||||
return db
|
||||
@@ -309,22 +310,33 @@ local function RecordEnd(key, index)
|
||||
if not s then return end
|
||||
|
||||
local playerWon = false
|
||||
local isDraw = false
|
||||
local winner = GetBattlefieldWinner()
|
||||
if winner then
|
||||
local myFaction = UnitFactionGroup("player")
|
||||
local wonAsAlliance = (winner == 1 and myFaction == "Alliance")
|
||||
local wonAsHorde = (winner == 0 and myFaction == "Horde")
|
||||
playerWon = wonAsAlliance or wonAsHorde
|
||||
if playerWon then
|
||||
s.wins = s.wins + 1
|
||||
s.streak = s.streak + 1
|
||||
if s.streak > s.bestStreak then s.bestStreak = s.streak end
|
||||
else
|
||||
s.losses = s.losses + 1
|
||||
-- Some server builds (incl. Turtle/Octo) report a draw as a winner
|
||||
-- value that is neither 0 (Horde) nor 1 (Alliance). Treat anything
|
||||
-- else as a draw so it isn't miscounted as a loss.
|
||||
isDraw = (winner ~= 0 and winner ~= 1)
|
||||
if isDraw then
|
||||
s.draws = s.draws + 1
|
||||
s.streak = 0
|
||||
else
|
||||
local wonAsAlliance = (winner == 1 and myFaction == "Alliance")
|
||||
local wonAsHorde = (winner == 0 and myFaction == "Horde")
|
||||
playerWon = wonAsAlliance or wonAsHorde
|
||||
if playerWon then
|
||||
s.wins = s.wins + 1
|
||||
s.streak = s.streak + 1
|
||||
if s.streak > s.bestStreak then s.bestStreak = s.streak end
|
||||
else
|
||||
s.losses = s.losses + 1
|
||||
s.streak = 0
|
||||
end
|
||||
end
|
||||
local isBG = (key == "AV" or key == "WSG" or key == "AB")
|
||||
if isBG then
|
||||
-- Draws award the loss-tier mark count.
|
||||
s.marks = s.marks + (playerWon and MARKS_WIN or MARKS_LOSS)
|
||||
end
|
||||
end
|
||||
@@ -352,9 +364,15 @@ local function RecordEnd(key, index)
|
||||
if key == "AV" or key == "WSG" or key == "AB" then
|
||||
marksMsg = " +" .. (playerWon and MARKS_WIN or MARKS_LOSS) .. " marks"
|
||||
end
|
||||
Print(BG_NAMES[key] .. " recorded ("
|
||||
.. (playerWon and "|cff66ff66win|r" or "|cffff6666loss|r")
|
||||
.. marksMsg .. ").")
|
||||
local outcomeStr
|
||||
if isDraw then
|
||||
outcomeStr = "|cffffff66draw|r"
|
||||
elseif playerWon then
|
||||
outcomeStr = "|cff66ff66win|r"
|
||||
else
|
||||
outcomeStr = "|cffff6666loss|r"
|
||||
end
|
||||
Print(BG_NAMES[key] .. " recorded (" .. outcomeStr .. marksMsg .. ").")
|
||||
end
|
||||
|
||||
---------------------------------------------------------------
|
||||
@@ -763,10 +781,10 @@ end
|
||||
---------------------------------------------------------------
|
||||
-- UI: build row FontStrings inside the stats panel
|
||||
---------------------------------------------------------------
|
||||
local COL_X = { 14, 158, 208, 258, 308, 354, 400, 446, 496, 550, 614 }
|
||||
local COL_W = { 140, 46, 46, 46, 46, 46, 46, 46, 50, 60, 58 }
|
||||
local COL_J = { "LEFT", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER" }
|
||||
local COL_NAMES = { "bg", "games", "win", "loss", "ratio", "kb", "hk", "dth", "kd", "honor", "mk" }
|
||||
local COL_X = { 14, 158, 208, 258, 308, 358, 408, 454, 500, 550, 604, 668 }
|
||||
local COL_W = { 140, 46, 46, 46, 46, 46, 46, 46, 46, 50, 60, 58 }
|
||||
local COL_J = { "LEFT", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER" }
|
||||
local COL_NAMES = { "bg", "games", "win", "draw", "loss", "ratio", "kb", "hk", "dth", "kd", "honor", "mk" }
|
||||
|
||||
local ROW_HEIGHT = 22
|
||||
local ROW_TOP = -34
|
||||
@@ -776,7 +794,7 @@ local function MakeRow(panel, tag, yOff, striped)
|
||||
if striped then
|
||||
local bg = panel:CreateTexture("RPVPRowBG"..tag, "BACKGROUND")
|
||||
bg:SetTexture(1, 1, 1, 0.04)
|
||||
bg:SetWidth(660); bg:SetHeight(ROW_HEIGHT - 2)
|
||||
bg:SetWidth(714); bg:SetHeight(ROW_HEIGHT - 2)
|
||||
bg:SetPoint("TOPLEFT", panel, "TOPLEFT", 14, yOff + 2)
|
||||
end
|
||||
for c = 1, table.getn(COL_NAMES) do
|
||||
@@ -812,7 +830,7 @@ local function BuildStatsRows()
|
||||
local totalY = ROW_TOP - n * ROW_HEIGHT - 4
|
||||
local div = panel:CreateTexture("RPVPTotalDivider", "ARTWORK")
|
||||
div:SetTexture(1, 1, 1, 0.25)
|
||||
div:SetWidth(660); div:SetHeight(1)
|
||||
div:SetWidth(714); div:SetHeight(1)
|
||||
div:SetPoint("TOPLEFT", panel, "TOPLEFT", 14, totalY + 2)
|
||||
|
||||
totalRow = MakeRow(panel, "TOTAL", totalY - 6, false)
|
||||
@@ -847,7 +865,8 @@ local function FormatQueueLine()
|
||||
end
|
||||
|
||||
local function FillRow(r, s)
|
||||
local games = s.wins + s.losses
|
||||
local draws = s.draws or 0
|
||||
local games = s.wins + draws + s.losses
|
||||
local pct = 0
|
||||
if games > 0 then pct = math.floor((s.wins / games) * 100 + 0.5) end
|
||||
local kd = "-"
|
||||
@@ -859,6 +878,7 @@ local function FillRow(r, s)
|
||||
|
||||
r.games:SetText(games)
|
||||
r.win:SetText(s.wins)
|
||||
r.draw:SetText(draws)
|
||||
r.loss:SetText(s.losses)
|
||||
r.ratio:SetText(pct .. "%")
|
||||
r.kb:SetText(s.kills)
|
||||
@@ -892,6 +912,7 @@ function RelationshipsPVP_Refresh()
|
||||
if r then FillRow(r, s) end
|
||||
|
||||
totals.wins = totals.wins + s.wins
|
||||
totals.draws = totals.draws + (s.draws or 0)
|
||||
totals.losses = totals.losses + s.losses
|
||||
totals.kills = totals.kills + s.kills
|
||||
totals.hk = totals.hk + s.hk
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
## Title: Relationships PVP
|
||||
## Notes: PvP panel with per-battleground and per-arena stats, marks, kills/deaths, honor, K/D, and queue controls. Supports the Battleground Finder and Arena on OctoWoW.
|
||||
## Author: Relationship
|
||||
## Version: 1.0
|
||||
## Version: 1.1
|
||||
## SavedVariablesPerCharacter: RelationshipsPVPCharDB
|
||||
|
||||
RelationshipsPVP.xml
|
||||
|
||||
+21
-23
@@ -6,7 +6,7 @@
|
||||
============================================================ -->
|
||||
<Frame name="RelationshipsPVPFrame" parent="UIParent" toplevel="true" movable="true" enableMouse="true" hidden="true" frameStrata="HIGH">
|
||||
<Size>
|
||||
<AbsDimension x="740" y="740"/>
|
||||
<AbsDimension x="790" y="740"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER"/>
|
||||
@@ -74,7 +74,7 @@
|
||||
|
||||
<!-- ================= Stats Panel ================= -->
|
||||
<Frame name="RelationshipsPVPStatsPanel">
|
||||
<Size><AbsDimension x="692" y="266"/></Size>
|
||||
<Size><AbsDimension x="742" y="266"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="24" y="-72"/></Offset>
|
||||
@@ -99,47 +99,51 @@
|
||||
<Size><AbsDimension x="46" y="14"/></Size>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="208" y="-10"/></Offset></Anchor></Anchors>
|
||||
</FontString>
|
||||
<FontString name="RPVPHdrLoss" inherits="GameFontNormalSmall" text="Loss" justifyH="CENTER">
|
||||
<FontString name="RPVPHdrDraw" inherits="GameFontNormalSmall" text="Draw" justifyH="CENTER">
|
||||
<Size><AbsDimension x="46" y="14"/></Size>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="258" y="-10"/></Offset></Anchor></Anchors>
|
||||
</FontString>
|
||||
<FontString name="RPVPHdrRatio" inherits="GameFontNormalSmall" text="Win%" justifyH="CENTER">
|
||||
<FontString name="RPVPHdrLoss" inherits="GameFontNormalSmall" text="Loss" justifyH="CENTER">
|
||||
<Size><AbsDimension x="46" y="14"/></Size>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="308" y="-10"/></Offset></Anchor></Anchors>
|
||||
</FontString>
|
||||
<FontString name="RPVPHdrRatio" inherits="GameFontNormalSmall" text="Win%" justifyH="CENTER">
|
||||
<Size><AbsDimension x="46" y="14"/></Size>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="358" y="-10"/></Offset></Anchor></Anchors>
|
||||
</FontString>
|
||||
<FontString name="RPVPHdrKB" inherits="GameFontNormalSmall" text="KB" justifyH="CENTER">
|
||||
<Size><AbsDimension x="46" y="14"/></Size>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="354" y="-10"/></Offset></Anchor></Anchors>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="408" y="-10"/></Offset></Anchor></Anchors>
|
||||
</FontString>
|
||||
<FontString name="RPVPHdrHK" inherits="GameFontNormalSmall" text="HK" justifyH="CENTER">
|
||||
<Size><AbsDimension x="46" y="14"/></Size>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="400" y="-10"/></Offset></Anchor></Anchors>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="454" y="-10"/></Offset></Anchor></Anchors>
|
||||
</FontString>
|
||||
<FontString name="RPVPHdrDth" inherits="GameFontNormalSmall" text="Deaths" justifyH="CENTER">
|
||||
<Size><AbsDimension x="46" y="14"/></Size>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="446" y="-10"/></Offset></Anchor></Anchors>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="500" y="-10"/></Offset></Anchor></Anchors>
|
||||
</FontString>
|
||||
<FontString name="RPVPHdrKD" inherits="GameFontNormalSmall" text="K/D" justifyH="CENTER">
|
||||
<Size><AbsDimension x="50" y="14"/></Size>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="496" y="-10"/></Offset></Anchor></Anchors>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="550" y="-10"/></Offset></Anchor></Anchors>
|
||||
</FontString>
|
||||
<FontString name="RPVPHdrHonor" inherits="GameFontNormalSmall" text="Honor" justifyH="CENTER">
|
||||
<Size><AbsDimension x="60" y="14"/></Size>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="550" y="-10"/></Offset></Anchor></Anchors>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="604" y="-10"/></Offset></Anchor></Anchors>
|
||||
</FontString>
|
||||
<FontString name="RPVPHdrMk" inherits="GameFontNormalSmall" text="Marks" justifyH="CENTER">
|
||||
<Size><AbsDimension x="58" y="14"/></Size>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="614" y="-10"/></Offset></Anchor></Anchors>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="668" y="-10"/></Offset></Anchor></Anchors>
|
||||
</FontString>
|
||||
|
||||
<Texture name="RPVPHdrDivider" file="Interface\Tooltips\UI-Tooltip-Background">
|
||||
<Size><AbsDimension x="664" y="1"/></Size>
|
||||
<Size><AbsDimension x="714" y="1"/></Size>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="14" y="-28"/></Offset></Anchor></Anchors>
|
||||
<Color r="0.6" g="0.6" b="0.6" a="0.6"/>
|
||||
</Texture>
|
||||
|
||||
<FontString name="RelationshipsPVPExtrasText" inherits="GameFontHighlightSmall" justifyH="LEFT">
|
||||
<Size><AbsDimension x="664" y="16"/></Size>
|
||||
<Size><AbsDimension x="714" y="16"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT"><Offset><AbsDimension x="14" y="10"/></Offset></Anchor>
|
||||
</Anchors>
|
||||
@@ -150,7 +154,7 @@
|
||||
|
||||
<!-- ================= Queue Status Panel ================= -->
|
||||
<Frame name="RelationshipsPVPQueuePanel">
|
||||
<Size><AbsDimension x="692" y="84"/></Size>
|
||||
<Size><AbsDimension x="742" y="84"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="24" y="-368"/></Offset>
|
||||
@@ -164,7 +168,7 @@
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="RelationshipsPVPQueueText" inherits="GameFontHighlightSmall" justifyH="LEFT" justifyV="TOP">
|
||||
<Size><AbsDimension x="664" y="70"/></Size>
|
||||
<Size><AbsDimension x="714" y="70"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT"><Offset><AbsDimension x="14" y="-10"/></Offset></Anchor>
|
||||
</Anchors>
|
||||
@@ -173,15 +177,9 @@
|
||||
</Layers>
|
||||
</Frame>
|
||||
|
||||
<!-- ================= Action Panel =================
|
||||
Layout math (panel width 692, side padding 24 → usable 644):
|
||||
Row 1 (3 BGs) : 3 × 200w + 2 × 22gap = 644
|
||||
Row 2 (4 arena) : 4 × 149w + 3 × 16gap = 596 + 48 = 644
|
||||
Row 4 (4 utility) : 4 × 149w + 3 × 16gap = 644
|
||||
All rows share x=24 left edge and end at x=668 right edge.
|
||||
-->
|
||||
<!-- ================= Action Panel ================= -->
|
||||
<Frame name="RelationshipsPVPActionPanel">
|
||||
<Size><AbsDimension x="692" y="230"/></Size>
|
||||
<Size><AbsDimension x="742" y="230"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="24" y="-472"/></Offset>
|
||||
@@ -280,7 +278,7 @@
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<!-- Row 4: Utility buttons (4 equal-width columns matching arena row) -->
|
||||
<!-- Row 4: Utility buttons -->
|
||||
<Button name="RelationshipsPVPLeave" inherits="UIPanelButtonTemplate" text="Leave / Cancel Queue">
|
||||
<Size><AbsDimension x="149" y="30"/></Size>
|
||||
<Anchors>
|
||||
|
||||
Reference in New Issue
Block a user