Example #1
0
 def __moveCameraTo(self, vehicleID, sourceVehicleID = None):
     vehicle = BigWorld.entity(vehicleID)
     if vehicle is None:
         if vehicleID == BigWorld.player().playerVehicleID:
             targetMatrix = BigWorld.player().getOwnVehicleMatrix()
             self.__setCameraSettings(targetMP=targetMatrix, pivotSettings=self.__savedPivotSettings, cameraDistance=self.__savedCameraDistance, yawPitch=self.__savedYawPitch)
             return True
         return False
     else:
         targetMatrix = vehicle.matrix
         self.__setCameraSettings(targetMP=targetMatrix, pivotSettings=self.__savedPivotSettings, cameraDistance=self.__savedCameraDistance, yawPitch=self.__savedYawPitch)
         if sourceVehicleID is not None:
             sourceVehicle = BigWorld.entity(sourceVehicleID)
             if sourceVehicle is not None:
                 self.__savedPivotSettings = self.__arcadeCamera.getPivotSettings()
                 self.__savedCameraDistance = self.__arcadeCamera.getCameraDistance()
                 self.__savedYawPitch = self.__arcadeCamera.angles
                 dir = Math.Matrix(vehicle.matrix).translation - Math.Matrix(sourceVehicle.matrix).translation
                 yaw = dir.yaw
                 pitch = dir.pitch + self.KILLER_VEHICLE_PITCH_OFFSET
                 if pitch > math.pi * 0.5:
                     pitch = math.pi * 0.5
                 if pitch < -math.pi * 0.5:
                     pitch = -math.pi * 0.5
                 self.__setCameraSettings(pivotSettings=self.KILLER_VEHICLE_CAMERA_PIVOT_SETTINGS, cameraDistance=self.KILLER_VEHICLE_CAMERA_DISTANCE, yawPitch=(yaw, pitch))
         return True
Example #2
0
 def requestEmblemByUrl(cls, url, callback):
     if hasattr(BigWorld.player(), 'customFilesCache'):
         if url is not None:
             BigWorld.player().customFilesCache.get(url, lambda _, data: callback(data))
     else:
         LOG_WARNING('Trying to get emblem by url from non-account', url)
     return
Example #3
0
    def __devSellInvalidVehicle(self, vehInvID, callback):

        def response(code):
            LOG_WARNING('Invalid vehicle selling result', vehInvID, code)
            callback(code >= 0)

        BigWorld.player().inventory.sellVehicle(vehInvID, True, [], [], response)
Example #4
0
 def _request(self, callback):
     LOG_DEBUG('Make server request to equip tankman:', self.tankman, self.vehicle, self.slot, self.isReequip)
     tmanInvID = None
     if self.tankman is not None:
         tmanInvID = self.tankman.invID
     BigWorld.player().inventory.equipTankman(self.vehicle.invID, self.slot, tmanInvID, lambda code: self._response(code, callback))
     return
Example #5
0
    def __devDismissInvalidTankmen(self, tmanInvID, callback):

        def response(code):
            LOG_WARNING('Invalid tankman dismissing result', tmanInvID, code)
            callback(code >= 0)

        BigWorld.player().inventory.dismissTankman(tmanInvID, response)
 def destroy(self):
     BigWorld.player().arena.onPeriodChange -= self.__arenaPeriodChanged
     if self.__startEngineCbk is not None:
         BigWorld.cancelCallback(self.__startEngineCbk)
     self._vehicle = None
     self._gearUpCbk = None
     return
    def find_autoaim_target(self):
        auto_aim_vehicle = property(lambda self_other: BigWorld.entities.get(self_other.__autoAimVehID, None))
        print('find_autoaim_target', auto_aim_vehicle)
        if auto_aim_vehicle is None and BigWorld.target() is not None:
            return BigWorld.target()
        player = BigWorld.player()
        vehicles = player.arena.vehicles
        camera_dir, camera_pos = cameras.getWorldRayAndPoint(0, 0)
        camera_dir.normalise()
        result_len = None
        las_vehicle = None
        min_radian = 100000.0
        for vId, vData in vehicles.items():
            if vData['team'] == player.team:
                continue
            vehicle = BigWorld.entity(vId)
            if vehicle is None or not vehicle.isStarted or not vehicle.isAlive():
                continue
            temp1, radian = self._calc_radian(vehicle.position, self.angle_autoaim) #1.289 градуса в радианах

            if not temp1 and temp1 is not None:
                continue
            length = self._calc_length(vehicle.position, BigWorld.player().position)
            if radian:
                if result_len is None:
                    result_len = length
                    las_vehicle = vehicle
                if radian < min_radian and result_len >= length:
                    min_radian = radian
                    las_vehicle = vehicle
        result = las_vehicle
        if result is not None:
            if BigWorld.wg_collideSegment(BigWorld.player().spaceID, BigWorld.entity(result.id).appearance.modelsDesc['gun']['model'].position, camera_pos, False) is None:
                return result
        return BigWorld.target()
 def shot(self, vehicle, attacker_id, points, effects_index):
     if not (_config.data['enabled'] and self.on_off): return
     if not vehicle.isStarted: return
     if not vehicle.isPlayerVehicle: return
     if BigWorld.player().team == BigWorld.player().arena.vehicles.get(attacker_id)['team']: return
     if vehicle.health < 1: return
     self.shots += 1
     index_hit, decode_comp_name = DamageFromShotDecoder.decodeHitPoints(points, vehicle.typeDescriptor)
     #compName = decode_comp_name[0].componentName if decode_comp_name else None
     has_pierced_hit = index_hit >= VEHICLE_HIT_EFFECT.ARMOR_PIERCED
     is_blocked = self.blocked_armor_hit(vehicle, decode_comp_name[0]) if decode_comp_name else False
     if is_blocked:
         for shell in BigWorld.player().arena.vehicles.get(attacker_id)['vehicleType'].gun['shots']:
             if effects_index == shell['shell']['effectsIndex']:
                 type_shell = shell['shell']['kind']
                 if type_shell != 'HIGH_EXPLOSIVE':
                     self.avgDMG, _ = shell['shell']['damage']
                     if has_pierced_hit:
                         self.list[self.shots] = {
                             'id'      : attacker_id,
                             'avgDMG'  : self.avgDMG,
                             'isDamage': False,
                             'used'    : False
                         }
                         BigWorld.callback(0.15, partial(self.shout_damage_hp, self.shots))
                     else: self.shout_damage()
                 break
     else: self.clear_data()
Example #9
0
 def tryBattlesTillCaptchaReset(self):
     if self.__tryReset:
         return
     if self.__triesLeft > 1:
         self.__tryReset = True
         LOG_WARNING('Client try battlesTillCaptcha reset')
         BigWorld.player().challengeCaptcha('', '', lambda resultID, errorCode: None)
 def __update(self):
     if self.__manualSound is None:
         return
     elif not hasattr(BigWorld.player(), 'gunRotator'):
         return
     else:
         p = BigWorld.player().gunRotator
         if p.maxturretRotationSpeed is not None and p.maxturretRotationSpeed > 0:
             self.__manualSound.setRTPC('RTPC_ext_turret_speed', p.turretRotationSpeed / p.maxturretRotationSpeed)
         else:
             self.__manualSound.setRTPC('RTPC_ext_turret_speed', 0)
         player = BigWorld.player()
         vehicleTypeDescriptor = player.vehicleTypeDescriptor
         gunRotator = player.gunRotator
         turretYaw = gunRotator.turretYaw
         desiredShotPoint = gunRotator.predictLockedTargetShotPoint()
         if desiredShotPoint is None:
             desiredShotPoint = player.inputHandler.getDesiredShotPoint()
         if desiredShotPoint is None:
             desiredShotPoint = gunRotator.markerInfo[0]
         cameraTurretYaw, _ = AimingSystems.getTurretYawGunPitch(vehicleTypeDescriptor, player.getOwnVehicleStabilisedMatrix(), desiredShotPoint, True)
         angleDiff = abs(turretYaw - cameraTurretYaw)
         if angleDiff > math.pi:
             angleDiff = 2 * math.pi - angleDiff
         self.__manualSound.setRTPC('RTPC_ext_turret_angle', angleDiff)
         turretPitch = BigWorld.player().gunRotator.gunPitch
         self.__manualSound.setRTPC('RTPC_ext_turret_pitch', turretPitch)
         self.__manualSound.setRTPC('RTPC_ext_turret_pitch_speed', abs(self.__oldPitch - turretPitch) / (BigWorld.time() - self.__oldTime))
         self.__oldPitch = turretPitch
         self.__oldTime = BigWorld.time()
         self.__manualSound.setRTPC('RTPC_ext_turret_damaged', 0 if BigWorld.player().deviceStates.get('turretRotator', None) is None else 1)
         return self.__updatePeriod
 def __calculateClosestPoint(self, start, dir):
     dir.normalise()
     end = start + dir.scale(10000.0)
     testResTerrain = BigWorld.wg_collideSegment(BigWorld.player().spaceID, start, end, 128, 8)
     terrainSuitsForCheck = testResTerrain and testResTerrain[1].dot(Math.Vector3(0.0, 1.0, 0.0)) <= math.cos(ShotPointCalculatorPlanar.TERRAIN_MIN_ANGLE)
     testResNonTerrain = BigWorld.wg_collideSegment(BigWorld.player().spaceID, start, end, 136)
     testResDynamic = collideDynamic(start, end, (BigWorld.player().playerVehicleID,), False)
     closestPoint = None
     closestDist = 1000000
     isPointConvenient = True
     if testResTerrain:
         closestPoint = testResTerrain[0]
         closestDist = (testResTerrain[0] - start).length
     if terrainSuitsForCheck:
         isPointConvenient = closestDist >= ShotPointCalculatorPlanar.MIN_DIST
     if testResNonTerrain is not None:
         dist = (testResNonTerrain[0] - start).length
         if dist < closestDist:
             closestPoint = testResNonTerrain[0]
             closestDist = dist
             isPointConvenient = closestDist >= ShotPointCalculatorPlanar.MIN_DIST
     if closestPoint is None and testResDynamic is None:
         return (AimingSystems.shootInSkyPoint(start, dir), True)
     else:
         if testResDynamic is not None:
             dynDist = testResDynamic[0]
             if dynDist <= closestDist:
                 dir = end - start
                 dir.normalise()
                 closestPoint = start + dir * dynDist
                 isPointConvenient = True
         return (closestPoint, isPointConvenient)
 def __updateSound(self, angleDiff):
     if self.__manualSound is None:
         return
     else:
         if self.__gearSound is not None and angleDiff >= _PlayerTurretRotationSoundEffect.__MIN_ANGLE_TO_ENABLE_GEAR:
             if self.__currentSpeedState != self.__SPEED_FAST and self.__currentSpeedState != self.__SPEED_PRE_FAST:
                 nextSpeedState = self.__SPEED_PRE_FAST
             else:
                 nextSpeedState = self.__currentSpeedState
         elif angleDiff >= _PlayerTurretRotationSoundEffect.__MIN_ANGLE_TO_ENABLE_MANUAL:
             nextSpeedState = self.__SPEED_SLOW
         else:
             nextSpeedState = self.__SPEED_IDLE
         stateFn = self.__stateTable[self.__currentSpeedState][nextSpeedState]
         if stateFn is not None:
             stateFn()
         self.__currentSpeedState = nextSpeedState
         if g__attachToCam:
             __p = BigWorld.camera().position
         else:
             __p = BigWorld.player().position
         isTurretAlive = BigWorld.player().deviceStates.get('turretRotator', None) is None
         if self.__gearDamagedParam is not None:
             self.__gearDamagedParam.value = 0.0 if isTurretAlive else 1.0
         if self.__manGearDamagedParam is not None:
             self.__manGearDamagedParam.value = 0.0 if isTurretAlive else 1.0
         if self.__manualSound is not None:
             self.__manualSound.position = __p
         if self.__gearSound is not None:
             self.__gearSound.position = __p
         return
 def __init_sound(self):
     if BigWorld.player() is not None and BigWorld.player().getVehicleAttached() is not None:
         self.connectSoundToMatrix(BigWorld.player().getVehicleAttached().appearance.modelsDesc['turret']['model'].matrix)
     else:
         self.connectSoundToMatrix(mathUtils.createIdentityMatrix())
     self.delayCallback(self.__updatePeriod, self.__update)
     return
Example #14
0
    def onCameraChanged(self, cameraMode, curVehID = None):
        LOG_DEBUG('onCameraChanged', cameraMode, curVehID)
        if self.__cameraMode == 'mapcase':
            self.setAimingMode(False)
        elif cameraMode == 'mapcase':
            self.setAimingMode(True)
        self.__cameraMode = cameraMode

        def setVisible(cname):
            m = self.getMember(cname)
            if m is not None:
                m.visible = cameraMode != 'video'
            return

        if self.__isGuiShown():
            self.damagePanel.showAll(cameraMode != 'video')
            setVisible('vehicleMessagesPanel')
            setVisible('vehicleErrorsPanel')
        if cameraMode == 'video':
            self.__cameraVehicleID = -1
            self.__vErrorsPanel.clear()
            self.__vMsgsPanel.clear()
            self._hideVehicleTimer('ALL')
            self.hideDeathzoneTimer('ALL')
            aim = BigWorld.player().inputHandler.aim
            if aim is not None:
                aim.updateAmmoState(True)
        aim = BigWorld.player().inputHandler.aim
        if aim is not None:
            aim.onCameraChange()
        return
Example #15
0
    def __generateRetreatTrajectory(self, idealFlightHeight, bombingEndPosition, bombingDir, bombingEndTime):
        clientArena = BigWorld.player().arena
        endTrajectoryPosition = clientArena.collideWithSpaceBB(bombingEndPosition, bombingEndPosition + bombingDir * 9000.0)
        segmentLength = (endTrajectoryPosition - bombingEndPosition).length / _RETREAT_SUBDIVISION_FACTOR
        firstRetreatPoint = Vector3(bombingEndPosition + bombingDir * _INITIAL_RETREAT_SHIFT)
        positions = [firstRetreatPoint]
        positions += [ firstRetreatPoint + bombingDir * (segmentLength * (idx + 1)) for idx in xrange(_RETREAT_SUBDIVISION_FACTOR - 1) ]
        positions.append(endTrajectoryPosition - bombingDir * min(segmentLength * 0.1, 50.0))
        positions.append(endTrajectoryPosition + bombingDir * 100)
        retreatHeight = _MINIMAL_RETREAT_HEIGHT
        minFlightHeight = idealFlightHeight
        for position in positions:
            zeroHeightPos = Vector3(position)
            zeroHeightPos.y = 0
            collRes = BigWorld.wg_collideSegment(BigWorld.player().spaceID, zeroHeightPos + (0, 1000, 0), zeroHeightPos + (0, -1000, 0), 18)
            if collRes is not None:
                minFlightHeight = max(collRes[0].y + retreatHeight, minFlightHeight)
            else:
                minFlightHeight = max(position.y, minFlightHeight)
            position.y = minFlightHeight

        for idx in xrange(len(positions) - 1):
            positions[idx].y = (positions[idx].y + positions[idx + 1].y) / 2.0

        result = self.__generateRetreatPoints(bombingEndPosition, bombingEndTime, positions)
        return result
Example #16
0
    def destroy(self):
        BigWorld.player().inputHandler.onCameraChanged -= self.__onCameraChanged
        self.__ballistics = None
        for shotID in self.__projectiles.keys():
            self.__delProjectile(shotID)

        return
Example #17
0
 def add(self, shotID, effectsDescr, gravity, refStartPoint, refVelocity, startPoint, maxDistance, isOwnShoot = False, tracerCameraPos = Math.Vector3(0, 0, 0)):
     import BattleReplay
     if BattleReplay.g_replayCtrl.isTimeWarpInProgress:
         return
     else:
         artID = effectsDescr.get('artilleryID')
         if artID is not None:
             self.salvo.addProjectile(artID, gravity, refStartPoint, refVelocity)
             return
         projectileMotor = self.__ballistics.addProjectile(shotID, gravity, refStartPoint, refVelocity, startPoint, maxDistance, isOwnShoot, ownVehicleGunPositionGetter(), tracerCameraPos)
         if projectileMotor is None:
             return
         projModelName, projModelOwnShotName, projEffects = effectsDescr['projectile']
         model = BigWorld.Model(projModelOwnShotName if isOwnShoot else projModelName)
         proj = {'model': model,
          'motor': projectileMotor,
          'effectsDescr': effectsDescr,
          'showExplosion': False,
          'fireMissedTrigger': isOwnShoot,
          'autoScaleProjectile': isOwnShoot,
          'effectsData': {}}
         BigWorld.player().addModel(model)
         model.addMotor(projectileMotor)
         model.visible = False
         model.visibleAttachments = True
         projEffects.attachTo(proj['model'], proj['effectsData'], 'flying')
         self.__projectiles[shotID] = proj
         FlockManager.getManager().onProjectile(startPoint)
         return
Example #18
0
def new_brf_format(self, message, *args):
    result = old_brf_format(self, message, *args)
    arenaUniqueID = message.data.get('arenaUniqueID', 0)
    stat.queue.put(arenaUniqueID)
    if stat.config.get('enableBattleEndedMessage', True) and hasattr(BigWorld.player(), 'arena'):
        if BigWorld.player().arena.arenaUniqueID != arenaUniqueID:
            isWinner = message.data.get('isWinner', 0)
            battleEndedMessage = ''
            if isWinner < 0:
                battleEndedMessage = stat.config.get('battleEndedMessageDefeat', '')
            elif isWinner > 0:
                battleEndedMessage = stat.config.get('battleEndedMessageWin', '')
            else:
                battleEndedMessage = stat.config.get('battleEndedMessageDraw', '')
            battleEndedMessage = battleEndedMessage.encode('utf-8')
            vehicleCompDesc = message.data.get('vehTypeCompDescr', None)
            vt = vehiclesWG.getVehicleType(vehicleCompDesc)
            battleEndedMessage = battleEndedMessage.replace('{{vehicle}}', vt.userString)
            name = vt.name.replace(':', '-')
            battleEndedMessage = battleEndedMessage.replace('{{vehicle-name}}', name)
            arenaTypeID = message.data.get('arenaTypeID', 0)
            arenaType = ArenaType.g_cache[arenaTypeID]
            arenaName = i18n.makeString(arenaType.name)
            battleEndedMessage = battleEndedMessage.replace('{{map}}', arenaName)
            battleEndedMessage = battleEndedMessage.replace('{{map-name}}', arenaType.geometryName)
            MessengerEntry.g_instance.gui.addClientMessage(battleEndedMessage)
    return result
 def change(self, vehInvID, section, isAlreadyPurchased):
     if self._newItemID is None:
         message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_INSCRIPTION_NOT_SELECTED)
         self.onCustomizationChangeFailed(message)
         return
     if self._rentalPackageDP.selectedPackage is None:
         message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_INSCRIPTION_DAYS_NOT_SELECTED)
         self.onCustomizationChangeFailed(message)
         return
     cost, isGold = self._itemsDP.getCost(self._newItemID)
     if cost < 0:
         message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_INSCRIPTION_COST_NOT_FOUND)
         self.onCustomizationChangeFailed(message)
         return
     if isAlreadyPurchased:
         daysToWear = 0
         cost = 0
     elif CustomizationHelper.isItemInHangar(CUSTOMIZATION_ITEM_TYPE.INSCRIPTION, self._newItemID, self._nationID, self._itemsDP.position):
         hangarItem = CustomizationHelper.getItemFromHangar(CUSTOMIZATION_ITEM_TYPE.INSCRIPTION_TYPE, self._newItemID)
         daysToWear = 0 if hangarItem.get('isPermanent') else 7
     else:
         daysToWear = self._rentalPackageDP.selectedPackage.get('periodDays')
     newIdToSend = 0
     isNewInDefaultSetup = False
     isCurrIgr = self._itemsDP.isIGRItem(self._currentItemID)
     if isCurrIgr:
         isNewInDefaultSetup = CustomizationHelper.isIdInDefaultSetup(CUSTOMIZATION_ITEM_TYPE.INSCRIPTION, self._newItemID)
     if self._currentItemID is None or not isCurrIgr or isCurrIgr and not isNewInDefaultSetup or isCurrIgr and isNewInDefaultSetup and daysToWear > 0:
         newIdToSend = self._newItemID
     BigWorld.player().inventory.changeVehicleInscription(vehInvID, self.getRealPosition(), newIdToSend, daysToWear, 1, lambda resultID: self.__onChangeVehicleInscription(resultID, (cost, isGold)))
Example #20
0
 def __init__(self, reason = None, isBan = False, expiryTime = None):
     super(DisconnectMeta, self).__init__('disconnected', scope=ScopeTemplates.GLOBAL_SCOPE)
     self.reason = reason
     self.isBan = isBan
     self.expiryTime = expiryTime
     if hasattr(BigWorld.player(), 'setForcedGuiControlMode'):
         BigWorld.player().setForcedGuiControlMode(True)
Example #21
0
 def mainLoop(self):
     while True:
         arenaUniqueID = self.queue.get()
         stat.battleResultsAvailable.wait()
         self.battleResultsBusy.acquire()
         shotBRCallback = partial(self.battleResultsCallback, arenaUniqueID)
         BigWorld.player().battleResultsCache.get(arenaUniqueID, shotBRCallback)
Example #22
0
    def showDamageFromShot(self, attackerID, points, effectsIndex):
        if not self.isStarted:
            return

        effectsDescr = vehicles.g_cache.shotEffects[effectsIndex]
        maxHitEffectCode, decodedPoints = DamageFromShotDecoder.decodeHitPoints(points, self.typeDescriptor)
        hasPiercedHit = DamageFromShotDecoder.hasDamaged(maxHitEffectCode)
        for shotPoint in decodedPoints:
            showFullscreenEffs = self.isPlayer and self.isAlive()
            keyPoints, effects, _ = effectsDescr[shotPoint.hitEffectGroup]
            self.appearance.modelsDesc[shotPoint.componentName]['boundEffects'].addNew(shotPoint.matrix, effects, keyPoints, isPlayer=self.isPlayer, showShockWave=showFullscreenEffs, showFlashBang=showFullscreenEffs, entity_id=self.id)

        if decodedPoints:
            firstHitPoint = decodedPoints[0]
            compMatrix = Math.Matrix(self.appearance.modelsDesc[firstHitPoint.componentName]['model'].matrix)
            firstHitDirLocal = firstHitPoint.matrix.applyToAxis(2)
            firstHitDir = compMatrix.applyVector(firstHitDirLocal)
            self.appearance.receiveShotImpulse(firstHitDir, effectsDescr['targetImpulse'])
            self.appearance.executeHitVibrations(maxHitEffectCode)
            player = BigWorld.player()
            player.inputHandler.onVehicleShaken(self, compMatrix.translation, firstHitDir, effectsDescr['caliber'], ShakeReason.HIT if hasPiercedHit else ShakeReason.HIT_NO_DAMAGE)

        self.__hitType = effectsIndex
        if not hasPiercedHit:
            self.damage_announce(attackerID, 0)

        if not self.isAlive():
            return

        if attackerID == BigWorld.player().playerVehicleID and maxHitEffectCode is not None and not self.isPlayer:
            marker = getattr(self, 'marker', None)
            if marker is not None:
                manager = g_windowsManager.battleWindow.markersManager
                manager.updateMarkerState(marker, 'hit_pierced' if hasPiercedHit else 'hit')
Example #23
0
 def __cb_onGetTutorialsCompleted(self, resultID, completed):
     ctx = self._ctx
     loader = self._loader
     if resultID < RES_SUCCESS:
         LOG_ERROR('Server return error on request tutorialsCompleted', resultID, completed)
         loader._clear()
         self._clear()
         return
     ctx.bonusCompleted = completed
     cache = ctx.cache
     if loader.tutorial._descriptor.areAllBonusesReceived(completed):
         cache.setFinished(True).write()
         loader._clear()
         self._clear()
         return
     if cache.isRefused():
         self._clear()
         if ctx.restart and not ctx.isInPrebattle:
             loader.tutorial.restart(ctx)
         else:
             loader.tutorial.pause(ctx)
         return
     if cache.isEmpty() and not completed:
         BigWorld.player().stats.get('dossier', self.__cb_onGetDossier)
     else:
         self._clear()
         if not cache.isAfterBattle():
             cache.setAfterBattle(loader.isAfterBattle)
         loader._doRun(ctx)
Example #24
0
 def handleKeyEvent(self, event):
     cursorDetached = self.__detachCount < 0
     import game
     (isDown, key, mods, isRepeat,) = game.convertKeyEvent(event)
     if isRepeat:
         return False
     if self.__isStarted and cursorDetached:
         return BigWorld.player().handleKey(isDown, key, mods)
     if not self.__isStarted or cursorDetached:
         return False
     if isDown and BigWorld.isKeyDown(Keys.KEY_CAPSLOCK):
         if self.__alwaysShowAimKey is not None and key == self.__alwaysShowAimKey:
             self.__alwaysShowAim = not self.__alwaysShowAim
             getAim = getattr(self.__curCtrl, 'getAim')
             if getAim is not None:
                 aim = getAim()
                 if aim is not None:
                     aim.setVisible(self.__alwaysShowAim or BigWorld.player().isGuiVisible)
             return True
         if self.__showMarkersKey is not None and key == self.__showMarkersKey and not BigWorld.player().isGuiVisible:
             from gui.WindowsManager import g_windowsManager
             markersManager = g_windowsManager.battleWindow.vMarkersManager
             markersManager.active(not markersManager.isActive)
             return True
         if key == Keys.KEY_F5 and constants.IS_DEVELOPMENT:
             self.__vertScreenshotCamera.enable(not self.__vertScreenshotCamera.isEnabled)
             return True
     if self.__curCtrl.handleKeyEvent(isDown, key, mods, event):
         return True
     return BigWorld.player().handleKey(isDown, key, mods)
    def create(self, mapName):
        global _V_START_POS
        global _V_START_ANGLES
        try:
            LOG_DEBUG('OfflineMapCreator.Create( %s )' % mapName)
            g_appLoader.showBattle()
            cfgType = 'basic'
            self.__loadCfg(cfgType, mapName)
            BigWorld.worldDrawEnabled(False)
            BigWorld.setWatcher('Visibility/GUI', False)
            self.__spaceId = BigWorld.createSpace()
            self.__isActive = True
            self.__arenaTypeID = self._arenaTypeIDByArenaName.get(mapName)
            self.__accountID = BigWorld.createEntity('Account', self.__spaceId, 0, _V_START_POS, (_V_START_ANGLES[2], _V_START_ANGLES[1], _V_START_ANGLES[0]), dict())
            self.__spaceMappingId = BigWorld.addSpaceGeometryMapping(self.__spaceId, None, 'spaces/' + mapName)
            self.__vEntityId = BigWorld.createEntity('Avatar', self.__spaceId, 0, _V_START_POS, (_V_START_ANGLES[2], _V_START_ANGLES[1], _V_START_ANGLES[0]), dict())
            BigWorld.player(BigWorld.entities[self.__vEntityId])
            self.__setupCamera()
            BigWorld.worldDrawEnabled(True)
        except:
            LOG_DEBUG('OfflineMapCreator.Create( %s ): FAILED with: ' % mapName)
            LOG_CURRENT_EXCEPTION()
            self.cancel()

        return
Example #26
0
 def _request(self, callback):
     BigWorld.player().inventory.setAndFillLayouts(
         self.vehicle.invID,
         self.shellsLayout,
         self.eqsLayout,
         lambda code, errStr, ext: self._response(code, callback, errStr=errStr, ctx=ext),
     )
Example #27
0
def teleportNext(timer, destinationList):
    dest = destinationList[0]
    BigWorld.player().tryToTeleport(dest[0], dest[1])
    if len(destinationList) > 1:
        BigWorld.callback(timer, partial(teleportNext, timer, destinationList[1:]))
    else:
        print 'teleport test finished'
Example #28
0
 def _request(self, callback):
     itemCD = self.item.intCD if self.install else 0
     newEqsLayout = map(lambda item: (item.intCD if item is not None else 0), self.vehicle.eqs)
     newEqsLayout[self.slotIdx] = itemCD
     BigWorld.player().inventory.equipEquipments(
         self.vehicle.invID, newEqsLayout, lambda code: self._response(code, callback)
     )
Example #29
0
    def _request(self, callback):
        LOG_DEBUG('Make server request to retrain Crew:', self.tankmen, self.vehicle, self.tmanCostTypeIdx)
        tMenInvIDsAndCostTypeIdx = []
        for tManInvID in self.tankmen:
            tMenInvIDsAndCostTypeIdx.append((tManInvID, self.tmanCostTypeIdx))

        BigWorld.player().inventory.multiRespecTankman(tMenInvIDsAndCostTypeIdx, self.vehicle.intCD, lambda code: self._response(code, callback))
Example #30
0
 def startVisual(self):
     assert not self.isStarted
     avatar = BigWorld.player()
     self.appearance.preStart(self.typeDescriptor)
     self.appearance.start(self, self.__prereqs)
     self.__prereqs = None
     self.appearance.changeEngineMode(self.engineMode)
     self.appearance.onVehicleHealthChanged()
     if self.isPlayer:
         if self.isAlive():
             BigWorld.wgAddEdgeDetectEntity(self, 0, 1, True)
             self.appearance.setupGunMatrixTargets(avatar.gunRotator)
     else:
         self.marker = g_windowsManager.battleWindow.markersManager.createMarker(self.proxy)
     if hasattr(self.filter, 'allowStrafeCompensation'):
         self.filter.allowStrafeCompensation = not self.isPlayer
     self.isStarted = True
     self.set_publicStateModifiers()
     self.set_damageStickers()
     if not self.isAlive():
         self.__onVehicleDeath(True)
     if self.isTurretMarkedForDetachment:
         self.confirmTurretDetachment()
     minimap = g_windowsManager.battleWindow.minimap
     minimap.notifyVehicleStart(self.id)
     self.__startWGPhysics()
     if self is BigWorld.player().getVehicleAttached():
         nationId = self.typeDescriptor.type.id[0]
         SoundGroups.g_instance.soundModes.setCurrentNation(nations.NAMES[nationId])
 def requestUserlistByName(self, name, maxCount, callback):
     reqID = self.__addRequest(MESSENGER_TIMEOUTS.GET_USERLIST_BY_NAME,
                               partial(_onUserlistResult, callback))
     BigWorld.player().base.messenger_onActionByClient(
         MESSENGER_ACTION_IDS.GET_USERLIST_BY_NAME, reqID,
         makeArgs(int32Arg1=maxCount, strArg1=name))
Example #32
0
def isInTutorialQueue():
    return getattr(BigWorld.player(), 'isInTutorialQueue', False)
Example #33
0
def isInRandomQueue():
    return getattr(BigWorld.player(), 'isInRandomQueue', False)
Example #34
0
 def forceStart(self):
     currPlayer = BigWorld.player()
     if currPlayer is not None and hasattr(currPlayer, 'forceEpicDevStart'):
         currPlayer.forceEpicDevStart()
     return
Example #35
0
 def forceStart(self):
     currPlayer = BigWorld.player()
     if currPlayer is not None and hasattr(currPlayer,
                                           'createArenaFromQueue'):
         currPlayer.createArenaFromQueue()
     return
Example #36
0
 def databaseID(self):
     return BigWorld.player(
     ).databaseID if not self.isDisconnected() else None
Example #37
0
 def __isNY():
     player = BigWorld.player()
     if not hasattr(player, 'newYear'):
         return False
     return player.newYear.state == NY_STATE.IN_PROGRESS
 def getInitParams(self):
     BigWorld.player().base.messenger_onActionByClient(
         MESSENGER_ACTION_IDS.GET_INIT_PARAMS, 0, makeArgs())
Example #39
0
 def onLeaveArena(self):
     self.__isOnArena = False
     BigWorld.player().arena.onPeriodChange -= self.__onArenaStateChanged
 def syncClanChatChannel(self, callback):
     reqID = self.__addRequest(MESSENGER_TIMEOUTS.SYNC_CLAN_CHAT_CHANNEL,
                               partial(_onInt32Result, callback))
     BigWorld.player().base.messenger_onActionByClient(
         MESSENGER_ACTION_IDS.SYNC_CLAN_CHAT_CHANNEL, reqID, makeArgs())
Example #41
0
def onGUISpaceEntered(spaceID):
    if spaceID == GUI_GLOBAL_SPACE_ID.BATTLE:
        cleanup()
        for vehicleID, vData in BigWorld.player().arena.vehicles.iteritems():
            if vData['vehicleType']:
                update_hp(vehicleID, vData['vehicleType'].maxHealth)
 def requestXmppPassword(self, callback):
     reqID = self.__addRequest(MESSENGER_TIMEOUTS.XMPP_GET_PASSWORD,
                               partial(_onStringResult, callback))
     BigWorld.player().base.messenger_onActionByClient(
         MESSENGER_ACTION_IDS.XMPP_GET_PASSWORD, reqID, makeArgs())
Example #43
0
 def _request(self, callback):
     LOG_DEBUG('Make server request to buy premium account', self.period,
               self.premiumPrice)
     BigWorld.player().stats.upgradeToPremium(
         self.period, self.arenaUniqueID,
         lambda code: self._response(code, callback))
Example #44
0
 def onEnterArena(self):
     BigWorld.player().arena.onPeriodChange += self.__onArenaStateChanged
     self.__isOnArena = True
     self.__onArenaStateChanged()
Example #45
0
 def _request(self, callback):
     LOG_DEBUG('Make server request to exchange xp for credits')
     BigWorld.player().stats.convertToFreeXP(
         self.vehiclesCD, self.xp,
         lambda code: self._response(code, callback),
         int(self.__freeConversion))
Example #46
0
 def __create(self):
     self.__areaVisual = BigWorld.PyTerrainSelectedArea()
     self.__model = BigWorld.Model('')
     BigWorld.player().addModel(self.__model)
Example #47
0
 def onLeaveWorld(self):
     self.__stopExtras()
     BigWorld.player().vehicle_onLeaveWorld(self)
     raise not self.isStarted or AssertionError
Example #48
0
 def _request(self, callback):
     LOG_DEBUG('Make server request to buy tankman berths')
     BigWorld.player().stats.buyBerths(
         lambda code: self._response(code, callback))
Example #49
0
 def isPlayerTeam(self):
     return self.team == BigWorld.player().team
Example #50
0
 def _request(self, callback):
     LOG_DEBUG('Make server request to exchange gold to credits')
     BigWorld.player().stats.exchange(
         self.gold, lambda code: self._response(code, callback))
Example #51
0
 def _disposeBombTarget(self):
     self._proxyPlayer.eSetBombTargetVisible -= self.__bombTarget.setBombTargetVisible
     BigWorld.player().eLeaveWorldEvent -= self._disposeBombTarget
     self.__bombTarget.dispose()
     self.__bombTarget = None
     return
 def playerVehicle(self):
     player = BigWorld.player()
     return self.createVehicle(player.name)
Example #53
0
 def hideCursor(self):
     Cursor.forceShowCursor(False)
     entity = BigWorld.player()
     entity.setFlyMouseInputAllowed(True)
Example #54
0
    def getShotResult(cls, hitPoint, collision, dir, excludeTeam=0):
        """ Gets shot result by present state of gun marker.
        :param hitPoint: Vector3 containing shot position.
        :param collision: instance of EntityCollisionData.
        :param excludeTeam: integer containing number of team that is excluded from result.
        :return: one of SHOT_RESULT.*.
        """
        if collision is None:
            return _SHOT_RESULT.UNDEFINED
        else:
            entity = collision.entity
            if entity.__class__.__name__ != 'Vehicle':
                return _SHOT_RESULT.UNDEFINED
            if entity.health <= 0 or entity.publicInfo['team'] == excludeTeam:
                return _SHOT_RESULT.UNDEFINED
            player = BigWorld.player()
            if player is None:
                return _SHOT_RESULT.UNDEFINED
            vDesc = player.getVehicleDescriptor()
            shell = vDesc.shot.shell
            caliber = shell.caliber
            shellKind = shell.kind
            ppDesc = vDesc.shot.piercingPower
            maxDist = vDesc.shot.maxDistance
            dist = (hitPoint - player.getOwnVehiclePosition()).length
            piercingPower = cls._computePiercingPowerAtDist(
                ppDesc, dist, maxDist)
            fullPiercingPower = piercingPower
            minPP, maxPP = cls._computePiercingPowerRandomization(shell)
            result = _SHOT_RESULT.NOT_PIERCED
            isJet = False
            jetStartDist = None
            ignoredMaterials = set()
            collisionsDetails = cls._getAllCollisionDetails(
                hitPoint, dir, entity)
            if collisionsDetails is None:
                return _SHOT_RESULT.UNDEFINED
            for cDetails in collisionsDetails:
                if isJet:
                    jetDist = cDetails.dist - jetStartDist
                    if jetDist > 0.0:
                        piercingPower *= 1.0 - jetDist * cls._SHELL_EXTRA_DATA[
                            shellKind].jetLossPPByDist
                if cDetails.matInfo is None:
                    result = cls._CRIT_ONLY_SHOT_RESULT
                else:
                    matInfo = cDetails.matInfo
                    if (cDetails.compName, matInfo.kind) in ignoredMaterials:
                        continue
                    hitAngleCos = cDetails.hitAngleCos if matInfo.useHitAngle else 1.0
                    if not isJet and cls._shouldRicochet(
                            shellKind, hitAngleCos, matInfo, caliber):
                        break
                    piercingPercent = 1000.0
                    if piercingPower > 0.0:
                        penetrationArmor = cls._computePenetrationArmor(
                            shellKind, hitAngleCos, matInfo, caliber)
                        piercingPercent = 100.0 + (
                            penetrationArmor -
                            piercingPower) / fullPiercingPower * 100.0
                        piercingPower -= penetrationArmor
                    if matInfo.vehicleDamageFactor:
                        if minPP < piercingPercent < maxPP:
                            result = _SHOT_RESULT.LITTLE_PIERCED
                        elif piercingPercent <= minPP:
                            result = _SHOT_RESULT.GREAT_PIERCED
                        break
                    elif matInfo.extra:
                        if piercingPercent <= maxPP:
                            result = cls._CRIT_ONLY_SHOT_RESULT
                    if matInfo.collideOnceOnly:
                        ignoredMaterials.add((cDetails.compName, matInfo.kind))
                if piercingPower <= 0.0:
                    break
                if cls._SHELL_EXTRA_DATA[shellKind].jetLossPPByDist > 0.0:
                    isJet = True
                    mInfo = cDetails.matInfo
                    armor = mInfo.armor if mInfo is not None else 0.0
                    jetStartDist = cDetails.dist + armor * 0.001

            return result
Example #55
0
 def freeXPToTankman(self, tankmanId, freeXp, callback):
     BigWorld.player().inventory.freeXPToTankman(
         tankmanId, freeXp, lambda eStr, code: self.__callback(
             (code >= 0, eStr)))
Example #56
0
 def _initBombTarget(self):
     self.__bombTarget = BombTargetHolder(self._proxyPlayer)
     self.__bombTarget.initBombTarget()
     self._proxyPlayer.eSetBombTargetVisible += self.__bombTarget.setBombTargetVisible
     BigWorld.player().eLeaveWorldEvent += self._disposeBombTarget
Example #57
0
 def getCredits(self, callback):
     BigWorld.player().stats.get('credits', self.__valueResponse)
Example #58
0
 def reset(self):
     self.playerTeam = BigWorld.player().team
     self.mainCaliberValue = 0
     self.hpDict = {}
     self.aliveDict = {}
Example #59
0
 def getTankmanDossier(self, tankmanID, callback):
     BigWorld.player().inventory.getItems(
         _TANKMAN, partial(self.__tankmanDossierResponse, tankmanID))
Example #60
0
 def getFreeXPToTManXPRate(self, callback):
     BigWorld.player().shop.getFreeXPToTManXPRate(self.__valueResponse)