#include <fstream>
#include <sstream>
#include <stdexcept>
-#include <cfloat>
-#include <cmath>
+#include <float.h>
+#include <math.h>
#include <limits>
#include <physfs.h>
void
Sector::parse(const lisp::Lisp& sector)
{
+ bool has_background = false;
lisp::ListIterator iter(§or);
while(iter.next()) {
const std::string& token = iter.item();
} else {
GameObject* object = parse_object(token, *(iter.lisp()));
if(object) {
+ if(dynamic_cast<Background *>(object)) {
+ has_background = true;
+ } else if(dynamic_cast<Gradient *>(object)) {
+ has_background = true;
+ }
add_object(object);
}
}
}
+ if(!has_background) {
+ Gradient* gradient = new Gradient();
+ gradient->set_gradient(Color(0.3, 0.4, 0.75), Color(1, 1, 1));
+ add_object(gradient);
+ }
+
update_game_objects();
if(solid_tilemaps.size() < 1) log_warning << "sector '" << name << "' does not contain a solid tile layer." << std::endl;
gameobjects.push_back(object);
}
gameobjects_new.clear();
+
+ /* update solid_tilemaps list */
+ //FIXME: this could be more efficient
+ solid_tilemaps.clear();
+ for(std::vector<GameObject*>::iterator i = gameobjects.begin();
+ i != gameobjects.end(); ++i)
+ {
+ TileMap* tm = dynamic_cast<TileMap*>(*i);
+ if (!tm) continue;
+ if (tm->is_solid()) solid_tilemaps.push_back(tm);
+ }
+
}
bool