void le_drawlevel();
void le_drawinterface();
void le_checkevents();
-void le_change(float x, float y, unsigned char c);
+void le_change(float x, float y, int tm, unsigned int c);
void le_testlevel();
void le_showhelp();
void le_set_defaults(void);
static int le_frame;
static texture_type le_selection;
static int done;
-static char le_current_tile;
+static unsigned int le_current_tile;
static bool le_mouse_pressed[2];
static button_type le_save_level_bt;
static button_type le_test_level_bt;
static int le_selection_mode;
static SDL_Event event;
-void le_activate_bad_guys(void)
-{
- int x,y;
-
- /* Activate bad guys: */
-
- /* as oposed to the gameloop.c func, this one doesn't remove
- the badguys from tiles */
-
- for (y = 0; y < 15; ++y)
- for (x = 0; x < le_current_level->width; ++x)
- if (le_current_level->tiles[y][x] >= '0' && le_current_level->tiles[y][x] <= '9')
- add_bad_guy(x * 32, y * 32, static_cast<BadGuyKind>(le_current_level->tiles[y][x] - '0'));
-}
-
void le_set_defaults()
{
if(le_current_level != NULL)
le_update_buttons(le_current_level->theme.c_str());
le_set_defaults();
level_load_gfx(le_current_level);
- le_activate_bad_guys();
show_menu = true;
}
break;
le_update_buttons(le_current_level->theme.c_str());
le_set_defaults();
level_load_gfx(le_current_level);
- le_activate_bad_guys();
menu_item_change_input(&subset_new_menu->item[2],"");
show_menu = true;
break;
le_level_changed = false;
le_current_level = NULL;
- le_current_tile = '.';
+ le_current_tile = 0;
le_mouse_pressed[LEFT] = false;
le_mouse_pressed[RIGHT] = false;
void apply_level_settings_menu()
{
- int i,y,j;
+ int i;
i = false;
le_current_level->name = level_settings_menu->item[2].input;
le_current_level->song_title = string_list_active(level_settings_menu->item[4].list);
- i = le_current_level->width;
- le_current_level->width = atoi(level_settings_menu->item[6].input);
- if(le_current_level->width < i)
- {
- if(le_current_level->width < 21)
- le_current_level->width = 21;
- for(y = 0; y < 15; ++y)
- {
- le_current_level->tiles[y] = (unsigned int*) realloc(le_current_level->tiles[y],(le_current_level->width+1)*sizeof(unsigned int));
- le_current_level->tiles[y][le_current_level->width] = (unsigned int) '\0';
- }
- }
- else if(le_current_level->width > i)
- {
- for(y = 0; y < 15; ++y)
- {
- le_current_level->tiles[y] = (unsigned int*) realloc(le_current_level->tiles[y],(le_current_level->width+1)*sizeof(unsigned int));
- for(j = 0; j < le_current_level->width - i; ++j)
- le_current_level->tiles[y][i+j] = (unsigned int) '.';
- le_current_level->tiles[y][le_current_level->width] = (unsigned int) '\0';
- }
- }
+ level_change_size(le_current_level, atoi(level_settings_menu->item[6].input));
le_current_level->time_left = atoi(level_settings_menu->item[7].input);
le_current_level->gravity = atof(level_settings_menu->item[8].input);
le_current_level->bkgd_red = atoi(level_settings_menu->item[9].input);
level_free_gfx();
level_load_gfx(le_current_level);
-
- le_activate_bad_guys();
}
void le_quit(void)
for (y = 0; y < 15; ++y)
for (x = 0; x < 20; ++x)
{
- drawshape(x * 32 - ((int)pos_x % 32), y * 32,
- le_current_level->tiles[y][x + (int)(pos_x / 32)]);
+ drawshape(x * 32 - ((int)pos_x % 32), y * 32, le_current_level->ia_tiles[y][x + (int)(pos_x / 32)]);
/* draw whats inside stuff when cursor is selecting those */
/* (draw them all the time - is this the right behaviour?) */
- switch(le_current_level->tiles[y][x + (int)(pos_x/32)])
+ switch(le_current_level->ia_tiles[y][x + (int)(pos_x/32)])
{
case 'B':
texture_draw(&img_mints, x * 32 - ((int)pos_x % 32), y*32);
key = event.key.keysym.sym;
if(show_menu)
{
- menu_event(&event.key.keysym);
+ menu_event(event);
if(key == SDLK_ESCAPE)
{
show_menu = false;
}
button_event(&le_rubber_bt,&event);
if(button_get_state(&le_rubber_bt) == BUTTON_CLICKED)
- le_current_tile = '.';
+ le_current_tile = 0;
button_event(&le_select_mode_one_bt,&event);
if(button_get_state(&le_select_mode_one_bt) == BUTTON_CLICKED)
le_selection_mode = CURSOR;
if(le_mouse_pressed[LEFT])
{
- le_change(cursor_x, cursor_y, le_current_tile);
+ le_change(cursor_x, cursor_y, TM_IA, le_current_tile);
}
}
}
fillrect(x1*32-pos_x, y1*32,32* (x2 - x1 + 1),32 * (y2 - y1 + 1),173,234,177,103);
}
-void le_change(float x, float y, unsigned char c)
+void le_change(float x, float y, int tm, unsigned int c)
{
if(le_current_level != NULL)
{
switch(le_selection_mode)
{
case CURSOR:
- level_change(le_current_level,x,y,c);
+ level_change(le_current_level,x,y,tm,c);
yy = ((int)y / 32);
xx = ((int)x / 32);
for(xx = x1; xx <= x2; xx++)
for(yy = y1; yy <= y2; yy++)
{
- level_change(le_current_level, xx*32, yy*32, c);
+ level_change(le_current_level, xx*32, yy*32, tm, c);
if(c == '0') // if it's a bad guy
add_bad_guy(xx*32, yy*32, BAD_BSOD);
arrays_init();
level_load_gfx(le_current_level);
loadshared();
- le_activate_bad_guys();
}
void le_showhelp()