70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QListWidget, QHBoxLayout, QPushButton, QLineEdit
|
|
from PyQt5.QtCore import Qt
|
|
from dusk.entity import Entity
|
|
|
|
class EntityPanel(QWidget):
|
|
def __init__(self, parent):
|
|
super().__init__(parent)
|
|
self.parent = parent
|
|
layout = QVBoxLayout(self)
|
|
self.setLayout(layout)
|
|
|
|
# Top panel placeholder
|
|
topWidget = QLabel("Entity Editor (top)")
|
|
layout.addWidget(topWidget)
|
|
|
|
# Name input
|
|
nameLayout = QHBoxLayout()
|
|
nameLabel = QLabel("Name:")
|
|
self.nameInput = QLineEdit()
|
|
nameLayout.addWidget(nameLabel)
|
|
nameLayout.addWidget(self.nameInput)
|
|
layout.addLayout(nameLayout)
|
|
|
|
# Entity list and buttons
|
|
self.entityList = QListWidget()
|
|
self.entityList.addItems(["Entity 1", "Entity 2", "Entity 3"])
|
|
layout.addWidget(self.entityList, stretch=1)
|
|
|
|
btnLayout = QHBoxLayout()
|
|
self.btnAdd = QPushButton("Add")
|
|
self.btnRemove = QPushButton("Remove")
|
|
btnLayout.addWidget(self.btnAdd)
|
|
btnLayout.addWidget(self.btnRemove)
|
|
layout.addLayout(btnLayout)
|
|
|
|
# Events
|
|
self.btnAdd.clicked.connect(self.onAddEntity)
|
|
self.btnRemove.clicked.connect(self.onRemoveEntity)
|
|
self.parent.map.onEntityData.sub(self.onEntityData)
|
|
self.entityList.itemClicked.connect(self.onEntityClicked)
|
|
self.entityList.itemDoubleClicked.connect(self.onEntityDoubleClicked)
|
|
|
|
# Call once to populate
|
|
self.onEntityData()
|
|
self.onEntityUnselect()
|
|
|
|
def onEntityUnselect(self):
|
|
self.nameInput.setText("")
|
|
|
|
def onEntityDoubleClicked(self, item):
|
|
print(f"Double clicked: {item.text()}")
|
|
|
|
def onEntityClicked(self, item):
|
|
print(f"Clicked: {item.text()}")
|
|
|
|
def onAddEntity(self):
|
|
chunk = self.parent.map.getChunkAtWorldPos(*self.parent.map.position)
|
|
if chunk is None:
|
|
return
|
|
chunk.addEntity()
|
|
|
|
def onRemoveEntity(self):
|
|
pass
|
|
|
|
def onEntityData(self):
|
|
self.onEntityUnselect()
|
|
self.entityList.clear()
|
|
for chunk in self.parent.map.chunks.values():
|
|
for entity_id, entity in chunk.entities.items():
|
|
self.entityList.addItem(f"Entity {entity_id}") |