示例#1
0
bool zorder_compare(const entity_ptr& e1, const entity_ptr& e2)
{
	// Compare z-orders, then sub-z-orders then vertical mid-points.
	if(e1->zorder() > e2->zorder()) {
		return true;
	} else if(e1->zorder() == e2->zorder()) {
		if(e1->zsub_order() > e2->zsub_order()) {
			return true;
		} else if(e1->zsub_order() == e2->zsub_order()) {
			if(e1->midpoint().y > e2->midpoint().y) {
				return true;
			}
		}
	}
	return false;
}
示例#2
0
void Scene::add( entity_ptr e){
	e->registerWith(*this);
	m_entities.push_back(e);
}
示例#3
0
bool zorder_compare(const entity_ptr& a, const entity_ptr& b)
{
	//the reverse_global_vertical_zordering flag is set in the player object (our general repository for all major game rules et al).  It's meant to reverse vertical sorting of objects in the same zorder, depending on whether objects are being viewed from above, or below.  In frogatto proper, objects at a higher vertical position should overlap those below.  In a top-down game, the reverse is desirable.
	if(level::current().player() && level::current().player()->reverse_global_vertical_zordering()){
		return a->zorder() < b->zorder() ||
			a->zorder() == b->zorder() && a->zsub_order() < b->zsub_order() ||
			a->zorder() == b->zorder() && a->zsub_order() == b->zsub_order() && a->midpoint().y < b->midpoint().y ||
			a->zorder() == b->zorder() && a->zsub_order() == b->zsub_order() && a->midpoint().y == b->midpoint().y && a->midpoint().x < b->midpoint().x;		
	}
	return a->zorder() < b->zorder() ||
		a->zorder() == b->zorder() && a->zsub_order() < b->zsub_order() ||
		a->zorder() == b->zorder() && a->zsub_order() == b->zsub_order() && a->midpoint().y > b->midpoint().y ||
		a->zorder() == b->zorder() && a->zsub_order() == b->zsub_order() && a->midpoint().y == b->midpoint().y && a->midpoint().x > b->midpoint().x;
}
示例#4
0
bool CompareID(const entity_ptr ent, const int id)
{
	return ent->ID() == id;
}