Esempio n. 1
0
class GagTrack(DirectFrame):
    def __init__(self, gsg, trackId):
        DirectFrame.__init__(self)
        self.gsg = gsg
        self.trackId = trackId
        self.trackName = GagGlobals.TrackNameById[trackId]
        self['image'] = 'phase_14/maps/track_bar.png'
        self['image_scale'] = (1.119, 0, 0.152)
        self['relief'] = None
        color = GagGlobals.TrackColorByName[self.trackName]
        self['image_color'] = (color[0], color[1], color[2], 1)

        self.trackText = OnscreenText(text=self.trackName.upper(),
                                      fg=(0, 0, 0, 0.65),
                                      shadow=(0, 0, 0, 0),
                                      pos=(-0.825, -0.022),
                                      scale=0.12 * (3.0 / 4.0),
                                      align=TextNode.ACenter,
                                      parent=self)
        self.gagBtns = []

        self.currentGag = 0

    def cleanup(self):
        self.gsg = None
        self.trackId = None
        self.trackName = None
        self.currentGag = None
        if self.trackText:
            self.trackText.destroy()
            self.trackText = None

        if self.gagBtns:
            for btn in self.gagBtns:
                btn.cleanup()
        self.gagBtns = None

        self.destroy()

    def deselectAll(self):
        for btn in self.gagBtns:
            btn.deselect()

    def isOnLastGag(self):
        return self.currentGag == len(self.gagBtns) - 1 or not self.gagBtns

    def isOnFirstGag(self):
        return self.currentGag == 0 or not self.gagBtns

    def selectNextGag(self):
        newIdx = self.currentGag + 1
        if newIdx > len(self.gagBtns) - 1:
            newIdx = 0
        self.selectGag(newIdx)

    def selectPrevGag(self):
        newIdx = self.currentGag - 1
        if newIdx < 0:
            newIdx = len(self.gagBtns) - 1
        self.selectGag(newIdx)

    def selectGag(self, idx):
        self.deselectAll()

        if self.gagBtns:
            self.currentGag = idx
            self.gagBtns[self.currentGag].select()

    def selectFirstGag(self):
        self.selectGag(0)

    def selectLastGag(self):
        self.selectGag(len(self.gagBtns) - 1)

    def stashContents(self):
        self.trackText.stash()
        for btn in self.gagBtns:
            btn.deselect()
            btn.stash()
        self.currentGag = 0

    def unstashContents(self):
        self.trackText.unstash()
        for btn in self.gagBtns:
            btn.unstash()

    def load(self):
        gags = GagGlobals.TrackGagNamesByTrackName[self.trackName]
        for i in xrange(len(gags)):
            gagName = gags[i]
            gagId = base.cr.attackMgr.getAttackIDByName(gagName)
            btn = GagWidget(self, gagId)
            btn.reparentTo(self)
            btn.setX(GAG_BTN_START + (GAG_BTN_OFFSET * i))
            if not base.localAvatar.hasAttackId(
                    gagId) or gagName not in GagGlobals.tempAllowedGags:
                btn.setLocked(True)
            else:
                btn.setLocked(False)
            self.gagBtns.append(btn)
        self.stashContents()