Advertisement
Fizzlemizz

Ironman.lua

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