Implemented Tile addition.
This commit is contained in:
parent
41f8104f19
commit
a1b8737776
4 changed files with 70 additions and 2 deletions
|
@ -527,9 +527,63 @@ 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();
|
||||||
|
if( !idx.isValid() )
|
||||||
|
{
|
||||||
|
QMessageBox::information( this,
|
||||||
|
tr( "Adding new tiles" ),
|
||||||
|
tr( "You need to have a tileset selected before you can add tiles!" ) );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tileSet = idx.row();
|
||||||
|
|
||||||
|
TileModel *model = static_cast< TileModel* >( m_tileModels[ land ] );
|
||||||
|
idx = model->index( tileSet, 0 );
|
||||||
|
if( !idx.isValid() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
TileSetNode *tsn = reinterpret_cast< TileSetNode* >( idx.internalPointer() );
|
||||||
|
|
||||||
|
int tabIdx = m_ui->tileViewTabWidget->currentIndex();
|
||||||
|
Node *n = tsn->child( tabIdx );
|
||||||
|
|
||||||
QFileDialog::Options options;
|
QFileDialog::Options options;
|
||||||
QString selectedFilter;
|
QString selectedFilter;
|
||||||
QStringList fileNames = QFileDialog::getOpenFileNames(this, "Choose Tile Texture", "." , "Images (*.png);;All Files (*.*)", &selectedFilter, options);
|
QStringList fileNames = QFileDialog::getOpenFileNames(this, "Choose Tile Texture", "." , "Images (*.png);;All Files (*.*)", &selectedFilter, options);
|
||||||
|
|
||||||
|
int c = n->childCount();
|
||||||
|
|
||||||
|
QStringListIterator itr( fileNames );
|
||||||
|
while( itr.hasNext() )
|
||||||
|
{
|
||||||
|
Node *newNode = TileModel::createItemNode( c, TileModel::TileDiffuse, itr.next() );
|
||||||
|
n->appendRow( newNode );
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
|
||||||
|
QModelIndex rootIdx = model->index( tabIdx, 0, m_ui->tileSetLV->currentIndex());
|
||||||
|
|
||||||
|
QListView *lv = NULL;
|
||||||
|
|
||||||
|
switch( tabIdx )
|
||||||
|
{
|
||||||
|
case TAB_128: lv = m_ui->listView128; break;
|
||||||
|
case TAB_256: lv = m_ui->listView256; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
lv->reset();
|
||||||
|
lv->setRootIndex( rootIdx );
|
||||||
|
lv->setCurrentIndex( lv->model()->index( 0, 0, rootIdx ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
TileModel* TileEditorMainWindow::createTileModel()
|
TileModel* TileEditorMainWindow::createTileModel()
|
||||||
|
|
|
@ -42,7 +42,7 @@ public:
|
||||||
|
|
||||||
QUndoStack *getUndoStack() { return m_undoStack; }
|
QUndoStack *getUndoStack() { return m_undoStack; }
|
||||||
|
|
||||||
public Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void onActionAddTile(bool triggered);
|
void onActionAddTile(bool triggered);
|
||||||
void onActionDeleteTile(bool triggered);
|
void onActionDeleteTile(bool triggered);
|
||||||
void onActionReplaceImage(bool triggered);
|
void onActionReplaceImage(bool triggered);
|
||||||
|
@ -69,7 +69,6 @@ public Q_SLOTS:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void onActionAddTile(int tabId);
|
void onActionAddTile(int tabId);
|
||||||
|
|
||||||
TileModel* createTileModel();
|
TileModel* createTileModel();
|
||||||
|
|
||||||
Ui::TileEditorMainWindow *m_ui;
|
Ui::TileEditorMainWindow *m_ui;
|
||||||
|
@ -88,6 +87,15 @@ private:
|
||||||
QList< TileModel* > m_tileModels;
|
QList< TileModel* > m_tileModels;
|
||||||
|
|
||||||
QString m_texturePath;
|
QString m_texturePath;
|
||||||
|
|
||||||
|
enum Tabs
|
||||||
|
{
|
||||||
|
TAB_128 = 0,
|
||||||
|
TAB_256 = 1,
|
||||||
|
TAB_TRANSITION = 2,
|
||||||
|
TAB_DISPLACEMENT = 3,
|
||||||
|
TAB_DETAILS = 4
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TILE_EDITOR_MAIN_WINDOW_H
|
#endif // TILE_EDITOR_MAIN_WINDOW_H
|
||||||
|
|
|
@ -203,6 +203,11 @@ TileSetNode *TileModel::createTileSetNode(QString tileSetName)
|
||||||
return tileSet;
|
return tileSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Node *TileModel::createItemNode( int id, TTileChannel channel, const QString &fileName )
|
||||||
|
{
|
||||||
|
return new TileItemNode( id, channel, fileName );
|
||||||
|
}
|
||||||
|
|
||||||
const char *TileModel::getTileTypeName(TileModel::TNodeTileType type)
|
const char *TileModel::getTileTypeName(TileModel::TNodeTileType type)
|
||||||
{
|
{
|
||||||
switch(type)
|
switch(type)
|
||||||
|
|
|
@ -84,6 +84,7 @@ public:
|
||||||
void swapRows( int a, int b );
|
void swapRows( int a, int b );
|
||||||
|
|
||||||
TileSetNode *createTileSetNode(QString tileSetName);
|
TileSetNode *createTileSetNode(QString tileSetName);
|
||||||
|
static Node *createItemNode( int id, TTileChannel channel, const QString &fileName );
|
||||||
|
|
||||||
static const char *getTileTypeName(TNodeTileType type);
|
static const char *getTileTypeName(TNodeTileType type);
|
||||||
static uint32 getTileTypeSize(TileModel::TNodeTileType type);
|
static uint32 getTileTypeSize(TileModel::TNodeTileType type);
|
||||||
|
|
Loading…
Reference in a new issue