|
|
|
@ -18,145 +18,213 @@
|
|
|
|
|
|
|
|
|
|
#include <nel/misc/debug.h>
|
|
|
|
|
|
|
|
|
|
TileItem::TileItem(const QVector<QVariant> &data, TileItem *parent)
|
|
|
|
|
Node::Node() : m_parentItem(0)
|
|
|
|
|
{
|
|
|
|
|
parentItem = parent;
|
|
|
|
|
itemData = data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TileItem::~TileItem()
|
|
|
|
|
Node::Node(const QVector<QVariant> &data, Node *parent)
|
|
|
|
|
{
|
|
|
|
|
qDeleteAll(childItems);
|
|
|
|
|
m_parentItem = parent;
|
|
|
|
|
m_itemData = data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TileItem::appendChild(TileItem *item)
|
|
|
|
|
Node::~Node()
|
|
|
|
|
{
|
|
|
|
|
childItems.append(item);
|
|
|
|
|
qDeleteAll(m_childItems);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TileItem *TileItem::child(int row)
|
|
|
|
|
void Node::appendChild(Node *item)
|
|
|
|
|
{
|
|
|
|
|
m_childItems.append(item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Node *Node::child(int row)
|
|
|
|
|
{
|
|
|
|
|
//nlinfo("row %d and size %d", row, childItems.size());
|
|
|
|
|
return childItems.value(row);
|
|
|
|
|
return m_childItems.value(row);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int TileItem::childCount() const
|
|
|
|
|
int Node::childCount() const
|
|
|
|
|
{
|
|
|
|
|
return childItems.count();
|
|
|
|
|
return m_childItems.count();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int TileItem::childNumber() const
|
|
|
|
|
int Node::childNumber() const
|
|
|
|
|
{
|
|
|
|
|
if(parentItem)
|
|
|
|
|
return parentItem->childItems.indexOf(const_cast<TileItem*>(this));
|
|
|
|
|
if(m_parentItem)
|
|
|
|
|
return m_parentItem->m_childItems.indexOf(const_cast<Node*>(this));
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TileItem::insertChildren(int position, int count, int columns)
|
|
|
|
|
bool Node::insertChildren(int position, int count, int columns)
|
|
|
|
|
{
|
|
|
|
|
if(position<0 || position>childItems.size())
|
|
|
|
|
if(position<0 || position>m_childItems.size())
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
for(int row = 0; row < count; row++)
|
|
|
|
|
{
|
|
|
|
|
QVector<QVariant> data(columns);
|
|
|
|
|
TileItem *item = new TileItem(data, this);
|
|
|
|
|
childItems.insert(position, item);
|
|
|
|
|
Node *item = new Node(data, this);
|
|
|
|
|
m_childItems.insert(position, item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TileItem::removeChildren(int position, int count)
|
|
|
|
|
bool Node::removeChildren(int position, int count)
|
|
|
|
|
{
|
|
|
|
|
if(position<0 || position+count>childItems.size())
|
|
|
|
|
if(position<0 || position+count>m_childItems.size())
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
for(int row=0; row<count; row++)
|
|
|
|
|
delete childItems.takeAt(position);
|
|
|
|
|
delete m_childItems.takeAt(position);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TileItem::insertColumns(int position, int columns)
|
|
|
|
|
bool Node::insertColumns(int position, int columns)
|
|
|
|
|
{
|
|
|
|
|
if(position<0 || position > itemData.size())
|
|
|
|
|
if(position<0 || position > m_itemData.size())
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
for(int column=0; column<columns; column++)
|
|
|
|
|
itemData.insert(position, columns);
|
|
|
|
|
m_itemData.insert(position, columns);
|
|
|
|
|
|
|
|
|
|
Q_FOREACH(TileItem *child, childItems)
|
|
|
|
|
Q_FOREACH(Node *child, m_childItems)
|
|
|
|
|
child->insertColumns(position, columns);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int TileItem::row() const
|
|
|
|
|
int Node::row() const
|
|
|
|
|
{
|
|
|
|
|
if(parentItem)
|
|
|
|
|
return parentItem->childItems.indexOf(const_cast<TileItem*>(this));
|
|
|
|
|
if(m_parentItem)
|
|
|
|
|
return m_parentItem->m_childItems.indexOf(const_cast<Node*>(this));
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int TileItem::columnCount() const
|
|
|
|
|
int Node::columnCount() const
|
|
|
|
|
{
|
|
|
|
|
return itemData.count();
|
|
|
|
|
return m_itemData.count();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QVariant TileItem::data(int column) const
|
|
|
|
|
QVariant Node::data(int column) const
|
|
|
|
|
{
|
|
|
|
|
return itemData.value(column);
|
|
|
|
|
return m_itemData.value(column);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TileItem::setData(int column, const QVariant &value)
|
|
|
|
|
bool Node::setData(int column, const QVariant &value)
|
|
|
|
|
{
|
|
|
|
|
if(column < 0 || column >= itemData.size())
|
|
|
|
|
if(column < 0 || column >= m_itemData.size())
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
itemData[column] = value;
|
|
|
|
|
m_itemData[column] = value;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TileItem *TileItem::parent()
|
|
|
|
|
Node *Node::parent()
|
|
|
|
|
{
|
|
|
|
|
return parentItem;
|
|
|
|
|
return m_parentItem;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TileItem::setParent(TileItem *parent)
|
|
|
|
|
void Node::setParent(Node *parent)
|
|
|
|
|
{
|
|
|
|
|
parentItem = parent;
|
|
|
|
|
m_parentItem = parent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TileItem::appendRow(const QList<TileItem*> &items)
|
|
|
|
|
void Node::appendRow(const QList<Node*> &items)
|
|
|
|
|
{
|
|
|
|
|
Q_FOREACH(TileItem *item, items)
|
|
|
|
|
Q_FOREACH(Node *item, items)
|
|
|
|
|
appendRow(item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TileItem::appendRow(TileItem *item)
|
|
|
|
|
void Node::appendRow(Node *item)
|
|
|
|
|
{
|
|
|
|
|
item->setParent(this);
|
|
|
|
|
childItems.append(item);
|
|
|
|
|
m_childItems.append(item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
TileTypeTileItem::TileTypeTileItem(const QVector<QVariant> &data, TileItem *parent) : TileItem(data,parent)
|
|
|
|
|
TileSetNode::TileSetNode(QString tileSetName, Node *parent) : m_tileSetName(tileSetName)
|
|
|
|
|
{
|
|
|
|
|
m_parentItem = parent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TileSetNode::~TileSetNode()
|
|
|
|
|
{
|
|
|
|
|
qDeleteAll(m_childItems);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TileTypeTileItem::~TileTypeTileItem()
|
|
|
|
|
QVariant TileSetNode::data(int column) const
|
|
|
|
|
{
|
|
|
|
|
qDeleteAll(childItems);
|
|
|
|
|
return QVariant(m_tileSetName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QVariant TileTypeTileItem::data(int column) const
|
|
|
|
|
///////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
TileTypeNode::TileTypeNode(TNodeTileType type, Node *parent) : m_nodeTileType(type)
|
|
|
|
|
{
|
|
|
|
|
QVariant val = itemData.value(column);
|
|
|
|
|
m_parentItem = parent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TileTypeNode::~TileTypeNode()
|
|
|
|
|
{
|
|
|
|
|
qDeleteAll(m_childItems);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QVariant TileTypeNode::data(int column) const
|
|
|
|
|
{
|
|
|
|
|
return QVariant(getTileTypeName(m_nodeTileType));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TileTypeNode::TNodeTileType TileTypeNode::getTileType()
|
|
|
|
|
{
|
|
|
|
|
return m_nodeTileType;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nlinfo("the column is %d and the value is '%s'. there are %d values",
|
|
|
|
|
column, val.toString().toStdString().c_str(), itemData.size());
|
|
|
|
|
return itemData.value(column);
|
|
|
|
|
}
|
|
|
|
|
const char *TileTypeNode::getTileTypeName(TNodeTileType type)
|
|
|
|
|
{
|
|
|
|
|
switch(type)
|
|
|
|
|
{
|
|
|
|
|
case Tile128:
|
|
|
|
|
return "128";
|
|
|
|
|
case Tile256:
|
|
|
|
|
return "256";
|
|
|
|
|
case TileTransition:
|
|
|
|
|
return "Transition";
|
|
|
|
|
case TileDisplacement:
|
|
|
|
|
return "Displacement";
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return "UNKNOWN";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
TileItemNode::TileItemNode(int tileId, TTileChannel channel, QString filename, Node *parent) : m_tileId(tileId)
|
|
|
|
|
{
|
|
|
|
|
m_tileFilename[channel] = filename;
|
|
|
|
|
m_parentItem = parent;
|
|
|
|
|
nlinfo("dispalying tile %d - %s", m_tileId, m_tileFilename[TileDiffuse].toStdString().c_str());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TileItemNode::~TileItemNode()
|
|
|
|
|
{
|
|
|
|
|
qDeleteAll(m_childItems);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TileItemNode::setTileFilename(TTileChannel channel, QString filename)
|
|
|
|
|
{
|
|
|
|
|
m_tileFilename[channel] = filename;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QVariant TileItemNode::data(int column) const
|
|
|
|
|
{
|
|
|
|
|
nlinfo("dispalying tile %d - %s", m_tileId, m_tileFilename[TileDiffuse].toStdString().c_str());
|
|
|
|
|
// find some way to know which file/bitmap to display
|
|
|
|
|
return QVariant(m_tileFilename[TileDiffuse]);
|
|
|
|
|
}
|
|
|
|
|