-- MetaKB Import Module -- Written by MetaHawk aka Urshurak MMCVT_MAPNOTES = "MapNotes"; MMCVT_MAPMOD = "MapMod"; MMCVT_USERKB = "UserKB"; MMCVT_USERNOTES = "UserNotes"; MMCVT_BLT = "Default"; local MetaMap_TempData = {}; local Import_MapNotes = false; local Import_MapMod = false; local Import_UserKB = false; local Import_UserNotes = false; local Import_BLT = false; function MetaMapCVT_CheckData() local found = false; local fileInfo = "MetaMap Imports module loaded." if(MetaMap_NoteData) then MetaMap_InstanceImportButton:Enable(); found = true; end if(MapNotes_Data) then MetaMap_MapNotesImportButton:Enable(); Import_MapNotes = true; found = true; end if(CT_UserMap_Notes) then MetaMap_MapNotesImportButton:Enable(); Import_MapMod = true; found = true; end if(MyKB_Data) then if(not IsAddOnLoaded("MetaMapWKB")) then LoadAddOn("MetaMapWKB"); end if(IsAddOnLoaded("MetaMapWKB")) then if(MyKB_Data[MetaKB_dbID]) then MetaMap_KBImportButton:Enable(); Import_UserKB = true; found = true; end end end if(MyNotes_Data) then MetaMap_KBImportButton:Enable(); Import_UserNotes = true; found = true; end if(MetaMapBLTDefaultData) then if(not IsAddOnLoaded("MetaMapBLT")) then LoadAddOn("MetaMapBLT"); end if(IsAddOnLoaded("MetaMapBLT")) then MetaMap_BLTImportButton:Enable(); Import_BLT = true; found = true; end end if(not found) then fileInfo = fileInfo.."\nNo data files found"; end MetaMap_ImportHeader:SetTextColor(1,1,1); MetaMap_ImportHeader:SetText(fileInfo); MetaMap_LoadImportsButton:Disable(); end function MetaMap_ImportOptions(mode) local ShowFrame = true; if(mode == 1) then Import_MetaMapData(); ShowFrame = false; elseif(mode == 2) then MetaMap_SelectionButton1:SetText(MMCVT_MAPNOTES); MetaMap_SelectionButton2:SetText(MMCVT_MAPMOD); if(not Import_MapNotes) then MetaMap_SelectionButton1:Disable(); end if(not Import_MapMod) then MetaMap_SelectionButton2:Disable(); end elseif(mode == 3) then MetaMap_SelectionButton1:SetText(MMCVT_USERKB); MetaMap_SelectionButton2:SetText(MMCVT_USERNOTES); if(not Import_UserKB) then MetaMap_SelectionButton1:Disable(); end if(not Import_UserNotes) then MetaMap_SelectionButton2:Disable(); end elseif(mode == 4) then MetaMapBLT_ImportDefault(); ShowFrame = false; end if(ShowFrame) then MetaMap_ConfirmationHeader:SetText(METAMAPBLT_CONFIRM_IMPORT); MetaMap_ConfirmationDialog:Show(); end end function MetaMap_SelectedImport(mode) if(mode == MMCVT_MAPNOTES) then MetaMap_ImportMapNotes(); elseif(mode == MMCVT_MAPMOD) then MetaMap_ImportMapMod(); elseif(mode == MMCVT_USERKB) then MetaMap_ImportUserKB(); elseif(mode == MMCVT_USERNOTES) then MetaMap_ImportMetaNotes(); elseif(mode == MMCVT_BLT) then MetaMapBLT_ImportDefault(); end MetaMap_ConfirmationDialog:Hide(); end function Import_MetaMapData() MetaMap_TempData = {}; MetaMap_TempData[0] = MetaMapNotes_Data[0]; MetaMapNotes_Data[0] = {}; MetaMapNotes_Data[0] = MetaMap_NoteData[0]; for zone, zoneTable in MetaMap_TempData[0] do for index, value in MetaMap_TempData[0][zone] do local oldData = MetaMap_TempData[0][zone][index]; if(oldData["lootid"] == nil) then MetaMapNotes_AddNewNote(0, zone, oldData.xPos, oldData.yPos, oldData.name, oldData.inf1, oldData.inf2, oldData.creator, oldData.icon, oldData.ncol, oldData.in1c, oldData.in2c) end end end for i=1, 2, 1 do for zone, zoneTable in MetaMapNotes_Data[i] do for index, value in MetaMapNotes_Data[i][zone] do if(MetaMapNotes_Data[i][zone][index]["lootid"] ~= nil) then MetaMapNotes_Data[i][zone][index] = nil; end end end end for i=1, 2, 1 do for zone, zoneTable in MetaMap_WorldNoteData[i] do for index, value in MetaMap_WorldNoteData[i][zone] do local shiftedZone = MetaMapNotes_ZoneShift[i][zone]; MetaMapNotes_Data[i][shiftedZone][index] = value; end end end MetaMapNotes_MapUpdate(); MetaMap_ImportHeader:SetTextColor(0,1,0); MetaMap_ImportHeader:SetText("Default instance data imported successfully"); end function MetaMap_ImportMapNotes() local noteTotal = 0; local noteImport = 0; local noteDupe = 0; local newCheck = false; for continent=1, 2, 1 do for zone, zoneTable in MapNotes_Data[continent] do for i, value in MapNotes_Data[continent][zone] do noteTotal = noteTotal +1; local newNote = MapNotes_Data[continent][zone][i]; newCheck = MetaMapNotes_AddNewNote(continent, zone, newNote.xPos, newNote.yPos, newNote.name, newNote.inf1, newNote.inf2, newNote.creator, newNote.icon, newNote.ncol, newNote.in1c, newNote.in2c) if(newCheck) then noteImport = noteImport +1; local zoneTable = MapNotes_Lines[continent][zone] for i, value in zoneTable do if(zoneTable[i].x1 == newNote.xPos and zoneTable[i].y1 == newNote.yPos) then MetaMapNotes_ToggleLine(continent, zone, zoneTable[i].x1, zoneTable[i].y1, zoneTable[i].x2, zoneTable[i].y2) end end else noteDupe = noteDupe +1; end end end end local msg = "Imported "..noteImport.." notes from MapNotes from a total of "..noteTotal.." with "..noteDupe.." duplicates not imported"; MetaMap_ImportHeader:SetTextColor(0,1,0); MetaMap_ImportHeader:SetText(msg); end function MetaMap_ImportMapMod() local noteTotal = 0; local noteImport = 0; local noteDupe = 0; for zoneName in CT_UserMap_Notes do for index in CT_UserMap_Notes[zoneName] do noteTotal = noteTotal +1; if(CT_UserMap_Notes[zoneName][index].set < 6) then local newNote = CT_UserMap_Notes[zoneName][index]; local continent, zone = MetaMap_NameToZoneID(zoneName, 1); newCheck = MetaMapNotes_AddNewNote(continent, zone, newNote.x, newNote.y, newNote.name, newNote.descript, "", UnitName("Player"), newNote.set, newNote.set, 0, 0) if(newCheck) then noteImport = noteImport +1; else noteDupe = noteDupe +1; end end end end local msg = "Imported "..noteImport.." notes from MapMod from a total of "..noteTotal.." with "..noteDupe.." positions already occupied"; MetaMap_ImportHeader:SetTextColor(0,1,0); MetaMap_ImportHeader:SetText(msg); end function MetaMapBLT_ImportDefault() LoadAddOn("MetaMapBLT"); if(not IsAddOnLoaded("MetaMapBLT")) then MetaMap_ImportHeader:SetTextColor(1,0,0); MetaMap_ImportHeader:SetText(METAMAPBLT_NOT_ENABLED); return; end MetaMapBLTData = {}; MetaMapBLTData = MetaMapBLTDefaultData; MetaMap_ImportHeader:SetTextColor(0,1,0); MetaMap_ImportHeader:SetText(METAMAPBLT_IMPORT_DONE); end function MetaMap_ImportUserKB() MetaMap_TempData[MetaKB_dbID] = {}; local dupe = false; local unknown = false; local totalCount = 0; local importCount = 0; local dupeCount = 0; local unknownCount = 0; for import, continentTable in MyKB_Data[MetaKB_dbID] do for continent, zoneTable in continentTable do for zone in zoneTable do totalCount = totalCount +1; for name in MetaKB_Data[MetaKB_dbID] do if(name == import) then dupeCount = dupeCount +1; dupe = true; end end if(not dupe) then MetaMap_TempData[MetaKB_dbID][import] = {}; MetaMap_TempData[MetaKB_dbID][import][continent] = {}; MetaMap_TempData[MetaKB_dbID][import][continent][zone] = {}; local TempData = MetaMap_TempData[MetaKB_dbID][import][continent][zone]; local ImportData = MyKB_Data[MetaKB_dbID][import][continent][zone]; TempData["inf1"] = ImportData.inf1; TempData["inf2"] = ImportData.inf2; TempData["icon"] = ImportData.icon; TempData[1] = ImportData[1]; TempData[2] = ImportData[2]; TempData[3] = ImportData[3]; TempData[4] = ImportData[4]; importCount = importCount +1; end dupe = false; end end end for index in MetaMap_TempData[MetaKB_dbID] do MetaKB_Data[MetaKB_dbID][index] = MetaMap_TempData[MetaKB_dbID][index]; end MetaMap_TempData = {}; MetaMap_ImportHeader:SetTextColor(0,1,0); MetaMap_ImportHeader:SetText(format(METAKB_IMPORT_SUCCESSFUL, importCount, totalCount, unknownCount, dupeCount)); end function MetaMap_ImportMetaNotes() local noteTotal = 0; local noteImport = 0; local noteDupe = 0; local newCheck = false; for continent=1, 2, 1 do for zone, zoneTable in MyNotes_Data[continent] do for i, value in MyNotes_Data[continent][zone] do noteTotal = noteTotal +1; local newNote = MyNotes_Data[continent][zone][i]; newCheck = MetaMapNotes_AddNewNote(continent, zone, newNote.xPos, newNote.yPos, newNote.name, newNote.inf1, newNote.inf2, newNote.creator, newNote.icon, newNote.ncol, newNote.in1c, newNote.in2c) if(newCheck) then noteImport = noteImport +1; local zoneTable = MyLines_Data[continent][zone] for i, value in zoneTable do if(zoneTable[i].x1 == newNote.xPos and zoneTable[i].y1 == newNote.yPos) then MetaMapNotes_ToggleLine(continent, zone, zoneTable[i].x1, zoneTable[i].y1, zoneTable[i].x2, zoneTable[i].y2) end end else noteDupe = noteDupe +1; end end end end local msg = "Imported "..noteImport.." notes from MetaNotes from a total of "..noteTotal.." with "..noteDupe.." duplicates not imported"; MetaMap_ImportHeader:SetTextColor(0,1,0); MetaMap_ImportHeader:SetText(msg); end