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)
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')
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')
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)
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)
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)
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)
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)