def prerequisites(self, respawnCompactDescr=None): if self.respawnCompactDescr is not None: respawnCompactDescr = self.respawnCompactDescr self.isCrewActive = True self.respawnCompactDescr = None if self.respawnOutfitCompactDescr is not None: outfitDescr = self.respawnOutfitCompactDescr self.respawnOutfitCompactDescr = None else: outfitDescr = self.publicInfo.outfit oldTypeDescriptor = self.typeDescriptor self.typeDescriptor = self.getDescr(respawnCompactDescr) forceReloading = respawnCompactDescr is not None if 'battle_royale' in self.typeDescriptor.type.tags: if oldTypeDescriptor: forceReloading = False for moduleName in ('gun', 'turret', 'chassis'): oldModule = getattr(oldTypeDescriptor, moduleName) newModule = getattr(self.typeDescriptor, moduleName) if oldModule.id != newModule.id: forceReloading = True _logger.info( 'Battle royale force appearance reloading!') if moduleName == 'gun': BigWorld.player().gunRotator.switchActiveGun(0) break else: forceReloading = True self.appearance, prereqs = appearance_cache.createAppearance( self.id, self.typeDescriptor, self.health, self.isCrewActive, self.isTurretDetached, outfitDescr, forceReloading) self.prereqsCompDescr = self.respawnCompactDescr if self.respawnCompactDescr else self.publicInfo.compDescr return (loadingPriority(self.id), prereqs)
def __requestModelsRefresh(self): modelsSetParams = self.modelsSetParams assembler = model_assembler.prepareCompoundAssembler( self.__typeDesc, modelsSetParams, self.__vehicle.spaceID, self.__vehicle.isTurretDetached) BigWorld.loadResourceListBG((assembler, ), makeCallbackWeak(self.__onModelsRefresh, modelsSetParams.state), loadingPriority(self.__vehicle.id))
def __loadModel(self, trackAssembler): if not IS_EDITOR: BigWorld.loadResourceListBG((trackAssembler, ), self.__onModelLoaded, loadingPriority(self.__entity.id)) self.__loading = True else: self.__loading = True resourceRefs = BigWorld.loadResourceListFG((trackAssembler, )) self.__onModelLoaded(resourceRefs)
def __requestModelsRefresh(self): self._onRequestModelsRefresh() self._isTurretDetached = self._vehicle.isTurretDetached modelsSetParams = self.modelsSetParams assembler = model_assembler.prepareCompoundAssembler( self.typeDescriptor, modelsSetParams, self.spaceID, self.isTurretDetached) collisionAssembler = model_assembler.prepareCollisionAssembler( self.typeDescriptor, self.isTurretDetached, self.spaceID) BigWorld.loadResourceListBG((assembler, collisionAssembler), makeCallbackWeak(self.__onModelsRefresh, modelsSetParams.state), loadingPriority(self._vehicle.id))
def __cacheApperance(self, vId, info): assembler = vehicle_assembler.createAssembler() prereqs = info.typeDescr.prerequisites(True) compoundAssembler, assemblerPrereqs = assembler.prerequisites( info.typeDescr, vId, info.health, info.isCrewActive, info.isTurretDetached, info.outfitCD) prereqs += assemblerPrereqs self.__assemblersCache[vId] = _AssemblerData(compoundAssembler, assembler, info, prereqs) if self.__spaceLoaded: BigWorld.loadResourceListBG(prereqs, partial(_resourceLoaded, prereqs, vId), loadingPriority(vId)) return (compoundAssembler, prereqs)
def prerequisites(self, respawnCompactDescr=None): if self.respawnCompactDescr is not None: respawnCompactDescr = self.respawnCompactDescr self.isCrewActive = True self.respawnCompactDescr = None if self.respawnOutfitCompactDescr is not None: outfitDescr = self.respawnOutfitCompactDescr self.respawnOutfitCompactDescr = None else: outfitDescr = self.publicInfo.outfit if respawnCompactDescr is None and self.typeDescriptor is not None: return else: self.typeDescriptor = self.getDescr(respawnCompactDescr) forceReloading = respawnCompactDescr is not None self.appearance, _, prereqs = appearance_cache.createAppearance(self.id, self.typeDescriptor, self.health, self.isCrewActive, self.isTurretDetached, outfitDescr, forceReloading) return (loadingPriority(self.id), prereqs)
def __cacheApperance(self, vId, info): appearance = CompoundAppearance() prereqs = appearance.prerequisites(info.typeDescr, vId, info.health, info.isCrewActive, info.isTurretDetached, info.outfitCD) if vId in self.__assemblersCache: assemblerData = self.__assemblersCache.get(vId, None) if assemblerData is not None: oldAppearance = assemblerData.appearance LOG_WARNING( 'The latest resources for the vehicle are not loaded yet, deleting old appearance and creating new one %s %s' % (info.typeDescr.name, assemblerData.info.typeDescr)) del oldAppearance del self.__assemblersCache[vId] self.__assemblersCache[vId] = _AssemblerData(appearance, info, prereqs) if self.__spaceLoaded: BigWorld.loadResourceListBG( prereqs, makeCallbackWeak(_resourceLoaded, prereqs, vId), loadingPriority(vId)) return prereqs
def addTrack(self, isLeft, isFlying=False): if self.__entity is None: return else: if self.__flags == 0 and self.__triggerEvents: TriggersManager.g_manager.activateTrigger( TriggersManager.TRIGGER_TYPE.PLAYER_VEHICLE_TRACKS_DAMAGED) if isLeft: self.__flags |= 1 else: self.__flags |= 2 trackAssembler = self.__setupTrackAssembler(self.__entity) if self.__model is None and not isFlying: if not self.__loading: BigWorld.loadResourceListBG( (trackAssembler, ), self.__onModelLoaded, loadingPriority(self.__entity.id)) self.__loading = True else: self.__setupTracksHiding() return
def __load(self, vId, info, onLoadedCallback=None): _logger.debug('__load(%d)', vId) loadInfo = self.__loadingAssemblerQueue.get(vId) if loadInfo is not None: if onLoadedCallback is not None: loadInfo.onConstructed += onLoadedCallback return loadInfo.appearance else: appearance = CompoundAppearance() prereqs = appearance.prerequisites(info.typeDescr, vId, info.health, info.isCrewActive, info.isTurretDetached, info.outfitCD) taskId = BigWorld.loadResourceListBG( prereqs, functools.partial(self.__onAppearanceLoaded, vId), loadingPriority(vId)) _logger.debug('loadResourceListBG vehicle = (%d), task = (%d)', vId, taskId) self.__loadingAssemblerQueue[vId] = _LoadInfo( appearance, taskId, info.typeDescr, onLoadedCallback) return appearance
def __cacheApperance(self, vId, info): assembler = vehicle_assembler.createAssembler() prereqs = info.typeDescr.prerequisites(True) compoundAssembler, assemblerPrereqs = assembler.prerequisites( info.typeDescr, vId, info.health, info.isCrewActive, info.isTurretDetached, info.outfitCD) prereqs += assemblerPrereqs if vId in self.__assemblersCache: assemblerData = self.__assemblersCache.get(vId, None) if assemblerData is not None: oldAssembler = assemblerData.assembler LOG_WARNING( 'The latest resources for the vehicle are not loaded yet, deleting old assember and creating new one %s %s' % (info.typeDescr.name, assemblerData.info.typeDescr)) del oldAssembler del self.__assemblersCache[vId] self.__assemblersCache[vId] = _AssemblerData(compoundAssembler, assembler, info, prereqs) if self.__spaceLoaded: BigWorld.loadResourceListBG(prereqs, partial(_resourceLoaded, prereqs, vId), loadingPriority(vId)) return (compoundAssembler, prereqs)