comparison WowObjects.lua @ 65:8b8b0bade520

Fixed support for mounts using the new MountJournal and mount IDs (no conversion of old profiles at the moment).
author Jerome Vuarand <jerome.vuarand@gmail.com>
date Thu, 23 Oct 2014 13:44:59 +0100
parents 7cbd32de1fdd
children 840c9f09a707
comparison
equal deleted inserted replaced
64:49ae7191821f 65:8b8b0bade520
349 -- PlaySound("igAbilityIconDrop") 349 -- PlaySound("igAbilityIconDrop")
350 return C_PetJournal.PickupPet(self.petID) 350 return C_PetJournal.PickupPet(self.petID)
351 end 351 end
352 352
353 function WowBattlePet_methods:SetBinding(key) 353 function WowBattlePet_methods:SetBinding(key)
354 local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(function() self:DoAction() end)
355 SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton")
356 end
357
358 ------------------------------------------------------------------------------
359
360 local function GetMountInfoEx(mountID)
361 -- special case for random mount
362 if mountID == 0xFFFFFFF then
363 return 0,"Interface/ICONS/ACHIEVEMENT_GUILDPERK_MOUNTUP"
364 end
365
366 local spellID = CyborgMMO_MountMap[mountID] or CyborgMMO_LocalMountMap[mountID]
367 if not spellID then return nil,"not in database" end
368
369 local mountIndex
370 for i=1,C_MountJournal.GetNumMounts() do
371 local _,spell,texture = C_MountJournal.GetMountInfo(i) -- :FIXME: this may fail too early in the session (like when loading saved data)
372 if spell==spellID then
373 return i,texture
374 end
375 end
376
377 return nil,"not in journal"
378 end
379
380 local WowMount_methods = setmetatable({}, {__index=WowObject_methods})
381 local WowMount_mt = {__index=WowMount_methods}
382
383 local function WowMount(mountID)
384 local mountIndex,texture = GetMountInfoEx(mountID)
385 if not mountIndex then
386 -- the mount might have been removed from the game
387 return nil
388 end
389
390 local self = WowObject("mount", mountID)
391 CyborgMMO_DPrint("creating mount binding:", mountID, texture)
392
393 self.mountID = mountID
394 self.texture = texture
395
396 setmetatable(self, WowMount_mt)
397
398 return self
399 end
400
401 function WowMount_methods:DoAction()
402 local mountIndex = GetMountInfoEx(self.mountID)
403 if not mountIndex then return end
404
405 C_MountJournal.Summon(mountIndex)
406 end
407
408 function WowMount_methods:Pickup()
409 local mountIndex = GetMountInfoEx(self.mountID)
410 if not mountIndex then return end
411
412 return C_MountJournal.Pickup(mountIndex)
413 end
414
415 function WowMount_methods:SetBinding(key)
354 local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(function() self:DoAction() end) 416 local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(function() self:DoAction() end)
355 SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton") 417 SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton")
356 end 418 end
357 419
358 ------------------------------------------------------------------------------ 420 ------------------------------------------------------------------------------
414 object = WowCompanion(...) 476 object = WowCompanion(...)
415 elseif type == "equipmentset" then 477 elseif type == "equipmentset" then
416 object = WowEquipmentSet(...) 478 object = WowEquipmentSet(...)
417 elseif type == "battlepet" then 479 elseif type == "battlepet" then
418 object = WowBattlePet(...) 480 object = WowBattlePet(...)
481 elseif type == "mount" then
482 object = WowMount(...)
419 elseif type == "callback" then 483 elseif type == "callback" then
420 object = WowCallback(...) 484 object = WowCallback(...)
421 else 485 else
422 CyborgMMO_DPrint("unsupported wow object:", type, ...) 486 CyborgMMO_DPrint("unsupported wow object:", type, ...)
423 unsupported = true 487 unsupported = true