song_title = "Mortimers_chipdisko.mod";
bkgd_image = "arctis.png";
width = 21;
+ height = 15;
start_pos_x = 100;
start_pos_y = 170;
time_left = 100;
bkgd_bottom.green = 255;
bkgd_bottom.blue = 255;
- for(int i = 0; i < 15; ++i)
+ bg_tiles.resize(height+1, std::vector<unsigned int>(width, 0));
+ ia_tiles.resize(height+1, std::vector<unsigned int>(width, 0));
+ fg_tiles.resize(height+1, std::vector<unsigned int>(width, 0));
+
+ for(int i = 0; i < height; ++i)
{
ia_tiles[i].resize(width+1, 0);
ia_tiles[i][width] = (unsigned int) '\0';
printf("Warning no time specified for level.\n");
}
+ height = 15;
+ reader.read_int("height", &height);
+
back_scrolling = false;
reader.read_bool("back_scrolling", &back_scrolling);
}
}
- for(int i = 0; i < 15; ++i)
+ bg_tiles.resize(height+1, std::vector<unsigned int>(width, 0));
+ ia_tiles.resize(height+1, std::vector<unsigned int>(width, 0));
+ fg_tiles.resize(height+1, std::vector<unsigned int>(width, 0));
+
+ for(int i = 0; i < height; ++i)
{
ia_tiles[i].resize(width + 1, 0);
bg_tiles[i].resize(width + 1, 0);
fprintf(fi," (bkgd_blue_bottom %d)\n", bkgd_bottom.blue);
fprintf(fi," (time %d)\n", time_left);
fprintf(fi," (width %d)\n", width);
+ fprintf(fi," (height %d)\n", height);
if(back_scrolling)
fprintf(fi," (back_scrolling #t)\n");
else
fprintf(fi," (gravity %2.1f)\n", gravity);
fprintf(fi," (background-tm ");
- for(int y = 0; y < 15; ++y)
+ for(int y = 0; y < height; ++y)
{
for(int i = 0; i < width; ++i)
fprintf(fi," %d ", bg_tiles[y][i]);
fprintf( fi,")\n");
fprintf(fi," (interactive-tm ");
- for(int y = 0; y < 15; ++y)
+ for(int y = 0; y < height; ++y)
{
for(int i = 0; i < width; ++i)
fprintf(fi," %d ", ia_tiles[y][i]);
fprintf( fi,")\n");
fprintf(fi," (foreground-tm ");
- for(int y = 0; y < 15; ++y)
+ for(int y = 0; y < height; ++y)
{
for(int i = 0; i < width; ++i)
fprintf(fi," %d ", fg_tiles[y][i]);
*ptexture = new Surface(fname, use_alpha);
}
-/* Change the size of a level (width) */
+/* Change the size of a level */
void
-Level::change_size (int new_width)
+Level::change_width (int new_width)
{
if(new_width < 21)
new_width = 21;
- for(int y = 0; y < 15; ++y)
+ for(int y = 0; y < height; ++y)
{
ia_tiles[y].resize(new_width, 0);
bg_tiles[y].resize(new_width, 0);
width = new_width;
}
+void
+Level::change_height (int new_height)
+{
+ if(new_height < 15)
+ new_height = 15;
+
+ bg_tiles.resize(height+1, std::vector<unsigned int>(width, 0));
+ ia_tiles.resize(height+1, std::vector<unsigned int>(width, 0));
+ fg_tiles.resize(height+1, std::vector<unsigned int>(width, 0));
+
+ height = new_height;
+}
+
void
Level::change(float x, float y, int tm, unsigned int c)
{
int yy = ((int)y / 32);
int xx = ((int)x / 32);
- if (yy >= 0 && yy < 15 && xx >= 0 && xx <= width)
+ if (yy >= 0 && yy < height && xx >= 0 && xx <= width)
{
switch(tm)
{
yy = ((int)y / 32);
xx = ((int)x / 32);
- if (yy >= 0 && yy < 15 && xx >= 0 && xx <= width)
+ if (yy >= 0 && yy < height && xx >= 0 && xx <= width)
c = ia_tiles[yy][xx];
else
c = 0;
unsigned int
Level::get_tile_at(int x, int y) const
{
- if(x < 0 || x > width || y < 0 || y > 14)
+ if(x < 0 || x > width || y < 0 || y > height)
return 0;
return ia_tiles[y][x];
std::string song_title;
std::string bkgd_image;
std::string particle_system;
- std::vector<unsigned int> bg_tiles[15]; /* Tiles in the background */
- std::vector<unsigned int> ia_tiles[15]; /* Tiles which can interact in the game (solids for example)*/
- std::vector<unsigned int> fg_tiles[15]; /* Tiles in the foreground */
+ std::vector<std::vector<unsigned int> > bg_tiles; /* Tiles in the background */
+ std::vector<std::vector<unsigned int> > ia_tiles; /* Tiles which can interact in the game (solids for example)*/
+ std::vector<std::vector<unsigned int> > fg_tiles; /* Tiles in the foreground */
+// std::vector<unsigned int> bg_tiles[15]; /* Tiles in the background */
+// std::vector<unsigned int> ia_tiles[15]; /* Tiles which can interact in the game (solids for example)*/
+// std::vector<unsigned int> fg_tiles[15]; /* Tiles in the foreground */
int time_left;
Color bkgd_top;
Color bkgd_bottom;
int width;
+ int height;
int bkgd_speed;
int start_pos_x;
int start_pos_y;
/** Edit a piece of the map! */
void change(float x, float y, int tm, unsigned int c);
- /** Resize the level to a new width */
- void change_size (int new_width);
+ /** Resize the level to a new width/height */
+ void change_width (int new_width);
+ void change_height (int new_height);
/** Return the id of the tile at position x/y */
unsigned int gettileid(float x, float y) const;
level_settings_menu->additem(MN_STRINGSELECT,"Bg-Image",0,0,MNID_BGIMG);
level_settings_menu->additem(MN_STRINGSELECT,"Particle",0,0,MNID_PARTICLE);
level_settings_menu->additem(MN_NUMFIELD, "Length ",0,0,MNID_LENGTH);
+ level_settings_menu->additem(MN_NUMFIELD, "Height ",0,0,MNID_HEIGHT);
level_settings_menu->additem(MN_NUMFIELD, "Time ",0,0,MNID_TIME);
level_settings_menu->additem(MN_NUMFIELD, "Gravity ",0,0,MNID_GRAVITY);
level_settings_menu->additem(MN_NUMFIELD, "Bg-Img-Speed",0,0,MNID_BGSPEED);
sprintf(str,"%d",le_world->get_level()->width);
level_settings_menu->get_item_by_id(MNID_LENGTH).change_input(str);
+ sprintf(str,"%d",le_world->get_level()->height);
+ level_settings_menu->get_item_by_id(MNID_HEIGHT).change_input(str);
sprintf(str,"%d",le_world->get_level()->time_left);
level_settings_menu->get_item_by_id(MNID_TIME).change_input(str);
sprintf(str,"%2.0f",le_world->get_level()->gravity);
le_world->get_level()->song_title = string_list_active(level_settings_menu->get_item_by_id(MNID_SONG).list);
- le_world->get_level()->change_size(atoi(level_settings_menu->get_item_by_id(MNID_LENGTH).input));
+ le_world->get_level()->change_width(atoi(level_settings_menu->get_item_by_id(MNID_LENGTH).input));
+ le_world->get_level()->change_height(atoi(level_settings_menu->get_item_by_id(MNID_HEIGHT).input));
le_world->get_level()->time_left = atoi(level_settings_menu->get_item_by_id(MNID_TIME).input);
le_world->get_level()->gravity = atof(level_settings_menu->get_item_by_id(MNID_GRAVITY).input);
le_world->get_level()->bkgd_speed = atoi(level_settings_menu->get_item_by_id(MNID_BGSPEED).input);