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);
/* leveleditor internals */
static string_list_type level_subsets;
-static int le_level_changed; /* if changes, ask for saving, when quiting*/
+static bool le_level_changed; /* if changes, ask for saving, when quiting*/
static int pos_x, cursor_x, cursor_y, fire;
static int le_level;
static st_level* le_current_level;
static int le_frame;
static texture_type le_selection;
static int done;
-static char le_current_tile;
-static int le_mouse_pressed[2];
+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 button_type le_next_level_bt;
static button_panel_type le_bkgd_panel;
static button_panel_type le_fgd_panel;
static button_panel_type le_bad_panel;
-static menu_type leveleditor_menu;
-static menu_type subset_load_menu;
-static menu_type subset_new_menu;
-static menu_type subset_settings_menu;
-static menu_type level_settings_menu;
+static Menu* leveleditor_menu;
+static Menu* subset_load_menu;
+static Menu* subset_new_menu;
+static Menu* subset_settings_menu;
+static Menu* level_settings_menu;
static square selection;
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, le_current_level->tiles[y][x] - '0');
-}
-
void le_set_defaults()
{
if(le_current_level != NULL)
while (SDL_PollEvent(&event))
{}
- while(YES)
+ while(true)
{
last_time = SDL_GetTicks();
le_frame++;
if(show_menu)
{
menu_process_current();
- if(current_menu == &leveleditor_menu)
+ if(current_menu == leveleditor_menu)
{
- switch (menu_check(&leveleditor_menu))
+ switch (leveleditor_menu->check())
{
case 2:
- show_menu = NO;
+ show_menu = false;
break;
case 3:
update_subset_settings_menu();
break;
}
}
- else if(current_menu == &level_settings_menu)
+ else if(current_menu == level_settings_menu)
{
- switch (menu_check(&level_settings_menu))
+ switch (level_settings_menu->check())
{
case 13:
apply_level_settings_menu();
- menu_set_current(&leveleditor_menu);
+ Menu::set_current(leveleditor_menu);
break;
default:
- show_menu = YES;
+ show_menu = true;
break;
}
}
- else if(current_menu == &subset_load_menu)
+ else if(current_menu == subset_load_menu)
{
- switch (i = menu_check(&subset_load_menu))
+ switch (i = subset_load_menu->check())
{
case 0:
break;
if(i != -1)
{
le_level_subset.load(level_subsets.item[i-2]);
- leveleditor_menu.item[3].kind = MN_GOTO;
+ leveleditor_menu->item[3].kind = MN_GOTO;
le_level = 1;
arrays_init();
loadshared();
le_update_buttons(le_current_level->theme.c_str());
le_set_defaults();
level_load_gfx(le_current_level);
- le_activate_bad_guys();
- show_menu = YES;
+ show_menu = true;
}
break;
}
}
- else if(current_menu == &subset_new_menu)
+ else if(current_menu == subset_new_menu)
{
- if(subset_new_menu.item[2].input[0] == '\0')
- subset_new_menu.item[3].kind = MN_DEACTIVE;
+ if(subset_new_menu->item[2].input[0] == '\0')
+ subset_new_menu->item[3].kind = MN_DEACTIVE;
else
{
- subset_new_menu.item[3].kind = MN_ACTION;
+ subset_new_menu->item[3].kind = MN_ACTION;
- switch (i = menu_check(&subset_new_menu))
+ switch (i = subset_new_menu->check())
{
case 3:
- st_subset::create(subset_new_menu.item[2].input);
- le_level_subset.load(subset_new_menu.item[2].input);
- leveleditor_menu.item[3].kind = MN_GOTO;
+ st_subset::create(subset_new_menu->item[2].input);
+ le_level_subset.load(subset_new_menu->item[2].input);
+ leveleditor_menu->item[3].kind = MN_GOTO;
le_level = 1;
arrays_init();
loadshared();
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 = YES;
+ menu_item_change_input(&subset_new_menu->item[2],"");
+ show_menu = true;
break;
}
}
}
- else if(current_menu == &subset_settings_menu)
+ else if(current_menu == subset_settings_menu)
{
- if(le_level_subset.title.compare(subset_settings_menu.item[2].input) == 0 && le_level_subset.description.compare(subset_settings_menu.item[3].input) == 0 )
- subset_settings_menu.item[5].kind = MN_DEACTIVE;
+ if(le_level_subset.title.compare(subset_settings_menu->item[2].input) == 0 && le_level_subset.description.compare(subset_settings_menu->item[3].input) == 0 )
+ subset_settings_menu->item[5].kind = MN_DEACTIVE;
else
- subset_settings_menu.item[5].kind = MN_ACTION;
+ subset_settings_menu->item[5].kind = MN_ACTION;
- switch (i = menu_check(&subset_settings_menu))
+ switch (i = subset_settings_menu->check())
{
case 5:
save_subset_settings_menu();
- show_menu = YES;
+ show_menu = true;
break;
}
}
bkgd_files = dfiles(pathname,"bkgd-", NULL);
string_list_sort(&bkgd_files);
- le_bkgd_panel.hidden = YES;
+ le_bkgd_panel.hidden = true;
key = SDLK_a;
for(i = 0; i < bkgd_files.num_items; ++i)
{
string_list_type bad_files;
level_subsets = dsubdirs("/levels", "info");
- le_show_grid = YES;
+ le_show_grid = true;
/* level_changed = NO;*/
fire = DOWN;
done = 0;
le_frame = 0; /* support for frames in some tiles, like waves and bad guys */
- le_level_changed = NO;
+ le_level_changed = false;
le_current_level = NULL;
- le_current_tile = '.';
- le_mouse_pressed[LEFT] = NO;
- le_mouse_pressed[RIGHT] = NO;
+ le_current_tile = 0;
+ le_mouse_pressed[LEFT] = false;
+ le_mouse_pressed[RIGHT] = false;
texture_load(&le_selection, datadir + "/images/leveleditor/select.png", USE_ALPHA);
string_list_sort(&bkgd_files);
button_panel_init(&le_bkgd_panel, screen->w - 64,98, 64, 318);
- le_bkgd_panel.hidden = YES;
+ le_bkgd_panel.hidden = true;
key = SDLK_a;
for(i = 0; i < bkgd_files.num_items; ++i)
{
string_list_add_item(&bad_files,"laptop-left-0.png");
string_list_add_item(&bad_files,"bag-left-0.png");
button_panel_init(&le_bad_panel, screen->w - 64,98, 64, 318);
- le_bad_panel.hidden = YES;
+ le_bad_panel.hidden = true;
key = SDLK_a;
for(i = 0; i < bad_files.num_items; ++i)
{
button_panel_additem(&le_bad_panel,button_create(filename, "Bad Guy",(SDLKey)((int)key+i),0,0),i);
}
- menu_init(&leveleditor_menu);
- menu_additem(&leveleditor_menu,menu_item_create(MN_LABEL,"Level Editor Menu",0,0));
- menu_additem(&leveleditor_menu,menu_item_create(MN_HL,"",0,0));
- menu_additem(&leveleditor_menu,menu_item_create(MN_ACTION,"Return To Level Editor",0,0));
- menu_additem(&leveleditor_menu,menu_item_create(MN_DEACTIVE,"Level Subset Settings",0,&subset_settings_menu));
- menu_additem(&leveleditor_menu,menu_item_create(MN_GOTO,"Load Level Subset",0,&subset_load_menu));
- menu_additem(&leveleditor_menu,menu_item_create(MN_GOTO,"New Level Subset",0,&subset_new_menu));
- menu_additem(&leveleditor_menu,menu_item_create(MN_HL,"",0,0));
- menu_additem(&leveleditor_menu,menu_item_create(MN_ACTION,"Quit Level Editor",0,0));
+ leveleditor_menu = new Menu();
+ subset_load_menu = new Menu();
+ subset_new_menu = new Menu();
+ subset_settings_menu = new Menu();
+ level_settings_menu = new Menu();
+
+ leveleditor_menu->additem(MN_LABEL,"Level Editor Menu",0,0);
+ leveleditor_menu->additem(MN_HL,"",0,0);
+ leveleditor_menu->additem(MN_ACTION,"Return To Level Editor",0,0);
+ leveleditor_menu->additem(MN_DEACTIVE,"Level Subset Settings",0,subset_settings_menu);
+ leveleditor_menu->additem(MN_GOTO,"Load Level Subset",0,subset_load_menu);
+ leveleditor_menu->additem(MN_GOTO,"New Level Subset",0,subset_new_menu);
+ leveleditor_menu->additem(MN_HL,"",0,0);
+ leveleditor_menu->additem(MN_ACTION,"Quit Level Editor",0,0);
menu_reset();
- menu_set_current(&leveleditor_menu);
- show_menu = YES;
+ Menu::set_current(leveleditor_menu);
+ show_menu = true;
+
+ subset_load_menu->additem(MN_LABEL, "Load Level Subset", 0, 0);
+ subset_load_menu->additem(MN_HL, "", 0, 0);
- menu_init(&subset_load_menu);
- menu_additem(&subset_load_menu,menu_item_create(MN_LABEL,"Load Level Subset",0,0));
- menu_additem(&subset_load_menu,menu_item_create(MN_HL,"",0,0));
for(i = 0; i < level_subsets.num_items; ++i)
{
- menu_additem(&subset_load_menu,menu_item_create(MN_ACTION,level_subsets.item[i],0,0));
+ subset_load_menu->additem(MN_ACTION,level_subsets.item[i],0,0);
}
- menu_additem(&subset_load_menu,menu_item_create(MN_HL,"",0,0));
- menu_additem(&subset_load_menu,menu_item_create(MN_BACK,"Back",0,0));
-
- menu_init(&subset_new_menu);
- menu_additem(&subset_new_menu,menu_item_create(MN_LABEL,"New Level Subset",0,0));
- menu_additem(&subset_new_menu,menu_item_create(MN_HL,"",0,0));
- menu_additem(&subset_new_menu,menu_item_create(MN_TEXTFIELD,"Enter Name",0,0));
- menu_additem(&subset_new_menu,menu_item_create(MN_ACTION,"Create",0,0));
- menu_additem(&subset_new_menu,menu_item_create(MN_HL,"",0,0));
- menu_additem(&subset_new_menu,menu_item_create(MN_BACK,"Back",0,0));
-
- menu_init(&subset_settings_menu);
- menu_additem(&subset_settings_menu,menu_item_create(MN_LABEL,"Level Subset Settings",0,0));
- menu_additem(&subset_settings_menu,menu_item_create(MN_HL,"",0,0));
- menu_additem(&subset_settings_menu,menu_item_create(MN_TEXTFIELD,"Title",0,0));
- menu_additem(&subset_settings_menu,menu_item_create(MN_TEXTFIELD,"Description",0,0));
- menu_additem(&subset_settings_menu,menu_item_create(MN_HL,"",0,0));
- menu_additem(&subset_settings_menu,menu_item_create(MN_ACTION,"Save Changes",0,0));
- menu_additem(&subset_settings_menu,menu_item_create(MN_HL,"",0,0));
- menu_additem(&subset_settings_menu,menu_item_create(MN_BACK,"Back",0,0));
-
- menu_init(&level_settings_menu);
- level_settings_menu.arrange_left = YES;
- menu_additem(&level_settings_menu,menu_item_create(MN_LABEL,"Level Settings",0,0));
- menu_additem(&level_settings_menu,menu_item_create(MN_HL,"",0,0));
- menu_additem(&level_settings_menu,menu_item_create(MN_TEXTFIELD,"Name ",0,0));
- menu_additem(&level_settings_menu,menu_item_create(MN_STRINGSELECT,"Theme ",0,0));
- menu_additem(&level_settings_menu,menu_item_create(MN_STRINGSELECT,"Song ",0,0));
- menu_additem(&level_settings_menu,menu_item_create(MN_STRINGSELECT,"Bg-Image",0,0));
- menu_additem(&level_settings_menu,menu_item_create(MN_NUMFIELD,"Length ",0,0));
- menu_additem(&level_settings_menu,menu_item_create(MN_NUMFIELD,"Time ",0,0));
- menu_additem(&level_settings_menu,menu_item_create(MN_NUMFIELD,"Gravity",0,0));
- menu_additem(&level_settings_menu,menu_item_create(MN_NUMFIELD,"Red ",0,0));
- menu_additem(&level_settings_menu,menu_item_create(MN_NUMFIELD,"Green ",0,0));
- menu_additem(&level_settings_menu,menu_item_create(MN_NUMFIELD,"Blue ",0,0));
- menu_additem(&level_settings_menu,menu_item_create(MN_HL,"",0,0));
- menu_additem(&level_settings_menu,menu_item_create(MN_ACTION,"Apply Changes",0,0));
+ subset_load_menu->additem(MN_HL,"",0,0);
+ subset_load_menu->additem(MN_BACK,"Back",0,0);
+
+ subset_new_menu->additem(MN_LABEL,"New Level Subset",0,0);
+ subset_new_menu->additem(MN_HL,"",0,0);
+ subset_new_menu->additem(MN_TEXTFIELD,"Enter Name",0,0);
+ subset_new_menu->additem(MN_ACTION,"Create",0,0);
+ subset_new_menu->additem(MN_HL,"",0,0);
+ subset_new_menu->additem(MN_BACK,"Back",0,0);
+
+ subset_settings_menu->additem(MN_LABEL,"Level Subset Settings",0,0);
+ subset_settings_menu->additem(MN_HL,"",0,0);
+ subset_settings_menu->additem(MN_TEXTFIELD,"Title",0,0);
+ subset_settings_menu->additem(MN_TEXTFIELD,"Description",0,0);
+ subset_settings_menu->additem(MN_HL,"",0,0);
+ subset_settings_menu->additem(MN_ACTION,"Save Changes",0,0);
+ subset_settings_menu->additem(MN_HL,"",0,0);
+ subset_settings_menu->additem(MN_BACK,"Back",0,0);
+
+ level_settings_menu->arrange_left = true;
+ level_settings_menu->additem(MN_LABEL,"Level Settings",0,0);
+ level_settings_menu->additem(MN_HL,"",0,0);
+ level_settings_menu->additem(MN_TEXTFIELD,"Name ",0,0);
+ level_settings_menu->additem(MN_STRINGSELECT,"Theme ",0,0);
+ level_settings_menu->additem(MN_STRINGSELECT,"Song ",0,0);
+ level_settings_menu->additem(MN_STRINGSELECT,"Bg-Image",0,0);
+ level_settings_menu->additem(MN_NUMFIELD,"Length ",0,0);
+ level_settings_menu->additem(MN_NUMFIELD,"Time ",0,0);
+ level_settings_menu->additem(MN_NUMFIELD,"Gravity",0,0);
+ level_settings_menu->additem(MN_NUMFIELD,"Red ",0,0);
+ level_settings_menu->additem(MN_NUMFIELD,"Green ",0,0);
+ level_settings_menu->additem(MN_NUMFIELD,"Blue ",0,0);
+ level_settings_menu->additem(MN_HL,"",0,0);
+ level_settings_menu->additem(MN_ACTION,"Apply Changes",0,0);
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
char str[80];
int i;
- menu_item_change_input(&level_settings_menu.item[2], le_current_level->name.c_str());
+ menu_item_change_input(&level_settings_menu->item[2], le_current_level->name.c_str());
sprintf(str,"%d",le_current_level->width);
- string_list_copy(level_settings_menu.item[3].list, dsubdirs("images/themes", "solid0.png"));
- string_list_copy(level_settings_menu.item[4].list, dfiles("music/",NULL, "-fast"));
- string_list_copy(level_settings_menu.item[5].list, dfiles("images/background",NULL, NULL));
- string_list_add_item(level_settings_menu.item[5].list,"");
- if((i = string_list_find(level_settings_menu.item[3].list,le_current_level->theme.c_str())) != -1)
- level_settings_menu.item[3].list->active_item = i;
- if((i = string_list_find(level_settings_menu.item[4].list,le_current_level->song_title.c_str())) != -1)
- level_settings_menu.item[4].list->active_item = i;
- if((i = string_list_find(level_settings_menu.item[5].list,le_current_level->bkgd_image.c_str())) != -1)
- level_settings_menu.item[5].list->active_item = i;
-
- menu_item_change_input(&level_settings_menu.item[6], str);
+ string_list_copy(level_settings_menu->item[3].list, dsubdirs("images/themes", "solid0.png"));
+ string_list_copy(level_settings_menu->item[4].list, dfiles("music/",NULL, "-fast"));
+ string_list_copy(level_settings_menu->item[5].list, dfiles("images/background",NULL, NULL));
+ string_list_add_item(level_settings_menu->item[5].list,"");
+ if((i = string_list_find(level_settings_menu->item[3].list,le_current_level->theme.c_str())) != -1)
+ level_settings_menu->item[3].list->active_item = i;
+ if((i = string_list_find(level_settings_menu->item[4].list,le_current_level->song_title.c_str())) != -1)
+ level_settings_menu->item[4].list->active_item = i;
+ if((i = string_list_find(level_settings_menu->item[5].list,le_current_level->bkgd_image.c_str())) != -1)
+ level_settings_menu->item[5].list->active_item = i;
+
+ menu_item_change_input(&level_settings_menu->item[6], str);
sprintf(str,"%d",le_current_level->time_left);
- menu_item_change_input(&level_settings_menu.item[7], str);
+ menu_item_change_input(&level_settings_menu->item[7], str);
sprintf(str,"%2.0f",le_current_level->gravity);
- menu_item_change_input(&level_settings_menu.item[8], str);
+ menu_item_change_input(&level_settings_menu->item[8], str);
sprintf(str,"%d",le_current_level->bkgd_red);
- menu_item_change_input(&level_settings_menu.item[9], str);
+ menu_item_change_input(&level_settings_menu->item[9], str);
sprintf(str,"%d",le_current_level->bkgd_green);
- menu_item_change_input(&level_settings_menu.item[10], str);
+ menu_item_change_input(&level_settings_menu->item[10], str);
sprintf(str,"%d",le_current_level->bkgd_blue);
- menu_item_change_input(&level_settings_menu.item[11], str);
+ menu_item_change_input(&level_settings_menu->item[11], str);
}
void update_subset_settings_menu()
{
- menu_item_change_input(&subset_settings_menu.item[2], le_level_subset.title.c_str());
- menu_item_change_input(&subset_settings_menu.item[3], le_level_subset.description.c_str());
+ menu_item_change_input(&subset_settings_menu->item[2], le_level_subset.title.c_str());
+ menu_item_change_input(&subset_settings_menu->item[3], le_level_subset.description.c_str());
}
void apply_level_settings_menu()
{
- int i,y,j;
- i = NO;
+ int i;
+ i = false;
- le_current_level->name = level_settings_menu.item[2].input;
+ le_current_level->name = level_settings_menu->item[2].input;
- if(le_current_level->bkgd_image.compare(string_list_active(level_settings_menu.item[5].list)) != 0)
+ if(le_current_level->bkgd_image.compare(string_list_active(level_settings_menu->item[5].list)) != 0)
{
- le_current_level->bkgd_image = string_list_active(level_settings_menu.item[5].list);
- i = YES;
+ le_current_level->bkgd_image = string_list_active(level_settings_menu->item[5].list);
+ i = true;
}
- if(le_current_level->theme.compare(string_list_active(level_settings_menu.item[3].list)) != 0)
+ if(le_current_level->theme.compare(string_list_active(level_settings_menu->item[3].list)) != 0)
{
- le_current_level->theme = string_list_active(level_settings_menu.item[3].list);
+ le_current_level->theme = string_list_active(level_settings_menu->item[3].list);
le_update_buttons(le_current_level->theme.c_str());
- i = YES;
+ i = true;
}
- if(i == YES)
+ if(i)
{
level_free_gfx();
level_load_gfx(le_current_level);
}
- le_current_level->song_title = string_list_active(level_settings_menu.item[4].list);
+ 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';
- }
- }
- 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);
- le_current_level->bkgd_green = atoi(level_settings_menu.item[10].input);
- le_current_level->bkgd_blue = atoi(level_settings_menu.item[11].input);
+ 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);
+ le_current_level->bkgd_green = atoi(level_settings_menu->item[10].input);
+ le_current_level->bkgd_blue = atoi(level_settings_menu->item[11].input);
}
void save_subset_settings_menu()
{
- le_level_subset.title = subset_settings_menu.item[2].input;
- le_level_subset.description = subset_settings_menu.item[3].input;
+ le_level_subset.title = subset_settings_menu->item[2].input;
+ le_level_subset.description = subset_settings_menu->item[3].input;
le_level_subset.save();
}
level_free_gfx();
level_load_gfx(le_current_level);
-
- le_activate_bad_guys();
}
void le_quit(void)
{
- /*if(level_changed == YES)
+ /*if(level_changed == true)
if(askforsaving() == CANCEL)
return;*/ //FIXME
SDL_EnableKeyRepeat(0, 0); // disables key repeating
texture_free(&le_selection);
- menu_free(&leveleditor_menu);
- menu_free(&subset_load_menu);
- menu_free(&subset_new_menu);
- menu_free(&subset_settings_menu);
- menu_free(&level_settings_menu);
+ delete leveleditor_menu;
+ delete subset_load_menu;
+ delete subset_new_menu;
+ delete subset_settings_menu;
+ delete level_settings_menu;
button_panel_free(&le_bkgd_panel);
button_panel_free(&le_fgd_panel);
button_panel_free(&le_bad_panel);
}
if(le_selection_mode == CURSOR)
- texture_draw(&le_selection, cursor_x - pos_x, cursor_y, NO_UPDATE);
+ texture_draw(&le_selection, cursor_x - pos_x, cursor_y);
else if(le_selection_mode == SQUARE)
{
int w, h;
switch(le_current_tile)
{
case 'B':
- texture_draw(&img_mints, 19 * 32, 14 * 32, NO_UPDATE);
+ texture_draw(&img_mints, 19 * 32, 14 * 32);
break;
case '!':
- texture_draw(&img_golden_herring,19 * 32, 14 * 32, NO_UPDATE);
+ texture_draw(&img_golden_herring,19 * 32, 14 * 32);
break;
case 'x':
case 'y':
case 'A':
- texture_draw(&img_distro[(le_frame / 5) % 4], 19 * 32, 14 * 32, NO_UPDATE);
+ texture_draw(&img_distro[(le_frame / 5) % 4], 19 * 32, 14 * 32);
break;
case '0':
- texture_draw(&img_bsod_left[(le_frame / 5) % 4],19 * 32, 14 * 32, NO_UPDATE);
+ texture_draw(&img_bsod_left[(le_frame / 5) % 4],19 * 32, 14 * 32);
break;
case '1':
- texture_draw(&img_laptop_left[(le_frame / 5) % 3],19 * 32, 14 * 32, NO_UPDATE);
+ texture_draw(&img_laptop_left[(le_frame / 5) % 3],19 * 32, 14 * 32);
break;
case '2':
- texture_draw(&img_money_left[0],19 * 32, 14 * 32, NO_UPDATE);
+ texture_draw(&img_money_left[0],19 * 32, 14 * 32);
break;
default:
break;
button_panel_draw(&le_bad_panel);
sprintf(str, "%d/%d", le_level,le_level_subset.levels);
- text_drawf(&white_text, str, -8, 16, A_RIGHT, A_NONE, 1, NO_UPDATE);
+ text_drawf(&white_text, str, -8, 16, A_RIGHT, A_TOP, 1);
- text_draw(&white_small_text, "F1 for Help", 10, 430, 1, NO_UPDATE);
+ text_draw(&white_small_text, "F1 for Help", 10, 430, 1);
}
else
{
- if(show_menu == NO)
- text_draw(&white_small_text, "No Level Subset loaded - Press ESC and choose one in the menu", 10, 430, 1, NO_UPDATE);
+ if(show_menu == false)
+ text_draw(&white_small_text, "No Level Subset loaded - Press ESC and choose one in the menu", 10, 430, 1);
else
- text_draw(&white_small_text, "No Level Subset loaded", 10, 430, 1, NO_UPDATE);
+ text_draw(&white_small_text, "No Level Subset loaded", 10, 430, 1);
}
}
if(le_current_level->bkgd_image[0] != '\0')
{
s = pos_x / 30;
- texture_draw_part(&img_bkgd,s,0,0,0,img_bkgd.w - s - 32, img_bkgd.h, NO_UPDATE);
- texture_draw_part(&img_bkgd,0,0,screen->w - s - 32 ,0,s,img_bkgd.h, NO_UPDATE);
+ texture_draw_part(&img_bkgd,s,0,0,0,img_bkgd.w - s - 32, img_bkgd.h);
+ texture_draw_part(&img_bkgd,0,0,screen->w - s - 32 ,0,s,img_bkgd.h);
}
else
{
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, NO_UPDATE);
+ texture_draw(&img_mints, x * 32 - ((int)pos_x % 32), y*32);
break;
case '!':
- texture_draw(&img_golden_herring, x * 32 - ((int)pos_x % 32), y*32, NO_UPDATE);
+ texture_draw(&img_golden_herring, x * 32 - ((int)pos_x % 32), y*32);
break;
case 'x':
case 'y':
case 'A':
- texture_draw(&img_distro[(frame / 5) % 4], x * 32 - ((int)pos_x % 32), y*32, NO_UPDATE);
+ texture_draw(&img_distro[(global_frame_counter / 5) % 4], x * 32 - ((int)pos_x % 32), y*32);
break;
default:
break;
{
/* to support frames: img_bsod_left[(frame / 5) % 4] */
if(bad_guys[i].kind == BAD_BSOD)
- texture_draw(&img_bsod_left[(le_frame / 5) % 4], bad_guys[i].base.x - pos_x, bad_guys[i].base.y, NO_UPDATE);
+ texture_draw(&img_bsod_left[(le_frame / 5) % 4], bad_guys[i].base.x - pos_x, bad_guys[i].base.y);
else if(bad_guys[i].kind == BAD_LAPTOP)
- texture_draw(&img_laptop_left[(le_frame / 5) % 3], bad_guys[i].base.x - pos_x, bad_guys[i].base.y, NO_UPDATE);
+ texture_draw(&img_laptop_left[(le_frame / 5) % 3], bad_guys[i].base.x - pos_x, bad_guys[i].base.y);
else if (bad_guys[i].kind == BAD_MONEY)
- texture_draw(&img_money_left[(le_frame / 5) % 2], bad_guys[i].base.x - pos_x, bad_guys[i].base.y, NO_UPDATE);
+ texture_draw(&img_money_left[(le_frame / 5) % 2], bad_guys[i].base.x - pos_x, bad_guys[i].base.y);
}
/* Draw the player: */
/* for now, the position is fixed at (0, 240) */
- texture_draw(&tux_right[(frame / 5) % 3], 0 - pos_x, 240, NO_UPDATE);
+ texture_draw(&tux_right[(global_frame_counter / 5) % 3], 0 - pos_x, 240);
}
void le_checkevents()
key = event.key.keysym.sym;
if(show_menu)
{
- menu_event(&event.key.keysym);
+ menu_event(event);
if(key == SDLK_ESCAPE)
{
- show_menu = NO;
- menu_set_current(&leveleditor_menu);
+ show_menu = false;
+ Menu::set_current(leveleditor_menu);
}
break;
}
{
case SDLK_ESCAPE:
if(!show_menu)
- show_menu = YES;
+ show_menu = true;
else
- show_menu = NO;
+ show_menu = false;
break;
case SDLK_LEFT:
if(fire == DOWN)
case SDL_MOUSEBUTTONDOWN:
if(event.button.button == SDL_BUTTON_LEFT)
{
- le_mouse_pressed[LEFT] = YES;
+ le_mouse_pressed[LEFT] = true;
selection.x1 = event.motion.x + pos_x;
selection.y1 = event.motion.y;
selection.y2 = event.motion.y;
}
else if(event.button.button == SDL_BUTTON_RIGHT)
- le_mouse_pressed[RIGHT] = YES;
+ le_mouse_pressed[RIGHT] = true;
break;
case SDL_MOUSEBUTTONUP:
if(event.button.button == SDL_BUTTON_LEFT)
- le_mouse_pressed[LEFT] = NO;
+ le_mouse_pressed[LEFT] = false;
else if(event.button.button == SDL_BUTTON_RIGHT)
- le_mouse_pressed[RIGHT] = NO;
+ le_mouse_pressed[RIGHT] = false;
break;
case SDL_MOUSEMOTION:
if(!show_menu)
cursor_x = ((int)(pos_x + x) / 32) * 32;
cursor_y = ((int) y / 32) * 32;
- if(le_mouse_pressed[LEFT] == YES)
+ if(le_mouse_pressed[LEFT])
{
selection.x2 = x + pos_x;
selection.y2 = y;
}
- if(le_mouse_pressed[RIGHT] == YES)
+ if(le_mouse_pressed[RIGHT])
{
pos_x += -1 * event.motion.xrel;
}
if(event.type == SDL_KEYDOWN || event.type == SDL_KEYUP || ((event.type == SDL_MOUSEBUTTONDOWN || SDL_MOUSEMOTION) && (event.motion.x > screen->w-64 && event.motion.x < screen->w &&
event.motion.y > 0 && event.motion.y < screen->h)))
{
- le_mouse_pressed[LEFT] = NO;
- le_mouse_pressed[RIGHT] = NO;
+ le_mouse_pressed[LEFT] = false;
+ le_mouse_pressed[RIGHT] = false;
- if(show_menu == NO)
+ if(show_menu == false)
{
/* Check for button events */
button_event(&le_test_level_bt,&event);
- if(button_get_state(&le_test_level_bt) == BN_CLICKED)
+ if(button_get_state(&le_test_level_bt) == BUTTON_CLICKED)
le_testlevel();
button_event(&le_save_level_bt,&event);
- if(button_get_state(&le_save_level_bt) == BN_CLICKED)
+ if(button_get_state(&le_save_level_bt) == BUTTON_CLICKED)
level_save(le_current_level,le_level_subset.name.c_str(),le_level);
button_event(&le_next_level_bt,&event);
- if(button_get_state(&le_next_level_bt) == BN_CLICKED)
+ if(button_get_state(&le_next_level_bt) == BUTTON_CLICKED)
{
if(le_level < le_level_subset.levels)
{
char str[1024];
int d = 0;
sprintf(str,"Level %d doesn't exist.",le_level+1);
- text_drawf(&white_text,str,0,-18,A_HMIDDLE,A_VMIDDLE,2,NO_UPDATE);
- text_drawf(&white_text,"Do you want to create it?",0,0,A_HMIDDLE,A_VMIDDLE,2,NO_UPDATE);
- text_drawf(&red_text,"(Y)es/(N)o",0,20,A_HMIDDLE,A_VMIDDLE,2,NO_UPDATE);
+ text_drawf(&white_text,str,0,-18,A_HMIDDLE,A_VMIDDLE,2);
+ text_drawf(&white_text,"Do you want to create it?",0,0,A_HMIDDLE,A_VMIDDLE,2);
+ text_drawf(&red_text,"(Y)es/(N)o",0,20,A_HMIDDLE,A_VMIDDLE,2);
flipscreen();
while(d == 0)
{
}
}
button_event(&le_previous_level_bt,&event);
- if(button_get_state(&le_previous_level_bt) == BN_CLICKED)
+ if(button_get_state(&le_previous_level_bt) == BUTTON_CLICKED)
{
if(le_level > 1)
le_goto_level(--le_level);
}
button_event(&le_rubber_bt,&event);
- if(button_get_state(&le_rubber_bt) == BN_CLICKED)
- le_current_tile = '.';
+ if(button_get_state(&le_rubber_bt) == BUTTON_CLICKED)
+ le_current_tile = 0;
button_event(&le_select_mode_one_bt,&event);
- if(button_get_state(&le_select_mode_one_bt) == BN_CLICKED)
+ if(button_get_state(&le_select_mode_one_bt) == BUTTON_CLICKED)
le_selection_mode = CURSOR;
button_event(&le_select_mode_two_bt,&event);
- if(button_get_state(&le_select_mode_two_bt) == BN_CLICKED)
+ if(button_get_state(&le_select_mode_two_bt) == BUTTON_CLICKED)
le_selection_mode = SQUARE;
button_event(&le_bad_bt,&event);
- if(button_get_state(&le_bad_bt) == BN_CLICKED)
+ if(button_get_state(&le_bad_bt) == BUTTON_CLICKED)
{
- le_bad_panel.hidden = NO;
- le_fgd_panel.hidden = YES;
- le_bkgd_panel.hidden = YES;
+ le_bad_panel.hidden = false;
+ le_fgd_panel.hidden = true;
+ le_bkgd_panel.hidden = true;
}
button_event(&le_fgd_bt,&event);
- if(button_get_state(&le_fgd_bt) == BN_CLICKED)
+ if(button_get_state(&le_fgd_bt) == BUTTON_CLICKED)
{
- le_bad_panel.hidden = YES;
- le_fgd_panel.hidden = NO;
- le_bkgd_panel.hidden = YES;
+ le_bad_panel.hidden = true;
+ le_fgd_panel.hidden = false;
+ le_bkgd_panel.hidden = true;
}
button_event(&le_bkgd_bt,&event);
- if(button_get_state(&le_bkgd_bt) == BN_CLICKED)
+ if(button_get_state(&le_bkgd_bt) == BUTTON_CLICKED)
{
- le_bad_panel.hidden = YES;
- le_fgd_panel.hidden = YES;
- le_bkgd_panel.hidden = NO;
+ le_bad_panel.hidden = true;
+ le_fgd_panel.hidden = true;
+ le_bkgd_panel.hidden = false;
}
button_event(&le_settings_bt,&event);
- if(button_get_state(&le_settings_bt) == BN_CLICKED)
+ if(button_get_state(&le_settings_bt) == BUTTON_CLICKED)
{
- if(show_menu == NO)
+ if(show_menu == false)
{
update_level_settings_menu();
- menu_set_current(&level_settings_menu);
- show_menu = YES;
+ Menu::set_current(level_settings_menu);
+ show_menu = true;
}
else
{
- menu_set_current(&leveleditor_menu);
- show_menu = NO;
+ Menu::set_current(leveleditor_menu);
+ show_menu = false;
}
}
if((pbutton = button_panel_event(&le_bkgd_panel,&event)) != NULL)
{
- if(button_get_state(pbutton) == BN_CLICKED)
+ if(button_get_state(pbutton) == BUTTON_CLICKED)
{
char c = '\0';
if(pbutton->tag >= 0 && pbutton->tag <= 3)
}
if((pbutton = button_panel_event(&le_fgd_panel,&event)) != NULL)
{
- if(button_get_state(pbutton) == BN_CLICKED)
+ if(button_get_state(pbutton) == BUTTON_CLICKED)
{
char c = '\0';
if(pbutton->tag == 0)
}
if((pbutton = button_panel_event(&le_bad_panel,&event)) != NULL)
{
- if(button_get_state(pbutton) == BN_CLICKED)
+ if(button_get_state(pbutton) == BUTTON_CLICKED)
{
char c = '\0';
if(pbutton->tag >= 0 && pbutton->tag <= 2)
else
{
button_event(&le_settings_bt,&event);
- if(button_get_state(&le_settings_bt) == BN_CLICKED)
+ if(button_get_state(&le_settings_bt) == BUTTON_CLICKED)
{
- if(show_menu == NO)
+ if(show_menu == false)
{
update_level_settings_menu();
- menu_set_current(&level_settings_menu);
- show_menu = YES;
+ Menu::set_current(level_settings_menu);
+ show_menu = true;
}
else
{
- menu_set_current(&leveleditor_menu);
- show_menu = NO;
+ Menu::set_current(leveleditor_menu);
+ show_menu = false;
}
}
}
}
- if(show_menu == NO)
+ if(show_menu == false)
{
button_event(&le_move_left_bt,&event);
button_event(&le_move_right_bt,&event);
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);
}
}
}
}
- if(show_menu == NO)
+ if(show_menu == false)
{
- if(button_get_state(&le_move_left_bt) == BN_PRESSED)
+ if(button_get_state(&le_move_left_bt) == BUTTON_PRESSED)
{
pos_x -= 192;
}
- else if(button_get_state(&le_move_left_bt) == BN_HOVER)
+ else if(button_get_state(&le_move_left_bt) == BUTTON_HOVER)
{
pos_x -= 96;
}
- if(button_get_state(&le_move_right_bt) == BN_PRESSED)
+ if(button_get_state(&le_move_right_bt) == BUTTON_PRESSED)
{
pos_x += 192;
}
- else if(button_get_state(&le_move_right_bt) == BN_HOVER)
+ else if(button_get_state(&le_move_right_bt) == BUTTON_HOVER)
{
pos_x += 96;
}
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)
{
int x1, x2, y1, y2;
unsigned int i;
- /* level_changed = YES; */
+ /* level_changed = true; */
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);
/* if there is a bad guy over there, remove it */
for(i = 0; i < bad_guys.size(); ++i)
if(xx == bad_guys[i].base.x/32 && yy == bad_guys[i].base.y/32)
- bad_guys.erase(static_cast<std::vector<bad_guy_type>::iterator>(&bad_guys[i]));
+ bad_guys.erase(static_cast<std::vector<BadGuy>::iterator>(&bad_guys[i]));
if(c == '0') /* if it's a bad guy */
add_bad_guy(xx*32, yy*32, BAD_BSOD);
for(i = 0; i < bad_guys.size(); ++i)
if(bad_guys[i].base.x/32 >= x1 && bad_guys[i].base.x/32 <= x2
&& bad_guys[i].base.y/32 >= y1 && bad_guys[i].base.y/32 <= y2)
- bad_guys.erase(static_cast<std::vector<bad_guy_type>::iterator>(&bad_guys[i]));
+ bad_guys.erase(static_cast<std::vector<BadGuy>::iterator>(&bad_guys[i]));
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);
{
level_save(le_current_level,"test",le_level);
gameloop("test",le_level, ST_GL_TEST);
- menu_set_current(&leveleditor_menu);
+ Menu::set_current(leveleditor_menu);
arrays_init();
level_load_gfx(le_current_level);
loadshared();
- le_activate_bad_guys();
}
void le_showhelp()
};
- text_drawf(&blue_text, "- Help -", 0, 30, A_HMIDDLE, A_TOP, 2, NO_UPDATE);
+ text_drawf(&blue_text, "- Help -", 0, 30, A_HMIDDLE, A_TOP, 2);
for(i = 0; i < sizeof(text)/sizeof(char *); i++)
- text_draw(&white_small_text, text[i], 5, 80+(i*12), 1, NO_UPDATE);
+ text_draw(&white_small_text, text[i], 5, 80+(i*12), 1);
- text_drawf(&gold_text, "Press Any Key to Continue", 0, 440, A_HMIDDLE, A_TOP, 1, NO_UPDATE);
+ text_drawf(&gold_text, "Press Any Key to Continue", 0, 440, A_HMIDDLE, A_TOP, 1);
flipscreen();