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
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
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)
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)
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
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
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)
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']]]])