mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-12-23 01:18:46 +00:00
As it turns out, tilesets can be assigned to multiple lands...
This commit is contained in:
parent
3fe1101f44
commit
d85d0b97d3
8 changed files with 299 additions and 88 deletions
|
@ -11,10 +11,12 @@ SET(OVQT_EXT_SYS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin.
|
||||||
SET(OVQT_TILE_EDITOR_PLUGIN_HDR
|
SET(OVQT_TILE_EDITOR_PLUGIN_HDR
|
||||||
tile_model.h
|
tile_model.h
|
||||||
tile_editor_main_window.h
|
tile_editor_main_window.h
|
||||||
tile_editor_plugin.h)
|
tile_editor_plugin.h
|
||||||
|
land_edit_dialog.h)
|
||||||
|
|
||||||
SET(OVQT_TILE_EDITOR_PLUGIN_UIS
|
SET(OVQT_TILE_EDITOR_PLUGIN_UIS
|
||||||
tile_editor_main_window.ui)
|
tile_editor_main_window.ui
|
||||||
|
land_edit_dialog.ui)
|
||||||
|
|
||||||
SET(OVQT_PLUG_TILE_EDITOR_RCS tile_editor.qrc)
|
SET(OVQT_PLUG_TILE_EDITOR_RCS tile_editor.qrc)
|
||||||
|
|
||||||
|
|
77
code/studio/src/plugins/tile_editor/land_edit_dialog.cpp
Normal file
77
code/studio/src/plugins/tile_editor/land_edit_dialog.cpp
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
#include "land_edit_dialog.h"
|
||||||
|
|
||||||
|
LandEditDialog::LandEditDialog( QWidget *parent ) :
|
||||||
|
QDialog( parent )
|
||||||
|
{
|
||||||
|
setupUi( this );
|
||||||
|
setupConnections();
|
||||||
|
}
|
||||||
|
|
||||||
|
LandEditDialog::~LandEditDialog()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void LandEditDialog::getSelectedTileSets( QStringList &l ) const
|
||||||
|
{
|
||||||
|
int c = tilesetLV->count();
|
||||||
|
for( int i = 0; i < c; i++ )
|
||||||
|
{
|
||||||
|
l.push_back( tilesetLV->item( i )->text() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LandEditDialog::setTileSets( const QStringList &l )
|
||||||
|
{
|
||||||
|
tilesetCB->clear();
|
||||||
|
|
||||||
|
QStringListIterator itr( l );
|
||||||
|
while( itr.hasNext() )
|
||||||
|
{
|
||||||
|
tilesetCB->addItem( itr.next() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LandEditDialog::setupConnections()
|
||||||
|
{
|
||||||
|
connect( okButton, SIGNAL( clicked( bool ) ), this, SLOT( onOkClicked() ) );
|
||||||
|
connect( cancelButton, SIGNAL( clicked( bool ) ), this, SLOT( onCancelClicked() ) );
|
||||||
|
connect( addButton, SIGNAL( clicked( bool ) ), this, SLOT( onAddClicked() ) );
|
||||||
|
connect( removeButton, SIGNAL( clicked( bool ) ), this, SLOT( onRemoveClicked() ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void LandEditDialog::onOkClicked()
|
||||||
|
{
|
||||||
|
accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LandEditDialog::onCancelClicked()
|
||||||
|
{
|
||||||
|
reject();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LandEditDialog::onAddClicked()
|
||||||
|
{
|
||||||
|
if( tilesetCB->currentIndex() < 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
QString text = tilesetCB->currentText();
|
||||||
|
|
||||||
|
int c = tilesetLV->count();
|
||||||
|
for( int i = 0; i < c; i++ )
|
||||||
|
{
|
||||||
|
if( text == tilesetLV->item( i )->text() )
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tilesetLV->addItem( text );
|
||||||
|
}
|
||||||
|
|
||||||
|
void LandEditDialog::onRemoveClicked()
|
||||||
|
{
|
||||||
|
if( tilesetLV->currentItem() == NULL )
|
||||||
|
return;
|
||||||
|
|
||||||
|
QListWidgetItem *item = tilesetLV->currentItem();
|
||||||
|
delete item;
|
||||||
|
}
|
||||||
|
|
32
code/studio/src/plugins/tile_editor/land_edit_dialog.h
Normal file
32
code/studio/src/plugins/tile_editor/land_edit_dialog.h
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
#ifndef LAND_EDIT_DLG_H
|
||||||
|
#define LAND_EDIT_DLG_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "ui_land_edit_dialog.h"
|
||||||
|
#include <QStringList>
|
||||||
|
|
||||||
|
class LandEditDialog : public QDialog, public Ui::LandEditDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
LandEditDialog( QWidget *parent = NULL );
|
||||||
|
~LandEditDialog();
|
||||||
|
|
||||||
|
void getSelectedTileSets( QStringList &l ) const;
|
||||||
|
void setTileSets( const QStringList &l );
|
||||||
|
|
||||||
|
private:
|
||||||
|
void setupConnections();
|
||||||
|
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void onOkClicked();
|
||||||
|
void onCancelClicked();
|
||||||
|
void onAddClicked();
|
||||||
|
void onRemoveClicked();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
99
code/studio/src/plugins/tile_editor/land_edit_dialog.ui
Normal file
99
code/studio/src/plugins/tile_editor/land_edit_dialog.ui
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>LandEditDialog</class>
|
||||||
|
<widget class="QDialog" name="LandEditDialog">
|
||||||
|
<property name="windowModality">
|
||||||
|
<enum>Qt::WindowModal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>402</width>
|
||||||
|
<height>311</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Editing land</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QListWidget" name="tilesetLV"/>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QComboBox" name="tilesetCB"/>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="addButton">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Add</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="removeButton">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Remove</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="okButton">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>OK</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="cancelButton">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Cancel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -34,6 +34,8 @@
|
||||||
|
|
||||||
#include "tilebank_saver.h"
|
#include "tilebank_saver.h"
|
||||||
|
|
||||||
|
#include "land_edit_dialog.h"
|
||||||
|
|
||||||
TileEditorMainWindow::TileEditorMainWindow(QWidget *parent)
|
TileEditorMainWindow::TileEditorMainWindow(QWidget *parent)
|
||||||
: QMainWindow(parent),
|
: QMainWindow(parent),
|
||||||
m_ui(new Ui::TileEditorMainWindow)
|
m_ui(new Ui::TileEditorMainWindow)
|
||||||
|
@ -96,15 +98,18 @@ TileEditorMainWindow::TileEditorMainWindow(QWidget *parent)
|
||||||
connect(m_ui->landAddTB, SIGNAL(clicked()), this, SLOT(onLandAdd()));
|
connect(m_ui->landAddTB, SIGNAL(clicked()), this, SLOT(onLandAdd()));
|
||||||
connect(m_ui->landRemoveTB, SIGNAL(clicked()), this, SLOT(onLandRemove()));
|
connect(m_ui->landRemoveTB, SIGNAL(clicked()), this, SLOT(onLandRemove()));
|
||||||
connect(m_ui->landEditTB, SIGNAL(clicked()), this, SLOT(onLandEdit()));
|
connect(m_ui->landEditTB, SIGNAL(clicked()), this, SLOT(onLandEdit()));
|
||||||
connect(m_ui->landLW, SIGNAL(currentRowChanged(int)), this, SLOT(onLandRowChanged(int)));
|
|
||||||
|
|
||||||
connect(m_ui->chooseVegetPushButton, SIGNAL(clicked()), this, SLOT(onChooseVegetation()));
|
connect(m_ui->chooseVegetPushButton, SIGNAL(clicked()), this, SLOT(onChooseVegetation()));
|
||||||
connect(m_ui->resetVegetPushButton, SIGNAL(clicked()), this, SLOT(onResetVegetation()));
|
connect(m_ui->resetVegetPushButton, SIGNAL(clicked()), this, SLOT(onResetVegetation()));
|
||||||
|
|
||||||
connect(m_ui->tileBankTexturePathPB, SIGNAL(clicked()), this, SLOT(onChooseTexturePath()));
|
connect(m_ui->tileBankTexturePathPB, SIGNAL(clicked()), this, SLOT(onChooseTexturePath()));
|
||||||
|
|
||||||
|
m_tileModel = createTileModel();
|
||||||
|
m_ui->tileSetLV->setModel( m_tileModel );
|
||||||
|
|
||||||
// 128x128 List View
|
// 128x128 List View
|
||||||
//m_ui->listView128->setItemDelegate(m_tileItemDelegate);
|
//m_ui->listView128->setItemDelegate(m_tileItemDelegate);
|
||||||
|
m_ui->listView128->setModel( m_tileModel );
|
||||||
m_ui->listView128->addAction(m_ui->actionAddTile);
|
m_ui->listView128->addAction(m_ui->actionAddTile);
|
||||||
m_ui->listView128->addAction(m_ui->actionDeleteTile);
|
m_ui->listView128->addAction(m_ui->actionDeleteTile);
|
||||||
m_ui->listView128->addAction(m_ui->actionReplaceImage);
|
m_ui->listView128->addAction(m_ui->actionReplaceImage);
|
||||||
|
@ -112,6 +117,7 @@ TileEditorMainWindow::TileEditorMainWindow(QWidget *parent)
|
||||||
|
|
||||||
// 256x256 List View
|
// 256x256 List View
|
||||||
//m_ui->listView256->setItemDelegate(m_tileItemDelegate);
|
//m_ui->listView256->setItemDelegate(m_tileItemDelegate);
|
||||||
|
m_ui->listView256->setModel( m_tileModel );
|
||||||
m_ui->listView256->addAction(m_ui->actionAddTile);
|
m_ui->listView256->addAction(m_ui->actionAddTile);
|
||||||
m_ui->listView256->addAction(m_ui->actionDeleteTile);
|
m_ui->listView256->addAction(m_ui->actionDeleteTile);
|
||||||
m_ui->listView256->addAction(m_ui->actionReplaceImage);
|
m_ui->listView256->addAction(m_ui->actionReplaceImage);
|
||||||
|
@ -119,11 +125,13 @@ TileEditorMainWindow::TileEditorMainWindow(QWidget *parent)
|
||||||
|
|
||||||
// Transition List View
|
// Transition List View
|
||||||
//m_ui->listViewTransition->setItemDelegate(m_tileItemDelegate);
|
//m_ui->listViewTransition->setItemDelegate(m_tileItemDelegate);
|
||||||
|
m_ui->listViewTransition->setModel( m_tileModel );
|
||||||
m_ui->listViewTransition->addAction(m_ui->actionReplaceImage);
|
m_ui->listViewTransition->addAction(m_ui->actionReplaceImage);
|
||||||
m_ui->listViewTransition->addAction(m_ui->actionDeleteImage);
|
m_ui->listViewTransition->addAction(m_ui->actionDeleteImage);
|
||||||
|
|
||||||
// Displacement List View
|
// Displacement List View
|
||||||
//m_ui->listViewDisplacement->setItemDelegate(m_tileItemDelegate);
|
//m_ui->listViewDisplacement->setItemDelegate(m_tileItemDelegate);
|
||||||
|
m_ui->listViewDisplacement->setModel( m_tileModel );
|
||||||
m_ui->listViewDisplacement->addAction(m_ui->actionReplaceImage);
|
m_ui->listViewDisplacement->addAction(m_ui->actionReplaceImage);
|
||||||
m_ui->listViewDisplacement->addAction(m_ui->actionDeleteImage);
|
m_ui->listViewDisplacement->addAction(m_ui->actionDeleteImage);
|
||||||
|
|
||||||
|
@ -135,6 +143,8 @@ TileEditorMainWindow::TileEditorMainWindow(QWidget *parent)
|
||||||
connect(m_ui->actionDeleteImage, SIGNAL(triggered(bool)), this, SLOT(onActionDeleteImage(bool)));
|
connect(m_ui->actionDeleteImage, SIGNAL(triggered(bool)), this, SLOT(onActionDeleteImage(bool)));
|
||||||
|
|
||||||
//connect(m_ui->tileViewTabWidget, SIGNAL(currentChanged(int)), m_tileItemDelegate, SLOT(currentTab(int)));
|
//connect(m_ui->tileViewTabWidget, SIGNAL(currentChanged(int)), m_tileItemDelegate, SLOT(currentTab(int)));
|
||||||
|
connect( m_ui->tileSetLV->selectionModel(), SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ),
|
||||||
|
this, SLOT( changeActiveTileSet( const QModelIndex &, const QModelIndex & ) ) );
|
||||||
|
|
||||||
// Connect the zoom buttons.
|
// Connect the zoom buttons.
|
||||||
connect(m_ui->actionZoom50, SIGNAL(triggered()), m_zoomSignalMapper, SLOT(map()));
|
connect(m_ui->actionZoom50, SIGNAL(triggered()), m_zoomSignalMapper, SLOT(map()));
|
||||||
|
@ -167,8 +177,8 @@ TileEditorMainWindow::~TileEditorMainWindow()
|
||||||
delete m_zoomActionGroup;
|
delete m_zoomActionGroup;
|
||||||
delete m_zoomSignalMapper;
|
delete m_zoomSignalMapper;
|
||||||
|
|
||||||
qDeleteAll( m_tileModels );
|
delete m_tileModel;
|
||||||
m_tileModels.clear();
|
m_tileModel = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TileEditorMainWindow::save()
|
void TileEditorMainWindow::save()
|
||||||
|
@ -200,7 +210,7 @@ void TileEditorMainWindow::saveAs()
|
||||||
}
|
}
|
||||||
|
|
||||||
TileBankSaver saver;
|
TileBankSaver saver;
|
||||||
bool ok = saver.save( m_fileName.toUtf8().constData(), m_tileModels, landNames );
|
bool ok = saver.save( m_fileName.toUtf8().constData(), m_tileModel, landNames );
|
||||||
|
|
||||||
if( !ok )
|
if( !ok )
|
||||||
{
|
{
|
||||||
|
@ -279,14 +289,6 @@ void TileEditorMainWindow::onActionDeleteImage(bool triggered)
|
||||||
|
|
||||||
void TileEditorMainWindow::onTileSetAdd()
|
void TileEditorMainWindow::onTileSetAdd()
|
||||||
{
|
{
|
||||||
if( m_ui->landLW->count() == 0 )
|
|
||||||
{
|
|
||||||
QMessageBox::information( this,
|
|
||||||
tr( "Error adding tile set" ),
|
|
||||||
tr( "You need to add a land before adding a tileset!" ) );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ok;
|
bool ok;
|
||||||
QString text = QInputDialog::getText(this, tr("Add Tile Set"), tr("Enter Tile Set name:"), QLineEdit::Normal, "", &ok);
|
QString text = QInputDialog::getText(this, tr("Add Tile Set"), tr("Enter Tile Set name:"), QLineEdit::Normal, "", &ok);
|
||||||
if (ok && !text.isEmpty())
|
if (ok && !text.isEmpty())
|
||||||
|
@ -323,8 +325,12 @@ void TileEditorMainWindow::onTileSetDelete()
|
||||||
if( reply != QMessageBox::Yes )
|
if( reply != QMessageBox::Yes )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
QString set = reinterpret_cast< TileSetNode* >( idx.internalPointer() )->getTileSetName();
|
||||||
|
|
||||||
TileModel *model = static_cast<TileModel*>(m_ui->tileSetLV->model());
|
TileModel *model = static_cast<TileModel*>(m_ui->tileSetLV->model());
|
||||||
bool ok = model->removeRow( idx.row() );
|
bool ok = model->removeRow( idx.row() );
|
||||||
|
|
||||||
|
onTileSetRemoved( set );
|
||||||
}
|
}
|
||||||
|
|
||||||
void TileEditorMainWindow::onTileSetEdit()
|
void TileEditorMainWindow::onTileSetEdit()
|
||||||
|
@ -357,8 +363,11 @@ void TileEditorMainWindow::onTileSetEdit()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString oldName = node->getTileSetName();
|
||||||
node->setTileSetName( newName );
|
node->setTileSetName( newName );
|
||||||
m_ui->tileSetLV->reset();
|
m_ui->tileSetLV->reset();
|
||||||
|
|
||||||
|
onTileSetRenamed( oldName, newName );
|
||||||
}
|
}
|
||||||
|
|
||||||
void TileEditorMainWindow::onTileSetUp()
|
void TileEditorMainWindow::onTileSetUp()
|
||||||
|
@ -423,12 +432,9 @@ void TileEditorMainWindow::onLandAdd()
|
||||||
|
|
||||||
m_ui->landLW->addItem( name );
|
m_ui->landLW->addItem( name );
|
||||||
|
|
||||||
TileModel *m = createTileModel();
|
Land l;
|
||||||
|
l.name = name;
|
||||||
m_tileModels.push_back( m );
|
m_lands.push_back( l );
|
||||||
|
|
||||||
if( m_tileModels.count() == 1 )
|
|
||||||
m_ui->landLW->setCurrentRow( 0 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TileEditorMainWindow::onLandRemove()
|
void TileEditorMainWindow::onLandRemove()
|
||||||
|
@ -447,12 +453,10 @@ void TileEditorMainWindow::onLandRemove()
|
||||||
if( reply != QMessageBox::Yes )
|
if( reply != QMessageBox::Yes )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QList< TileModel* >::iterator itr = m_tileModels.begin() + idx;
|
|
||||||
delete m_tileModels[ idx ];
|
|
||||||
m_tileModels[ idx ] = NULL;
|
|
||||||
m_tileModels.erase( itr );
|
|
||||||
|
|
||||||
delete item;
|
delete item;
|
||||||
|
|
||||||
|
QList< Land >::iterator itr = m_lands.begin() + idx;
|
||||||
|
m_lands.erase( itr );
|
||||||
}
|
}
|
||||||
|
|
||||||
void TileEditorMainWindow::onLandEdit()
|
void TileEditorMainWindow::onLandEdit()
|
||||||
|
@ -461,58 +465,33 @@ void TileEditorMainWindow::onLandEdit()
|
||||||
if( item == NULL )
|
if( item == NULL )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QString name = item->text();
|
QStringList ts;
|
||||||
|
int c = m_tileModel->rowCount();
|
||||||
|
for( int i = 0; i < c; i++ )
|
||||||
|
{
|
||||||
|
QModelIndex idx = m_tileModel->index( i, 0 );
|
||||||
|
if( !idx.isValid() )
|
||||||
|
continue;
|
||||||
|
|
||||||
QString newName = QInputDialog::getText( this,
|
TileSetNode *n = reinterpret_cast< TileSetNode* >( idx.internalPointer() );
|
||||||
tr( "Editing land" ),
|
ts.push_back( n->getTileSetName() );
|
||||||
tr( "Please specify the new name of the selected land" ),
|
}
|
||||||
QLineEdit::Normal,
|
|
||||||
name );
|
|
||||||
|
|
||||||
if( newName.isEmpty() )
|
int r = m_ui->landLW->currentRow();
|
||||||
|
Land &l = m_lands[ r ];
|
||||||
|
|
||||||
|
LandEditDialog d;
|
||||||
|
d.setTileSets( ts );
|
||||||
|
int result = d.exec();
|
||||||
|
|
||||||
|
if( result != QDialog::Accepted )
|
||||||
return;
|
return;
|
||||||
if( newName == name )
|
|
||||||
return;
|
|
||||||
item->setText( newName );
|
|
||||||
}
|
|
||||||
|
|
||||||
void TileEditorMainWindow::onLandRowChanged( int row )
|
// Update the tileset of the land
|
||||||
{
|
ts.clear();
|
||||||
m_ui->chooseVegetPushButton->setText( "..." );
|
d.getSelectedTileSets( ts );
|
||||||
|
l.tilesets.clear();
|
||||||
if( row == -1 )
|
l.tilesets = ts;
|
||||||
{
|
|
||||||
disconnect( m_ui->tileSetLV->selectionModel(), SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ),
|
|
||||||
this, SLOT( changeActiveTileSet( const QModelIndex &, const QModelIndex & ) ) );
|
|
||||||
|
|
||||||
m_ui->tileSetLV->setModel( NULL );
|
|
||||||
m_ui->listView128->setModel( NULL );
|
|
||||||
m_ui->listView256->setModel( NULL );
|
|
||||||
m_ui->listViewTransition->setModel( NULL );
|
|
||||||
m_ui->listViewDisplacement->setModel( NULL );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//disconnect( m_ui->tileSetLV->selectionModel(), SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ),
|
|
||||||
// this, SLOT( changeActiveTileSet( const QModelIndex &, const QModelIndex & ) ) );
|
|
||||||
|
|
||||||
m_ui->tileSetLV->setModel( m_tileModels[ row ] );
|
|
||||||
m_ui->listView128->setModel( m_tileModels[ row ] );
|
|
||||||
m_ui->listView256->setModel( m_tileModels[ row ] );
|
|
||||||
m_ui->listViewTransition->setModel( m_tileModels[ row ] );
|
|
||||||
m_ui->listViewDisplacement->setModel( m_tileModels[ row ] );
|
|
||||||
|
|
||||||
connect( m_ui->tileSetLV->selectionModel(), SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ),
|
|
||||||
this, SLOT( changeActiveTileSet( const QModelIndex &, const QModelIndex & ) ) );
|
|
||||||
|
|
||||||
if( m_ui->tileSetLV->model()->rowCount() != 0 )
|
|
||||||
{
|
|
||||||
QModelIndex idx = m_ui->tileSetLV->model()->index( 0, 0 );
|
|
||||||
m_ui->tileSetLV->setCurrentIndex( idx );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
m_ui->tileSetLV->reset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TileEditorMainWindow::onChooseVegetation()
|
void TileEditorMainWindow::onChooseVegetation()
|
||||||
|
@ -579,15 +558,6 @@ void TileEditorMainWindow::onChooseTexturePath()
|
||||||
|
|
||||||
void TileEditorMainWindow::onActionAddTile(int tabId)
|
void TileEditorMainWindow::onActionAddTile(int tabId)
|
||||||
{
|
{
|
||||||
int land = m_ui->landLW->currentRow();
|
|
||||||
if( land == -1 )
|
|
||||||
{
|
|
||||||
QMessageBox::information( this,
|
|
||||||
tr( "Adding new tile" ),
|
|
||||||
tr( "You need to have a land and a tileset selected before you can add tiles!" ) );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
QModelIndex idx = m_ui->tileSetLV->currentIndex();
|
QModelIndex idx = m_ui->tileSetLV->currentIndex();
|
||||||
if( !idx.isValid() )
|
if( !idx.isValid() )
|
||||||
{
|
{
|
||||||
|
@ -599,8 +569,7 @@ void TileEditorMainWindow::onActionAddTile(int tabId)
|
||||||
|
|
||||||
int tileSet = idx.row();
|
int tileSet = idx.row();
|
||||||
|
|
||||||
TileModel *model = static_cast< TileModel* >( m_tileModels[ land ] );
|
idx = m_tileModel->index( tileSet, 0 );
|
||||||
idx = model->index( tileSet, 0 );
|
|
||||||
if( !idx.isValid() )
|
if( !idx.isValid() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -622,7 +591,7 @@ void TileEditorMainWindow::onActionAddTile(int tabId)
|
||||||
c++;
|
c++;
|
||||||
}
|
}
|
||||||
|
|
||||||
QModelIndex rootIdx = model->index( tabId, 0, m_ui->tileSetLV->currentIndex());
|
QModelIndex rootIdx = m_tileModel->index( tabId, 0, m_ui->tileSetLV->currentIndex());
|
||||||
|
|
||||||
QListView *lv = getListViewByTab( tabId );
|
QListView *lv = getListViewByTab( tabId );
|
||||||
|
|
||||||
|
@ -693,6 +662,30 @@ void TileEditorMainWindow::onActionReplaceImage( int tabId )
|
||||||
n->setTileFilename( TileModel::TileDiffuse, fileName );
|
n->setTileFilename( TileModel::TileDiffuse, fileName );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TileEditorMainWindow::onTileSetRemoved( const QString &set )
|
||||||
|
{
|
||||||
|
int c = m_lands.count();
|
||||||
|
for( int i = 0; i < c; i++ )
|
||||||
|
{
|
||||||
|
Land &land = m_lands[ i ];
|
||||||
|
land.tilesets.removeAll( set );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TileEditorMainWindow::onTileSetRenamed( const QString &oldname, const QString &newname )
|
||||||
|
{
|
||||||
|
int c = m_lands.count();
|
||||||
|
for( int i = 0; i < c; i++ )
|
||||||
|
{
|
||||||
|
Land &land = m_lands[ i ];
|
||||||
|
int idx = land.tilesets.indexOf( oldname );
|
||||||
|
if( idx < 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
land.tilesets[ idx ] = newname;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TileModel* TileEditorMainWindow::createTileModel()
|
TileModel* TileEditorMainWindow::createTileModel()
|
||||||
{
|
{
|
||||||
QStringList headers;
|
QStringList headers;
|
||||||
|
|
|
@ -61,7 +61,6 @@ private Q_SLOTS:
|
||||||
void onLandAdd();
|
void onLandAdd();
|
||||||
void onLandRemove();
|
void onLandRemove();
|
||||||
void onLandEdit();
|
void onLandEdit();
|
||||||
void onLandRowChanged( int row );
|
|
||||||
|
|
||||||
void onResetVegetation();
|
void onResetVegetation();
|
||||||
void onChooseVegetation();
|
void onChooseVegetation();
|
||||||
|
@ -77,6 +76,8 @@ private:
|
||||||
void onActionDeleteImage(int tabId);
|
void onActionDeleteImage(int tabId);
|
||||||
void onActionReplaceImage(int tabId);
|
void onActionReplaceImage(int tabId);
|
||||||
|
|
||||||
|
void onTileSetRemoved( const QString &set );
|
||||||
|
void onTileSetRenamed( const QString &oldname, const QString &newname );
|
||||||
|
|
||||||
TileModel* createTileModel();
|
TileModel* createTileModel();
|
||||||
QListView* getListViewByTab( int tab ) const;
|
QListView* getListViewByTab( int tab ) const;
|
||||||
|
@ -94,7 +95,7 @@ private:
|
||||||
|
|
||||||
TileItemDelegate *m_tileItemDelegate;
|
TileItemDelegate *m_tileItemDelegate;
|
||||||
|
|
||||||
QList< TileModel* > m_tileModels;
|
TileModel *m_tileModel;
|
||||||
|
|
||||||
QString m_texturePath;
|
QString m_texturePath;
|
||||||
|
|
||||||
|
@ -107,7 +108,14 @@ private:
|
||||||
TAB_DETAILS = 4
|
TAB_DETAILS = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct Land
|
||||||
|
{
|
||||||
|
QString name;
|
||||||
|
QStringList tilesets;
|
||||||
|
};
|
||||||
|
|
||||||
QString m_fileName;
|
QString m_fileName;
|
||||||
|
QList< Land > m_lands;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TILE_EDITOR_MAIN_WINDOW_H
|
#endif // TILE_EDITOR_MAIN_WINDOW_H
|
||||||
|
|
|
@ -28,7 +28,7 @@ TileBankSaver::~TileBankSaver()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TileBankSaver::save( const char *fileName, const QList< TileModel* > &models, const QList< QString > &lands )
|
bool TileBankSaver::save( const char *fileName, const TileModel* model, const QList< QString > &lands )
|
||||||
{
|
{
|
||||||
NL3D::CTileBank bank;
|
NL3D::CTileBank bank;
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ public:
|
||||||
TileBankSaver();
|
TileBankSaver();
|
||||||
~TileBankSaver();
|
~TileBankSaver();
|
||||||
|
|
||||||
bool save( const char *filename, const QList< TileModel* > &models, const QList< QString > &lands );
|
bool save( const char *filename, const TileModel* model, const QList< QString > &lands );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue