예제 #1
0
    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))
예제 #3
0
 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)
예제 #4
0
 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)
예제 #7
0
 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
예제 #8
0
 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
예제 #10
0
 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)