Esempio n. 1
0
class loginMenu():
    def __init__(self, screen):
        self.screen = screen
        self.username = ""
        self.password = ""
        self.loadedMap = False
        self.charSprite = None
        self.changing = False
        self.naming = False
        self.ready = False
        self.menename = ""
        self.bgImg = pyglet.image.load(g.dataPath + '/login/bg_menu.png')
        self.skyImg = pyglet.image.load(g.dataPath + '/login/bg_sky1.png')
        self.ukkeli = pyglet.image.load(g.dataPath + '/login/bg_ukkeli1.png')
        self.ukkeli2 = pyglet.image.load(g.dataPath + '/login/bg_ukkeli2.png')
        self.l1 = pyglet.resource.image(g.dataPath + '/login/logo.png')
        self.ukkeliSprite = pyglet.sprite.Sprite(self.ukkeli,
                                                 x=0.5 * self.screen.width,
                                                 y=30)
        #self.ukkeliSprite._set_scale(self.screen.width/1920.0)

        self.ukkeliSprite2 = pyglet.sprite.Sprite(self.ukkeli2,
                                                  x=0.5 * self.screen.width,
                                                  y=30)
        #self.ukkeliSprite2._set_scale(self.screen.width/1920.0)
        self.logo = pyglet.sprite.Sprite(self.l1, x=0, y=0)
        #self.logo._set_scale(self.screen.width/1920.0)
        self.initManagers()
        self.startTick = int(
            (datetime.datetime.utcnow() -
             datetime.datetime(1970, 1, 1)).total_seconds() * 1000)
        #g.gameEngine.musicManager.queue(pyglet.media.load(g.dataPath+'/sounds/pokemon.mp3'))
        #if g.MUSIC:
        #    g.gameEngine.musicManager.play()
    def exit(self, event):
        g.gameState = GAMESTATE_EXIT

    def tryLogin(self, event):
        if not self.button.disabled:
            #self.username=self.logininput.get_text()
            #self.password=self.passwordinput.get_text()
            #if self.logininput.get_text() != "":
            #    if self.logininput.get_text() == '1':
            #        self.username='******'
            #        self.password='******'
            #    else:
            self.username = self.logininput.get_text()
            #self.username = "******"
            self.password = self.passwordinput.get_text()
            g.gameEngine.initConnection()
            self.button.disabled = True
            l = reactor.callLater(1, self.f)

    def removeCharCreating(self):
        self.charMan.delete()
        del self.charMan
        self.charSprite = None

    def initNameMene(self):
        def sendMeneName(event):
            self.menename = self.nameInput.get_text()
            if len(self.menename) > 0:
                self.saveBtn.disabled = True

        self.naming = True
        label = Label("Name Your Mene",
                      color=g.postColor,
                      font_size=18,
                      bold=True)
        #meneTheme = Theme({g.spriteName: {
        #                "image": {
        #                    "source": g.spriteName+'_front.png'
        #                },
        #                "gui_color": [255,255,255,255]
        #            }
        #        },resources_path=g.dataPath+'/menes/'
        #)
        #picture = Graphic(g.spriteName,alternative=meneTheme)
        picture = Graphic(
            texture=g.gameEngine.resManager.meneSprites[g.spriteName]['front'])
        self.nameInput = TextInput(text="",
                                   padding=2,
                                   length=12,
                                   max_length=12,
                                   width=200,
                                   font_size=16)
        self.saveBtn = HighlightedButton(label="Save",
                                         on_release=sendMeneName,
                                         width=100,
                                         height=40,
                                         font_size=16)
        frame = Frame(VerticalContainer(content=[
            label, picture,
            HorizontalContainer([self.nameInput, self.saveBtn])
        ]),
                      path='frame_npc_talk')
        self.meneMan = Manager(frame,
                               window=self.screen,
                               batch=g.guiBatch,
                               theme=g.theme,
                               offset=(0, 0),
                               is_movable=False)

    def removeMenenaming(self):
        self.meneMan.delete()

    def initCreateChar(self):
        def checkClothingOk():
            found = 0
            #print g.clothingPairs
            for clothes in g.clothingPairs:
                found = 0
                if clothes["type"] == 'exclude':
                    if 'shirt' in clothes and clothes[
                            'shirt'] == myPlayer.shirt:
                        found += 1
                    if 'hat' in clothes and clothes['hat'] == myPlayer.hat:
                        found += 1
                    if 'face' in clothes and clothes['face'] == myPlayer.face:
                        found += 1
                    if 'shoes' in clothes and clothes[
                            'shoes'] == myPlayer.shoes:
                        found += 1
                    if found >= 2:
                        return False
            return True

        def hatLeft(event):
            myPlayer.hat -= 1
            if myPlayer.hat < 0:
                myPlayer.hat = g.MAX_HAT - 1
            if not checkClothingOk():
                hatLeft(None)
            self.changing = True

        def hatRight(event):
            myPlayer.hat += 1
            if myPlayer.hat >= g.MAX_HAT:
                myPlayer.hat = 0
            if not checkClothingOk():
                hatRight(None)
            self.changing = True

        def faceLeft(event):
            myPlayer.face -= 1
            if myPlayer.face < 0:
                myPlayer.face = g.MAX_FACE - 1
            if not checkClothingOk():
                faceLeft(None)
            self.changing = True

        def faceRight(event):
            myPlayer.face += 1
            if myPlayer.face >= g.MAX_FACE:
                myPlayer.face = 0
            if not checkClothingOk():
                faceRight(None)
            self.changing = True

        def shirtLeft(event):
            myPlayer.shirt -= 1
            if myPlayer.shirt < 0:
                myPlayer.shirt = g.MAX_SHIRT - 1
            if not checkClothingOk():
                shirtLeft(None)
            self.changing = True

        def shirtRight(event):
            myPlayer.shirt += 1
            if myPlayer.shirt >= g.MAX_SHIRT:
                myPlayer.shirt = 0
            if not checkClothingOk():
                shirtRight(None)
            self.changing = True

        def shoesLeft(event):
            myPlayer.shoes -= 1
            if myPlayer.shoes < 0:
                myPlayer.shoes = g.MAX_SHOES - 1
            if not checkClothingOk():
                shoesLeft(None)
            self.changing = True

        def shoesRight(event):
            myPlayer.shoes += 1
            if myPlayer.shoes >= g.MAX_SHOES:
                myPlayer.shoes = 0
            if not checkClothingOk():
                shoesRight(None)
            self.changing = True

        def facingLeft(event):
            myPlayer.dir -= 1
            if myPlayer.dir < DIR_DOWN:
                myPlayer.dir = DIR_RIGHT
                myPlayer.tmpPlayer.spriteFacing = 8
            elif myPlayer.dir == DIR_UP:
                myPlayer.tmpPlayer.spriteFacing = 5
            elif myPlayer.dir == DIR_LEFT:
                myPlayer.tmpPlayer.spriteFacing = 3
            elif myPlayer.dir == DIR_DOWN:
                myPlayer.tmpPlayer.spriteFacing = 0

            #myPlayer.tmpPlayer.spriteFacing-=1
            #if myPlayer.tmpPlayer.spriteFacing<0:
            #    myPlayer.tmpPlayer.spriteFacing=9
        def facingRight(event):
            myPlayer.dir += 1
            if myPlayer.dir > DIR_RIGHT:
                myPlayer.dir = DIR_DOWN
                myPlayer.tmpPlayer.spriteFacing = 0
            elif myPlayer.dir == DIR_UP:
                myPlayer.tmpPlayer.spriteFacing = 5
            elif myPlayer.dir == DIR_LEFT:
                myPlayer.tmpPlayer.spriteFacing = 3
            elif myPlayer.dir == DIR_RIGHT:
                myPlayer.tmpPlayer.spriteFacing = 8

        def saveClothes(event):
            self.ready = True
            saveBtn.disabled = True

        self.changing = True
        label = Label("Create Character", color=g.postColor, font_size=18)
        name = Label(myPlayer.name, bold=True, color=g.nameColor, font_size=18)
        hatBtnLeft = HighlightedButton(label="<-",
                                       on_release=hatLeft,
                                       width=25,
                                       height=25,
                                       font_size=13)
        hatBtnRight = HighlightedButton(label="->",
                                        on_release=hatRight,
                                        width=25,
                                        height=25,
                                        font_size=13)
        hatHorz = HorizontalContainer(
            content=[hatBtnLeft,
                     Spacer(256 - TILESIZE * 2, 0), hatBtnRight])

        faceBtnLeft = HighlightedButton(label="<-",
                                        on_release=faceLeft,
                                        width=25,
                                        height=25,
                                        font_size=13)
        faceBtnRight = HighlightedButton(label="->",
                                         on_release=faceRight,
                                         width=25,
                                         height=25,
                                         font_size=13)
        faceHorz = HorizontalContainer(
            content=[faceBtnLeft,
                     Spacer(256 - TILESIZE * 2, 0), faceBtnRight])

        shirtBtnLeft = HighlightedButton(label="<-",
                                         on_release=shirtLeft,
                                         width=25,
                                         height=25,
                                         font_size=13)
        shirtBtnRight = HighlightedButton(label="->",
                                          on_release=shirtRight,
                                          width=25,
                                          height=25,
                                          font_size=13)
        shirtHorz = HorizontalContainer(content=[
            shirtBtnLeft,
            Spacer(256 - TILESIZE * 2, 0), shirtBtnRight
        ])

        shoesBtnLeft = HighlightedButton(label="<-",
                                         on_release=shoesLeft,
                                         width=25,
                                         height=25,
                                         font_size=13)
        shoesBtnRight = HighlightedButton(label="->",
                                          on_release=shoesRight,
                                          width=25,
                                          height=25,
                                          font_size=13)
        shoesHorz = HorizontalContainer(content=[
            shoesBtnLeft,
            Spacer(256 - TILESIZE * 2, 0), shoesBtnRight
        ])

        facingBtnLeft = HighlightedButton(label="<---",
                                          on_release=facingLeft,
                                          width=30,
                                          height=30,
                                          font_size=13)
        facingBtnRight = HighlightedButton(label="--->",
                                           on_release=facingRight,
                                           width=30,
                                           height=30,
                                           font_size=13)
        facingHorz = HorizontalContainer(
            content=[facingBtnLeft, facingBtnRight])

        saveBtn = HighlightedButton(label="Save",
                                    on_release=saveClothes,
                                    width=100,
                                    height=40,
                                    font_size=16)

        frame = Frame(VerticalContainer(content=[
            label,
            Spacer(256 - TILESIZE, TILESIZE / 4), name,
            Spacer(0, 8), hatHorz, faceHorz, shirtHorz, shoesHorz, facingHorz,
            Spacer(0, 8), saveBtn
        ]),
                      path='frame_npc_talk')
        self.charMan = Manager(frame,
                               window=self.screen,
                               batch=g.guiBatch,
                               theme=g.theme,
                               offset=(0, 0),
                               is_movable=False)

    def removeManagers(self):
        self.man1.delete()
        self.man2.delete()
        del self.man1
        del self.man2

    def initManagers(self):
        g.gameEngine.changeMusicSong(LOGINMENUSONG)
        g.gameEngine.musicManager.volume = g.MUSICVOLUME
        self.skyHeight = int(0.4592592 * g.SCREEN_HEIGHT)
        self.skyWidth = int(1.625 * g.SCREEN_WIDTH)
        self.ukkeliSprite._set_scale(self.screen.width / 1920.0)
        #self.ukkeliSprite.anchor_x=self.ukkeliSprite.width//2
        #self.ukkeliSprite.anchor_y=self.ukkeliSprite.height//2

        self.ukkeliSprite.x = 0.5 * self.screen.width
        self.ukkeliSprite2._set_scale(self.screen.width / 1920.0)
        self.ukkeliSprite2.x = 0.5 * self.screen.width
        #self.ukkeliSprite2.anchor_x=self.ukkeliSprite2.width//2
        #self.ukkeliSprite2.anchor_y=self.ukkeliSprite2.height//2
        self.logo._set_scale(self.screen.width / 1920.0)
        self.logo.x = (self.screen.width - self.l1.width *
                       (self.screen.width / 1920.0)) / 2
        self.logo.y = (self.screen.height - 350) * (1080.0 /
                                                    self.screen.height)

        self.charTick = int(
            (datetime.datetime.utcnow() -
             datetime.datetime(1970, 1, 1)).total_seconds() * 1000)

        label = Label("Username", color=g.loginFontColor, font_size=18)
        label1 = Label("Password", color=g.loginFontColor, font_size=18)
        self.logininput = TextInput(text="",
                                    padding=2,
                                    length=16,
                                    max_length=16,
                                    width=220,
                                    font_size=18)
        self.passwordinput = TextInput(text="",
                                       font=g.defaultPWFont.name,
                                       padding=0,
                                       length=21.5,
                                       width=220,
                                       font_size=18)

        self.button = HighlightedButton(label="Login",
                                        on_release=self.tryLogin,
                                        width=210,
                                        height=50,
                                        font_size=16)

        vertCont = VerticalContainer([
            label, self.logininput,
            Spacer(min_height=10), label1, self.passwordinput,
            Spacer(min_height=40), self.button
        ])

        versionInfo = Label("Version: " + GAME_VERSION,
                            color=(0, 0, 0, 255),
                            font_size=10)
        self.exitButton = HighlightedButton(label="Exit",
                                            on_release=self.exit,
                                            width=100,
                                            height=40,
                                            font_size=14)
        vertCont2 = VerticalContainer([versionInfo, self.exitButton])
        self.man1 = Manager(vertCont,
                            window=self.screen,
                            batch=g.guiBatch,
                            theme=g.theme,
                            offset=(0, -50),
                            is_movable=False)
        self.man2 = Manager(vertCont2,
                            window=self.screen,
                            batch=g.guiBatch,
                            theme=g.theme,
                            anchor=ANCHOR_BOTTOM_RIGHT,
                            offset=(-50, 50),
                            is_movable=False)
        self.man1.set_focus(self.logininput)

    def f(self):
        self.button.disabled = False

    def update(self):
        #print g.dx
        if g.currTick:
            g.dx = int((g.currTick - self.startTick) * 0.025)
        if g.dx >= self.skyWidth:
            g.dx = 0
            self.startTick = g.currTick
        self.bgImg.blit(0,
                        0,
                        width=self.screen.width,
                        height=self.screen.height)
        self.skyImg.blit(g.dx,
                         self.screen.height - self.skyHeight,
                         width=self.skyWidth,
                         height=self.skyHeight)
        self.skyImg.blit(g.dx - self.skyWidth,
                         self.screen.height - self.skyHeight,
                         width=self.skyWidth,
                         height=self.skyHeight)
        #print self.ukkeliSprite._texture.__dict__
        if g.currTick - self.charTick > 500:
            self.ukkeliSprite.draw()
            if g.currTick - self.charTick > 1000:
                self.charTick = g.currTick
        else:
            self.ukkeliSprite2.draw()

        #self.loadedMap = True
        g.FPS = True
        #print g.alertGroup.__dict__
        self.logo.draw()
        g.guiBatch.draw()
        #
        if self.charSprite is not None:
            self.charSprite[myPlayer.tmpPlayer.spriteFacing].blit(
                (g.screen.width - TILESIZE * 4) / 2,
                (g.screen.height - TILESIZE * 4) / 2)