Advertisement
Fizzlemizz

Ironman.lua

Aug 19th, 2022 (edited)
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 51.05 KB | None | 0 0
  1. --
  2. -- Iron Man
  3. -- Version: 1.0.9.15
  4. -- Author: Walkerbo
  5. -- Date: Monday 31 January 2022
  6. --
  7.  
  8. -- I have tried to name variables, functions, frames, and buttons to be descriptive
  9.  
  10. -- ===================================================================================================
  11. -- ===================================================================================================
  12. -- ===========================         Metrics, Lists & Variables          ===========================
  13. -- ===================================================================================================
  14. -- ===================================================================================================
  15.  
  16. local addonName = "Iron Man"
  17. local versionNumber = "1.0.9.15"
  18. local playerGUID = UnitGUID("Player")
  19.  
  20. -- variables for the get all details function
  21. local DateTable, TemporaryTable, DateString, NameClassRaceString = {}, {}, "", ""
  22.  
  23. local ImageList = {
  24.     IMFrame = "Interface\\AddOns\\IronMan\\Files\\Images\\IronManFrame",
  25.     blue = "Interface\\AddOns\\IronMan\\Files\\Images\\IMBlue",
  26.     goldRed = "Interface\\AddOns\\IronMan\\Files\\Images\\IMRedGold",
  27.     green = "Interface\\AddOns\\IronMan\\Files\\Images\\IMGreen",
  28.     grey = "Interface\\AddOns\\IronMan\\Files\\Images\\IMGrey",
  29.     orange = "Interface\\AddOns\\IronMan\\Files\\Images\\IMOrange",
  30.     purple = "Interface\\AddOns\\IronMan\\Files\\Images\\IMPurple",
  31.     IMBanner = "Interface\\AddOns\\IronMan\\Files\\Images\\IronManBanner"
  32. }
  33.  
  34. local NumberList = {
  35.     achievementCloseButtonX = -5,
  36.     achievementCloseButtonY = -6,
  37.     achievementFrameHeight = 160,
  38.     achievementFramePositionY = 150,
  39.     achievementFrameWidth = 600,
  40.     bottomLeftTextureX = -200,
  41.     bottomRightTextureX = 200,
  42.     buttonSpacerBottom = -20,
  43.     buttonSpacerLeft = 200,
  44.     buttonSpacerTop = 30,
  45.     dateNameTextBoxHeight = 40,
  46.     dateNameTextBoxWidth = 500,
  47.     dateTextBoxBottomGap = 5,
  48.     edgeSize = 20,
  49.     failTextBoxHeight = 80,
  50.     failTextBoxSpacerLeft = 200,
  51.     failTextBoxSpacerTop = 40,
  52.     failTextBoxWidth = 190,
  53.     iconAchievementTextureScale = .25,
  54.     iconTextureScale = .45,
  55.     iconTextureX = -11,
  56.     iconTextureY = 30,
  57.     insetSize = 5,
  58.     interfaceTextureBoxSize = 50,
  59.     interfaceTextureGap = -50,
  60.     interfaceTextureScale = .55,
  61.     maxDeaths = 100,
  62.     maxFails = 100,
  63.     maxJumps = 100,
  64.     maxLevel = 19, -- debug -- GetMaxLevelForPlayerExpansion()
  65.     maxPlayed = 100,
  66.     metaAchievementFramePositionGapY = -40,
  67.     metaAchievementTopGap = -8,
  68.     nameTextBoxBottomGap = -5,
  69.     selectionButtonHeight = 45,
  70.     selectionButtonWidth = 190,
  71.     selectionFrameHeight = 200,
  72.     selectionFramePositionY = 150,
  73.     selectionFrameScale = 1.2,
  74.     selectionFrameWidth = 480,
  75.     textBoxHeight = 190,
  76.     textBoxSpacerLeft = 0,
  77.     textBoxSpacerTop = 0,
  78.     textBoxWidth = 190,
  79.     titleTextBoxHeight = 80,
  80.     titleTextBoxTopGap = -10,
  81.     titleTextBoxWidth = 350,
  82.     scrollFrameNumberOfFrames = 4, -- debug -- 4 or 5
  83.     scrollFrameWidth = 330,
  84.     scrollFrameRowHeight = 80,
  85.     scrollParentTopGap = -135,
  86.     scrollParentHeight = 350,
  87.     scrollParentWidth = 390,
  88.     scrollFrameRowWidth = 355,
  89.     scrollParentGapX = 10,
  90.     scrollAchievementTextBoxWidth = 300,
  91.     scrollAchievementTextBoxHeight = 30
  92. }
  93.  
  94. local FontList = {
  95.     failFont = "Fancy22Font",
  96.     nameDateFont = "Fancy22Font",
  97.     rulesFont = "NumberFontNormalLargeYellow",
  98.     titleFont = "Fancy48Font",
  99.     failColour = "|cffff0000", -- red
  100.     loadColour = "|cffffb90f", -- gold
  101.     titleColour = "|cff00ff00" -- green
  102. }
  103.  
  104. local StringList = {
  105.     ironManLoad = (FontList.loadColour .. " *** " .. addonName .. " - " .. versionNumber .. " Loaded *** \n"),
  106.     acceptChallenge = "Accept Ironman Challenge",
  107.     closeFrameAfterFail = "Goodbye",
  108.     doNotAcceptChallenge = "No Thanks",
  109.     ironManBoosted = (FontList.failColour .. "You boosted"),
  110.     ironManDied = (FontList.failColour .. "You died"),
  111.     ironManEquipped = (FontList.failColour .. "You equipped an item that was not grey"),
  112.     ironManGroup = (FontList.failColour .. "You joined a group"),
  113.     ironManGuild = (FontList.failColour .. "You joined a guild"),
  114.     ironManRaid = (FontList.failColour .. "You joined a raid"),
  115.     ironManRules = ("Level to max following\nthese rules;\n\n1. Only equip grey items\n above starting gear.\n2. Don't join a guild.\n3. Don't join a group.\n4. Don't join a raid.\n5. Don't boost.\n6. Don't die."),
  116.     ironManSuccess = (FontList.titleColour .. "I AM IRON MAN"),
  117.     ironManDeaths = (FontList.failColour .. "1000 Deaths"),
  118.     ironManFails = (FontList.failColour .. "1000 Fails"),
  119.     ironManJumps = (FontList.titleColour .. "1000 Jumps"),
  120.     ironManAllRaces = (FontList.titleColour .. "All Races"),
  121.     ironManAllClasses = (FontList.titleColour .. "All Classes"),
  122.     ironManAllGenders = (FontList.titleColour .. "All Genders")
  123. }
  124.  
  125. local SoundList = {
  126.     failServices = "Interface\\AddOns\\IronMan\\Files\\Sounds\\services.wav",
  127.     iAmIronMan = "Interface\\AddOns\\IronMan\\Files\\Sounds\\IAmIronMan.wav",
  128.     nextTime = "Interface\\AddOns\\IronMan\\Files\\Sounds\\NextTime.wav",
  129.     suitUp = "Interface\\AddOns\\IronMan\\Files\\Sounds\\IronManSuitUp.wav"
  130. }
  131.  
  132. -- list of guild masters used to prevent starting a guild
  133. -- some guild masters have multiple id's as they are found in different areas
  134. local guildMasterVendorList = {
  135.     3370, -- Urtrun Clanbringer
  136.     4161, -- Lysheana
  137.     4613, -- Christopher Drakul
  138.     4974, --Aldwin Laughlin
  139.     5054, -- Krumn
  140.     5130, -- Jondor Steelbrow
  141.     16568, -- Tandrine
  142.     16734, -- Funaam
  143.     28774, -- Andrew Matthews
  144.     52277, -- Droha
  145.     96811, -- Andrew Matthews
  146.     108092, -- Aldwin Laughlin
  147.     130964, -- Christopher Drakul
  148.     142077, -- Dockwarden Finnson
  149.     142179, -- Cringely Rottenfist
  150.     152324, -- Aldwin Laughlin
  151.     177066 -- Lysheana
  152. }
  153.  
  154. -- ===================================================================================================
  155. -- ===================================================================================================
  156. -- ===========================         Functions          ===========================
  157. -- ===================================================================================================
  158. -- ===================================================================================================
  159. local function updateAchievementList() -- debug -- move to function section once working
  160.     local os = FauxScrollFrame_GetOffset(IronManInterfaceScrollFrame)
  161.     for index = 1, NumberList.scrollFrameNumberOfFrames do
  162.         local frame = IronManInterfaceScrollFrame.frames[index]
  163.         local offset = os + index
  164.         local row = IronManInterfaceScrollFrame.frames[index]
  165.         if offset <= #IronManCompleatedAchievements then
  166.             row.texture:SetTexture(IronManCompleatedAchievements[offset].icon)
  167.             row.titleTextBox.text:SetText(IronManCompleatedAchievements[offset].title)
  168.             row.frameNameTextBox.text:SetText(IronManCompleatedAchievements[offset].char)
  169.             row.frameDateTextBox.text:SetText(IronManCompleatedAchievements[offset].date)
  170.             row:Show()
  171.         else
  172.             row:Hide()
  173.         end
  174.     end
  175.     FauxScrollFrame_Update(
  176.         IronManInterfaceScrollFrame,
  177.         #IronManCompleatedAchievements,
  178.         NumberList.scrollFrameNumberOfFrames,
  179.         NumberList.scrollFrameRowHeight
  180.     )
  181. end
  182.  
  183. local function initialiseTables()
  184.     if not IronManGlobalVariables then
  185.         IronManGlobalVariables = {
  186.             metaClasses = false,
  187.             metaClassesSexes = false,
  188.             metaDeaths = false,
  189.             metaFails = false,
  190.             metaJumps = false,
  191.             metaPlayed = false,
  192.             metaRaces = false,
  193.             metaRacesSexes = false,
  194.             totalNumberOfDeaths = 0,
  195.             totalNumberOfFails = 0,
  196.             totalNumberOfJumps = 0,
  197.             totalTimePlayed = 0
  198.         }
  199.         IronManCompleatedAchievements = {}
  200.         IronManClassTable = {
  201.             -- unknown/neutrum = 1  --  male = 2  --   female = 3
  202.             {class = "Warrior", male = false, female = false, classID = 1},
  203.             {class = "Paladin", male = false, female = false, classID = 2},
  204.             {class = "Hunter", male = false, female = false, classID = 3},
  205.             {class = "Rogue", male = false, female = false, classID = 4},
  206.             {class = "Priest", male = false, female = false, classID = 5},
  207.             {class = "Deathknight", male = false, female = false, classID = 6},
  208.             {class = "Shaman", male = false, female = false, classID = 7},
  209.             {class = "Mage", male = false, female = false, classID = 8},
  210.             {class = "Warlock", male = false, female = false, classID = 9},
  211.             {class = "Monk", male = false, female = false, classID = 10},
  212.             {class = "Druid", male = false, female = false, classID = 11},
  213.             {class = "Demonhunter", male = false, female = false, classID = 12},
  214.             {class = "Evoker", male = false, female = false, classID = 123} -- debug --
  215.         }
  216.         IronManRaceTable = {
  217.             -- horde
  218.             {race = "Orc", faction = "Horde", male = false, female = false, raceID = 2},
  219.             {race = "Undead", faction = "Horde", male = false, female = false, raceID = 5},
  220.             {race = "Tauren", faction = "Horde", male = false, female = false, raceID = 6},
  221.             {race = "Troll", faction = "Horde", male = false, female = false, raceID = 8},
  222.             {race = "Blood Elf", faction = "Horde", male = false, female = false, raceID = 10},
  223.             {race = "Goblin", faction = "Horde", male = false, female = false, raceID = 9},
  224.             {race = "Pandaren", faction = "Horde", male = false, female = false, raceID = 26},
  225.             {race = "Nightborne", faction = "Horde", male = false, female = false, raceID = 27},
  226.             {race = "Highmountain Tauren", faction = "Horde", male = false, female = false, raceID = 28},
  227.             {race = "Mag'har Orc", faction = "Horde", male = false, female = false, raceID = 36},
  228.             {race = "Zandalari Troll", faction = "Horde", male = false, female = false, raceID = 31},
  229.             {race = "Vulpera", faction = "Horde", male = false, female = false, raceID = 35},
  230.             {race = "Dracthyr", faction = "Neutral", male = false, female = false, raceID = 123}, -- debug --
  231.             -- alliance
  232.             {race = "Human", faction = "Alliance", male = false, female = false, raceID = 1},
  233.             {race = "Dwarf", faction = "Alliance", male = false, female = false, raceID = 3},
  234.             {race = "Night Elf", faction = "Alliance", male = false, female = false, raceID = 4},
  235.             {race = "Gnome", faction = "Alliance", male = false, female = false, raceID = 7},
  236.             {race = "Draenei", faction = "Alliance", male = false, female = false, raceID = 11},
  237.             {race = "Worgen", faction = "Alliance", male = false, female = false, raceID = 22},
  238.             {race = "Pandaren", faction = "Alliance", male = false, female = false, raceID = 25},
  239.             {race = "Void Elf", faction = "Alliance", male = false, female = false, raceID = 29},
  240.             {race = "Lightforged Draenei", faction = "Alliance", male = false, female = false, raceID = 30},
  241.             {race = "Dark Iron Dwarf", faction = "Alliance", male = false, female = false, raceID = 34},
  242.             {race = "Kul Tiran", faction = "Alliance", male = false, female = false, raceID = 32},
  243.             {race = "Mechagnome", faction = "Alliance", male = false, female = false, raceID = 37},
  244.             -- neutral
  245.             {race = "Pandaren", faction = "Neutral", male = false, female = false, raceID = 24},
  246.             {race = "Dracthyr", faction = "Neutral", male = false, female = false, raceID = 123} -- debug --
  247.         }
  248.     end
  249.     if not IronManCharacterVariables then
  250.         IronManCharacterVariables = {
  251.             isNew = true,
  252.             isAttemptingIronMan = false,
  253.             failedIronMan = false,
  254.             numberOfJumps = 0,
  255.             timePlayed = 0
  256.         }
  257.     end
  258. end
  259.  
  260. local function unregisterEventsIfNotRequired()
  261.     if IronManCharacterVariables.failedIronMan or not IronManCharacterVariables.isAttemptingIronMan then
  262.         --        IronManSelectionFrame:Hide() -- debug --
  263.         IronManSelectionFrame:UnregisterEvent("PLAYER_EQUIPMENT_CHANGED")
  264.         IronManSelectionFrame:UnregisterEvent("PLAYER_LEVEL_CHANGED")
  265.         IronManSelectionFrame:UnregisterEvent("GUILD_INVITE_REQUEST")
  266.         IronManSelectionFrame:UnregisterEvent("PARTY_INVITE_REQUEST")
  267.         IronManSelectionFrame:UnregisterEvent("PLAYER_DEAD")
  268.         IronManSelectionFrame:UnregisterEvent("TIME_PLAYED_MSG")
  269.         IronManSelectionFrame:UnregisterEvent("MERCHANT_SHOW")
  270.         IronManSelectionFrame:UnregisterEvent("PETITION_SHOW")
  271.         IronManSelectionFrame:UnregisterEvent("GOSSIP_SHOW")
  272.         IronManSelectionFrame:UnregisterEvent("LFG_UPDATE_RANDOM_INFO")
  273.         IronManSelectionFrame:UnregisterEvent("GROUP_FORMED")
  274.         IronManSelectionFrame:UnregisterEvent("EQUIP_BIND_CONFIRM")
  275.     end
  276. end
  277.  
  278. local function failedIronManChallenge(failType)
  279.     -- IronManCharacterVariables.failedIronMan = true -- debug --
  280.     -- IronManCharacterVariables.isAttemptingIronMan = false -- debug --
  281.     -- IronManGlobalVariables.totalNumberOfFails = IronManGlobalVariables.totalNumberOfFails + 1
  282.     if IronManCharacterVariables.isAttemptingIronMan then
  283.         if failType == "Died" then
  284.             IronManSelectionFrameTextBoxFailText:SetText(StringList.ironManDied)
  285.             IronManGlobalVariables.totalNumberOfDeaths = IronManGlobalVariables.totalNumberOfDeaths + 1
  286.         elseif failType == "Boosted" then
  287.             IronManSelectionFrameTextBoxFailText:SetText(StringList.ironManBoosted)
  288.         elseif failType == "JoinedRaid" then
  289.             IronManSelectionFrameTextBoxFailText:SetText(StringList.ironManRaid)
  290.         elseif failType == "JoinedGroup" then
  291.             IronManSelectionFrameTextBoxFailText:SetText(StringList.ironManGroup)
  292.         elseif failType == "JoinedGuild" then
  293.             IronManSelectionFrameTextBoxFailText:SetText(StringList.ironManGuild)
  294.         elseif failType == "Equiped" then
  295.             IronManSelectionFrameTextBoxFailText:SetText(StringList.ironManEquipped)
  296.         end
  297.     end
  298.     PlaySoundFile(SoundList.failServices)
  299.     IronManSelectionFrameiconTexture:SetTexture(ImageList.grey)
  300.     unregisterEventsIfNotRequired()
  301.     IronManSelectionFramecloseButton:SetText(StringList.closeFrameAfterFail)
  302.     IronManSelectionFrameselectionButton:Hide()
  303.     IronManSelectionFrameTextBoxFail:Show()
  304.     IronManSelectionFrameTextBoxFailText:Show()
  305.     IronManSelectionFrame:Show()
  306. end
  307.  
  308. local function closeVendorIfIsAGuildMaster()
  309.     local vendorGUID = UnitGUID("target")
  310.     if not vendorGUID then
  311.         return
  312.     end
  313.     local _, _, _, _, _, npcID, _ = strsplit("-", vendorGUID)
  314.     local vendorID = tonumber(npcID)
  315.     for k, v in pairs(guildMasterVendorList) do
  316.         if v == vendorID then
  317.             CloseMerchant()
  318.             C_GossipInfo.CloseGossip()
  319.         end
  320.     end
  321. end
  322.  
  323. local function testForMetaAchievement(NameClassRaceString, DateString)
  324.     local count = 0
  325.     for k, v in pairs(IronManClassTable) do
  326.         if v.male and v.female then
  327.             count = count + 1
  328.         end
  329.     end
  330.     if count == #IronManClassTable and not IronManGlobalVariables.metaClassesSexes then
  331.         IronManGlobalVariables.metaClassesSexes = true
  332.         TemporaryTable = {
  333.             name = NameClassRaceString,
  334.             date = dateString,
  335.             description = StringList.ironManAllGenders,
  336.             icon = "ImageList.purple"
  337.         }
  338.         table.insert(IronManCompleatedAchievements, TemporaryTable)
  339.         IronManMetaAchievementFrameTitleTextBoxText:SetText(StringList.ironManAllGenders)
  340.         IronManMetaAchievementFrameleftTexture:SetTexture(ImageList.purple)
  341.         IronManMetaAchievementFramerightTexture:SetTexture(ImageList.purple)
  342.         IronManMetaAchievementFrameDateTextBoxText:SetText(DateString)
  343.         IronManMetaAchievementFrameNameTextBoxText:SetText(NameClassRaceString)
  344.         IronManMetaAchievementFrame:Show()
  345.     end
  346.     count = 0
  347.     TemporaryTable = {}
  348.  
  349.     for k, v in pairs(IronManClassTable) do
  350.         if v.male or v.female then
  351.             count = count + 1
  352.         end
  353.     end
  354.     if count == #IronManClassTable and not IronManGlobalVariables.metaClasses then
  355.         IronManGlobalVariables.metaClasses = true
  356.         TemporaryTable = {
  357.             name = NameClassRaceString,
  358.             date = dateString,
  359.             description = StringList.ironManAllClasses, -- debug --
  360.             icon = "ImageList.blue"
  361.         }
  362.         table.insert(IronManCompleatedAchievements, TemporaryTable)
  363.         IronManMetaAchievementFrameTitleTextBoxText:SetText(StringList.ironManAllClasses)
  364.         IronManMetaAchievementFrameleftTexture:SetTexture(ImageList.blue)
  365.         IronManMetaAchievementFramerightTexture:SetTexture(ImageList.blue)
  366.         IronManMetaAchievementFrameDateTextBoxText:SetText(DateString)
  367.         IronManMetaAchievementFrameNameTextBoxText:SetText(NameClassRaceString)
  368.         IronManMetaAchievementFrame:Show()
  369.     end
  370.     count = 0
  371.     TemporaryTable = {}
  372.  
  373.     for k, v in pairs(IronManRaceTable) do
  374.         if v.male or v.female then
  375.             count = count + 1
  376.         end
  377.     end
  378.     if count == #IronManRaceTable and not IronManGlobalVariables.metaRaces then
  379.         IronManGlobalVariables.metaRaces = true
  380.         TemporaryTable = {
  381.             name = NameClassRaceString,
  382.             date = dateString,
  383.             description = StringList.ironManAllRaces, -- debug --
  384.             icon = "ImageList.orange"
  385.         }
  386.         table.insert(IronManCompleatedAchievements, TemporaryTable)
  387.         IronManMetaAchievementFrameTitleTextBoxText:SetText(StringList.ironManAllRaces)
  388.         IronManMetaAchievementFrameleftTexture:SetTexture(ImageList.orange)
  389.         IronManMetaAchievementFramerightTexture:SetTexture(ImageList.orange)
  390.         IronManMetaAchievementFrameDateTextBoxText:SetText(DateString)
  391.         IronManMetaAchievementFrameNameTextBoxText:SetText(NameClassRaceString)
  392.         IronManMetaAchievementFrame:Show()
  393.     end
  394.     count = 0
  395.     TemporaryTable = {}
  396.  
  397.     if IronManGlobalVariables.totalNumberOfJumps == NumberList.maxJumps and not IronManGlobalVariables.metaJumps then
  398.         IronManGlobalVariables.metaJumps = true
  399.         TemporaryTable = {
  400.             name = NameClassRaceString,
  401.             date = dateString,
  402.             description = StringList.ironManJumps, -- debug --
  403.             icon = "ImageList.green"
  404.         }
  405.         table.insert(IronManCompleatedAchievements, TemporaryTable)
  406.         IronManMetaAchievementFrameTitleTextBoxText:SetText(StringList.ironManJumps)
  407.         IronManMetaAchievementFrameleftTexture:SetTexture(ImageList.green)
  408.         IronManMetaAchievementFramerightTexture:SetTexture(ImageList.green)
  409.         IronManMetaAchievementFrameDateTextBoxText:SetText(DateString)
  410.         IronManMetaAchievementFrameNameTextBoxText:SetText(NameClassRaceString)
  411.         IronManMetaAchievementFrame:Show()
  412.     end
  413.     count = 0
  414.     TemporaryTable = {}
  415.  
  416.     if IronManGlobalVariables.totalNumberOfFails == NumberList.maxFails and not IronManGlobalVariables.metaFails then
  417.         IronManGlobalVariables.metaFails = true
  418.         TemporaryTable = {
  419.             name = NameClassRaceString,
  420.             date = dateString,
  421.             description = StringList.ironManFails, -- debug --
  422.             icon = "ImageList.grey"
  423.         }
  424.         table.insert(IronManCompleatedAchievements, TemporaryTable)
  425.         IronManMetaAchievementFrameTitleTextBoxText:SetText(StringList.ironManFails)
  426.         IronManMetaAchievementFrameleftTexture:SetTexture(ImageList.grey)
  427.         IronManMetaAchievementFramerightTexture:SetTexture(ImageList.grey)
  428.         IronManMetaAchievementFrameDateTextBoxText:SetText(DateString)
  429.         IronManMetaAchievementFrameNameTextBoxText:SetText(NameClassRaceString)
  430.         IronManMetaAchievementFrame:Show()
  431.     end
  432.     count = 0
  433.     TemporaryTable = {}
  434.  
  435.     if IronManGlobalVariables.totalNumberOfDeaths == NumberList.maxDeaths and not IronManGlobalVariables.metaDeaths then
  436.         IronManGlobalVariables.metaDeaths = true
  437.         TemporaryTable = {
  438.             name = NameClassRaceString,
  439.             date = dateString,
  440.             description = StringList.ironManDeaths, -- debug --
  441.             icon = "ImageList.grey"
  442.         }
  443.         table.insert(IronManCompleatedAchievements, TemporaryTable)
  444.         IronManMetaAchievementFrameTitleTextBoxText:SetText(StringList.ironManDeaths)
  445.         IronManMetaAchievementFrameleftTexture:SetTexture(ImageList.grey)
  446.         IronManMetaAchievementFramerightTexture:SetTexture(ImageList.grey)
  447.         IronManMetaAchievementFrameDateTextBoxText:SetText(DateString)
  448.         IronManMetaAchievementFrameNameTextBoxText:SetText(NameClassRaceString)
  449.         IronManMetaAchievementFrame:Show()
  450.     end
  451.     count = 0
  452.     TemporaryTable = {}
  453. end
  454.  
  455. local function updateClassRaceTables(race, class, sex)
  456.     for k, v in pairs(IronManClassTable) do
  457.         if v.class == class then
  458.             if sex == "Male" then
  459.                 v.male = true
  460.             end
  461.             if sex == "Female" then
  462.                 v.female = true
  463.             end
  464.         end
  465.     end
  466.  
  467.     for k, v in pairs(IronManRaceTable) do
  468.         if v.race == race then
  469.             if sex == "Male" then
  470.                 v.male = true
  471.             end
  472.             if sex == "Female" then
  473.                 v.female = true
  474.             end
  475.         end
  476.     end
  477. end
  478.  
  479. local function getAllCharacterInfo()
  480.     local characterGUID = UnitGUID("player")
  481.     local class, _, race, _, sex, name = GetPlayerInfoByGUID(characterGUID)
  482.     local faction = UnitFactionGroup("Player")
  483.     local icon
  484.     for k, v in pairs(date("*t")) do
  485.         DateTable[k] = v
  486.     end
  487.     if DateTable.wday == 1 then
  488.         DateTable.wday = "Sun"
  489.     elseif DateTable.wday == 2 then
  490.         DateTable.wday = "Mon"
  491.     elseif DateTable.wday == 3 then
  492.         DateTable.wday = "Tue"
  493.     elseif DateTable.wday == 4 then
  494.         DateTable.wday = "Wed"
  495.     elseif DateTable.wday == 5 then
  496.         DateTable.wday = "Thu"
  497.     elseif DateTable.wday == 6 then
  498.         DateTable.wday = "Fri"
  499.     elseif DateTable.wday == 7 then
  500.         DateTable.wday = "Sat"
  501.     end
  502.  
  503.     if DateTable.month == 1 then
  504.         DateTable.month = "Jan"
  505.     elseif DateTable.month == 2 then
  506.         DateTable.month = "Feb"
  507.     elseif DateTable.month == 3 then
  508.         DateTable.month = "Mar"
  509.     elseif DateTable.month == 4 then
  510.         DateTable.month = "Apr"
  511.     elseif DateTable.month == 5 then
  512.         DateTable.month = "May"
  513.     elseif DateTable.month == 6 then
  514.         DateTable.month = "Jun"
  515.     elseif DateTable.month == 7 then
  516.         DateTable.month = "Jul"
  517.     elseif DateTable.month == 8 then
  518.         DateTable.month = "Aug"
  519.     elseif DateTable.month == 9 then
  520.         DateTable.month = "Sep"
  521.     elseif DateTable.month == 10 then
  522.         DateTable.month = "Oct"
  523.     elseif DateTable.month == 11 then
  524.         DateTable.month = "Nov"
  525.     elseif DateTable.month == 12 then
  526.         DateTable.month = "Dec"
  527.     end
  528.  
  529.     if sex == 1 then
  530.         sex = "Neutral"
  531.     elseif sex == 2 then
  532.         sex = "Male"
  533.     elseif sex == 3 then
  534.         sex = "Female"
  535.     end
  536.  
  537.     DateString = (DateTable.wday .. " " .. DateTable.day .. " " .. DateTable.month .. " " .. DateTable.year)
  538.     NameClassRaceString = (name .. " - level " .. GetMaxLevelForPlayerExpansion() .. " " .. race .. " " .. class)
  539.  
  540.     TemporaryTable = {
  541.         date = DateString,
  542.         char = NameClassRaceString,
  543.         description = StringList.ironManSuccess,
  544.         icon = "ImageList.goldRed"
  545.     }
  546.     table.insert(IronManCompleatedAchievements, TemporaryTable)
  547.     TemporaryTable = {}
  548.     IronManSelectionFrame:ClearAllPoints()
  549.     IronManSelectionFrame:SetPoint("CENTER", 0, NumberList.selectionFramePositionY)
  550.     IronManAchievementFrame:ClearAllPoints()
  551.     IronManAchievementFrame:SetPoint("CENTER", 0, NumberList.achievementFramePositionY)
  552.     IronManMetaAchievementFrame:ClearAllPoints()
  553.     IronManMetaAchievementFrame:SetPoint("TOP", IronManAchievementFrame, "BOTTOM", 0, NumberList.metaAchievementTopGap)
  554.  
  555.     updateClassRaceTables(race, class, sex)
  556.     testForMetaAchievement(NameClassRaceString, DateString)
  557. end
  558.  
  559. -- ===================================================================================================
  560. -- ===================================================================================================
  561. -- ===========================         Hook Functions          ===========================
  562. -- ===================================================================================================
  563. -- ===================================================================================================
  564.  
  565. local function myHookFunctions()
  566.     -- hook jump function
  567.     hooksecurefunc(
  568.         "JumpOrAscendStart",
  569.         function()
  570.             if IsFlying() or IsSwimming() or IsMounted() or IsFalling() then
  571.                 return
  572.             else
  573.                 IronManCharacterVariables.numberOfJumps = IronManCharacterVariables.numberOfJumps + 1
  574.             end
  575.         end
  576.     )
  577.     -- hook character equipment manager button
  578.     hooksecurefunc(
  579.         "EquipmentFlyoutPopoutButton_ShowAll",
  580.         function()
  581.             ToggleCharacter("PaperDollFrame")
  582.         end
  583.     )
  584.  
  585.     -- not a hook but I must disable the LFG tool and it is better grouped here
  586.     local functionIWantToDisable, isFunctionStillRelevent = PVEFrame_ToggleFrame, false
  587.     function PVEFrame_ToggleFrame()
  588.         if isFunctionStillRelevent then
  589.             return functionIWantToDisable()
  590.         end
  591.     end
  592. end
  593.  
  594. -- ===================================================================================================
  595. -- ===================================================================================================
  596. -- ===========================         Frames          ===========================
  597. -- ===================================================================================================
  598. -- ===================================================================================================
  599.  
  600. -- InterfaceOptions_AddCategory(IronManSelectionFrame) -- debug --
  601.  
  602. local IronManSelectionFrame = CreateFrame("Frame", "IronManSelectionFrame", UIParent, "HelpFrameContainerFrameTemplate")
  603. IronManSelectionFrame:SetSize(NumberList.selectionFrameWidth, NumberList.selectionFrameHeight)
  604. IronManSelectionFrame:SetScale(NumberList.selectionFrameScale)
  605. IronManSelectionFrame:ClearAllPoints()
  606. IronManSelectionFrame:SetPoint("CENTER", 0, NumberList.selectionFramePositionY)
  607. IronManSelectionFrame:EnableMouse(true) -- debug --
  608. IronManSelectionFrame:SetMovable(true) -- debug --
  609. IronManSelectionFrame:SetClampedToScreen(true) -- debug --
  610. IronManSelectionFrame:RegisterForDrag("RightButton", "LeftButton") -- debug --
  611. IronManSelectionFrame:SetScript("OnDragStart", IronManSelectionFrame.StartMoving) -- debug --
  612. IronManSelectionFrame:SetScript("OnDragStop", IronManSelectionFrame.StopMovingOrSizing) -- debug --
  613. IronManSelectionFrame:SetToplevel(true)
  614. IronManSelectionFrame:SetScript(
  615.     "OnEvent",
  616.     function(self, event, ...)
  617.         if event == "PLAYER_LOGIN" then
  618.             print(StringList.ironManLoad)
  619.             --            unregisterEventsIfNotRequired() -- debug --
  620.             initialiseTables()
  621.             if IronManCharacterVariables.isNew then
  622.                 IronManCharacterVariables.isNew = false
  623.                 C_EquipmentSet.CreateEquipmentSet("IronMan", 1035053) -- create new equipment set
  624.                 RequestTimePlayed() -- need this to test if character is brand new
  625.             end
  626.             if IronManCharacterVariables.isAttemptingIronMan then
  627.                 myHookFunctions()
  628.             else
  629.                 unregisterEventsIfNotRequired()
  630.             end
  631.             updateAchievementList()
  632.         elseif event == "TIME_PLAYED_MSG" then
  633.             local totalTimePlayed = ...
  634.             if totalTimePlayed < 15 then -- if time played less than 15 seconds should be a new character
  635.                 if IsCharacterNewlyBoosted() then
  636.                     IronManCharacterVariables.failedIronMan = true
  637.                     failedIronManChallenge("Boosted")
  638.                     IronManSelectionFrame:Hide()
  639.                 else
  640.                     IronManSelectionFrame:Show()
  641.                 end
  642.                 print(totalTimePlayed) -- debug --
  643.             end
  644.         elseif event == "PLAYER_DEAD" then
  645.             failedIronManChallenge("Died")
  646.         elseif event == "PLAYER_LEVEL_CHANGED" then
  647.             local oldLevel, newLevel = ...
  648.             local levelChangeIncrease = newLevel - oldLevel
  649.             if levelChangeIncrease > 1 then
  650.                 failedIronManChallenge("Boosted")
  651.             elseif IsCharacterNewlyBoosted() then
  652.                 failedIronManChallenge("Boosted")
  653.             elseif newLevel == NumberList.maxLevel then -- debug -- GetMaxLevelForPlayerExpansion()
  654.                 getAllCharacterInfo()
  655.                 IronManCharacterVariables.isAttemptingIronMan = false -- hit max level so no longer attemepting
  656.                 IronManAchievementFrameNameTextBoxText:SetText(NameClassRaceString)
  657.                 IronManAchievementFrameDateTextBoxText:SetText(DateString)
  658.                 IronManMetaAchievementFrameNameTextBoxText:SetText(NameClassRaceString)
  659.                 IronManMetaAchievementFrameDateTextBoxText:SetText(DateString)
  660.                 IronManAchievementFrame:Show()
  661.                 Screenshot()
  662.             end
  663.         elseif event == "PLAYER_EQUIPMENT_CHANGED" then
  664.             local equipmentSlot = ...
  665.             local itemQuality = GetInventoryItemQuality("player", equipmentSlot)
  666.             if itemQuality ~= 0 then -- if item is not grey
  667.                 C_EquipmentSet.UseEquipmentSet(0)
  668.             else
  669.                 for k, v in pairs(C_EquipmentSet.GetEquipmentSetIDs()) do
  670.                     C_EquipmentSet.DeleteEquipmentSet(v) -- delete all equipment sets
  671.                 end
  672.                 C_EquipmentSet.CreateEquipmentSet("IronMan", 1035053) -- create new equipment set
  673.             end
  674.         elseif event == "GUILD_INVITE_REQUEST" then
  675.             DeclineGuild()
  676.         elseif event == "PARTY_INVITE_REQUEST" then
  677.             DeclineGroup()
  678.         elseif event == "MERCHANT_SHOW" then
  679.             closeVendorIfIsAGuildMaster()
  680.         elseif event == "GOSSIP_SHOW" then
  681.             closeVendorIfIsAGuildMaster()
  682.         elseif event == "PETITION_SHOW" then
  683.             ClosePetition()
  684.         elseif event == "GROUP_FORMED" then
  685.             failedIronManChallenge("JoinedGroup")
  686.         elseif event == "EQUIP_BIND_CONFIRM" then
  687.             ClearCursor()
  688.         end
  689.     end
  690. )
  691. IronManSelectionFrame:RegisterEvent("PLAYER_LOGIN") -- fires when a player logs in or reloads
  692. IronManSelectionFrame:RegisterEvent("PLAYER_EQUIPMENT_CHANGED") -- fires when a character changes equipment, returns equipmentSlot
  693. IronManSelectionFrame:RegisterEvent("PLAYER_LEVEL_CHANGED") -- fires when a character levels up, returns oldLevel, newLevel
  694. IronManSelectionFrame:RegisterEvent("GUILD_INVITE_REQUEST") -- fires when a charater receives a guild invite
  695. IronManSelectionFrame:RegisterEvent("PARTY_INVITE_REQUEST") -- fires when a character recieves a group invite
  696. IronManSelectionFrame:RegisterEvent("PLAYER_DEAD") -- fires when a character dies
  697. IronManSelectionFrame:RegisterEvent("TIME_PLAYED_MSG") -- fires when a timeplayed is requested, returns totalTimePlayed
  698. IronManSelectionFrame:RegisterEvent("MERCHANT_SHOW") -- fires you open a vendor
  699. IronManSelectionFrame:RegisterEvent("PETITION_SHOW") -- fires when guild petition is shown
  700. IronManSelectionFrame:RegisterEvent("GOSSIP_SHOW") -- fires when you see a gossip window
  701. IronManSelectionFrame:RegisterEvent("LFG_UPDATE_RANDOM_INFO") -- fires when the LFD frame is shown
  702. IronManSelectionFrame:RegisterEvent("GROUP_FORMED") -- fires when joined group
  703. IronManSelectionFrame:RegisterEvent("EQUIP_BIND_CONFIRM") -- fires when an equip confirm box is shown
  704.  
  705. IronManSelectionFrame.iconTexture = IronManSelectionFrame:CreateTexture("IronManSelectionFrameiconTexture")
  706. IronManSelectionFrameiconTexture:SetScale(NumberList.iconTextureScale)
  707. IronManSelectionFrameiconTexture:SetTexture(ImageList.goldRed)
  708. IronManSelectionFrameiconTexture:SetPoint("LEFT", IronManSelectionFrame)
  709.  
  710. IronManSelectionFrame.selectionButton =
  711.     CreateFrame("Button", "IronManSelectionFrameselectionButton", IronManSelectionFrame, "SharedButtonTemplate")
  712. IronManSelectionFrameselectionButton:SetSize(NumberList.selectionButtonWidth, NumberList.selectionButtonHeight)
  713. IronManSelectionFrameselectionButton:SetPoint(
  714.     "CENTER",
  715.     IronManSelectionFrame,
  716.     "LEFT",
  717.     NumberList.buttonSpacerLeft,
  718.     NumberList.buttonSpacerTop
  719. )
  720. IronManSelectionFrameselectionButton:SetText(StringList.acceptChallenge)
  721. IronManSelectionFrameselectionButton:SetScript(
  722.     "OnClick",
  723.     function()
  724.         IronManCharacterVariables.isAttemptingIronMan = true
  725.         PlaySoundFile(SoundList.suitUp)
  726.         getAllCharacterInfo() -- debug -- add current to list just for testing
  727.         IronManAchievementFrameNameTextBoxText:SetText(NameClassRaceString) -- debug --
  728.         IronManAchievementFrameDateTextBoxText:SetText(DateString) -- debug --
  729.         IronManMetaAchievementFrameNameTextBoxText:SetText(NameClassRaceString) -- debug --
  730.         IronManMetaAchievementFrameDateTextBoxText:SetText(DateString) -- debug --
  731.         IronManAchievementFrame:Show() -- debug --
  732.         print(#IronManCompleatedAchievements) -- debug --
  733.     end
  734. )
  735.  
  736. IronManSelectionFrame.closeButton =
  737.     CreateFrame("Button", "IronManSelectionFramecloseButton", IronManSelectionFrame, "SharedButtonTemplate")
  738. IronManSelectionFramecloseButton:SetSize(NumberList.selectionButtonWidth, NumberList.selectionButtonHeight)
  739. IronManSelectionFramecloseButton:SetPoint(
  740.     "TOP",
  741.     IronManSelectionFrameselectionButton,
  742.     "BOTTOM",
  743.     0,
  744.     NumberList.buttonSpacerBottom
  745. )
  746. IronManSelectionFramecloseButton:SetText(StringList.doNotAcceptChallenge)
  747. IronManSelectionFramecloseButton:SetScript(
  748.     "OnClick",
  749.     function()
  750.         -- IronManCharacterVariables.isAttemptingIronMan = false -- debug --
  751.         IronManSelectionFrame:Hide()
  752.         PlaySoundFile(SoundList.nextTime)
  753.     end
  754. )
  755.  
  756. IronManSelectionFrame.TextBox = CreateFrame("Frame", "IronManSelectionFrameTextBox", IronManSelectionFrame)
  757. IronManSelectionFrameTextBox:SetSize(NumberList.textBoxWidth, NumberList.textBoxHeight)
  758. IronManSelectionFrameTextBox:SetPoint("RIGHT", IronManSelectionFrame)
  759.  
  760. IronManSelectionFrameTextBox.Text = IronManSelectionFrameTextBox:CreateFontString("IronManSelectionFrameTextBoxText")
  761. IronManSelectionFrameTextBoxText:SetAllPoints(IronManSelectionFrameTextBox)
  762. IronManSelectionFrameTextBoxText:SetFontObject(FontList.rulesFont)
  763. IronManSelectionFrameTextBoxText:SetText(StringList.ironManRules)
  764.  
  765. IronManSelectionFrame.TextBoxFail = CreateFrame("Frame", "IronManSelectionFrameTextBoxFail", IronManSelectionFrame)
  766. IronManSelectionFrameTextBoxFail:SetSize(NumberList.failTextBoxWidth, NumberList.failTextBoxHeight)
  767. IronManSelectionFrameTextBoxFail:SetPoint(
  768.     "CENTER",
  769.     IronManSelectionFrame,
  770.     "LEFT",
  771.     NumberList.failTextBoxSpacerLeft,
  772.     NumberList.failTextBoxSpacerTop
  773. )
  774. -- IronManSelectionFrameTextBoxFail:Hide() -- debug --
  775.  
  776. IronManSelectionFrameTextBoxFail.Text =
  777.     IronManSelectionFrameTextBoxFail:CreateFontString("IronManSelectionFrameTextBoxFailText")
  778. IronManSelectionFrameTextBoxFailText:SetAllPoints(IronManSelectionFrameTextBoxFail)
  779. IronManSelectionFrameTextBoxFailText:SetFontObject(FontList.failFont)
  780.  
  781. -- ===================================================================================================
  782. -- ===================================================================================================
  783. -- ===========================         max level achievement frame          ===========================
  784. -- ===================================================================================================
  785. -- ===================================================================================================
  786.  
  787. local IronManAchievementFrame =
  788.     CreateFrame("Frame", "IronManAchievementFrame", UIParent, "HelpFrameContainerFrameTemplate") -- debug -- PortraitFrameTemplate -- BasicFrameTemplateWithInset
  789. IronManAchievementFrame:SetSize(NumberList.achievementFrameWidth, NumberList.achievementFrameHeight)
  790. IronManAchievementFrame:ClearAllPoints()
  791. IronManAchievementFrame:SetPoint("CENTER", 0, NumberList.achievementFramePositionY)
  792. IronManAchievementFrame:EnableMouse(true) -- debug --
  793. IronManAchievementFrame:SetMovable(true) -- debug --
  794. IronManAchievementFrame:SetClampedToScreen(true) -- debug --
  795. IronManAchievementFrame:RegisterForDrag("RightButton", "LeftButton") -- debug --
  796. IronManAchievementFrame:SetScript("OnDragStart", IronManAchievementFrame.StartMoving) -- debug --
  797. IronManAchievementFrame:SetScript("OnDragStop", IronManAchievementFrame.StopMovingOrSizing) -- debug --
  798. IronManAchievementFrame:SetToplevel(true)
  799. IronManAchievementFrame:Hide()
  800.  
  801. IronManAchievementFrame.CloseButton =
  802.     CreateFrame(
  803.     "Button",
  804.     "IronManAchievementFrameCloseButton",
  805.     IronManAchievementFrame,
  806.     "SocialToastCloseButtonTemplate"
  807. )
  808. IronManAchievementFrameCloseButton:SetPoint(
  809.     "TOPRIGHT",
  810.     IronManAchievementFrame,
  811.     "TOPRIGHT",
  812.     NumberList.achievementCloseButtonX,
  813.     NumberList.achievementCloseButtonY
  814. )
  815.  
  816. IronManAchievementFrame.TitleTextBox =
  817.     CreateFrame("Frame", "IronManAchievementFrameTitleTextBox", IronManAchievementFrame)
  818. IronManAchievementFrameTitleTextBox:SetSize(NumberList.titleTextBoxWidth, NumberList.titleTextBoxHeight)
  819. IronManAchievementFrameTitleTextBox:SetPoint("TOP", IronManAchievementFrame, "TOP", 0, NumberList.titleTextBoxTopGap)
  820.  
  821. IronManAchievementFrameTitleTextBox.Text =
  822.     IronManAchievementFrameTitleTextBox:CreateFontString("IronManAchievementFrameTitleTextBoxText")
  823. IronManAchievementFrameTitleTextBoxText:SetAllPoints(IronManAchievementFrameTitleTextBox)
  824. IronManAchievementFrameTitleTextBoxText:SetFontObject(FontList.titleFont)
  825. IronManAchievementFrameTitleTextBoxText:SetText(StringList.ironManSuccess)
  826.  
  827. IronManAchievementFrame.leftTexture = IronManAchievementFrame:CreateTexture("IronManAchievementFrameleftTexture")
  828. IronManAchievementFrameleftTexture:SetScale(NumberList.iconAchievementTextureScale)
  829. IronManAchievementFrameleftTexture:SetTexture(ImageList.goldRed)
  830. IronManAchievementFrameleftTexture:SetPoint(
  831.     "CENTER",
  832.     IronManAchievementFrameTitleTextBox,
  833.     "LEFT",
  834.     NumberList.bottomLeftTextureX,
  835.     0
  836. )
  837.  
  838. IronManAchievementFrame.rightTexture = IronManAchievementFrame:CreateTexture("IronManAchievementFramerightTexture")
  839. IronManAchievementFramerightTexture:SetScale(NumberList.iconAchievementTextureScale)
  840. IronManAchievementFramerightTexture:SetTexture(ImageList.goldRed)
  841. IronManAchievementFramerightTexture:SetPoint(
  842.     "CENTER",
  843.     IronManAchievementFrameTitleTextBox,
  844.     "RIGHT",
  845.     NumberList.bottomRightTextureX,
  846.     0
  847. )
  848.  
  849. IronManAchievementFrame.DateTextBox =
  850.     CreateFrame("Frame", "IronManAchievementFrameDateTextBox", IronManAchievementFrame)
  851. IronManAchievementFrameDateTextBox:SetSize(NumberList.achievementFrameWidth, NumberList.dateNameTextBoxHeight)
  852. IronManAchievementFrameDateTextBox:SetPoint(
  853.     "BOTTOM",
  854.     IronManAchievementFrame,
  855.     "BOTTOM",
  856.     0,
  857.     NumberList.dateTextBoxBottomGap
  858. )
  859.  
  860. IronManAchievementFrameDateTextBox.Text =
  861.     IronManAchievementFrameDateTextBox:CreateFontString("IronManAchievementFrameDateTextBoxText")
  862. IronManAchievementFrameDateTextBoxText:SetAllPoints(IronManAchievementFrameDateTextBox)
  863. IronManAchievementFrameDateTextBoxText:SetFontObject(FontList.nameDateFont)
  864.  
  865. IronManAchievementFrame.NameTextBox =
  866.     CreateFrame("Frame", "IronManAchievementFrameNameTextBox", IronManAchievementFrame)
  867. IronManAchievementFrameNameTextBox:SetSize(NumberList.achievementFrameWidth, NumberList.dateNameTextBoxHeight)
  868. IronManAchievementFrameNameTextBox:SetPoint(
  869.     "BOTTOM",
  870.     IronManAchievementFrameDateTextBox,
  871.     "TOP",
  872.     0,
  873.     NumberList.nameTextBoxBottomGap
  874. )
  875.  
  876. IronManAchievementFrameNameTextBox.Text =
  877.     IronManAchievementFrameNameTextBox:CreateFontString("IronManAchievementFrameNameTextBoxText")
  878. IronManAchievementFrameNameTextBoxText:SetAllPoints(IronManAchievementFrameNameTextBox)
  879. IronManAchievementFrameNameTextBoxText:SetFontObject(FontList.nameDateFont)
  880.  
  881. -- ===================================================================================================
  882. -- ===================================================================================================
  883. -- ===========================         meta achievement frame          ===========================
  884. -- ===================================================================================================
  885. -- ===================================================================================================
  886.  
  887. local IronManMetaAchievementFrame =
  888.     CreateFrame("Frame", "IronManMetaAchievementFrame", UIParent, "HelpFrameContainerFrameTemplate")
  889. IronManMetaAchievementFrame:SetSize(NumberList.achievementFrameWidth, NumberList.achievementFrameHeight)
  890. IronManMetaAchievementFrame:ClearAllPoints()
  891. IronManMetaAchievementFrame:SetPoint("CENTER", 0, NumberList.achievementFramePositionY)
  892. IronManMetaAchievementFrame:EnableMouse(true) -- debug --
  893. IronManMetaAchievementFrame:SetMovable(true) -- debug --
  894. IronManMetaAchievementFrame:SetClampedToScreen(true) -- debug --
  895. IronManMetaAchievementFrame:RegisterForDrag("RightButton", "LeftButton") -- debug --
  896. IronManMetaAchievementFrame:SetScript("OnDragStart", IronManMetaAchievementFrame.StartMoving) -- debug --
  897. IronManMetaAchievementFrame:SetScript("OnDragStop", IronManMetaAchievementFrame.StopMovingOrSizing) -- debug --
  898. IronManMetaAchievementFrame:SetToplevel(true)
  899. -- IronManMetaAchievementFrame:Hide() -- debug --
  900.  
  901. IronManMetaAchievementFrame.CloseButton =
  902.     CreateFrame(
  903.     "Button",
  904.     "IronManMetaAchievementFrameCloseButton",
  905.     IronManMetaAchievementFrame,
  906.     "SocialToastCloseButtonTemplate"
  907. )
  908. IronManMetaAchievementFrameCloseButton:SetPoint(
  909.     "TOPRIGHT",
  910.     IronManMetaAchievementFrame,
  911.     "TOPRIGHT",
  912.     NumberList.achievementCloseButtonX,
  913.     NumberList.achievementCloseButtonY
  914. )
  915.  
  916. IronManMetaAchievementFrame.TitleTextBox =
  917.     CreateFrame("Frame", "IronManMetaAchievementFrameTitleTextBox", IronManMetaAchievementFrame)
  918. IronManMetaAchievementFrameTitleTextBox:SetSize(NumberList.titleTextBoxWidth, NumberList.titleTextBoxHeight)
  919. IronManMetaAchievementFrameTitleTextBox:SetPoint(
  920.     "TOP",
  921.     IronManMetaAchievementFrame,
  922.     "TOP",
  923.     0,
  924.     NumberList.titleTextBoxTopGap
  925. )
  926.  
  927. IronManMetaAchievementFrameTitleTextBox.Text =
  928.     IronManMetaAchievementFrameTitleTextBox:CreateFontString("IronManMetaAchievementFrameTitleTextBoxText")
  929. IronManMetaAchievementFrameTitleTextBoxText:SetAllPoints(IronManMetaAchievementFrameTitleTextBox)
  930. IronManMetaAchievementFrameTitleTextBoxText:SetFontObject(FontList.titleFont)
  931. IronManMetaAchievementFrameTitleTextBoxText:SetText(StringList.ironManSuccess)
  932.  
  933. IronManMetaAchievementFrame.leftTexture =
  934.     IronManMetaAchievementFrame:CreateTexture("IronManMetaAchievementFrameleftTexture")
  935. IronManMetaAchievementFrameleftTexture:SetScale(NumberList.iconAchievementTextureScale)
  936. IronManMetaAchievementFrameleftTexture:SetTexture(ImageList.goldRed)
  937. IronManMetaAchievementFrameleftTexture:SetPoint(
  938.     "CENTER",
  939.     IronManMetaAchievementFrameTitleTextBox,
  940.     "LEFT",
  941.     NumberList.bottomLeftTextureX,
  942.     0
  943. )
  944.  
  945. IronManMetaAchievementFrame.rightTexture =
  946.     IronManMetaAchievementFrame:CreateTexture("IronManMetaAchievementFramerightTexture")
  947. IronManMetaAchievementFramerightTexture:SetScale(NumberList.iconAchievementTextureScale)
  948. IronManMetaAchievementFramerightTexture:SetTexture(ImageList.goldRed)
  949. IronManMetaAchievementFramerightTexture:SetPoint(
  950.     "CENTER",
  951.     IronManMetaAchievementFrameTitleTextBox,
  952.     "RIGHT",
  953.     NumberList.bottomRightTextureX,
  954.     0
  955. )
  956.  
  957. IronManMetaAchievementFrame.DateTextBox =
  958.     CreateFrame("Frame", "IronManMetaAchievementFrameDateTextBox", IronManMetaAchievementFrame)
  959. IronManMetaAchievementFrameDateTextBox:SetSize(NumberList.achievementFrameWidth, NumberList.dateNameTextBoxHeight)
  960. IronManMetaAchievementFrameDateTextBox:SetPoint(
  961.     "BOTTOM",
  962.     IronManMetaAchievementFrame,
  963.     "BOTTOM",
  964.     0,
  965.     NumberList.dateTextBoxBottomGap
  966. )
  967.  
  968. IronManMetaAchievementFrameDateTextBox.Text =
  969.     IronManMetaAchievementFrameDateTextBox:CreateFontString("IronManMetaAchievementFrameDateTextBoxText")
  970. IronManMetaAchievementFrameDateTextBoxText:SetAllPoints(IronManMetaAchievementFrameDateTextBox)
  971. IronManMetaAchievementFrameDateTextBoxText:SetFontObject(FontList.nameDateFont)
  972.  
  973. IronManMetaAchievementFrame.NameTextBox =
  974.     CreateFrame("Frame", "IronManMetaAchievementFrameNameTextBox", IronManMetaAchievementFrame)
  975. IronManMetaAchievementFrameNameTextBox:SetSize(NumberList.achievementFrameWidth, NumberList.dateNameTextBoxHeight)
  976. IronManMetaAchievementFrameNameTextBox:SetPoint(
  977.     "BOTTOM",
  978.     IronManMetaAchievementFrameDateTextBox,
  979.     "TOP",
  980.     0,
  981.     NumberList.nameTextBoxBottomGap
  982. )
  983.  
  984. IronManMetaAchievementFrameNameTextBox.Text =
  985.     IronManMetaAchievementFrameNameTextBox:CreateFontString("IronManMetaAchievementFrameNameTextBoxText")
  986. IronManMetaAchievementFrameNameTextBoxText:SetAllPoints(IronManMetaAchievementFrameNameTextBox)
  987. IronManMetaAchievementFrameNameTextBoxText:SetFontObject(FontList.nameDateFont)
  988.  
  989. -- ===================================================================================================
  990. -- ===================================================================================================
  991. -- ===========================         achievement panel          ===========================
  992. -- ===================================================================================================
  993. -- ===================================================================================================
  994.  
  995. local IronManInterfaceFrame = CreateFrame("Frame", "IronManInterfaceFrame", UIParent, "BackdropTemplate")
  996. IronManInterfaceFrame.name = "Iron Man"
  997. IronManInterfaceFrame:SetBackdrop(
  998.     {
  999.         bgFile = "Interface\\ACHIEVEMENTFRAME\\UI-Achievement-Parchment-Horizontal",
  1000.         insets = {
  1001.             left = NumberList.insetSize,
  1002.             right = NumberList.insetSize,
  1003.             top = NumberList.insetSize,
  1004.             bottom = NumberList.insetSize
  1005.         },
  1006.         tileSize = nil,
  1007.         tile = false,
  1008.         edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
  1009.         edgeSize = NumberList.edgeSize
  1010.     }
  1011. )
  1012. InterfaceOptions_AddCategory(IronManInterfaceFrame)
  1013.  
  1014. local IronManInterfaceTitleTexture = CreateFrame("Frame", "IronManInterfaceTitleTexture", IronManInterfaceFrame)
  1015. IronManInterfaceTitleTexture:SetSize(NumberList.interfaceTextureBoxSize, NumberList.interfaceTextureBoxSize)
  1016. IronManInterfaceTitleTexture:SetPoint("TOP", 0, NumberList.interfaceTextureGap)
  1017. IronManInterfaceTitleTexture.Texture = IronManInterfaceTitleTexture:CreateTexture(nil, "BACKGROUND")
  1018. IronManInterfaceTitleTexture.Texture:SetPoint("CENTER")
  1019. IronManInterfaceTitleTexture.Texture:SetScale(NumberList.interfaceTextureScale)
  1020. IronManInterfaceTitleTexture.Texture:SetTexture(ImageList.IMBanner)
  1021.  
  1022. -- ===================================================================================================
  1023. -- ===================================================================================================
  1024. -- ===========================         scroll frames and update function          ===========================
  1025. -- ===================================================================================================
  1026. -- ===================================================================================================
  1027.  
  1028.  
  1029. local IronManInterfaceScrollParent =
  1030.     CreateFrame("Frame", "IronManInterfaceScrollParent", IronManInterfaceFrame, "HelpFrameContainerFrameTemplate")
  1031. IronManInterfaceScrollParent:SetSize(NumberList.scrollParentWidth, NumberList.scrollParentHeight)
  1032. IronManInterfaceScrollParent:SetPoint(
  1033.     "TOP",
  1034.     IronManInterfaceFrame,
  1035.     "TOP",
  1036.     NumberList.scrollParentGapX,
  1037.     NumberList.scrollParentTopGap
  1038. )
  1039.  
  1040. local IronManInterfaceScrollFrame =
  1041.     CreateFrame("ScrollFrame", "IronManInterfaceScrollFrame", IronManInterfaceScrollParent, "FauxScrollFrameTemplate")
  1042. IronManInterfaceScrollFrame:SetPoint("TOPLEFT", 0, -8)
  1043. IronManInterfaceScrollFrame:SetPoint("BOTTOMRIGHT", -30, 8)
  1044. IronManInterfaceScrollFrame:SetScript(
  1045.     "OnVerticalScroll",
  1046.     function(self, offset)
  1047.         FauxScrollFrame_OnVerticalScroll(self, offset, NumberList.scrollFrameRowHeight, updateAchievementList)
  1048.     end
  1049. )
  1050.  
  1051. IronManInterfaceScrollFrame.frames = {}
  1052. for index = 1, NumberList.scrollFrameNumberOfFrames do
  1053.     IronManInterfaceScrollFrame.frames[index] =
  1054.         CreateFrame("Frame", "IMISF" .. index, IronManInterfaceScrollParent, "HelpFrameContainerFrameTemplate")
  1055.     local frame = IronManInterfaceScrollFrame.frames[index]
  1056.     frame:SetSize(NumberList.scrollFrameRowWidth, NumberList.scrollFrameRowHeight)
  1057.     frame:SetPoint("TOPLEFT", 5, -(index - 1) * NumberList.scrollFrameRowHeight - 5)
  1058.  
  1059.     frame.texture = frame:CreateTexture("frametexture" .. index)
  1060.     frame.texture:SetScale(NumberList.iconAchievementTextureScale)
  1061.     frame.texture:SetPoint("LEFT")
  1062.  
  1063.     frame.titleTextBox = CreateFrame("Frame", "frametitleTextBox" .. index, frame, "HelpFrameContainerFrameTemplate")
  1064.     frame.titleTextBox:SetSize(NumberList.scrollAchievementTextBoxWidth, NumberList.scrollAchievementTextBoxHeight)
  1065.     frame.titleTextBox:SetPoint("TOPRIGHT")
  1066.  
  1067.     frame.titleTextBox.text = frame.titleTextBox:CreateFontString("frametitleTextBoxtext" .. index)
  1068.     frame.titleTextBox.text:SetAllPoints(frame.titleTextBox)
  1069.     frame.titleTextBox.text:SetFontObject(FontList.rulesFont)
  1070.  
  1071.     frame.frameNameTextBox = CreateFrame("Frame", "frameNameTextBox" .. index, frame, "HelpFrameContainerFrameTemplate")
  1072.     frame.frameNameTextBox:SetSize(NumberList.scrollAchievementTextBoxWidth, NumberList.scrollAchievementTextBoxHeight)
  1073.     frame.frameNameTextBox:SetPoint("RIGHT")
  1074.  
  1075.     frame.frameNameTextBox.text = frame.frameNameTextBox:CreateFontString("frameNameTextBoxtext" .. index)
  1076.     frame.frameNameTextBox.text:SetAllPoints(frame.frameNameTextBox)
  1077.     frame.frameNameTextBox.text:SetFontObject(FontList.rulesFont)
  1078.  
  1079.     frame.frameDateTextBox = CreateFrame("Frame", "frameDateTextBox" .. index, frame, "HelpFrameContainerFrameTemplate")
  1080.     frame.frameDateTextBox:SetSize(NumberList.scrollAchievementTextBoxWidth, NumberList.scrollAchievementTextBoxHeight)
  1081.     frame.frameDateTextBox:SetPoint("BOTTOMRIGHT")
  1082.  
  1083.     frame.frameDateTextBox.text = frame.frameDateTextBox:CreateFontString("frameDateTextBoxtext" .. index)
  1084.     frame.frameDateTextBox.text:SetAllPoints(frame.frameDateTextBox)
  1085.     frame.frameDateTextBox.text:SetFontObject(FontList.rulesFont)
  1086. end
  1087.  
  1088.    
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement