Basically entity editing done
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QListWidget, QHBoxLayout, QPushButton, QLineEdit, QListWidgetItem
|
||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QComboBox, QHBoxLayout, QPushButton, QLineEdit, QListWidget, QListWidgetItem
|
||||
from PyQt5.QtCore import Qt
|
||||
from dusk.entity import Entity
|
||||
from dusk.defs import CHUNK_WIDTH, CHUNK_HEIGHT, CHUNK_DEPTH
|
||||
from dusk.defs import CHUNK_WIDTH, CHUNK_HEIGHT, CHUNK_DEPTH, ENTITY_TYPES, ENTITY_TYPE_NULL
|
||||
|
||||
class EntityPanel(QWidget):
|
||||
def __init__(self, parent):
|
||||
@@ -22,6 +22,15 @@ class EntityPanel(QWidget):
|
||||
nameLayout.addWidget(self.nameInput)
|
||||
layout.addLayout(nameLayout)
|
||||
|
||||
# Entity Type dropdown (single selection)
|
||||
typeLayout = QHBoxLayout()
|
||||
typeLabel = QLabel("Type:")
|
||||
self.typeDropdown = QComboBox()
|
||||
self.typeDropdown.addItems(ENTITY_TYPES)
|
||||
typeLayout.addWidget(typeLabel)
|
||||
typeLayout.addWidget(self.typeDropdown)
|
||||
layout.addLayout(typeLayout)
|
||||
|
||||
# Entity list and buttons
|
||||
self.entityList = QListWidget()
|
||||
self.entityList.addItems([])
|
||||
@@ -41,18 +50,22 @@ class EntityPanel(QWidget):
|
||||
self.parent.map.onPositionChange.sub(self.onPositionChange)
|
||||
self.entityList.itemClicked.connect(self.onEntityClicked)
|
||||
self.entityList.itemDoubleClicked.connect(self.onEntityDoubleClicked)
|
||||
self.typeDropdown.currentIndexChanged.connect(self.onTypeSelected)
|
||||
self.nameInput.textChanged.connect(self.onNameChanged)
|
||||
|
||||
# Call once to populate
|
||||
self.onEntityData()
|
||||
self.onEntityUnselect()
|
||||
|
||||
def onEntityUnselect(self):
|
||||
self.nameInput.setText("")
|
||||
self.entityList.setCurrentItem(None)
|
||||
self.nameInput.setText("")
|
||||
self.typeDropdown.setCurrentIndex(ENTITY_TYPE_NULL)
|
||||
|
||||
def onEntitySelect(self, entity):
|
||||
self.nameInput.setText(entity.name)
|
||||
self.entityList.setCurrentItem(entity.item)
|
||||
self.nameInput.setText(entity.name)
|
||||
self.typeDropdown.setCurrentIndex(entity.type)
|
||||
|
||||
def onEntityDoubleClicked(self, item):
|
||||
entity = item.data(Qt.UserRole)
|
||||
@@ -76,6 +89,13 @@ class EntityPanel(QWidget):
|
||||
)
|
||||
|
||||
def onRemoveEntity(self):
|
||||
item = self.entityList.currentItem()
|
||||
if item is None:
|
||||
return
|
||||
entity = item.data(Qt.UserRole)
|
||||
if entity:
|
||||
chunk = entity.chunk
|
||||
chunk.removeEntity(entity)
|
||||
pass
|
||||
|
||||
def onEntityData(self):
|
||||
@@ -108,4 +128,20 @@ class EntityPanel(QWidget):
|
||||
continue
|
||||
self.onEntitySelect(ent)
|
||||
self.entityList.setCurrentItem(ent.item)
|
||||
break
|
||||
break
|
||||
|
||||
def onTypeSelected(self, index):
|
||||
item = self.entityList.currentItem()
|
||||
if item is None:
|
||||
return
|
||||
entity = item.data(Qt.UserRole)
|
||||
if entity:
|
||||
entity.setType(index)
|
||||
|
||||
def onNameChanged(self, text):
|
||||
item = self.entityList.currentItem()
|
||||
if item is None:
|
||||
return
|
||||
entity = item.data(Qt.UserRole)
|
||||
if entity:
|
||||
entity.setName(text)
|
||||
@@ -31,7 +31,6 @@ class MapLeftPanel(QWidget):
|
||||
# Tabs
|
||||
self.tabs = QTabWidget()
|
||||
self.chunkPanel = ChunkPanel(self.parent)
|
||||
self.chunkPanel.setFixedWidth(250)
|
||||
self.tabs.addTab(self.chunkPanel, "Tiles")
|
||||
self.entityPanel = EntityPanel(self.parent)
|
||||
self.tabs.addTab(self.entityPanel, "Entities")
|
||||
|
||||
Reference in New Issue
Block a user