Пример #1
0
    def __init__(self, session, args=0):
        # some default values - be careful if you change this...
        stone_width = 30
        stone_height = 30
        stone_space = 4

        self.maxslices = 4

        self.stonesX = 15
        self.stonesY = 10
        self.maxstones = self.stonesX * self.stonesY

        path = "/usr/lib/enigma2/python/Plugins/Extensions/eSame/data/"

        # Load bitmaps...
        self.maps = []
        for color in ["red", "blue", "green"]:
            tmp = []
            for x in range(self.maxslices):
                tmp.append(LoadPixmap(path + color + str(x) + ".png"))
            self.maps.append(tmp)

        # solve focus coordinates and generate part of skin...
        self.focuslist = []
        skincontent = ""

        posX = -1
        for x in range(self.maxstones):
            posY = x / self.stonesX
            posX += 1
            if posX >= self.stonesX:
                posX = 0

            absX = stone_space + (posX * (stone_space + stone_width))
            absY = stone_space + (posY * (stone_space + stone_height))
            self.focuslist.append((absX + 5, absY + 5))
            skincontent += "<widget name=\"stone" + str(
                x) + "\" position=\"" + str(absX + 5) + "," + str(
                    absY + 5
                ) + "\" size=\"" + str(stone_width) + "," + str(
                    stone_height
                ) + "\" zPosition=\"2\" transparent=\"1\" alphatest=\"on\" />"

        # solve window size...
        size_w = 5 + stone_width * self.stonesX + stone_space * (self.stonesX -
                                                                 1) + 5
        size_h = 5 + stone_height * self.stonesY + stone_space * (
            self.stonesY - 1) + 85

        # get framebuffer resolution...
        desk = getDesktop(0)
        w = int(desk.size().width())
        h = int(desk.size().height())

        # display window in center...
        x0 = (w - size_w) / 2
        y0 = (h - size_h) / 2

        # solve skin...
        self.skin = "<screen position=\""+str(x0)+","+str(y0)+"\" size=\"" + str(size_w) + "," + str(size_h) + "\" title=\"eSame  v0.1\" >" +\
        "<widget name=\"frame\" position=\""+str(5+stone_space)+","+str(5+stone_space)+"\" size=\""+str(stone_width)+","+str(stone_height)+"\" pixmap=\""+path+"focus.png\" zPosition=\"1\" alphatest=\"on\" />" +\
        "<widget name=\"lbColors\" position=\"5,"+str(size_h-85)+"\" size=\"170,40\" valign=\"center\" font=\"Regular;17\" />" +\
        "<widget name=\"lbBoard\" position=\"175,"+str(size_h-85)+"\" size=\"140,40\" valign=\"center\" font=\"Regular;17\" />" +\
        "<widget name=\"lbMarked\" position=\"310,"+str(size_h-85)+"\" size=\"100,40\" valign=\"center\" font=\"Regular;17\" />" +\
        "<widget name=\"lbScore\" position=\"410,"+str(size_h-85)+"\" size=\"110,40\" valign=\"center\" font=\"Regular;17\" />" +\
        "<ePixmap name=\"green\" position=\"5,"+str(size_h-45)+"\" zPosition=\"3\" size=\"140,40\" pixmap=\"buttons/green.png\" transparent=\"1\" alphatest=\"on\" /> \n" +\
        "<ePixmap name=\"yellow\" position=\""+str(size_w-145)+","+str(size_h-45)+"\" zPosition=\"3\" size=\"140,40\" pixmap=\"buttons/yellow.png\" transparent=\"1\" alphatest=\"on\" /> \n" +\
        "<widget name=\"key_green\" position=\"5,"+str(size_h-45)+"\" zPosition=\"4\" size=\"140,40\" valign=\"center\" halign=\"center\" font=\"Regular;18\" transparent=\"1\" foregroundColor=\"white\" shadowColor=\"black\" shadowOffset=\"-1,-1\" /> \n" +\
        "<widget name=\"key_yellow\" position=\""+str(size_w-145)+","+str(size_h-45)+"\" zPosition=\"4\" size=\"140,40\" valign=\"center\" halign=\"center\" font=\"Regular;18\" transparent=\"1\" foregroundColor=\"white\" shadowColor=\"black\" shadowOffset=\"-1,-1\" /> \n" +\
        skincontent + "</screen>"

        Screen.__init__(self, session)

        self["actions"] = ActionMap(
            ["OkCancelActions", "WizardActions", "ColorActions"], {
                "cancel": self.Exit,
                "ok": self.key_ok,
                "left": self.key_left,
                "right": self.key_right,
                "up": self.key_up,
                "down": self.key_down,
                "green": self.key_green,
                "yellow": self.key_yellow,
            }, -1)

        self["frame"] = MovingPixmap()
        self["lbColors"] = Label()
        self["lbBoard"] = Label()
        self["lbMarked"] = Label()
        self["lbScore"] = Label()
        self["key_green"] = Button("new game")
        self["key_yellow"] = Button("reset game")
        for x in range(self.maxstones):
            self["stone" + str(x)] = Pixmap()

        self.maxentry = self.maxstones - 1

        self.stonefield = StoneField(self.stonesX, self.stonesY, 3, 0)

        self.onLayoutFinish.append(self.startup)