Ejemplo n.º 1
0
bool CEntity::PosValid(int NewX, int NewY) {
    bool Return = true;

    int StartX  = (NewX + Col_X) / TILE_SIZE;
    int StartY  = (NewY + Col_Y) / TILE_SIZE;

    int EndX    = ((NewX + Col_X) + Width - Col_Width - 1)      / TILE_SIZE;
    int EndY    = ((NewY + Col_Y) + Height - Col_Height - 1)    / TILE_SIZE;

    for(int iY = StartY;iY <= EndY;iY++) {
        for(int iX = StartX;iX <= EndX;iX++) {
            CTile* Tile = CArea::AreaControl.GetTile(iX * TILE_SIZE, iY * TILE_SIZE);

            if(PosValidTile(Tile) == false) {
                Return = false;
            }
        }
    }

    if(Flags & ENTITY_FLAG_MAPONLY) {
    }else{
        for(int i = 0;i < EntityList.size();i++) {
            if(PosValidEntity(EntityList[i], NewX, NewY) == false) {
                Return = false;
            }
        }
    }

    return Return;
}
Ejemplo n.º 2
0
//Collision
bool Object::PosValid(int NewX, int NewY) {
	bool Return = true;

    if(Flags & OBJECT_FLAG_MAPONLY) {
    }
	else
	{
		for(unsigned int i = 0; i < App::Application.CurrentRoom->ObjectList.size(); i++) {
			if(PosValidEntity(App::Application.CurrentRoom->ObjectList[i], NewX, NewY) == false) {
				Return = false;
			}
		}
    }

    return Return;
}