Blob Blame Raw


#include "tlevel.h"
#include "tpalette.h"

DEFINE_CLASS_CODE(TLevel, 7)

//-------------------------------------------------

TLevel::TLevel()
	: TSmartObject(m_classCode), m_name(""), m_table(new Table()), m_palette(0)
{
}

//-------------------------------------------------

TLevel::~TLevel()
{
	if (m_palette)
		m_palette->release();
	delete m_table;
}

//-------------------------------------------------

std::string TLevel::getName() const
{
	return m_name;
}

//-------------------------------------------------

void TLevel::setName(std::string name)
{
	m_name = name;
}

//-------------------------------------------------

const TImageP &TLevel::frame(const TFrameId fid)
{
	const static TImageP none;
	assert(m_table);
	Iterator it = m_table->find(fid);
	if (it == m_table->end())
		return none; // (*m_table)[fid];
	else
		return it->second;
}

//-------------------------------------------------

void TLevel::setFrame(const TFrameId &fid, const TImageP &img)
{
	assert(m_table);
	if (img)
		img->setPalette(getPalette());
	(*m_table)[fid] = img;
}

//-------------------------------------------------

/*
// brutto e inefficiente
int TLevel::getIndex(const TFrameId fid)
{
  int index = 0;
  for(Iterator it = m_table->begin(); it != m_table->end(); it++, index++)
    if(it->first == fid) return index;
  return -1;
}

*/

//-------------------------------------------------

TPalette *TLevel::getPalette()
{
	return m_palette;
}

//-------------------------------------------------

void TLevel::setPalette(TPalette *palette)
{
	if (m_palette == palette)
		return;
	if (palette)
		palette->addRef();
	if (m_palette)
		m_palette->release();
	m_palette = palette;
	for (Iterator it = begin(); it != end(); ++it) {
		TImageP &img = it->second;
		if (img)
			img->setPalette(m_palette);
	}
}

//-------------------------------------------------