Example #1
0
 def __loadRoot(self, rootCD):
     item = self.__loadInstalledItems(rootCD)
     node = self._getNodeData(rootCD, self._earnedXP, makeDefUnlockProps(), set(), renderer='root', topLevel=True)
     if item is not None:
         if g_currentVehicle.isPresent() and g_currentVehicle.invID == item.inventoryId:
             node['state'] |= NODE_STATE.SELECTED
     self._nodesIdx[rootCD] = 0
     self._nodes.append(node)
     self.__loadInstalledItems(rootCD)
     return
Example #2
0
 def __loadRoot(self, rootCD):
     item = self.__loadInstalledItems(rootCD)
     node = self._getNodeData(rootCD,
                              self._earnedXP,
                              makeDefUnlockProps(),
                              set(),
                              renderer='root',
                              topLevel=True)
     if item is not None:
         if g_currentVehicle.isPresent(
         ) and g_currentVehicle.invID == item.inventoryId:
             node['state'] |= NODE_STATE.SELECTED
     self._nodesIdx[rootCD] = 0
     self._nodes.append(node)
     self.__loadInstalledItems(rootCD)
     return
Example #3
0
    def __loadTopLevel(self, rootCD):
        xpGetter = self._xps.get
        invID = g_currentVehicle.invID if g_currentVehicle.isPresent() else -1
        while len(self._topLevel):
            self._topLevel.pop().clear()

        self._topLevelCDs.clear()
        for nodeCD in g_techTreeDP.getTopLevel(rootCD):
            node = self._getNodeData(nodeCD, xpGetter(nodeCD, 0), makeDefUnlockProps(), set(), topLevel=True)
            item = self.getInvItem(nodeCD)
            if item is not None and invID == item.inventoryId:
                node['state'] |= NODE_STATE.SELECTED
            self._topLevelCDs[nodeCD] = len(self._topLevel)
            self._topLevel.append(node)

        return
Example #4
0
 def __loadAutoUnlockItems(self, rootCD, autoUnlocks, hasFakeTurrets = False):
     autoUnlocked = dict(map(lambda nodeCD: (vehicles.getDictDescr(nodeCD).get('itemTypeName'), nodeCD), autoUnlocks))
     self._autoGunCD = -1
     self._autoTurretCD = -1
     for itemType in _RESEARCH_ITEMS:
         if itemType > len(ITEM_TYPE_NAMES) - 1:
             continue
         nodeCD = autoUnlocked[ITEM_TYPE_NAMES[itemType]]
         if itemType == _TURRET:
             self._autoTurretCD = nodeCD
             if hasFakeTurrets:
                 continue
         elif itemType == _GUN:
             self._autoGunCD = nodeCD
         node = self._getNodeData(nodeCD, 0, makeDefUnlockProps(), set([rootCD]))
         node['state'] |= NODE_STATE.AUTO_UNLOCKED
         self._nodesIdx[nodeCD] = len(self._nodes)
         self._nodes.append(node)
Example #5
0
    def isNext2Unlock(self, vTypeCD, unlocked = set(), xps = None, freeXP = 0):
        topLevel = self.getTopLevel(vTypeCD)
        available = False
        topIDs = set()
        compare = []
        result = makeDefUnlockProps()
        for parentCD in topLevel:
            nextLevel = self.__nextLevels[parentCD]
            idx, xpCost, required = nextLevel[vTypeCD]
            if required.issubset(unlocked) and parentCD in unlocked:
                topIDs.add(parentCD)
                compare.append(UnlockProps(parentCD, idx, xpCost, topIDs))
                available = True
            elif not result.xpCost or result.xpCost > xpCost:
                result = UnlockProps(parentCD, idx, xpCost, set())

        if available:
            result = self._findNext2Unlock(compare, xps=xps, freeXP=freeXP)
        return (available, result)
Example #6
0
    def isNext2Unlock(self, vTypeCD, unlocked=set(), xps=None, freeXP=0):
        topLevel = self.getTopLevel(vTypeCD)
        available = False
        topIDs = set()
        compare = []
        result = makeDefUnlockProps()
        for parentCD in topLevel:
            nextLevel = self.__nextLevels[parentCD]
            idx, xpCost, required = nextLevel[vTypeCD]
            if required.issubset(unlocked) and parentCD in unlocked:
                topIDs.add(parentCD)
                compare.append(UnlockProps(parentCD, idx, xpCost, topIDs))
                available = True
            elif not result.xpCost or result.xpCost > xpCost:
                result = UnlockProps(parentCD, idx, xpCost, set())

        if available:
            result = self._findNext2Unlock(compare, xps=xps, freeXP=freeXP)
        return (available, result)
Example #7
0
    def __loadTopLevel(self, rootCD):
        xpGetter = self._xps.get
        invID = g_currentVehicle.invID if g_currentVehicle.isPresent() else -1
        while len(self._topLevel):
            self._topLevel.pop().clear()

        self._topLevelCDs.clear()
        for nodeCD in g_techTreeDP.getTopLevel(rootCD):
            node = self._getNodeData(nodeCD,
                                     xpGetter(nodeCD, 0),
                                     makeDefUnlockProps(),
                                     set(),
                                     topLevel=True)
            item = self.getInvItem(nodeCD)
            if item is not None and invID == item.inventoryId:
                node['state'] |= NODE_STATE.SELECTED
            self._topLevelCDs[nodeCD] = len(self._topLevel)
            self._topLevel.append(node)

        return
Example #8
0
 def __loadAutoUnlockItems(self, rootCD, autoUnlocks, hasFakeTurrets=False):
     autoUnlocked = dict(
         map(
             lambda nodeCD:
             (vehicles.getDictDescr(nodeCD).get('itemTypeName'), nodeCD),
             autoUnlocks))
     self._autoGunCD = -1
     self._autoTurretCD = -1
     for itemType in _RESEARCH_ITEMS:
         if itemType > len(ITEM_TYPE_NAMES) - 1:
             continue
         nodeCD = autoUnlocked[ITEM_TYPE_NAMES[itemType]]
         if itemType == _TURRET:
             self._autoTurretCD = nodeCD
             if hasFakeTurrets:
                 continue
         elif itemType == _GUN:
             self._autoGunCD = nodeCD
         node = self._getNodeData(nodeCD, 0, makeDefUnlockProps(),
                                  set([rootCD]))
         node['state'] |= NODE_STATE.AUTO_UNLOCKED
         self._nodesIdx[nodeCD] = len(self._nodes)
         self._nodes.append(node)
Example #9
0
 def __loadTopLevel(self, rootItem, unlockStats):
     itemGetter = self.getItem
     rootCD = self.getRootCD()
     for nodeCD in g_techTreeDP.getTopLevel(rootCD):
         node = self._getNodeData(nodeCD, rootItem, itemGetter(nodeCD), unlockStats, makeDefUnlockProps(), set(), topLevel=True)
         self._addTopNode(nodeCD, node)
Example #10
0
 def __loadAutoUnlockItems(self, rootItem, unlockStats):
     autoUnlocked = rootItem.getAutoUnlockedItemsMap()
     hasFakeTurrets = not rootItem.hasTurrets
     rootCD = rootItem.intCD
     itemGetter = self.getItem
     self._autoGunCD = -1
     self._autoTurretCD = -1
     for itemTypeID in _RESEARCH_ITEMS:
         if itemTypeID > len(ITEM_TYPE_NAMES) - 1:
             continue
         nodeCD = autoUnlocked[ITEM_TYPE_NAMES[itemTypeID]]
         if itemTypeID == GUI_ITEM_TYPE.TURRET:
             self._autoTurretCD = nodeCD
             if hasFakeTurrets:
                 continue
         elif itemTypeID == GUI_ITEM_TYPE.GUN:
             self._autoGunCD = nodeCD
         node = self._getNodeData(nodeCD, rootItem, itemGetter(nodeCD), unlockStats, makeDefUnlockProps(), {rootCD})
         node['state'] |= NODE_STATE.AUTO_UNLOCKED
         self._addNode(nodeCD, node)
Example #11
0
 def __loadRoot(self, rootItem, unlockStats):
     rootCD = rootItem.intCD
     node = self._getNodeData(rootCD, rootItem, rootItem, unlockStats, makeDefUnlockProps(), set(), topLevel=True)
     index = self._addNode(rootCD, node)
     raise index == 0 or AssertionError('Index of root must be 0')