#include <float.h>
#include <math.h>
#include <limits>
+#include <physfs.h>
#include "sector.hpp"
#include "object/player.hpp"
#include "scripting/squirrel_util.hpp"
#include "script_interface.hpp"
#include "log.hpp"
+#include "main.hpp"
Sector* Sector::_current = 0;
Sector::Sector(Level* parent)
: level(parent), currentmusic(LEVEL_MUSIC),
- ambient_light( 1.0f, 1.0f, 1.0f, 1.0f ), gravity(10), player(0), camera(0)
+ ambient_light( 1.0f, 1.0f, 1.0f, 1.0f ), gravity(10.0), player(0), camera(0)
{
add_object(new Player(player_status, "Tux"));
add_object(new DisplayEffect("Effect"));
reader.get("gravity", gravity);
std::string backgroundimage;
- reader.get("background", backgroundimage);
- if (backgroundimage == "arctis2.jpg") backgroundimage = "arctis.jpg";
+ if (reader.get("background", backgroundimage) && (backgroundimage != "")) {
+ if (backgroundimage == "arctis.png") backgroundimage = "arctis.jpg";
+ if (backgroundimage == "arctis2.jpg") backgroundimage = "arctis.jpg";
+ if (backgroundimage == "ocean.png") backgroundimage = "ocean.jpg";
+ backgroundimage = "images/background/" + backgroundimage;
+ if (!PHYSFS_exists(backgroundimage.c_str())) {
+ log_warning << "Background image \"" << backgroundimage << "\" not found. Ignoring." << std::endl;
+ backgroundimage = "";
+ }
+ }
+
float bgspeed = .5;
reader.get("bkgd_speed", bgspeed);
bgspeed /= 100;
if(backgroundimage != "") {
Background* background = new Background();
- background->set_image(
- std::string("images/background/") + backgroundimage, bgspeed);
+ background->set_image(backgroundimage, bgspeed);
add_object(background);
} else {
Gradient* gradient = new Gradient();
spawnpoints.push_back(spawn);
music = "chipdisko.ogg";
+ // skip reading music filename. It's all .ogg now, anyway
+ /*
reader.get("music", music);
+ */
music = "music/" + music;
int width = 30, height = 15;
}
}
+ if (height < 19) tilemap->resize(width, 19);
add_object(tilemap);
}
if(reader.get_vector("background-tm", tiles)) {
TileMap* tilemap = new TileMap();
tilemap->set(width, height, tiles, LAYER_BACKGROUNDTILES, false);
+ if (height < 19) tilemap->resize(width, 19);
add_object(tilemap);
}
if(reader.get_vector("foreground-tm", tiles)) {
TileMap* tilemap = new TileMap();
tilemap->set(width, height, tiles, LAYER_FOREGROUNDTILES, false);
+
+ // fill additional space in foreground with tiles of ID 2035 (lightmap/black)
+ if (height < 19) tilemap->resize(width, 19, 2035);
+
add_object(tilemap);
}
{
return Rect(
camera->get_translation() - Vector(1600, 1200),
- camera->get_translation() + Vector(1600, 1200));
+ camera->get_translation() + Vector(1600, 1200) + Vector(SCREEN_WIDTH,SCREEN_HEIGHT));
}
void
this->player = player;
}
+ UsesPhysic *physic_object = dynamic_cast<UsesPhysic *>(object);
+ if(physic_object)
+ {
+ physic_object->physic.set_gravity(gravity);
+ }
+
+
if(_current == this) {
try_expose(object);
}