Exemple #1
0
def view(requestob):
    from gui.WindowsManager import g_windowsManager
    promise = Promise()
    LOG_DEBUG('View called: {0}, {1}'.format(requestob, promise))
    g_windowsManager.getAccountUI().viewIFace(requestob,
                                              dbgCallback=promise.callback)
    return promise
def onChangeInstalledEquipment(event):
    import BWPersonality
    planeID = next((iD for iD, typ in event.idTypeList if typ == 'plane'),
                   None)
    if planeID:
        if event.ob != event.prevob:
            helper = BWPersonality.g_lobbyCarouselHelper
            helper.inventory.setPlaneEquipment(planeID,
                                               event.ob['equipmentIDs'])
            helper.refreshAircraftData(planeID, True)
            if planeID in helper.inventory.getBoughtAircraftsList():
                globalID = helper.inventory.getInstalledUpgradesGlobalID(
                    planeID)
                accountUI = g_windowsManager.getAccountUI()
                shortCofigSpec = [[globalID, 'planePreset']]
                measurementSystem = Settings.g_instance.gameUI[
                    'measurementSystem']
                configSpec = shortCofigSpec + [[
                    measurementSystem, 'measurementSystem'
                ]]
                accountUI.editIFace([[{'IConfigSpecs': {}}, configSpec]])
                accountUI.editIFace([[{
                    'IShortConfigSpecs': {}
                }, shortCofigSpec]])
    return
Exemple #3
0
def onEditCrewMember(event):
    if event.prevob and event.ob['skills'] != event.prevob['skills']:
        accountUI = g_windowsManager.getAccountUI()
        if accountUI:
            accountUI.viewIFace([[{
                'ICrewMemberDroppedSkills': {}
            }, event.idTypeList]])
    changeParams = [
        'planeSpecializedOn', 'specialization', 'expLeftToMain', 'experience',
        'skills', 'mainExp', 'currentPlane', 'skillValue', 'bodyType',
        'icoIndex'
    ]
    if event.prevob and any(
        (event.prevob[param] != event.ob[param] for param in changeParams)):
        accountUI = g_windowsManager.getAccountUI()
        if accountUI and event.ob['currentPlane'] != -1:
            penalyTypeList = event.idTypeList + [[
                event.ob['currentPlane'], 'plane'
            ]]
            accountUI.viewIFace([[{'ISkillPenalty': {}}, penalyTypeList]])
            lch = BWPersonality.g_lobbyCarouselHelper
            planeData = lch.getCarouselAirplaneSelected()
            globalID = lch.inventory.getInstalledUpgradesGlobalID(
                planeData.planeID) if planeData is not None else None
            if globalID is not None:
                shortConfigSpec = [[globalID, 'planePreset']]
                measurementSystem = Settings.g_instance.gameUI[
                    'measurementSystem']
                configSpec = shortConfigSpec + [[
                    measurementSystem, 'measurementSystem'
                ]]
                accountUI.editIFace([[{'IConfigSpecs': {}}, configSpec]])
                accountUI.editIFace([[{
                    'IShortConfigSpecs': {}
                }, shortConfigSpec]])
                if event.prevob['bodyType'] != event.ob[
                        'bodyType'] or planeData.planeID in (
                            event.prevob['currentPlane'],
                            event.ob['currentPlane']):
                    lch.checkLobbyCrewAnimation()
    return
Exemple #4
0
def actualizeCacheData(idTypeList, ifaceName):
    deleteFromCache(idTypeList, ifaceName)
    ids, types = map(idFromList, splitIDTypeList(idTypeList))
    deleteFromCache(idTypeList, ifaceName)
    if set(UI_CALLBACKS.get(ids, {}).get(types, {}).get(ifaceName, [])):
        from gui.WindowsManager import g_windowsManager
        accountUI = g_windowsManager.getAccountUI()
        if accountUI:
            accountUI.viewIFace([[{ifaceName: {}}, idTypeList]])
        else:
            LOG_ERROR(
                "accountUI is not ready. data hasn't been updated on subscribed list"
            )
def _updateRentedPlane(planeID):
    ifacename = 'IRent'
    idTypeList = [[planeID, 'plane']]
    ids, types = map(idFromList, splitIDTypeList(idTypeList))
    deleteFromCache(idTypeList, ifacename)
    if set(UI_CALLBACKS.get(ids, {}).get(types, {}).get(ifacename, [])):
        accountUI = g_windowsManager.getAccountUI()
        if accountUI:
            accountUI.viewIFace([[{ifacename: {}}, idTypeList]])
        else:
            LOG_ERROR('accountUI is not ready. IRent not called')
    if planeID in RENT_CALLBACKS:
        BigWorld.cancelCallback(RENT_CALLBACKS[planeID])
    RENT_CALLBACKS[planeID] = BigWorld.callback(UPDATER_PERIOD, partial(_updateRentedPlane, planeID))
def onHangarSpacesHashChanged(event):
    import BWPersonality
    from clientConsts import GUI_TYPES
    activeEventsCRC32 = BWPersonality.g_settings.hangarSpaceSettings[
        'eventsHash']
    if event.ob.get(
            'hash', ''
    ) != activeEventsCRC32 and BWPersonality.g_initPlayerInfo.useGUIType == GUI_TYPES.PREMIUM:
        accountUI = g_windowsManager.getAccountUI()
        if accountUI:
            data = dict(hash=activeEventsCRC32)
            accountUI.editIFace([[{
                event.iface.ifacename: data
            }, EMPTY_IDTYPELIST]])
            setToCache(EMPTY_IDTYPELIST, event.iface.ifacename, data)
Exemple #7
0
def onClanShortInfo(event):
    LOG_INFO('clan short info: ', format(event.ob))
    info = event.ob
    BWPersonality.g_initPlayerInfo.clanAbbrev = info['clanAbbrev']
    BWPersonality.g_initPlayerInfo.clanDBID = info['clanDBID']
    BWPersonality.g_initPlayerInfo.clanAttrs = 0
    BWPersonality.g_clanExtendedInfo.clanName = info['clanName']
    BWPersonality.g_clanExtendedInfo.clanMotto = ''
    player = BigWorld.player()
    if player != None and player.__class__ == PlayerAccount and player._lobbyInstance is not None:
        player._lobbyInstance.updatePlayerInfo()
    accountUI = g_windowsManager.getAccountUI()
    if accountUI:
        accountUI.viewIFace([[{'IClanMotto': {}}, EMPTY_IDTYPELIST]])
    return
def onIMessageCreate(event):
    messageID, messageType = next(
        ((iD, typ)
         for iD, typ in event.idTypeList if typ in ('message', 'uimessage')),
        (None, None))
    if messageID is not None:
        player = BigWorld.player()
        if player is not None and player.__class__ == PlayerAccount:
            accountUI = g_windowsManager.getAccountUI()
            if accountUI:
                data = {'storedMessages': [[messageID, messageType]]}
                if messageType == 'message':
                    data['messageIDs'] = [messageID]
                accountUI.editIFace([[{'IMessageSession': data}]])
    return
        def _invalidate(planeIDs):
            ifacename = 'IQuestList'
            accountUI = g_windowsManager.getAccountUI()

            def data():
                for planeID in planeIDs:
                    idTypeList = [[planeID, 'plane']]
                    deleteFromCache(idTypeList, ifacename)
                    ids, types = map(idFromList, splitIDTypeList(idTypeList))
                    if accountUI and set(UI_CALLBACKS.get(ids, {}).get(types, {}).get(ifacename, [])):
                        yield [{ifacename: {}}, idTypeList]

            request = list(data())
            if request:
                accountUI.viewIFace(request)
Exemple #10
0
def onClanMembersChanged(event):
    LOG_INFO('clan members was changed. Prev: {0}, Now: {1}'.format(
        event.prevob, event.ob))
    accountUI = g_windowsManager.getAccountUI()
    newMembers = event.ob.get('memberIDs')
    pInfo = BWPersonality.g_initPlayerInfo
    cInfo = BWPersonality.g_clanExtendedInfo
    if len(cInfo.members) == 0:
        if newMembers and len(newMembers) > 0:
            for dbid in newMembers:
                cInfo.members[dbid] = ['', 0]
                if accountUI:
                    accountUI.viewIFace([[{
                        'IClanMember': {}
                    }, [[dbid, 'account']]]])

            if messenger.g_xmppChatHandler:
                messenger.g_xmppChatHandler.onReceiveClanMembersDiff(
                    cInfo.members)
    elif event.ob != event.prevob:
        if newMembers and len(newMembers) > 0:
            removeList = cInfo.members.keys()
            for dbid in newMembers:
                if cInfo.members.get(dbid):
                    removeList.remove(dbid)
                else:
                    _onClanMemberAdded(dbid)

            for rMember in removeList:
                _onClanMemberRemoved(rMember)

        else:
            pInfo.clanAbbrev = ''
            pInfo.clanDBID = 0
            pInfo.clanAttrs = 0
            cInfo.resetAttrs()
            if messenger.g_xmppChatHandler:
                messenger.g_xmppChatHandler.refreshClanInfo()
    def __refresh3DModel(self):
        from Account import PLANE_BLOCK_TYPE
        vehicleInfo = self.__deferredVehicleInfo
        if vehicleInfo is not None:
            LOG_TRACE('__refresh3DModel() block type is {0} for {1}'.format(PLANE_BLOCK_TYPE.get(vehicleInfo.planeID, -1), vehicleInfo.planeID))
        planeBlocked = vehicleInfo and PLANE_BLOCK_TYPE.get(vehicleInfo.planeID, consts.BLOCK_TYPE.UNLOCKED) & consts.BLOCK_TYPE.IN_BATTLE
        if not self.__deferredRefresh3DModel and not self.__lastPlaneBlockState:
            return
        else:
            self.__lastPlaneBlockState = planeBlocked
            self.__deferredRefresh3DModel = False
            vehicleInfo = None if planeBlocked else vehicleInfo
            if vehicleInfo is None:
                g_hangarSpace.refreshVehicle(None)
            else:

                def _onResponse(vehicleInfo, obj):
                    if vehicleInfo.blockType & BLOCK_TYPE.IN_BATTLE:
                        LOG_ERROR('Cannot refresh plane {0}. Plane locked'.format(vehicleInfo.planeID))
                    elif not isinstance(obj, basestring):
                        if self.__deferredVehicleInfo == vehicleInfo:
                            dec = self.__getDecalByKills(obj[0][0]['IPlaneStats']['row'])
                            vehicleInfo.decalPKills = dec[0]
                            vehicleInfo.decalSKills = dec[1]
                            vehicleInfo.customization = Customization(obj[0][0]['IInstalledCamouflage']['ids'])
                            vehicleInfo.planeBirthdayOb = obj[0][0]['IPlaneBirthday']
                            g_hangarSpace.refreshVehicle(vehicleInfo)
                            self.__deferredVehicleInfo = None
                    else:
                        LOG_ERROR('__refresh3DModel::_onResponse. obj error: {0}'.format(obj))
                    return

                accountUI = g_windowsManager.getAccountUI()
                if accountUI:
                    accountUI.viewIFace([[{'IPlaneStats': {},
                       'IInstalledCamouflage': {},
                       'IPlaneBirthday': {}}, [[vehicleInfo.planeID, 'plane']]]], dbgCallback=partial(_onResponse, vehicleInfo))
            return
Exemple #12
0
 def save(self, value):
     i = value.index
     spaceID = value.data[i].key
     from gui.WindowsManager import g_windowsManager
     g_windowsManager.getAccountUI().deleteIFace([[{
         'ICurrentHangarSpace': {}
     }, [[None, 'preview']]]])
     g_windowsManager.getAccountUI().addIFace([[{
         'ICurrentHangarSpace': {
             'spaceID': spaceID
         }
     }, [[None, 'preview']]]])
     g_windowsManager.getAccountUI().editIFace([[{
         'ICurrentHangarSpace': {
             'spaceID': spaceID
         }
     }, EMPTY_IDTYPELIST]])
     return
Exemple #13
0
 def _updateICurrentActivities(self):
     accountUI = g_windowsManager.getAccountUI()
     accountUI.editIFace([[{'ICurrentActivities': {}}, EMPTY_IDTYPELIST]])
def onGameModesParams(event):
    from gui.WindowsManager import g_windowsManager
    accountUI = g_windowsManager.getAccountUI()
    if accountUI:
        accountUI.onGameModesParams(event.ob)
Exemple #15
0
def _onClanMemberAdded(memberId):
    LOG_INFO('clan member added: ', memberId)
    BWPersonality.g_clanExtendedInfo.members[memberId] = ['', 0]
    accountUI = g_windowsManager.getAccountUI()
    if accountUI:
        accountUI.viewIFace([[{'IClanMember': {}}, [[memberId, 'account']]]])