Files
dusk/tools/editortool/map/mapinfopanel.py
Dominic Masters cf59989167
All checks were successful
Build Dusk / build-linux (push) Successful in 50s
Build Dusk / build-psp (push) Successful in 59s
Closer to actually editing
2025-11-16 10:40:20 -06:00

68 lines
2.5 KiB
Python

from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton, QHBoxLayout, QMessageBox
from editortool.map.map import map
from dusk.defs import defs
CHUNK_WIDTH = int(defs.get('CHUNK_WIDTH'))
CHUNK_HEIGHT = int(defs.get('CHUNK_HEIGHT'))
CHUNK_DEPTH = int(defs.get('CHUNK_DEPTH'))
class MapInfoPanel(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
layout = QVBoxLayout()
map_info_label = QLabel("Map Information")
layout.addWidget(map_info_label)
map_title_label = QLabel("Map Title")
self.map_title_input = QLineEdit()
layout.addWidget(map_title_label)
layout.addWidget(self.map_title_input)
tilePositionLabel = QLabel("Tile Position")
layout.addWidget(tilePositionLabel)
tilePositionRow = QHBoxLayout()
self.tileXInput = QLineEdit()
self.tileXInput.setPlaceholderText("X")
tilePositionRow.addWidget(self.tileXInput)
self.tileYInput = QLineEdit()
self.tileYInput.setPlaceholderText("Y")
tilePositionRow.addWidget(self.tileYInput)
self.tileZInput = QLineEdit()
self.tileZInput.setPlaceholderText("Z")
tilePositionRow.addWidget(self.tileZInput)
self.tileGo = QPushButton("Go")
tilePositionRow.addWidget(self.tileGo)
layout.addLayout(tilePositionRow)
self.chunkPosLabel = QLabel("Chunk Position: 0, 0, 0")
layout.addWidget(self.chunkPosLabel)
self.chunkLabel = QLabel("Chunk: 0, 0, 0")
layout.addWidget(self.chunkLabel)
layout.addStretch()
self.setLayout(layout)
self.tileGo.clicked.connect(self.goToPosition)
self.tileXInput.returnPressed.connect(self.goToPosition)
self.tileYInput.returnPressed.connect(self.goToPosition)
self.tileZInput.returnPressed.connect(self.goToPosition)
self.updatePositionLabels(map.position)
map.addPositionListener(self.updatePositionLabels)
def goToPosition(self):
try:
x = int(self.tileXInput.text())
y = int(self.tileYInput.text())
z = int(self.tileZInput.text())
map.moveTo(x, y, z)
except ValueError:
QMessageBox.warning(self, "Invalid Input", "Please enter valid integer coordinates.")
def updatePositionLabels(self, pos):
self.tileXInput.setText(str(pos[0]))
self.tileYInput.setText(str(pos[1]))
self.tileZInput.setText(str(pos[2]))
self.chunkPosLabel.setText(f"Chunk Position: {pos[0] % CHUNK_WIDTH}, {pos[1] % CHUNK_HEIGHT}, {pos[2] % CHUNK_DEPTH}")
self.chunkLabel.setText(f"Chunk: {pos[0] // CHUNK_WIDTH}, {pos[1] // CHUNK_HEIGHT}, {pos[2] // CHUNK_DEPTH}")