Jump to content
Korean Random
Wanket

Как отследить полную загрузку ангара?

Recommended Posts

Делаю:

def onAccountShowGUI(ctx):
    mod.setUsers() 

Но вызов происходит до того как проходят все ивенты g_messengerEvents.users.onUserStatusUpdated

Как отследить загрузку ангара, но после всех вывозов ивента? Именно тех ивентов, что вызываются после загрузки ангара.

 

Share this post


Link to post

Short link
Share on other sites
import BigWorld
from gui.shared.utils.HangarSpace import g_hangarSpace
from gui.Scaleform.daapi.view.lobby.LobbyView import LobbyView 
from gui.mods.mod_mods_gui import inject

def p__pop_up_text(self):
        if g_hangarSpace is not None and g_hangarSpace.inited:
            print 'test'

@inject.hook(LobbyView, '_populate')
@inject.log
def hookPopulate(hooked, *args):
    hooked(*args)
    BigWorld.callback(5.0, pop_up_text)

Я делаю так, когда мне скучно :)

Edited by spoter
  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

from gui.shared import events, g_eventBus

def onLobbyLoaded(event):
    pass
           
g_eventBus.addListener(events.GUICommonEvent.LOBBY_VIEW_LOADED, onLobbyLoaded)
  • Upvote 4

Share this post


Link to post

Short link
Share on other sites
g_eventBus.addListener(events.GUICommonEvent.LOBBY_VIEW_LOADED, onLobbyLoaded)

ЕРЕТИК! СОЖЖОМ ЕГО!

 

Так скучно.

  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

@spotercallback, серьезно?

 

 

from gui.shared import events, g_eventBus

def onLobbyLoaded(event):
    pass
           
g_eventBus.addListener(events.GUICommonEvent.LOBBY_VIEW_LOADED, onLobbyLoaded)

Это помогло.

Edited by Wanket

Share this post


Link to post

Short link
Share on other sites

UPD: Некоторые ивенты g_messengerEvents.users.onUserStatusUpdated вызываются после events.GUICommonEvent.LOBBY_VIEW_LOADED поэтому все еще актуально

Share this post


Link to post

Short link
Share on other sites

в XVM сделано примерно так:

 

def start():
    g_eventBus.addListener(events.AppLifeCycleEvent.INITIALIZED, onAppInitialized)
    g_eventBus.addListener(events.AppLifeCycleEvent.DESTROYED, onAppDestroyed)
 
BigWorld.callback(0, start)
 
def onAppInitialized(event):
    if event.ns == APP_NAME_SPACE.SF_LOBBY:
        app = g_appLoader.getApp(event)
        app.loaderManager.onViewLoaded += onViewLoaded
 
def onAppDestroyed(event):
    if event.ns == APP_NAME_SPACE.SF_LOBBY:
        onHangarDispose()
 
def onViewLoaded(view=None):
        if view and view.uniqueName == VIEW_ALIAS.LOBBY_HANGAR:
            onHangarInit()
 
def onHangarInit():
    pass
 
def onHangarDispose():
    pass

нужно учесть, что будет срабатывать каждый раз, когда ангар загружается, например, при переходе в магазин и обратно в ангар.

необходимые импорты сам добавишь

Share this post


Link to post

Short link
Share on other sites

@ShuraBB, хочу получить данные контактов(онлайн, не онлайн, в бою ли), но надо мне это сделать после подзагрузки этих самых контактов, иначе некоторые данные будут неверны(например все будут оффлайн).

 

 

@sirmaxпочему то g_appLoader.getApp(event) всегда возвращает None

Edited by Wanket

Share this post


Link to post

Short link
Share on other sites

@sirmaxпочему то g_appLoader.getApp(event) всегда возвращает None

Ошибся, надо: g_appLoader.getApp(event.ns)

Share this post


Link to post

Short link
Share on other sites

Вызов все равно происходит раньше чем обновился список контактов

Так список контактов при нажатии кнопки обновляется. Ты же не сказал, что тебе список контактов нужен, ты написал "Как отследить загрузку ангара".

Share this post


Link to post

Short link
Share on other sites

Он так же обновляется и при первой загрузке ангара. Вот это обновление и надо отследить

Share this post


Link to post

Short link
Share on other sites

>Он так же обновляется и при первой загрузке ангара

И при первой и при любом изменении состояния в списке

from messenger.storage import storage_getter
from messenger.gui.Scaleform.data.contacts_data_provider import _ContactsCategories

@storage_getter('users')
def usersStorage(self):
	return None

def onAccountShowGUI(ctx):
	for user in usersStorage.getList(_ContactsCategories().getCriteria()):
		print user
Edited by ShuraBB

Share this post


Link to post

Short link
Share on other sites

Специально проверяю на "friend" in user.getTags()

UPD: Online показывает только у меня самого(Wanket), хотя есть друзья в сети

UPD2: То ли я дурак, то ли магия какая, но вдруг все стало работать, ток не убивайте. Сработал метод sirmax'а, но пришлось немного доработать

Edited by Wanket

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...