Example #1
0
 def _loadAutoUnlockItems(self, rootItem, unlockStats):
     """
     Second, adds auto unlock items by order in _RESEARCH_ITEMS.
     :param rootItem: instance of gui item for root. @see gui.shared.gui_items.
     :param unlockStats: instance of 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_FLAGS.AUTO_UNLOCKED
         self._addNode(nodeCD, node)
Example #2
0
 def _loadRoot(self, rootItem, unlockStats):
     """
     First, adds root node. Warning: first node must be root.
     :param rootItem: instance of gui item for root. @see gui.shared.gui_items.
     :param unlockStats: instance of 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')
Example #3
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')
Example #4
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 #5
0
 def _loadRoot(self, rootItem, unlockStats):
     """
     First, adds root node. Warning: first node must be root.
     :param rootItem: instance of gui item for root. @see gui.shared.gui_items.
     :param unlockStats: instance of 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')
Example #6
0
 def _loadTopLevel(self, rootItem, unlockStats):
     """
     Fourth, loads vehicles in top level.
     :param rootItem: instance of gui item for root. @see gui.shared.gui_items.
     :param unlockStats: instance of 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 #7
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 #8
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 #9
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 #10
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 #11
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 #12
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')
Example #13
0
 def _loadTopLevel(self, rootItem, unlockStats):
     """
     Fourth, loads vehicles in top level.
     :param rootItem: instance of gui item for root. @see gui.shared.gui_items.
     :param unlockStats: instance of 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 #14
0
 def _loadAutoUnlockItems(self, rootItem, unlockStats):
     """
     Second, adds auto unlock items by order in _RESEARCH_ITEMS.
     :param rootItem: instance of gui item for root. @see gui.shared.gui_items.
     :param unlockStats: instance of 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_FLAGS.AUTO_UNLOCKED
         self._addNode(nodeCD, node)