Beispiel #1
0
        def takeTurnTargeting(self, event):
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_UP:
                    if self.targetY > 0 and CombatUtils.distance(
                            self.x, self.y, self.targetX,
                            self.targetY - 1) <= self.getRange(self.targeting):
                        self.targetY -= 1
                        self.targetPath.append((self.targetX, self.targetY))
                    return False

                elif event.key == pygame.K_DOWN:
                    if self.targetY < (
                            MAP_HEIGHT - 1) and CombatUtils.distance(
                                self.x, self.y, self.targetX, self.targetY +
                                1) <= self.getRange(self.targeting):
                        self.targetY += 1
                        self.targetPath.append((self.targetX, self.targetY))
                    return False

                elif event.key == pygame.K_LEFT:
                    if self.targetX > 0 and CombatUtils.distance(
                            self.x, self.y, self.targetX - 1,
                            self.targetY) <= self.getRange(self.targeting):
                        self.targetX -= 1
                        self.targetPath.append((self.targetX, self.targetY))
                    return False

                elif event.key == pygame.K_RIGHT:
                    if self.targetX < (MAP_WIDTH - 1) and CombatUtils.distance(
                            self.x, self.y, self.targetX + 1,
                            self.targetY) <= self.getRange(self.targeting):
                        self.targetX += 1
                        self.targetPath.append((self.targetX, self.targetY))
                    return False

                elif event.key == pygame.K_QUOTE and self.targeting == ABILITY_ONE:
                    self.targeting = None
                    if not board.grid[self.targetX][self.targetY].beings:
                        target = None
                    else:
                        target = board.grid[self.targetX][
                            self.targetY].beings[-1]
                    if not CombatUtils.canTarget(target,
                                                 self.abilityOneTargets):
                        self.targetPath = []
                        return False
                    magicLoss = self.abilityOne(self.targetX, self.targetY)
                    self.targetPath = []
                    if magicLoss is None:
                        return False
                    self.magic -= magicLoss
                    if self.magic <= 0:
                        Event.lossEvent()
                    return True

                elif event.key == pygame.K_COMMA and self.targeting == ABILITY_TWO:
                    self.targeting = None
                    if not board.grid[self.targetX][self.targetY].beings:
                        target = None
                    else:
                        target = board.grid[self.targetX][
                            self.targetY].beings[-1]
                    if not CombatUtils.canTarget(target,
                                                 self.abilityTwoTargets):
                        self.targetPath = []
                        return False
                    magicLoss = self.abilityTwo(self.targetX, self.targetY)
                    self.targetPath = []
                    if magicLoss is None:
                        return False
                    self.magic -= magicLoss
                    if self.magic <= 0:
                        Event.lossEvent()
                    return True

                elif event.key == pygame.K_PERIOD and self.targeting == ABILITY_THREE:
                    self.targeting = None
                    if not board.grid[self.targetX][self.targetY].beings:
                        target = None
                    else:
                        target = board.grid[self.targetX][
                            self.targetY].beings[-1]
                    if not CombatUtils.canTarget(target,
                                                 self.abilityThreeTargets):
                        self.targetPath = []
                        return False
                    magicLoss = self.abilityThree(self.targetX, self.targetY)
                    self.targetPath = []
                    if magicLoss is None:
                        return False
                    self.magic -= magicLoss
                    if self.magic <= 0:
                        Event.lossEvent()
                    return True

                elif event.key == pygame.K_p and self.targeting == ABILITY_FOUR:
                    self.targeting = None
                    if not board.grid[self.targetX][self.targetY].beings:
                        target = None
                    else:
                        target = board.grid[self.targetX][
                            self.targetY].beings[-1]
                    if not CombatUtils.canTarget(target,
                                                 self.abilityFourTargets):
                        self.targetPath = []
                        return False
                    magicLoss = self.abilityFour(self.targetX, self.targetY)
                    self.targetPath = []
                    if magicLoss is None:
                        return False
                    self.magic -= magicLoss
                    if self.magic <= 0:
                        Event.lossEvent()
                    return True

                self.targeting = None
                return False

            # Mouse support to be implemented later
            return False