import GardenGlobals
from direct.directnotify import DirectNotifyGlobal
import FlowerBase

class FlowerCollection:
    notify = DirectNotifyGlobal.directNotify.newCategory('FlowerCollection')

    def __init__(self):
        self.flowerlist = []

    def __len__(self):
        return len(self.flowerlist)

    def getFlower(self):
        return self.flowerlist

    def makeFromNetLists(self, speciesList, varietyList):
        self.flowerlist = []
        for species, variety in zip(speciesList, varietyList):
            self.flowerlist.append(FlowerBase.FlowerBase(species, variety))

    def getNetLists(self):
        speciesList = []
        varietyList = []
        for flower in self.flowerlist:
            speciesList.append(flower.getSpecies())
            varietyList.append(flower.getVariety())

        return [speciesList, varietyList]

    def hasFlower(self, species, variety):
        for flower in self.flowerlist:
            if flower.getSpecies() == species and flower.getVariety() == variety:
                return 1

        return 0

    def hasSpecies(self, species):
        for flower in self.flowerlist:
            if flower.getSpecies() == species:
                return 1

        return 0

    def getInitialVariety(self, species):
        retVal = 100000
        for flower in self.flowerlist:
            if flower.getSpecies() == species:
                if flower.getVariety() < retVal:
                    retVal = flower.getVariety()

        if retVal == 100000:
            retVal = 0
        return retVal

    def __collect(self, newFlower, updateCollection):
        for flower in self.flowerlist:
            if flower.getVariety() == newFlower.getVariety() and flower.getSpecies() == newFlower.getSpecies():
                return GardenGlobals.COLLECT_NO_UPDATE

        if updateCollection:
            self.flowerlist.append(newFlower)
        return GardenGlobals.COLLECT_NEW_ENTRY

    def collectFlower(self, newFlower):
        return self.__collect(newFlower, updateCollection=1)

    def __str__(self):
        numFlower = len(self.flowerlist)
        txt = 'Flower Collection (%s flowers):' % numFlower
        for flower in self.flowerlist:
            txt += '\n' + str(flower)

        return txt
