Advertisement
Guest User

Untitled

a guest
Oct 31st, 2011
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 8.39 KB | None | 0 0
  1. function BattlefieldMinimap_OnUpdate(self, elapsed)
  2.     -- Throttle updates
  3.     if ( BattlefieldMinimap.updateTimer < 0 ) then
  4.         BattlefieldMinimap.updateTimer = BATTLEFIELD_MINIMAP_UPDATE_RATE;
  5.     else
  6.         BattlefieldMinimap.updateTimer = BattlefieldMinimap.updateTimer - elapsed;
  7.     end
  8.    
  9.     --Position player
  10.     UpdateWorldMapArrowFrames();
  11.     local playerX, playerY = GetPlayerMapPosition("player");
  12.     if ( playerX == 0 and playerY == 0 and not WorldMapFrame:IsShown() ) then
  13.         SetMapToCurrentZone();
  14.         playerX, playerY = GetPlayerMapPosition("player");
  15.     end
  16.     if ( playerX == 0 and playerY == 0 ) then
  17.         ShowMiniWorldMapArrowFrame(nil);
  18.     else
  19.         playerX = playerX * BattlefieldMinimap:GetWidth();
  20.         playerY = -playerY * BattlefieldMinimap:GetHeight();
  21.         PositionMiniWorldMapArrowFrame("CENTER", "BattlefieldMinimap", "TOPLEFT", playerX, playerY);
  22.         ShowMiniWorldMapArrowFrame(1);
  23.     end
  24.    
  25.     -- If resizing the frame then scale everything accordingly
  26.     if ( BattlefieldMinimap.resizing ) then
  27.         local sizeUnit = BattlefieldMinimap:GetWidth()/4;
  28.         local mapPiece;
  29.         for i=1, NUM_WORLDMAP_DETAIL_TILES do
  30.             mapPiece = _G["BattlefieldMinimap"..i];
  31.             mapPiece:SetWidth(sizeUnit);
  32.             mapPiece:SetHeight(sizeUnit);
  33.         end
  34.         local numPOIs = GetNumMapLandmarks();
  35.         for i=1, NUM_BATTLEFIELDMAP_POIS, 1 do
  36.             local battlefieldPOIName = "BattlefieldMinimapPOI"..i;
  37.             local battlefieldPOI = _G[battlefieldPOIName];
  38.             if ( i <= numPOIs ) then
  39.                 local name, description, textureIndex, x, y, maplinkID,showInBattleMap = GetMapLandmarkInfo(i);
  40.                 if ( showInBattleMap ) then
  41.                     local x1, x2, y1, y2 = WorldMap_GetPOITextureCoords(textureIndex);
  42.                     _G[battlefieldPOIName.."Texture"]:SetTexCoord(x1, x2, y1, y2);
  43.                     x = x * BattlefieldMinimap:GetWidth();
  44.                     y = -y * BattlefieldMinimap:GetHeight();
  45.                     battlefieldPOI:SetPoint("CENTER", "BattlefieldMinimap", "TOPLEFT", x, y );
  46.                     battlefieldPOI:Show();
  47.                 else
  48.                     battlefieldPOI:Hide();
  49.                 end
  50.             else
  51.                 battlefieldPOI:Hide();
  52.             end
  53.         end
  54.     end
  55.  
  56.     if ( not BattlefieldMinimapOptions.showPlayers ) then
  57.         for i=1, MAX_PARTY_MEMBERS do
  58.             _G["BattlefieldMinimapParty"..i]:Hide();
  59.         end
  60.         for i=1, MAX_RAID_MEMBERS do
  61.             _G["BattlefieldMinimapRaid"..i]:Hide();
  62.         end
  63.         wipe(BG_VEHICLES);
  64.     else
  65.         --Position groupmates
  66.         local playerCount = 0;
  67.         if ( GetNumRaidMembers() > 0 ) then
  68.             for i=1, MAX_PARTY_MEMBERS do
  69.                 local partyMemberFrame = _G["BattlefieldMinimapParty"..i];
  70.                 partyMemberFrame:Hide();
  71.             end
  72.             for i=1, MAX_RAID_MEMBERS do
  73.                 local unit = "raid"..i;
  74.                 local partyX, partyY = GetPlayerMapPosition(unit);
  75.                 local partyMemberFrame = _G["BattlefieldMinimapRaid"..(playerCount + 1)];
  76.                 if ( (partyX ~= 0 or partyY ~= 0) and not UnitIsUnit("raid"..i, "player") ) then
  77.                     partyX = partyX * BattlefieldMinimap:GetWidth();
  78.                     partyY = -partyY * BattlefieldMinimap:GetHeight();
  79.                     partyMemberFrame:SetPoint("CENTER", "BattlefieldMinimap", "TOPLEFT", partyX, partyY);
  80.                     partyMemberFrame.name = nil;
  81.                     partyMemberFrame.unit = unit;
  82.                     partyMemberFrame:Show();
  83.                     playerCount = playerCount + 1;
  84.                 end
  85.             end
  86.         else
  87.             for i=1, MAX_PARTY_MEMBERS do
  88.                 local partyX, partyY = GetPlayerMapPosition("party"..i);
  89.                 local partyMemberFrame = _G["BattlefieldMinimapParty"..i];
  90.                 if ( partyX == 0 and partyY == 0 ) then
  91.                     partyMemberFrame:Hide();
  92.                 else
  93.                     partyX = partyX * BattlefieldMinimap:GetWidth();
  94.                     partyY = -partyY * BattlefieldMinimap:GetHeight();
  95.                     partyMemberFrame:SetPoint("CENTER", "BattlefieldMinimap", "TOPLEFT", partyX, partyY);
  96.                     partyMemberFrame:Show();
  97.                 end
  98.             end
  99.         end
  100.         -- Position Team Members
  101.         local numTeamMembers = GetNumBattlefieldPositions();
  102.         for i=playerCount+1, MAX_RAID_MEMBERS do
  103.             local partyX, partyY, name = GetBattlefieldPosition(i - playerCount);
  104.             local partyMemberFrame = _G["BattlefieldMinimapRaid"..i];
  105.             if ( partyX == 0 and partyY == 0 ) then
  106.                 partyMemberFrame:Hide();
  107.             else
  108.                 partyX = partyX * BattlefieldMinimap:GetWidth();
  109.                 partyY = -partyY * BattlefieldMinimap:GetHeight();
  110.                 partyMemberFrame:SetPoint("CENTER", "BattlefieldMinimap", "TOPLEFT", partyX, partyY);
  111.                 partyMemberFrame.name = name;
  112.                 partyMemberFrame.unit = nil;
  113.                 partyMemberFrame:Show();
  114.             end
  115.         end
  116.  
  117.         -- Position flags
  118.         local numFlags = GetNumBattlefieldFlagPositions();
  119.         for i=1, NUM_WORLDMAP_FLAGS do
  120.             local flagFrameName = "BattlefieldMinimapFlag"..i;
  121.             local flagFrame = _G[flagFrameName];
  122.             if ( i <= numFlags ) then
  123.                 local flagX, flagY, flagToken = GetBattlefieldFlagPosition(i);
  124.                 local flagTexture = _G[flagFrameName.."Texture"];
  125.                 if ( flagX == 0 and flagY == 0 ) then
  126.                     flagFrame:Hide();
  127.                 else
  128.                     flagX = flagX * BattlefieldMinimap:GetWidth();
  129.                     flagY = -flagY * BattlefieldMinimap:GetHeight();
  130.                     flagFrame:SetPoint("CENTER", "BattlefieldMinimap", "TOPLEFT", flagX, flagY);
  131.                     local flagTexture = _G[flagFrameName.."Texture"];
  132.                     flagTexture:SetTexture("Interface\\WorldStateFrame\\"..flagToken);
  133.                     flagFrame:Show();
  134.                 end
  135.             else
  136.                 flagFrame:Hide();
  137.             end
  138.         end
  139.  
  140.         -- position vehicles
  141.         local numVehicles = GetNumBattlefieldVehicles();
  142.         local totalVehicles = #BG_VEHICLES;
  143.         local index = 0;
  144.         for i=1, numVehicles do
  145.             if (i > totalVehicles) then
  146.                 local vehicleName = "BattlefieldMinimap"..i;
  147.                 BG_VEHICLES[i] = CreateFrame("FRAME", vehicleName, BattlefieldMinimap, "WorldMapVehicleTemplate");
  148.                 BG_VEHICLES[i].texture = _G[vehicleName.."Texture"];
  149.                 BG_VEHICLES[i]:SetWidth(30 * GetBattlefieldMapIconScale());
  150.                 BG_VEHICLES[i]:SetHeight(30 * GetBattlefieldMapIconScale());
  151.             end
  152.             local vehicleX, vehicleY, unitName, isPossessed, vehicleType, orientation, isPlayer = GetBattlefieldVehicleInfo(i);
  153.             -- If vehicle has position and isn't the player
  154.             if ( vehicleX and not isPlayer)  then
  155.                 vehicleX = vehicleX * BattlefieldMinimap:GetWidth();
  156.                 vehicleY = -vehicleY * BattlefieldMinimap:GetHeight();
  157.                 BG_VEHICLES[i].texture:SetTexture(WorldMap_GetVehicleTexture(vehicleType, isPossessed));
  158.                 BG_VEHICLES[i].texture:SetRotation( orientation );
  159.                 BG_VEHICLES[i]:SetPoint("CENTER", "BattlefieldMinimap", "TOPLEFT", vehicleX, vehicleY);
  160.                 BG_VEHICLES[i]:Show();
  161.                 index = i;  -- save for later
  162.             else
  163.                 BG_VEHICLES[i]:Hide();
  164.             end
  165.         end
  166.         if (index < totalVehicles) then
  167.             for i=index+1, totalVehicles do
  168.                 BG_VEHICLES[i]:Hide();
  169.             end
  170.         end
  171.     end
  172.  
  173.     -- Fadein tab if mouse is over
  174.     if ( BattlefieldMinimap:IsMouseOver(45, -10, -5, 5) ) then
  175.         local xPos, yPos = GetCursorPosition();
  176.         -- If mouse is hovering don't show the tab until the elapsed time reaches the tab show delay
  177.         if ( BattlefieldMinimap.hover ) then
  178.             if ( (BattlefieldMinimap.oldX == xPos and BattlefieldMinimap.oldy == yPos) ) then
  179.                 BattlefieldMinimap.hoverTime = BattlefieldMinimap.hoverTime + elapsed;
  180.             else
  181.                 BattlefieldMinimap.hoverTime = 0;
  182.                 BattlefieldMinimap.oldX = xPos;
  183.                 BattlefieldMinimap.oldy = yPos;
  184.             end
  185.             if ( BattlefieldMinimap.hoverTime > BATTLEFIELD_TAB_SHOW_DELAY ) then
  186.                 -- If the battlefieldtab's alpha is less than the current default, then fade it in
  187.                 if ( not BattlefieldMinimap.hasBeenFaded and (BattlefieldMinimap.oldAlpha and BattlefieldMinimap.oldAlpha < DEFAULT_BATTLEFIELD_TAB_ALPHA) ) then
  188.                     UIFrameFadeIn(BattlefieldMinimapTab, BATTLEFIELD_TAB_FADE_TIME, BattlefieldMinimap.oldAlpha, DEFAULT_BATTLEFIELD_TAB_ALPHA);
  189.                     -- Set the fact that the chatFrame has been faded so we don't try to fade it again
  190.                     BattlefieldMinimap.hasBeenFaded = 1;
  191.                 end
  192.             end
  193.         else
  194.             -- Start hovering counter
  195.             BattlefieldMinimap.hover = 1;
  196.             BattlefieldMinimap.hoverTime = 0;
  197.             BattlefieldMinimap.hasBeenFaded = nil;
  198.             CURSOR_OLD_X, CURSOR_OLD_Y = GetCursorPosition();
  199.             -- Remember the oldAlpha so we can return to it later
  200.             if ( not BattlefieldMinimap.oldAlpha ) then
  201.                 BattlefieldMinimap.oldAlpha = BattlefieldMinimapTab:GetAlpha();
  202.             end
  203.         end
  204.     else
  205.         -- If the tab's alpha was less than the current default, then fade it back out to the oldAlpha
  206.         if ( BattlefieldMinimap.hasBeenFaded and BattlefieldMinimap.oldAlpha and BattlefieldMinimap.oldAlpha < DEFAULT_BATTLEFIELD_TAB_ALPHA ) then
  207.             UIFrameFadeOut(BattlefieldMinimapTab, BATTLEFIELD_TAB_FADE_TIME, DEFAULT_BATTLEFIELD_TAB_ALPHA, BattlefieldMinimap.oldAlpha);
  208.             BattlefieldMinimap.hover = nil;
  209.             BattlefieldMinimap.hasBeenFaded = nil;
  210.         end
  211.         BattlefieldMinimap.hoverTime = 0;
  212.     end
  213. end
  214.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement