예제 #1
0
 def replace(self, idx, mod):
     try:
         oldMod = self[idx]
     except IndexError:
         raise HandledListActionError(mod)
     self.__toModule(idx, mod)
     if mod.isInvalid:
         self.__toModule(idx, oldMod)
         raise HandledListActionError(mod)
예제 #2
0
 def insert(self, idx, booster):
     if booster.isInvalid:
         HandledList.insert(self, idx, booster)
         self.remove(booster)
         raise HandledListActionError(booster)
     if self.__slotCheck(booster):
         HandledList.insert(self, idx, booster)
         self.remove(booster)
         raise HandledListActionError(booster)
     HandledList.append(self, booster)
예제 #3
0
 def insert(self, idx, implant):
     if implant.isInvalid:
         HandledList.insert(self, idx, implant)
         self.remove(implant)
         raise HandledListActionError(implant)
     if self.__slotCheck(implant):
         HandledList.insert(self, idx, implant)
         self.remove(implant)
         raise HandledListActionError(implant)
     HandledList.append(self, implant)
예제 #4
0
    def insert(self, idx, proj):
        if proj.isInvalid:
            # we must include it before we remove it. doing it this way ensures
            # rows and relationships in database are removed as well
            HandledList.insert(self, idx, proj)
            self.remove(proj)
            raise HandledListActionError(proj)

        proj.projected = True

        HandledList.insert(self, idx, proj)

        # Remove non-projectable modules
        if not proj.item.isType("projected") and not proj.isExclusiveSystemEffect:
            self.remove(proj)
            raise HandledListActionError(proj)
예제 #5
0
    def insert(self, idx, proj):
        proj.projected = True
        HandledList.insert(self, idx, proj)

        # Remove invalid or non-projectable drones
        if proj.isInvalid or not proj.item.isType("projected"):
            self.remove(proj)
            proj.projected = False
            raise HandledListActionError(proj)
        return True
예제 #6
0
 def insert(self, idx, mod):
     mod.position = idx
     i = idx
     while i < len(self):
         self[i].position += 1
         i += 1
     HandledList.insert(self, idx, mod)
     if mod.isInvalid:
         self.remove(mod)
         raise HandledListActionError(mod)
예제 #7
0
 def replaceRackPosition(self, rackPosition, mod):
     listPositions = []
     for currMod in self:
         if currMod.slot == mod.slot:
             listPositions.append(currMod.position)
     listPositions.sort()
     try:
         modListPosition = listPositions[rackPosition]
     except IndexError:
         self.appendIgnoreEmpty(mod)
     else:
         self.__toDummy(modListPosition)
         if not mod.isEmpty:
             self.__toModule(modListPosition, mod)
             if mod.isInvalid:
                 self.__toDummy(modListPosition)
                 raise HandledListActionError(mod)
예제 #8
0
    def append(self, mod):
        emptyPosition = float("Inf")
        for i in range(len(self)):
            currMod = self[i]
            if currMod.isEmpty and not mod.isEmpty and currMod.slot == mod.slot:
                currPos = mod.position or i
                if currPos < emptyPosition:
                    emptyPosition = currPos

        if emptyPosition < len(self):
            mod.position = emptyPosition
            self.__toModule(emptyPosition, mod)
            if mod.isInvalid:
                self.__toDummy(mod.position)
                raise HandledListActionError(mod)
            return

        self.appendIgnoreEmpty(mod)
예제 #9
0
 def replaceRackPosition(self, rackPosition, mod):
     listPositions = []
     for currPos in range(len(self)):
         currMod = self[currPos]
         if currMod.slot == mod.slot:
             listPositions.append(currPos)
     listPositions.sort()
     try:
         modListPosition = listPositions[rackPosition]
     except IndexError:
         self.appendIgnoreEmpty(mod)
     else:
         oldMod = self[modListPosition]
         if mod.isEmpty:
             self.__toDummy(modListPosition)
         else:
             self.__toModule(modListPosition, mod)
             # If new module cannot be appended, restore old state
             if mod.isInvalid:
                 if oldMod.isEmpty:
                     self.__toDummy(modListPosition)
                 else:
                     self.__toModule(modListPosition, oldMod)
                 raise HandledListActionError(mod)
예제 #10
0
 def insert(self, idx, thing):
     HandledList.insert(self, idx, thing)
     if thing.isInvalid:
         self.remove(thing)
         raise HandledListActionError(thing)
예제 #11
0
 def append(self, thing):
     HandledList.append(self, thing)
     if thing.isInvalid:
         self.remove(thing)
         raise HandledListActionError(thing)
예제 #12
0
 def appendIgnoreEmpty(self, mod):
     mod.position = len(self)
     HandledList.append(self, mod)
     if mod.isInvalid:
         self.remove(mod)
         raise HandledListActionError(mod)