from panda3d.core import *
from toontown.toontowngui import TTDialog
from toontown.toonbase import TTLocalizer
from direct.gui import DirectLabel
from toontown.quest import Quests

class NPCForceAcknowledge:

    def __init__(self, doneEvent):
        self.doneEvent = doneEvent
        self.dialog = None
        return

    def enter(self):
        doneStatus = {}
        questHistory = base.localAvatar.getQuestHistory()
        imgScale = 0.5
        if questHistory != [] and questHistory != [1000] and questHistory != [101, 110]:
            doneStatus['mode'] = 'complete'
            messenger.send(self.doneEvent, [doneStatus])
        elif len(base.localAvatar.quests) > 1 or len(base.localAvatar.quests) == 0:
            doneStatus['mode'] = 'complete'
            messenger.send(self.doneEvent, [doneStatus])
        elif base.localAvatar.quests[0][0] != Quests.TROLLEY_QUEST_ID:
            doneStatus['mode'] = 'complete'
            messenger.send(self.doneEvent, [doneStatus])
        else:
            base.localAvatar.b_setAnimState('neutral', 1)
            doneStatus['mode'] = 'incomplete'
            self.doneStatus = doneStatus
            imageModel = loader.loadModel('phase_4/models/gui/tfa_images')
            if Quests.avatarHasTrolleyQuest(base.localAvatar):
                if base.localAvatar.quests[0][4] != 0:
                    imgNodePath = imageModel.find('**/hq-dialog-image')
                    imgPos = (0, 0, -0.02)
                    msg = TTLocalizer.NPCForceAcknowledgeMessage2
                else:
                    imgNodePath = imageModel.find('**/trolley-dialog-image')
                    imgPos = (0, 0, 0.04)
                    msg = TTLocalizer.NPCForceAcknowledgeMessage
            self.dialog = TTDialog.TTDialog(text=msg, command=self.handleOk, style=TTDialog.Acknowledge)
            imgLabel = DirectLabel.DirectLabel(parent=self.dialog, relief=None, pos=imgPos, scale=TTLocalizer.NPCFimgLabel, image=imgNodePath, image_scale=imgScale)
        return

    def exit(self):
        if self.dialog:
            self.dialog.cleanup()
            self.dialog = None
        return

    def handleOk(self, value):
        messenger.send(self.doneEvent, [self.doneStatus])