예제 #1
0
    def drawPalette(self, tileSetInstance):
        self.tileSetInstance = tileSetInstance

        if len(self.PaletteTileList) > 1:
            for wdgt in self.PaletteTileList:
                wdgt.deleteLater()
                wdgt = None
            self.PaletteTileList = []

        i = 0
        for key in sorted(tileSetInstance.tileset):
            self.PaletteTileList.append(base_tile.QTile(self))
            self.Grid.addWidget(self.PaletteTileList[-1], i / 6, i % 6)
            self.PaletteTileList[-1].initTile(tileSetInstance.tileset, i, 0,
                                              tileSetInstance.boxsize,
                                              [key, 0, 0, 0, 0], 1)
            self.PaletteTileList[-1].clicked.connect(self.setTileCurrent)
            self.PaletteTileList[-1].doubleClicked.connect(
                self.paletteItemDoubleClicked)
            i += 1

        self.PaletteItems.resize(
            6 * tileSetInstance.boxsize,
            tMat.divideRoundUp(len(tileSetInstance.tileset), 6) *
            tileSetInstance.boxsize)
예제 #2
0
    def updatePal(self, palfile, gamefolder):
        mypal = palette_format.PaletteFormat()
        mypal.load(palfile)
        tilePalette = mypal.gettiles()
        imageFile = os.path.join(gamefolder, mypal.getimg())

        self.tileSetInstance = tile_set.TileSet(imageFile, tilePalette)

        if len(self.PaletteTileList) > 0:
            for wdgt in self.PaletteTileList:
                self.Grid.removeWidget(wdgt)
                wdgt.deleteLater()
                wdgt.setParent(None)
                wdgt = None
            self.PaletteTileList = []

        for i in range(len(self.tileSetInstance.tileset)):
            self.PaletteTileList.append(base_tile.QTile())
            self.Grid.addWidget(self.PaletteTileList[-1], i / self.cn,
                                i % self.cn)
            self.PaletteTileList[-1].initTile(self.tileSetInstance.tileset, i,
                                              0, self.tileSetInstance.boxsize,
                                              [i, 0, 0, 0, 0], self.scale)

        width = self.cn * self.tileSetInstance.boxsize * self.scale
        height = tMat.divideRoundUp(
            len(self.tileSetInstance.tileset),
            self.cn) * self.tileSetInstance.boxsize * self.scale
        self.PaletteItems.resize(width, height)
예제 #3
0
    def __init__(self,
                 pMyMap,
                 pMyTileset,
                 parent=None,
                 indicativeToUse=1,
                 **kwargs):
        #super().__init__(parent, **kwargs)
        QtWidgets.QWidget.__init__(self, parent, **kwargs)

        self.Grid = QtWidgets.QGridLayout(self)

        self.Grid.setHorizontalSpacing(0)
        self.Grid.setVerticalSpacing(0)
        self.Grid.setSpacing(0)
        self.Grid.setContentsMargins(0, 0, 0, 0)

        self.pMyMap = pMyMap
        self.pMyTileset = pMyTileset

        self.TileWidth = 0
        self.TileHeight = 0
        self.myScale = 0.5
        self.indicativeToUse = indicativeToUse

        if (indicativeToUse > 0):
            self.xclicked = base_tile.QTile(self)
            self.xclicked.initTile(tile_set.indicativeSet.tileset, 0, 0, 32,
                                   [indicativeToUse, 0, 0, 0, 0], 0.5)

        self.TileList = []
        self.selectedPosition = [0, 0]
        self.DrawMap(pMyMap, pMyTileset)
예제 #4
0
파일: Editor.py 프로젝트: mlieberman85/fgmk
    def DrawMap(self, parent):
        # self.setUpdatesEnabled(False)
        self.setVisible(False)
        LayersMapTiles = parent.myMap.LayersMapTiles

        self.TileHeight = len(LayersMapTiles[0])
        self.TileWidth = len(LayersMapTiles[0][0])

        if len(self.TileList) > 1:
            for collum in self.TileList:
                for wdgt in collum:
                    wdgt.deleteLater()
                    wdgt = None
            self.TileList = []

        # get the background numbers and use to get the tiles
        for iy in range(self.TileHeight):
            self.TileList.append([])
            for jx in range(self.TileWidth):

                self.TileList[iy].append(base_tile.QTile(self))
                self.Grid.addWidget(self.TileList[iy][jx], iy, jx)
                self.TileList[iy][jx].initTile(parent.myTileSet.tileset, jx,
                                               iy, parent.myTileSet.boxsize,
                                               LayersMapTiles[:, iy, jx],
                                               self.myScale)
                self.TileList[iy][jx].clicked.connect(self.TileInMapClicked)
                self.TileList[iy][jx].mouseMoved.connect(self.mouseMoved)
                self.TileList[iy][jx].rightClicked.connect(
                    self.TileInMapRightClicked)

        self.resize(self.TileWidth * parent.myTileSet.boxsize * self.myScale,
                    self.TileHeight * parent.myTileSet.boxsize * self.myScale)
        # self.setUpdatesEnabled(True)
        self.setVisible(True)
예제 #5
0
    def __init__(self, parent=None, **kwargs):
        #super().__init__(parent, **kwargs)
        QtWidgets.QWidget.__init__(self, parent, **kwargs)

        self.menuTileset = tile_set.TileSet(
            getdata.path('map_explorer_icons.png'))
        self.scale = 0.5

        iconGrid = QtWidgets.QGridLayout()

        iconHBoxL = QtWidgets.QHBoxLayout()
        iconHBoxL.setAlignment(QtCore.Qt.AlignLeft)
        iconGrid.addLayout(iconHBoxL, 0, 0, QtCore.Qt.AlignLeft)

        iconHBoxR = QtWidgets.QHBoxLayout()
        iconHBoxR.setAlignment(QtCore.Qt.AlignRight)
        iconGrid.addLayout(iconHBoxR, 0, 1, QtCore.Qt.AlignRight)

        #the last element will be left at the right corner
        #I want the trash to be always the last element
        iconName = ["new", "open", "trash"]
        iconHelp = [
            "creates a new map file",
            "opens a map file. Same as double clicking.", "deletes a map file."
        ]
        self.menuIcons = []

        for i in range(len(iconName)):
            self.menuIcons.append(base_tile.QTile(self))
            self.menuIcons[-1].initTile(self.menuTileset.tileset, 0, 0,
                                        self.menuTileset.boxsize,
                                        [0, 0, i + 1, 0, 0], self.scale)
            self.menuIcons[-1].setObjectName(iconName[i])
            self.menuIcons[-1].setToolTip(iconName[i] + "\nWhen clicked, " +
                                          iconHelp[i])
            self.menuIcons[-1].clicked.connect(self.clickedOnIcon)
            if (i < len(iconName) - 1):
                iconHBoxL.addWidget(self.menuIcons[-1])
            else:
                iconHBoxR.addWidget(self.menuIcons[-1])

        self.parent = parent
        self.LvlLWidget = QtWidgets.QListWidget(self)
        self.VBox = QtWidgets.QVBoxLayout(self)
        self.VBox.setAlignment(QtCore.Qt.AlignTop)
        self.VBox.addLayout(iconGrid)
        self.VBox.addWidget(self.LvlLWidget)
        self.levelList = []
        self.mapForOpen = ''
        self.LvlLWidget.itemDoubleClicked.connect(self.openMapItem)
        #self.LvlLWidget.itemClicked.connect(self.doubleClickedForOpen)

        self.show()
예제 #6
0
    def __init__(self, parent=None, **kwargs):
        #super().__init__(parent, **kwargs)
        QtWidgets.QWidget.__init__(self, parent, **kwargs)

        self.parent = parent
        self.scale = 2

        self.toolTileset = tile_set.TileSet(getdata.path('tools.png'))

        self.FBox = FlowLayout(self)

        TOOLSTARTINGTILE = 6
        ToolsName = [
            "pen", "dropper", "bucket", "line", "rectangle", "charaplacer",
            "pan"
        ]
        ToolsHelp = [
            "click to change tile to selected tile",
            "click to get tile type and set to selected tile",
            "click to fill area with selected tile",
            "click once to set starting point and again to set ending point",
            "click once to set first corner and again to set opposing corner",
            "places a chara on a selected spot",
            "click and hold to pan the map"
        ]
        self.MaxTools = len(ToolsName)
        self.ToolTile = []

        self.lastLeftClickTool = 0
        self.lastLeftClickTool = 1

        for i in range(self.MaxTools):
            self.ToolTile.append(base_tile.QTile(self))
            self.ToolTile[-1].initTile(self.toolTileset.tileset, 0, 0,
                                       self.toolTileset.boxsize,
                                       [0, 0, TOOLSTARTINGTILE + i, 0, 0],
                                       self.scale)
            self.ToolTile[-1].setObjectName(ToolsName[i])
            self.ToolTile[-1].setToolTip(ToolsName[i] + "\nWhen selected, " +
                                         ToolsHelp[i])
            self.ToolTile[-1].clicked.connect(self.toolLeftClicked)
            self.ToolTile[-1].rightClicked.connect(self.toolRightClicked)
            self.FBox.addWidget(self.ToolTile[-1])

        self.updateToolTiles()
        self.show()
예제 #7
0
    def DrawPal(self):
        # self.setUpdatesEnabled(False)
        self.setVisible(False)

        if len(self.TileList) > 1:
            for collum in self.TileList:
                for wdgt in collum:
                    self.Grid.removeWidget(wdgt)
                    wdgt.deleteLater()
                    wdgt.hide()
                    del wdgt
                    wdgt = None
            self.TileList = []

        # get the background numbers and use to get the tiles
        i=0
        for iy in range(self.TileHeight):
            self.TileList.append([])
            for jx in range(self.TileWidth):
                tiletype = self.getTileType(jx,iy)
                tiletype[0]=i
                self.TileList[iy].append(base_tile.QTile(self))
                self.Grid.addWidget(self.TileList[iy][jx], iy, jx)
                if(i!=0):
                    self.TileList[iy][jx].initTile(self.t.tileset, jx, iy,
                                                   self.t.boxsize,
                                                   tiletype,
                                                   self.myScale,
                                                   True)
                    self.TileList[iy][jx].clicked.connect(self.TileClicked)
                    self.TileList[iy][jx].rightClicked.connect(
                        self.TileRightClicked)
                else:
                    self.TileList[iy][jx].initTile(self.t.tileset, jx, iy,
                                                   self.t.boxsize,
                                                   [0,0,0,0,0],
                                                   self.myScale,
                                                   True)
                i+=1

        self.resize(self.TileWidth * self.t.boxsize * self.myScale,
                    self.TileHeight * self.t.boxsize * self.myScale)
        self.setVisible(True)
예제 #8
0
    def DrawMap(self, pMyMap, pMyTileset):
        self.setVisible(False)

        if (self.pMyMap != pMyMap):
            self.pMyMap = pMyMap
            self.selectedPosition = [0, 0]

        self.pMyTileset = pMyTileset

        LayersMapTiles = self.pMyMap.LayersMapTiles
        tileset = self.pMyTileset.tileset
        boxsize = self.pMyTileset.boxsize

        self.TileHeight = len(LayersMapTiles[0])
        self.TileWidth = len(LayersMapTiles[0][0])

        if len(self.TileList) > 1:
            for collum in self.TileList:
                for wdgt in collum:
                    self.Grid.removeWidget(wdgt)
                    wdgt.deleteLater()
                    wdgt.setParent(None)
                    wdgt = None
            self.TileList = []

        # for i in height
        for iy in range(self.TileHeight):
            # for j in width
            self.TileList.append([])
            for jx in range(self.TileWidth):
                self.TileList[iy].append(base_tile.QTile(self))
                self.Grid.addWidget(self.TileList[iy][jx], iy, jx)
                self.TileList[iy][jx].initTile(tileset, jx, iy, boxsize,
                                               LayersMapTiles[:, iy, jx],
                                               self.myScale)
                self.TileList[iy][jx].clicked.connect(self.TileClicked)

        self.resize(self.TileWidth * boxsize * self.myScale,
                    self.TileHeight * boxsize * self.myScale)
        self.setVisible(True)

        self.changeSelectXY(self.selectedPosition[0], self.selectedPosition[1])
예제 #9
0
    def drawPalette(self, tileSetInstance):
        self.tileSetInstance = tileSetInstance

        if len(self.PaletteTileList) > 0:
            for wdgt in self.PaletteTileList:
                self.Grid.removeWidget(wdgt)
                wdgt.deleteLater()
                wdgt.setParent(None)
                wdgt = None
            self.PaletteTileList = []

        for i in range(len(tileSetInstance.tileset)):
            self.PaletteTileList.append(base_tile.QTile())
            self.Grid.addWidget(self.PaletteTileList[-1], i / 6, i % 6)
            self.PaletteTileList[-1].initTile(tileSetInstance.tileset,
                                              i, 0, tileSetInstance.boxsize, [i, 0, 0, 0, 0], self.scale)
            self.PaletteTileList[-1].clicked.connect(self.setTileCurrent)

        self.PaletteItems.resize(6 * tileSetInstance.boxsize, tMat.divideRoundUp(
            len(tileSetInstance.tileset), 6) * tileSetInstance.boxsize)
예제 #10
0
    def __init__(self, pMyTileset, parent=None, **kwargs):
        #super().__init__(parent, **kwargs)
        QtWidgets.QWidget.__init__(self, parent, **kwargs)

        self.VBox = QtWidgets.QVBoxLayout(self)

        self.tileSetInstance = pMyTileset

        scrollArea = QtWidgets.QScrollArea()

        self.scale = 1
        self.PaletteItems = QtWidgets.QWidget()
        self.Grid = QtWidgets.QGridLayout()

        self.PaletteItems.setLayout(self.Grid)
        scrollArea.setWidget(self.PaletteItems)

        self.Grid.setHorizontalSpacing(0)
        self.Grid.setVerticalSpacing(0)
        self.Grid.setSpacing(0)
        self.Grid.setContentsMargins(0, 0, 0, 0)

        self.PaletteTileList = []

        self.drawPalette(self.tileSetInstance)

        self.currentTile = 0
        self.CurrentTT = base_tile.QTile(self)
        self.CurrentTT.initTile(self.tileSetInstance.tileset,
                                len(self.tileSetInstance.tileset) - 1, 0,
                                self.tileSetInstance.boxsize,
                                [self.currentTile, 0, 0, 0, 0], self.scale * 2)

        self.VBox.addWidget(scrollArea)
        self.VBox.addWidget(self.CurrentTT)

        self.setMinimumSize(
            self.tileSetInstance.boxsize * (6 + 1) * self.scale,
            self.tileSetInstance.boxsize * (1 + 1) * self.scale)