void EntityFactory::LoadItems(const char* filename)
{
	TiXmlDocument doc;
	if (!doc.LoadFile(filename))
	{
		DIE("can't open items definition %s\n%s", filename, doc.ErrorDesc());
	}
	TiXmlHandle handle(&doc);
	TiXmlElement* elem = handle.FirstChildElement().FirstChildElement().Element();
	const char* name;
	while (elem != NULL)
	{
		QueryPtr(elem, "name", name);
		Item::Type item_type = Item::StringToType(name);

		ItemPattern item;

		QueryStr(elem, "label", item.label);
		QueryInt(elem, "x", item.x);
		QueryInt(elem, "y", item.y);
		QueryInt(elem, "w", item.w);
		QueryInt(elem, "h", item.h);

		items_[Item::StringToType(name)] = item;
		elem = elem->NextSiblingElement();
	}
}
Exemplo n.º 2
0
db::RecordsetPtr Query::Execute()
{
    if (!m_restrictions.empty())
	assert(m_root != 0);

    m_regexes.clear();
    for (unsigned int i=0; i<m_restrictions.size(); ++i)
    {
	if (m_restrictions[i].rt == db::LIKE)
	{
	    TRACE << i << " compiling '" << m_restrictions[i].sval << "'\n";
	    m_regexes[i] = boost::regex(m_restrictions[i].sval, 
					boost::regex::icase);
	}
    }

    if (!m_collateby.empty())
    {
	unsigned int field = *m_collateby.begin();
	if ((m_db->m_fields[field].flags & FIELD_INDEXED) == 0)
	{
	    TRACE << "Can't collate on unindexed field " << field << "\n";
	    return db::RecordsetPtr();
	}
	if (m_collateby.size() > 1)
	{
	    TRACE << "Can't do multiple collate-by yet\n";
	    return db::RecordsetPtr();
	}
	return db::RecordsetPtr(new CollateRecordset(m_db,
						     *m_collateby.begin(),
						     db::steam::QueryPtr(this)));
    }

    if (!m_orderby.empty())
    {
	return db::RecordsetPtr(new OrderedRecordset(m_db,
						     *m_orderby.begin()));
    }

    if (m_restrictions.size() == 1
	&& m_restrictions.begin()->rt == db::EQ)
    {
	unsigned int field = m_restrictions.begin()->which;

	if (m_db->m_fields[field].flags & FIELD_INDEXED)
	{
	    if (m_restrictions.begin()->is_string)
		return db::RecordsetPtr(new IndexedRecordset(m_db, field,
							     m_restrictions.begin()->sval));
	    return db::RecordsetPtr(new IndexedRecordset(m_db, field,
							 m_restrictions.begin()->ival));
	}
	// else fall through
    }

    return db::RecordsetPtr(new SimpleRecordset(m_db, QueryPtr(this)));
}
Exemplo n.º 3
0
	QueryPtr OGLESRenderFactory::MakeConditionalRender()
	{
		if (glloader_GLES_VERSION_3_0() || glloader_GLES_EXT_occlusion_query_boolean())
		{
			return MakeSharedPtr<OGLESConditionalRender>();
		}
		else
		{
			return QueryPtr();
		}
	}
Exemplo n.º 4
0
	QueryPtr D3D11RenderFactory::MakeConditionalRender()
	{
		D3D11RenderEngine& re = *checked_cast<D3D11RenderEngine*>(&Context::Instance().RenderFactoryInstance().RenderEngineInstance());
		if (re.DeviceFeatureLevel() >= D3D_FEATURE_LEVEL_10_0)
		{
			return MakeSharedPtr<D3D11ConditionalRender>();
		}
		else
		{
			return QueryPtr();
		}
	}
Exemplo n.º 5
0
	QueryPtr OGLESRenderFactory::MakeOcclusionQuery()
	{
		return QueryPtr();
	}
static void QueryStr(TiXmlElement* elem, const char* attribute, std::string& data)
{
	const char* p = NULL;
	QueryPtr(elem, attribute, p);
	data = p;
}