from otp.speedchat.SCMenu import SCMenu
from otp.speedchat import SCMenuHolder
from otp.speedchat.SCStaticTextTerminal import SCStaticTextTerminal
from otp.otpbase import OTPLocalizer
ZoneToMsgs = {3: [1803, 1903],
 4: [1804, 1904],
 5: [1805, 1905],
 6: [1806, 1906],
 7: [1807, 1907],
 8: [1808, 1908],
 9: [1809, 1909],
 10: [1810, 1910],
 11: [1811, 1911],
 12: [1812, 1912],
 13: [1813, 1913],
 14: [1814, 1914],
 15: [1815, 1915],
 16: [1816, 1916],
 17: [1817, 1917],
 18: [1818, 1918],
 19: [1819, 1919],
 20: [1820, 1920],
 21: [1821, 1921],
 22: [1822, 1922],
 23: [1823, 1923],
 24: [1824, 1924],
 25: [1825, 1925],
 27: [1827, 1927],
 30: [1830, 1930],
 31: [1831, 1931],
 32: [1832, 1932],
 33: [1833, 1933],
 34: [1834, 1934],
 35: [1835, 1935],
 36: [1836, 1936],
 37: [1837, 1937],
 38: [1838, 1938],
 40: [1840, 1940],
 41: [1841, 1941],
 60: [1860, 1960],
 61: [1861, 1961]}
GLOBAL_MSGS = [1700,
 1701,
 1702,
 1703,
 1704]

class TTSCFactoryMenu(SCMenu):

    def __init__(self):
        SCMenu.__init__(self)
        self.meetMenuHolder = None
        zoneId = base.cr.playGame.getPlaceId()
        if zoneId and zoneId == 11000:
            meetMenu = SCMenu()
            for msgIndex in OTPLocalizer.SCFactoryMeetMenuIndexes:
                term = SCStaticTextTerminal(msgIndex)
                meetMenu.append(term)

            self.meetMenuHolder = SCMenuHolder.SCMenuHolder(OTPLocalizer.SCMenuFactoryMeet, meetMenu)
            self[0:0] = [self.meetMenuHolder]
        self.accept('factoryZoneChanged', self.__zoneChanged)
        self.__zoneChanged()
        return

    def destroy(self):
        self.ignore('factoryZoneChanged')
        SCMenu.destroy(self)

    def __zoneChanged(self, zoneId = 0):
        if self.meetMenuHolder:
            del self[0]
        self.clearMenu()
        try:
            lt = base.localAvatar
        except:
            return

        phrases = []

        def addTerminal(terminal, self = self, phrases = phrases):
            displayText = terminal.getDisplayText()
            if displayText not in phrases:
                self.append(terminal)
                phrases.append(displayText)

        for msg in GLOBAL_MSGS + ZoneToMsgs.get(zoneId, []):
            addTerminal(SCStaticTextTerminal(msg))

        if self.meetMenuHolder:
            self[0:0] = [self.meetMenuHolder]