режим предатель, преезд всего GlueXML в patch-ruRU-4
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+169
-11
@@ -16,6 +16,9 @@ PAID_FACTION_CHANGE = 3;
|
||||
PAID_SERVICE_CHARACTER_ID = nil;
|
||||
PAID_SERVICE_TYPE = nil;
|
||||
|
||||
GAME_MODE_NORMAL = 0;
|
||||
GAME_MODE_TRAITOR = 1;
|
||||
|
||||
FACTION_BACKDROP_COLOR_TABLE = {
|
||||
["Alliance"] = {0.5, 0.5, 0.5, 0.09, 0.09, 0.19},
|
||||
["Horde"] = {0.5, 0.2, 0.2, 0.19, 0.05, 0.05},
|
||||
@@ -81,6 +84,10 @@ local raceTooltips = {};
|
||||
local classTooltips = {};
|
||||
local detailedRaceTooltips = {};
|
||||
local detailedClassTooltips = {};
|
||||
local GAME_MODE_TILE_BACKGROUNDS = {
|
||||
[GAME_MODE_NORMAL] = "Interface\\GluesVideo\\Assets\\RealmSelection\\Realm1.blp",
|
||||
[GAME_MODE_TRAITOR] = "Interface\\GluesVideo\\Assets\\RealmSelection\\Realm2.blp",
|
||||
};
|
||||
|
||||
local function UTF8Chars(text)
|
||||
return string.gmatch(text or "", "[%z\1-\127\194-\244][\128-\191]*")
|
||||
@@ -636,6 +643,129 @@ function CharacterCreate_PositionAllButtons()
|
||||
CharacterCreate_PositionGenderButtons()
|
||||
end
|
||||
|
||||
function CharacterCreate_CreateWithGameMode(modeId)
|
||||
if PAID_SERVICE_TYPE then
|
||||
return;
|
||||
end
|
||||
|
||||
if modeId ~= GAME_MODE_NORMAL and modeId ~= GAME_MODE_TRAITOR then
|
||||
modeId = GAME_MODE_NORMAL;
|
||||
end
|
||||
|
||||
-- The patched Wow.exe reads the second argument as outfitId
|
||||
-- and writes it into the CMSG_CHAR_CREATE packet.
|
||||
local name = CharacterCreateNameEdit:GetText();
|
||||
message("DEBUG: CreateCharacter('" .. tostring(name) .. "', " .. tostring(modeId) .. ")");
|
||||
CreateCharacter(name, modeId);
|
||||
CharacterCreate.personalizationMode = false;
|
||||
CharacterCreate.gameModeSelectionMode = false;
|
||||
PlaySound("gsCharacterCreationCreateChar");
|
||||
end
|
||||
|
||||
function CharacterCreate_UpdateGameModeVisibility()
|
||||
if not CharacterCreateGameModeFrame then
|
||||
return;
|
||||
end
|
||||
|
||||
if CharacterCreate.personalizationMode and CharacterCreate.gameModeSelectionMode and not PAID_SERVICE_TYPE then
|
||||
CharacterCreateGameModeFrame:Show();
|
||||
else
|
||||
CharacterCreateGameModeFrame:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
local function CharacterCreate_GetEnteredName()
|
||||
local text = "";
|
||||
|
||||
if CharacterCreateNameEdit and CharacterCreateNameEdit.GetText then
|
||||
text = CharacterCreateNameEdit:GetText() or "";
|
||||
end
|
||||
|
||||
text = string.gsub(text, "^%s+", "");
|
||||
text = string.gsub(text, "%s+$", "");
|
||||
return text;
|
||||
end
|
||||
|
||||
local function CharacterCreate_HasEnteredName()
|
||||
return UTF8Length(CharacterCreate_GetEnteredName()) >= MIN_CHAR_NAME_LENGTH;
|
||||
end
|
||||
|
||||
local function CharacterCreate_UpdatePersonalizationStep()
|
||||
if not CharacterCreate.personalizationMode then
|
||||
return;
|
||||
end
|
||||
|
||||
if CharacterCreate.gameModeSelectionMode and not CharacterCreate_HasEnteredName() then
|
||||
CharacterCreate.gameModeSelectionMode = false;
|
||||
end
|
||||
|
||||
local showGameModes = CharacterCreate.gameModeSelectionMode and not PAID_SERVICE_TYPE;
|
||||
|
||||
if showGameModes then
|
||||
CharacterCreateRotateLeft:Hide();
|
||||
CharacterCreateRotateRight:Hide();
|
||||
CharacterCreateRotateLeft30:Hide();
|
||||
CharacterCreateRotateRight30:Hide();
|
||||
CharCreateRandomizeButton:Hide();
|
||||
CharacterCreateNameEdit:Hide();
|
||||
CharacterCreateRandomName:Hide();
|
||||
CharCreateOkayButton:Hide();
|
||||
|
||||
for i=1, NUM_CHAR_CUSTOMIZATIONS do
|
||||
_G["CharacterCustomizationButtonFrame"..i]:Hide();
|
||||
end
|
||||
else
|
||||
CharacterCreateRotateLeft:Show();
|
||||
CharacterCreateRotateRight:Show();
|
||||
CharacterCreateRotateLeft30:Show();
|
||||
CharacterCreateRotateRight30:Show();
|
||||
CharCreateRandomizeButton:Show();
|
||||
CharacterCreateNameEdit:Show();
|
||||
CharacterCreateRandomName:Show();
|
||||
CharCreateOkayButton:Show();
|
||||
|
||||
for i=1, NUM_CHAR_CUSTOMIZATIONS do
|
||||
_G["CharacterCustomizationButtonFrame"..i]:Show();
|
||||
end
|
||||
end
|
||||
|
||||
CharacterCreate_UpdateGameModeVisibility();
|
||||
end
|
||||
|
||||
local function CharacterCreate_InitGameModeTiles()
|
||||
-- Background textures
|
||||
CharacterCreateGameModeNormalBg:SetTexture(GAME_MODE_TILE_BACKGROUNDS[GAME_MODE_NORMAL]);
|
||||
CharacterCreateGameModeTraitorBg:SetTexture(GAME_MODE_TILE_BACKGROUNDS[GAME_MODE_TRAITOR]);
|
||||
|
||||
-- Tile titles (MORPHEUS font)
|
||||
CharacterCreateGameModeNormalTitle:SetFont("Fonts\\MORPHEUS.TTF", 24, "");
|
||||
CharacterCreateGameModeNormalTitle:SetText("Обычный");
|
||||
CharacterCreateGameModeNormalTitle:SetTextColor(0.96, 0.94, 0.88);
|
||||
|
||||
CharacterCreateGameModeTraitorTitle:SetFont("Fonts\\MORPHEUS.TTF", 24, "");
|
||||
CharacterCreateGameModeTraitorTitle:SetText("Предатель");
|
||||
CharacterCreateGameModeTraitorTitle:SetTextColor(0.96, 0.94, 0.88);
|
||||
|
||||
-- Frame header
|
||||
CharacterCreateGameModeFrameTitle:SetFont("Fonts\\MORPHEUS.TTF", 28, "");
|
||||
CharacterCreateGameModeFrameTitle:SetText("ВЫБОР РЕЖИМА");
|
||||
CharacterCreateGameModeFrameTitle:SetTextColor(1.0, 0.82, 0.0);
|
||||
|
||||
CharacterCreateGameModeFrameSubtitle:SetText("Выберите режим для нового персонажа");
|
||||
CharacterCreateGameModeFrameSubtitle:SetTextColor(0.78, 0.72, 0.55);
|
||||
|
||||
-- Play buttons
|
||||
CharacterCreateGameModeNormalPlayButton:SetText("Играть");
|
||||
CharacterCreateGameModeNormalPlayButton:SetScript("OnClick", function()
|
||||
CharacterCreate_CreateWithGameMode(GAME_MODE_NORMAL);
|
||||
end);
|
||||
|
||||
CharacterCreateGameModeTraitorPlayButton:SetText("Играть");
|
||||
CharacterCreateGameModeTraitorPlayButton:SetScript("OnClick", function()
|
||||
CharacterCreate_CreateWithGameMode(GAME_MODE_TRAITOR);
|
||||
end);
|
||||
end
|
||||
|
||||
function CharacterCreate_OnLoad(self)
|
||||
self:SetSequence(0)
|
||||
self:SetCamera(0)
|
||||
@@ -646,9 +776,11 @@ function CharacterCreate_OnLoad(self)
|
||||
CharacterCreate.numClasses = 0
|
||||
CharacterCreate.selectedClass = 0
|
||||
CharacterCreate.selectedGender = 0
|
||||
CharacterCreate.gameModeSelectionMode = false
|
||||
CharacterCreate.personalizationMode = false
|
||||
CharacterCreate_MoveTexturesToBackground()
|
||||
CharacterCreate_SetupCustomButtons()
|
||||
CharacterCreate_InitGameModeTiles()
|
||||
|
||||
for i=1, NUM_CHAR_CUSTOMIZATIONS, 1 do
|
||||
_G["CharacterCustomizationButtonFrame"..i.."Text"]:SetText(_G["CHAR_CUSTOMIZATION"..i.."_DESC"])
|
||||
@@ -778,15 +910,12 @@ function CharacterCreate_TogglePersonalization()
|
||||
CharCreatePersonalizeButton:Hide();
|
||||
CharCreateOkayButton:Show();
|
||||
CharacterCreate_UpdateHairCustomization();
|
||||
CharCreateRandomizeButton:Show();
|
||||
CharacterCreateNameEdit:Show();
|
||||
CharacterCreateRandomName:Show();
|
||||
CharacterCreate.gameModeSelectionMode = false;
|
||||
CharacterCreate_UpdatePersonalizationStep();
|
||||
|
||||
for i=1, NUM_CHAR_CUSTOMIZATIONS do
|
||||
_G["CharacterCustomizationButtonFrame"..i]:Show();
|
||||
end
|
||||
else
|
||||
CharacterCreate.personalizationMode = false;
|
||||
CharacterCreate.gameModeSelectionMode = false;
|
||||
PlaySound("gsCharacterCreationCancel");
|
||||
CharacterCreateRaceButtonsContainer:Show();
|
||||
CharacterCreateClassButtonsContainer:Show();
|
||||
@@ -804,6 +933,7 @@ function CharacterCreate_TogglePersonalization()
|
||||
CharacterCreateRandomName:Hide();
|
||||
CharCreatePersonalizeButton:Show();
|
||||
CharCreateOkayButton:Hide();
|
||||
CharacterCreate_UpdateGameModeVisibility();
|
||||
|
||||
for i=1, NUM_CHAR_CUSTOMIZATIONS do
|
||||
_G["CharacterCustomizationButtonFrame"..i]:Hide();
|
||||
@@ -844,6 +974,7 @@ function CharacterCreate_OnShow()
|
||||
end
|
||||
|
||||
CharacterCreate.personalizationMode = false;
|
||||
CharacterCreate.gameModeSelectionMode = false;
|
||||
CharCreateOkayButton:Hide();
|
||||
|
||||
for i=1, NUM_CHAR_CUSTOMIZATIONS do
|
||||
@@ -865,6 +996,8 @@ function CharacterCreate_OnShow()
|
||||
|
||||
hideScheduled = true
|
||||
HideNameEditFrame:Show()
|
||||
CharacterCreate.gameModeSelectionMode = false;
|
||||
CharacterCreate_UpdateGameModeVisibility();
|
||||
CharacterCreate_PositionAllButtons()
|
||||
end
|
||||
|
||||
@@ -1316,6 +1449,9 @@ function SetCharacterClass(id)
|
||||
end
|
||||
|
||||
function CharacterCreate_OnChar()
|
||||
if CharacterCreate.personalizationMode then
|
||||
CharacterCreate_UpdatePersonalizationStep();
|
||||
end
|
||||
end
|
||||
|
||||
function CharacterCreate_UpdateButtonCheckedStates()
|
||||
@@ -1363,11 +1499,7 @@ end
|
||||
|
||||
function CharacterCreate_OnKeyDown(key)
|
||||
if ( key == "ESCAPE" ) then
|
||||
if (CharacterCreate.personalizationMode == true) then
|
||||
CharacterCreate_TogglePersonalization();
|
||||
else
|
||||
CharacterCreate_Back();
|
||||
end
|
||||
CharacterCreate_Back();
|
||||
elseif ( key == "ENTER" ) then
|
||||
CharacterCreate_Okay();
|
||||
elseif ( key == "PRINTSCREEN" ) then
|
||||
@@ -1381,18 +1513,42 @@ function CharacterCreate_UpdateModel(self)
|
||||
end
|
||||
|
||||
function CharacterCreate_Okay()
|
||||
if ( not PAID_SERVICE_TYPE and CharacterCreate.personalizationMode and not CharacterCreate.gameModeSelectionMode ) then
|
||||
if ( not CharacterCreate_HasEnteredName() ) then
|
||||
CharacterCreateNameEdit:SetFocus();
|
||||
return;
|
||||
end
|
||||
|
||||
CharacterCreate.gameModeSelectionMode = true;
|
||||
CharacterCreate_UpdatePersonalizationStep();
|
||||
return;
|
||||
end
|
||||
|
||||
-- In game mode selection — tile buttons handle character creation
|
||||
if ( not PAID_SERVICE_TYPE and CharacterCreate.gameModeSelectionMode ) then
|
||||
return;
|
||||
end
|
||||
|
||||
if ( PAID_SERVICE_TYPE ) then
|
||||
GlueDialog_Show("CONFIRM_PAID_SERVICE");
|
||||
else
|
||||
message("DEBUG: old path CreateCharacter (no outfitId!)");
|
||||
CreateCharacter(CharacterCreateNameEdit:GetText());
|
||||
end
|
||||
|
||||
CharacterCreate.personalizationMode = false;
|
||||
CharacterCreate.gameModeSelectionMode = false;
|
||||
PlaySound("gsCharacterCreationCreateChar");
|
||||
end
|
||||
|
||||
function CharacterCreate_Back()
|
||||
if (CharacterCreate.personalizationMode == true) then
|
||||
if (CharacterCreate.gameModeSelectionMode == true) then
|
||||
CharacterCreate.gameModeSelectionMode = false;
|
||||
CharacterCreate_UpdatePersonalizationStep();
|
||||
return;
|
||||
end
|
||||
|
||||
CharacterCreate_TogglePersonalization();
|
||||
CharacterCreate.personalizationMode = false;
|
||||
return;
|
||||
@@ -1482,6 +1638,7 @@ end
|
||||
|
||||
function CharacterCreate_ResetState()
|
||||
CharacterCreate.personalizationMode = false;
|
||||
CharacterCreate.gameModeSelectionMode = false;
|
||||
CharacterCreateRaceButtonsContainer:Show();
|
||||
CharacterCreateClassButtonsContainer:Show();
|
||||
CharacterCreateGenderButtonsContainer:Show();
|
||||
@@ -1498,6 +1655,7 @@ function CharacterCreate_ResetState()
|
||||
CharacterCreateRandomName:Hide();
|
||||
CharCreatePersonalizeButton:Show();
|
||||
CharCreateOkayButton:Hide();
|
||||
CharacterCreate_UpdateGameModeVisibility();
|
||||
|
||||
for i=1, NUM_CHAR_CUSTOMIZATIONS do
|
||||
_G["CharacterCustomizationButtonFrame"..i]:Hide();
|
||||
+85
@@ -187,6 +187,57 @@
|
||||
</Button>
|
||||
</Frames>
|
||||
</Frame>
|
||||
<!-- Game mode tile template -->
|
||||
<Frame name="CharacterCreateGameModeTileTemplate" virtual="true" enableMouse="false">
|
||||
<Size x="220" y="126"/>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<Texture name="$parentBg">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" x="4" y="-4"/>
|
||||
<Anchor point="BOTTOMRIGHT" x="-4" y="4"/>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
</Layer>
|
||||
<Layer level="ARTWORK">
|
||||
<Texture name="$parentShade" file="Interface\Tooltips\UI-Tooltip-Background">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" x="4" y="-4"/>
|
||||
<Anchor point="BOTTOMRIGHT" x="-4" y="4"/>
|
||||
</Anchors>
|
||||
<Color r="0" g="0" b="0" a="0.18"/>
|
||||
</Texture>
|
||||
</Layer>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString name="$parentTitle" inherits="GlueFontNormalLarge" justifyH="CENTER">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="0" y="16"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<Button name="$parentPlayButton" inherits="GlueButtonSmallTemplate">
|
||||
<Size x="120" y="26"/>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" x="0" y="12"/>
|
||||
</Anchors>
|
||||
</Button>
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:SetBackdrop({
|
||||
edgeFile = "Interface\\tooltips\\ui-tooltip-border-maw",
|
||||
tile = true,
|
||||
tileSize = 16,
|
||||
edgeSize = 16,
|
||||
insets = { left = 5, right = 5, top = 5, bottom = 5 }
|
||||
});
|
||||
self:SetBackdropBorderColor(0.92, 0.92, 0.92, 0.95);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<ModelFFX name="CharacterCreate" toplevel="true" parent="GlueParent" setAllPoints="true" enableKeyboard="true" hidden="true">
|
||||
<Frames>
|
||||
<Frame name="CharacterCreateFrame" setAllPoints="true" enableMouse="true">
|
||||
@@ -683,6 +734,40 @@
|
||||
</HighlightTexture>
|
||||
</Button>
|
||||
|
||||
<!-- Game mode selection -->
|
||||
<Frame name="CharacterCreateGameModeFrame" hidden="true">
|
||||
<Size x="520" y="190"/>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativeTo="CharacterCreateNameEdit" relativePoint="TOP" x="0" y="26"/>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString name="CharacterCreateGameModeFrameTitle" inherits="GlueFontNormalLarge" justifyH="CENTER">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
<FontString name="CharacterCreateGameModeFrameSubtitle" inherits="GlueFontHighlightSmall" justifyH="CENTER">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="CharacterCreateGameModeFrameTitle" relativePoint="BOTTOM" x="0" y="-6"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<Frame name="CharacterCreateGameModeNormal" inherits="CharacterCreateGameModeTileTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" x="-120" y="-54"/>
|
||||
</Anchors>
|
||||
</Frame>
|
||||
<Frame name="CharacterCreateGameModeTraitor" inherits="CharacterCreateGameModeTileTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" x="120" y="-54"/>
|
||||
</Anchors>
|
||||
</Frame>
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
<Button name="CharCreatePersonalizeButton" inherits="GlueButtonTemplate" text="CHARACTER_CREATE_CUSTOMIZE">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMRIGHT" x="-40" y="20"/>
|
||||
+194
-3
@@ -8,6 +8,163 @@ CHARACTER_ROTATION_CONSTANT = 0.6;
|
||||
|
||||
MAX_CHARACTERS_DISPLAYED = 8;
|
||||
MAX_CHARACTERS_PER_REALM = 8;
|
||||
GAMEMODE_CHARACTER_FLAG_TRAITOR = 0x40000000;
|
||||
CHARACTER_SELECT_DEBUG_CHARFLAGS = true;
|
||||
|
||||
local function CharacterSelect_HasFlag(charFlags, flagMask)
|
||||
if ( type(charFlags) ~= "number" or type(flagMask) ~= "number" ) then
|
||||
return false;
|
||||
end
|
||||
|
||||
if ( bit and bit.band ) then
|
||||
return bit.band(charFlags, flagMask) ~= 0;
|
||||
end
|
||||
|
||||
if ( bit32 and bit32.band ) then
|
||||
return bit32.band(charFlags, flagMask) ~= 0;
|
||||
end
|
||||
|
||||
return math.floor(charFlags / flagMask) % 2 == 1;
|
||||
end
|
||||
|
||||
local function CharacterSelect_IsTraitorCharacter(charFlags)
|
||||
return CharacterSelect_HasFlag(charFlags, GAMEMODE_CHARACTER_FLAG_TRAITOR);
|
||||
end
|
||||
|
||||
local function CharacterSelect_FormatCharFlags(charFlags)
|
||||
if ( type(charFlags) ~= "number" ) then
|
||||
return "nil";
|
||||
end
|
||||
|
||||
charFlags = math.floor(charFlags);
|
||||
return tostring(charFlags).." ("..format("0x%X", charFlags)..")";
|
||||
end
|
||||
|
||||
local function CharacterSelect_GetCharacterInfoDebug(index)
|
||||
local info = { GetCharacterInfo(index) };
|
||||
local count = table.getn(info);
|
||||
local parts = {};
|
||||
|
||||
for i = 1, count do
|
||||
parts[i] = tostring(info[i]);
|
||||
end
|
||||
|
||||
return info, count, table.concat(parts, " | ");
|
||||
end
|
||||
|
||||
local function CharacterSelect_GetDisplayName(index)
|
||||
local info = { GetCharacterInfo(index) };
|
||||
local name = info[1];
|
||||
local charFlags = info[11];
|
||||
|
||||
if ( not name ) then
|
||||
return "";
|
||||
end
|
||||
|
||||
if ( CharacterSelect_IsTraitorCharacter(charFlags) ) then
|
||||
return name.." |cffd9534f[Предатель]|r";
|
||||
end
|
||||
|
||||
return name;
|
||||
end
|
||||
|
||||
local function CharacterSelect_ResetTraitorVisuals(button, buttonIndex)
|
||||
if ( not button ) then
|
||||
return;
|
||||
end
|
||||
|
||||
local generalBg = _G["CharSelectCharacterButton"..buttonIndex.."GeneralBackground"];
|
||||
if ( generalBg ) then
|
||||
generalBg:SetVertexColor(1, 1, 1);
|
||||
end
|
||||
|
||||
local background = _G["CharSelectCharacterButton"..buttonIndex.."Background"];
|
||||
if ( background ) then
|
||||
background:SetVertexColor(1, 1, 1);
|
||||
end
|
||||
|
||||
local traitorGlow = _G["CharSelectCharacterButton"..buttonIndex.."TraitorGlow"];
|
||||
if ( traitorGlow ) then
|
||||
traitorGlow:Hide();
|
||||
end
|
||||
|
||||
local traitorBadge = _G["CharSelectCharacterButton"..buttonIndex.."TraitorBadge"];
|
||||
if ( traitorBadge ) then
|
||||
traitorBadge:Hide();
|
||||
end
|
||||
|
||||
local debugFlagsText = _G["CharSelectCharacterButton"..buttonIndex.."DebugFlags"];
|
||||
if ( debugFlagsText ) then
|
||||
debugFlagsText:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
local function CharacterSelect_UpdateTraitorVisuals(button, buttonIndex, isTraitor)
|
||||
if ( not button ) then
|
||||
return;
|
||||
end
|
||||
|
||||
CharacterSelect_ResetTraitorVisuals(button, buttonIndex);
|
||||
|
||||
if ( not isTraitor ) then
|
||||
return;
|
||||
end
|
||||
|
||||
local generalBg = _G["CharSelectCharacterButton"..buttonIndex.."GeneralBackground"];
|
||||
if ( generalBg ) then
|
||||
generalBg:SetVertexColor(1, 0.78, 0.78);
|
||||
end
|
||||
|
||||
local background = _G["CharSelectCharacterButton"..buttonIndex.."Background"];
|
||||
if ( background ) then
|
||||
background:SetVertexColor(1, 0.72, 0.72);
|
||||
end
|
||||
|
||||
local traitorGlow = _G["CharSelectCharacterButton"..buttonIndex.."TraitorGlow"];
|
||||
if ( not traitorGlow ) then
|
||||
traitorGlow = button:CreateTexture("CharSelectCharacterButton"..buttonIndex.."TraitorGlow", "OVERLAY", nil, 4);
|
||||
traitorGlow:ClearAllPoints();
|
||||
traitorGlow:SetPoint("TOPLEFT", button, "TOPLEFT", -18, 6);
|
||||
traitorGlow:SetSize(256, 70);
|
||||
traitorGlow:SetTexture("Interface\\Glues\\CharacterSelect\\Glue-CharacterSelect-Highlight");
|
||||
traitorGlow:SetBlendMode("ADD");
|
||||
end
|
||||
traitorGlow:SetVertexColor(1, 0.18, 0.18);
|
||||
traitorGlow:SetAlpha(0.55);
|
||||
traitorGlow:Show();
|
||||
|
||||
local traitorBadge = _G["CharSelectCharacterButton"..buttonIndex.."TraitorBadge"];
|
||||
if ( not traitorBadge ) then
|
||||
traitorBadge = button:CreateFontString("CharSelectCharacterButton"..buttonIndex.."TraitorBadge", "OVERLAY", "GlueFontNormalSmall");
|
||||
traitorBadge:ClearAllPoints();
|
||||
traitorBadge:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -18, 10);
|
||||
traitorBadge:SetFont("Fonts\\FRIZQT__.TTF", 10, "OUTLINE");
|
||||
end
|
||||
traitorBadge:SetText("ПРЕДАТЕЛЬ");
|
||||
traitorBadge:SetTextColor(1, 0.25, 0.25);
|
||||
traitorBadge:Show();
|
||||
end
|
||||
|
||||
local function CharacterSelect_UpdateDebugCharFlags(button, buttonIndex, charFlags)
|
||||
local debugFlagsText = _G["CharSelectCharacterButton"..buttonIndex.."DebugFlags"];
|
||||
if ( not debugFlagsText ) then
|
||||
debugFlagsText = button:CreateFontString("CharSelectCharacterButton"..buttonIndex.."DebugFlags", "OVERLAY", "GlueFontDisableSmall");
|
||||
debugFlagsText:ClearAllPoints();
|
||||
debugFlagsText:SetPoint("BOTTOMLEFT", button, "BOTTOMLEFT", 0, 8);
|
||||
debugFlagsText:SetWidth(170);
|
||||
debugFlagsText:SetJustifyH("LEFT");
|
||||
debugFlagsText:SetWordWrap(false);
|
||||
debugFlagsText:SetFont("Fonts\\FRIZQT__.TTF", 8, "OUTLINE");
|
||||
end
|
||||
|
||||
if ( CHARACTER_SELECT_DEBUG_CHARFLAGS ) then
|
||||
debugFlagsText:SetText("flags="..CharacterSelect_FormatCharFlags(charFlags));
|
||||
debugFlagsText:SetTextColor(0.8, 0.8, 0.8);
|
||||
debugFlagsText:Show();
|
||||
else
|
||||
debugFlagsText:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function CharacterSelect_OnLoad(self)
|
||||
@@ -339,13 +496,13 @@ function CharacterSelect_OnEvent(self, event, ...)
|
||||
UpdateAddonButton();
|
||||
elseif ( event == "CHARACTER_LIST_UPDATE" ) then
|
||||
UpdateCharacterList();
|
||||
CharSelectCharacterName:SetText(GetCharacterInfo(self.selectedIndex));
|
||||
CharSelectCharacterName:SetText(CharacterSelect_GetDisplayName(self.selectedIndex));
|
||||
elseif ( event == "UPDATE_SELECTED_CHARACTER" ) then
|
||||
local index = ...;
|
||||
if ( index == 0 ) then
|
||||
CharSelectCharacterName:SetText("");
|
||||
else
|
||||
CharSelectCharacterName:SetText(GetCharacterInfo(index));
|
||||
CharSelectCharacterName:SetText(CharacterSelect_GetDisplayName(index));
|
||||
self.selectedIndex = index;
|
||||
end
|
||||
UpdateCharacterSelection(self);
|
||||
@@ -393,10 +550,12 @@ function UpdateCharacterList()
|
||||
local numChars = GetNumCharacters();
|
||||
local index = 1;
|
||||
local coords;
|
||||
local debugCharFlagsLines = {};
|
||||
|
||||
for i = 1, MAX_CHARACTERS_DISPLAYED do
|
||||
local button = _G["CharSelectCharacterButton"..i];
|
||||
button:Show();
|
||||
CharacterSelect_ResetTraitorVisuals(button, i);
|
||||
end
|
||||
|
||||
_G["CharacterSelectCharacterFrame"]:SetHeight(620);
|
||||
@@ -532,7 +691,18 @@ function UpdateCharacterList()
|
||||
};
|
||||
|
||||
for i=1, numChars, 1 do
|
||||
local name, race, class, level, zone, sex, ghost, PCC, PRC, PFC = GetCharacterInfo(i);
|
||||
local info, infoCount, infoDebug = CharacterSelect_GetCharacterInfoDebug(i);
|
||||
local name = info[1];
|
||||
local race = info[2];
|
||||
local class = info[3];
|
||||
local level = info[4];
|
||||
local zone = info[5];
|
||||
local sex = info[6];
|
||||
local ghost = info[7];
|
||||
local PCC = info[8];
|
||||
local PRC = info[9];
|
||||
local PFC = info[10];
|
||||
local charFlags = info[11];
|
||||
local button = _G["CharSelectCharacterButton"..index];
|
||||
|
||||
if ( not name ) then
|
||||
@@ -581,6 +751,18 @@ function UpdateCharacterList()
|
||||
factionIcon:SetTexture(FACTION_ICONS["Horde"]);
|
||||
end
|
||||
factionIcon:Show();
|
||||
CharacterSelect_UpdateTraitorVisuals(button, index, CharacterSelect_IsTraitorCharacter(charFlags));
|
||||
CharacterSelect_UpdateDebugCharFlags(button, index, charFlags);
|
||||
if ( CHARACTER_SELECT_DEBUG_CHARFLAGS ) then
|
||||
table.insert(
|
||||
debugCharFlagsLines,
|
||||
"#" .. tostring(i) ..
|
||||
" " .. tostring(name) ..
|
||||
" returns=" .. tostring(infoCount) ..
|
||||
" flags=" .. CharacterSelect_FormatCharFlags(charFlags) ..
|
||||
" raw=[" .. infoDebug .. "]"
|
||||
);
|
||||
end
|
||||
|
||||
-- Nombre
|
||||
local nameText = _G["CharSelectCharacterButton"..index.."ButtonTextName"];
|
||||
@@ -741,6 +923,15 @@ function UpdateCharacterList()
|
||||
_G["CharSelectFactionChange"..i]:Hide();
|
||||
|
||||
button:Show();
|
||||
CharacterSelect_ResetTraitorVisuals(button, i);
|
||||
end
|
||||
|
||||
if ( CHARACTER_SELECT_DEBUG_CHARFLAGS and table.getn(debugCharFlagsLines) > 0 ) then
|
||||
local debugCharFlagsMessage = table.concat(debugCharFlagsLines, "\n");
|
||||
if ( CharacterSelect.lastCharFlagsDebugMessage ~= debugCharFlagsMessage ) then
|
||||
CharacterSelect.lastCharFlagsDebugMessage = debugCharFlagsMessage;
|
||||
message("CHAR_ENUM charFlags debug:\n" .. debugCharFlagsMessage);
|
||||
end
|
||||
end
|
||||
|
||||
if ( numChars == 0 ) then
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 136 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user