def __handleEquipmentExpanded(self, intCD): if not self.__flashObject.getVisibility(): return result, error = g_sessionProvider.getEquipmentsCtrl().changeSetting( intCD) if not result and error: self.__ui.vErrorsPanel.showMessage(error.key, error.ctx) return if intCD not in self.__cds: LOG_ERROR('Equipment is not found in panel', intCD, self.__cds) return item = g_sessionProvider.getEquipmentsCtrl().getEquipment(intCD) if not item: LOG_ERROR('Equipment is not found in control', intCD) return slots = [] keys = {} for entityIdx, (itemName, entityName, entityState) in enumerate(item.getGuiIterator()): bwKey, sfKey = self.__genKey(entityIdx) keys[bwKey] = partial(self.__handleEquipmentPressed, intCD, entityName) slots.append({ 'bwKeyCode': bwKey, 'sfKeyCode': sfKey, 'entityName': itemName, 'entityState': entityState }) self.__flashObject.expandEquipmentSlot(self.__cds.index(intCD), slots) self.__keys.clear() self.__keys = keys ctrl = g_sessionProvider.getVehicleStateCtrl() ctrl.onVehicleStateUpdated += self.__onVehicleStateUpdated
def __handleEquipmentExpanded(self, intCD): if not self.__flashObject.getVisibility(): return result, error = g_sessionProvider.getEquipmentsCtrl().changeSetting(intCD) if not result and error: self.__ui.vErrorsPanel.showMessage(error.key, error.ctx) return if intCD not in self.__cds: LOG_ERROR('Equipment is not found in panel', intCD, self.__cds) return item = g_sessionProvider.getEquipmentsCtrl().getEquipment(intCD) if not item: LOG_ERROR('Equipment is not found in control', intCD) return slots = [] keys = {} for entityIdx, (itemName, entityName, entityState) in enumerate(item.getGuiIterator()): bwKey, sfKey = self.__genKey(entityIdx) keys[bwKey] = partial(self.__handleEquipmentPressed, intCD, entityName) slots.append({'bwKeyCode': bwKey, 'sfKeyCode': sfKey, 'entityName': itemName, 'entityState': entityState}) self.__flashObject.expandEquipmentSlot(self.__cds.index(intCD), slots) self.__keys.clear() self.__keys = keys ctrl = g_sessionProvider.getVehicleStateCtrl() ctrl.onVehicleStateUpdated += self.__onVehicleStateUpdated
def __showMarkerCallback(self, eq, pos, dir, time, areaUID): timer = round(time - BigWorld.serverTime()) area = self.__selectedAreas.pop(areaUID, None) if area is not None: area.destroy() self.__selectedAreas[areaUID] = self.createEquipmentSelectedArea(pos, dir, eq) self.__callbackDelayer.delayCallback(timer, functools.partial(self.__delayedAreaDestroy, areaUID)) g_sessionProvider.getEquipmentsCtrl().showMarker(eq, pos, dir, timer)
def __showMarkerCallback(self, eq, pos, dir, time, areaUID): timer = round(time - BigWorld.serverTime()) area = self.__selectedAreas.pop(areaUID, None) if area is not None: area.destroy() self.__selectedAreas[areaUID] = self.createEquipmentSelectedArea( pos, dir, eq) self.__callbackDelayer.delayCallback( timer, functools.partial(self.__delayedAreaDestroy, areaUID)) g_sessionProvider.getEquipmentsCtrl().showMarker(eq, pos, dir, timer)
def showHittingArea(self, equipmentID, pos, dir, time): if _ENABLE_DEBUG_LOG: LOG_DEBUG('===== showHittingArea =====') LOG_DEBUG(equipmentID) LOG_DEBUG(pos, dir, time) areaUID = int(equipmentID) if areaUID in self.__selectedAreas: return eq = vehicles.g_cache.equipments()[equipmentID] timer = round(time - BigWorld.serverTime()) self.__selectedAreas[areaUID] = self.createEquipmentSelectedArea(pos, dir, eq) self.__callbackDelayer.delayCallback(timer, functools.partial(self.__delayedAreaDestroy, areaUID)) g_sessionProvider.getEquipmentsCtrl().showMarker(eq, pos, dir, timer)
def start(self): self.__ownUI = GUI.WGMinimapFlash(self.__parentUI.movie) self.__ownUI.wg_inputKeyMode = 2 self.__parentUI.component.addChild(self.__ownUI, 'minimap') self.__ownUI.mapSize = Math.Vector2(self.__MINIMAP_SIZE) bl, tr = BigWorld.player().arena.arenaType.boundingBox self.__ownUI.setArenaBB(bl, tr) player = BigWorld.player() self.__playerTeam = player.team self.__playerVehicleID = player.playerVehicleID tex = BigWorld.PyTextureProvider(self.__cfg['texture']) if not self.__ownUI.setBackground(tex): LOG_ERROR("Failed to set minimap texture: '%s'" % self.__cfg['texture']) self.__cameraHandle = None self.__cameraMatrix = None self.__resetCamera(MODE_ARCADE) BigWorld.player().inputHandler.onCameraChanged += self.__resetCamera BigWorld.player().inputHandler.onPostmortemVehicleChanged += self.__clearCamera self.__parentUI.addExternalCallbacks({'minimap.onClick': self._onMapClicked, 'minimap.playAttantion': self._playAttention, 'minimap.setSize': self.onSetSize, 'minimap.lightPlayer': self.onLightPlayer, 'minimap.scaleMarkers': self.onScaleMarkers}) arena = player.arena arena.onPositionsUpdated += self.__onFarPosUpdated arena.onNewVehicleListReceived += self.__validateEntries arena.onVehicleKilled += self.__onVehicleKilled arena.onVehicleAdded += self.__onVehicleAdded arena.onTeamKiller += self.__onTeamKiller g_sessionProvider.getEquipmentsCtrl().onEquipmentMarkerShown += self.__onEquipmentMarkerShown self.__marks = {} if not g_sessionProvider.getCtx().isPlayerObserver(): mp = BigWorld.player().getOwnVehicleMatrix() self.__ownEntry['handle'] = self.__ownUI.addEntry(mp, self.zIndexManager.getIndexByName('self')) self.__ownEntry['matrix'] = player.getOwnVehicleMatrix() self.__ownEntry['location'] = None self.__isStarted = True for id in self.__vehiclesWaitStart: self.notifyVehicleStart(id) self.__vehiclesWaitStart = [] self.__mapSizeIndex = self.getStoredMinimapSize() from account_helpers.settings_core.SettingsCore import g_settingsCore g_settingsCore.onSettingsChanged += self.setupMinimapSettings self.setupMinimapSettings() self.setTeamPoints() g_repeatKeyHandlers.add(self.handleRepeatKeyEvent) return
def __removeListeners(self): g_eventBus.removeListener(GameEvent.CHOICE_CONSUMABLE, self.__handleConsumableChoice, scope=EVENT_BUS_SCOPE.BATTLE) vehicleCtrl = g_sessionProvider.getVehicleStateCtrl() if vehicleCtrl is not None: vehicleCtrl.onPostMortemSwitched -= self.__onPostMortemSwitched vehicleCtrl.onRespawnBaseMoving -= self.__onRespawnBaseMoving vehicleCtrl.onVehicleStateUpdated -= self.__onVehicleStateUpdated ammoCtrl = g_sessionProvider.getAmmoCtrl() if ammoCtrl is not None: ammoCtrl.onShellsAdded -= self.__onShellsAdded ammoCtrl.onShellsUpdated -= self.__onShellsUpdated ammoCtrl.onNextShellChanged -= self.__onNextShellChanged ammoCtrl.onCurrentShellChanged -= self.__onCurrentShellChanged ammoCtrl.onGunReloadTimeSet -= self.__onGunReloadTimeSet ammoCtrl.onGunReloadTimeSetInPercent -= self.__onGunReloadTimeSetInPercent eqCtrl = g_sessionProvider.getEquipmentsCtrl() if eqCtrl is not None: eqCtrl.onEquipmentAdded -= self.__onEquipmentAdded eqCtrl.onEquipmentUpdated -= self.__onEquipmentUpdated eqCtrl.onEquipmentCooldownInPercent -= self.__onEquipmentCooldownInPercent optDevicesCtrl = g_sessionProvider.getOptDevicesCtrl() if optDevicesCtrl is not None: optDevicesCtrl.onOptionalDeviceAdded -= self.__onOptionalDeviceAdded optDevicesCtrl.onOptionalDeviceUpdated -= self.__onOptionalDeviceUpdated return
def __handleEquipmentPressed(self, intCD, entityName=None): result, error = g_sessionProvider.getEquipmentsCtrl().changeSetting( intCD, entityName=entityName, avatar=BigWorld.player()) if not result and error: self.__ui.vErrorsPanel.showMessage(error.key, error.ctx) else: self.__flashObject.collapseEquipmentSlot()
def __getKeysGenerator(self): getEquipment = g_sessionProvider.getEquipmentsCtrl().getEquipment for idx, intCD in enumerate(self.__cds): if not intCD: yield (idx, None, None, None) else: bwKey, sfKey = self.__genKey(idx) handler = None if idx in AMMO_RANGE: handler = partial(self.__handleAmmoPressed, intCD) elif idx in EQUIPMENT_RANGE or idx in ORDERS_RANGE: item = getEquipment(intCD) if item and item.getTag() and item.getQuantity() > 0: if item.isEntityRequired(): handler = partial(self.__handleEquipmentExpanded, intCD) else: handler = partial(self.__handleEquipmentPressed, intCD) yield (idx, bwKey, sfKey, handler) return
def clear(self): eqCtrl = g_sessionProvider.getEquipmentsCtrl() if eqCtrl is not None: eqCtrl.onEquipmentUpdated -= self.__onEquipmentUpdated self.isSubscribed = False self.isRunning = False return
def run(self): self.isRunning = True if not self.isSubscribed: self.isSubscribed = True eqCtrl = g_sessionProvider.getEquipmentsCtrl() if eqCtrl is not None: eqCtrl.onEquipmentUpdated += self.__onEquipmentUpdated self.toggle(isOn=self.isOn())
def __changeVehicleSetting(self, tag, entityName): result, error = g_sessionProvider.getEquipmentsCtrl().changeSettingByTag( tag, entityName=entityName, avatar=BigWorld.player() ) if not result and error: ctrl = g_sessionProvider.getBattleMessagesCtrl() if ctrl: ctrl.onShowVehicleErrorByKey(error.key, error.ctx)
def hook_handle_equipment_expanded(self, int_cd): if config.enable and config.data['config'].get('button_expanded'): item = g_sessionProvider.getEquipmentsCtrl().getEquipment(int_cd) if not item: return for _, (_, _, entityState) in enumerate(item.getGuiIterator()): if entityState and entityState in ['destroyed', 'critical']: return hooked_handle_equipment_expanded(self, int_cd) return else: return hooked_handle_equipment_expanded(self, int_cd)
def __changeVehicleSetting(self, tag, entityName): result, error = g_sessionProvider.getEquipmentsCtrl( ).changeSettingByTag(tag, entityName=entityName, avatar=BigWorld.player()) if not result and error: ctrl = g_sessionProvider.getBattleMessagesCtrl() if ctrl: ctrl.onShowVehicleErrorByKey(error.key, error.ctx)
def isOn(self): eqCtrl = g_sessionProvider.getEquipmentsCtrl() if eqCtrl is not None: conditionVar = self.getVar() itemsList = conditionVar.get('items', []) for eqCD in itemsList: if eqCtrl.getEquipment(eqCD) is not None: return True return False
def _removeGameListeners(self): ctrl = g_sessionProvider.getBattleMessagesCtrl() if ctrl: ctrl.onShowPlayerMessageByCode -= self.__onShowPlayerMessageByCode ctrl.onShowPlayerMessageByKey -= self.__onShowPlayerMessageByKey ctrl = g_sessionProvider.getEquipmentsCtrl() if ctrl: ctrl.onEquipmentUpdated -= self.__onCombatEquipmentUpdated arena = avatar_getter.getArena() if arena: arena.onCombatEquipmentUsed -= self.__onCombatEquipmentUsed super(PlayerMessages, self)._removeGameListeners()
def __onVehicleStateUpdated(self, state, value): if state != VEHICLE_VIEW_STATE.DEVICES: return deviceName, _, actualState = value if deviceName in VEHICLE_DEVICE_IN_COMPLEX_ITEM: itemName = VEHICLE_DEVICE_IN_COMPLEX_ITEM[deviceName] else: itemName = deviceName idx = int(self.__flashObject.updateEntityState(itemName, actualState)) if idx and idx < len(self.__cds): intCD = self.__cds[idx] item = g_sessionProvider.getEquipmentsCtrl().getEquipment(intCD) if item and item.isEntityRequired(): bwKey, _ = self.__genKey(idx) self.__keys[bwKey] = partial(self.__handleEquipmentPressed, self.__cds[idx], deviceName)
def __addListeners(self): vehicleCtrl = g_sessionProvider.getVehicleStateCtrl() vehicleCtrl.onPostMortemSwitched += self.__onPostMortemSwitched vehicleCtrl.onRespawnBaseMoving += self.__onRespawnBaseMoving ammoCtrl = g_sessionProvider.getAmmoCtrl() ammoCtrl.onShellsAdded += self.__onShellsAdded ammoCtrl.onShellsUpdated += self.__onShellsUpdated ammoCtrl.onNextShellChanged += self.__onNextShellChanged ammoCtrl.onCurrentShellChanged += self.__onCurrentShellChanged ammoCtrl.onGunReloadTimeSet += self.__onGunReloadTimeSet ammoCtrl.onGunReloadTimeSetInPercent += self.__onGunReloadTimeSetInPercent eqCtrl = g_sessionProvider.getEquipmentsCtrl() eqCtrl.onEquipmentAdded += self.__onEquipmentAdded eqCtrl.onEquipmentUpdated += self.__onEquipmentUpdated optDevicesCtrl = g_sessionProvider.getOptDevicesCtrl() optDevicesCtrl.onOptionalDeviceAdded += self.__onOptionalDeviceAdded optDevicesCtrl.onOptionalDeviceUpdated += self.__onOptionalDeviceUpdated
def __addListeners(self): vehicleCtrl = g_sessionProvider.getVehicleStateCtrl() vehicleCtrl.onPostMortemSwitched += self.__onPostMortemSwitched vehicleCtrl.onRespawnBaseMoving += self.__onRespawnBaseMoving ammoCtrl = g_sessionProvider.getAmmoCtrl() ammoCtrl.onShellsAdded += self.__onShellsAdded ammoCtrl.onShellsUpdated += self.__onShellsUpdated ammoCtrl.onNextShellChanged += self.__onNextShellChanged ammoCtrl.onCurrentShellChanged += self.__onCurrentShellChanged ammoCtrl.onGunReloadTimeSet += self.__onGunReloadTimeSet ammoCtrl.onGunReloadTimeSetInPercent += self.__onGunReloadTimeSetInPercent eqCtrl = g_sessionProvider.getEquipmentsCtrl() eqCtrl.onEquipmentAdded += self.__onEquipmentAdded eqCtrl.onEquipmentUpdated += self.__onEquipmentUpdated optDevicesCtrl = g_sessionProvider.getOptDevicesCtrl() optDevicesCtrl.onOptionalDeviceAdded += self.__onOptionalDeviceAdded optDevicesCtrl.onOptionalDeviceUpdated += self.__onOptionalDeviceUpdated g_eventBus.addListener(GameEvent.CHOICE_CONSUMABLE, self.__handleConsumableChoice, scope=EVENT_BUS_SCOPE.BATTLE)
def __getKeysGenerator(self): getEquipment = g_sessionProvider.getEquipmentsCtrl().getEquipment for idx, intCD in enumerate(self.__cds): if not intCD: yield (idx, None, None, None) else: bwKey, sfKey = self.__genKey(idx) handler = None if idx in AMMO_RANGE: handler = partial(self.__handleAmmoPressed, intCD) elif idx in EQUIPMENT_RANGE or idx in ORDERS_RANGE: item = getEquipment(intCD) if item and item.getTag() and item.getQuantity() > 0: if item.isEntityRequired(): handler = partial(self.__handleEquipmentExpanded, intCD) else: handler = partial(self.__handleEquipmentPressed, intCD) yield (idx, bwKey, sfKey, handler)
def fini(self): ctrl = g_sessionProvider.getEquipmentsCtrl() if ctrl: ctrl.onEquipmentMarkerShown -= self.__onShown super(_EquipmentsMarkerPlugin, self).fini()
def init(self): super(_EquipmentsMarkerPlugin, self).init() ctrl = g_sessionProvider.getEquipmentsCtrl() if ctrl: ctrl.onEquipmentMarkerShown += self.__onShown
def __handleEquipmentPressed(self, intCD, entityName = None): result, error = g_sessionProvider.getEquipmentsCtrl().changeSetting(intCD, entityName=entityName, avatar=BigWorld.player()) if not result and error: self.__ui.vErrorsPanel.showMessage(error.key, error.ctx) else: self.__flashObject.collapseEquipmentSlot()
def __changeVehicleSetting(self, tag, entityName): result, error = g_sessionProvider.getEquipmentsCtrl().changeSettingByTag(tag, entityName=entityName, avatar=BigWorld.player()) if not result and error: self.__ui.vErrorsPanel.showMessage(error.key, error.ctx)
def clear(self): eqCtrl = g_sessionProvider.getEquipmentsCtrl() if eqCtrl is not None: eqCtrl.onEquipmentUpdated -= self.__onEquipmentUpdated self.isSubscribed = False self.isRunning = False