import FishGlobals
from toontown.toonbase import TTLocalizer
from direct.directnotify import DirectNotifyGlobal

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

    def __init__(self, genus, species, weight):
        self.genus = genus
        self.species = species
        self.weight = weight

    def getGenus(self):
        return self.genus

    def getSpecies(self):
        return self.species

    def getWeight(self):
        return self.weight

    def setWeight(self, weight):
        self.weight = weight

    def getVitals(self):
        return (self.genus, self.species, self.weight)

    def getValue(self):
        return FishGlobals.getValue(self.genus, self.species, self.weight)

    def getGenusName(self):
        return TTLocalizer.FishGenusNames[self.genus]

    def getSpeciesName(self):
        return TTLocalizer.FishSpeciesNames[self.genus][self.species]

    def getRarity(self):
        return FishGlobals.getRarity(self.genus, self.species)

    def getPhase(self):
        dict = FishGlobals.FishFileDict
        fileInfo = dict.get(self.genus, dict[-1])
        return fileInfo[0]

    def getActor(self):
        prefix = 'phase_%s/models/char/' % self.getPhase()
        dict = FishGlobals.FishFileDict
        fileInfo = dict.get(self.genus, dict[-1])
        from direct.actor import Actor
        actor = Actor.Actor(prefix + fileInfo[1], {'intro': prefix + fileInfo[2],
         'swim': prefix + fileInfo[3]})
        return actor

    def getSound(self):
        sound = None
        loop = None
        delay = None
        playRate = None
        if base.config.GetBool('want-fish-audio', 1):
            soundDict = FishGlobals.FishAudioFileDict
            fileInfo = soundDict.get(self.genus, None)
            if fileInfo:
                prefix = 'phase_%s/audio/sfx/' % self.getPhase()
                sound = loader.loadSfx(prefix + soundDict[self.genus][0])
                loop = soundDict[self.genus][1]
                delay = soundDict[self.genus][2]
                playRate = soundDict[self.genus][3]
        return (sound,
         loop,
         delay,
         playRate)

    def __str__(self):
        return '%s, weight: %s value: %s' % (self.getSpeciesName(), self.weight, self.getValue())
