parent
95ca07bd72
commit
2680b71a8c
60
src/game.c
60
src/game.c
|
@ -324,31 +324,49 @@ static int game_event_level_picker(Game *game, const SDL_Event *event)
|
|||
switch (event->type) {
|
||||
case SDL_KEYDOWN: {
|
||||
switch(event->key.keysym.sym) {
|
||||
case SDLK_n: {
|
||||
memory_clean(&game->level_editor_memory);
|
||||
game->level_editor = create_level_editor(
|
||||
&game->level_editor_memory,
|
||||
&game->cursor);
|
||||
case SDLK_UP: {
|
||||
level_picker_cursor_up(&game->level_picker);
|
||||
} break;
|
||||
|
||||
if (game->level == NULL) {
|
||||
game->level = PUSH_LT(
|
||||
game->lt,
|
||||
create_level_from_level_editor(
|
||||
game->level_editor),
|
||||
destroy_level);
|
||||
case SDLK_DOWN: {
|
||||
level_picker_cursor_down(&game->level_picker);
|
||||
} break;
|
||||
|
||||
case SDLK_p: {
|
||||
if (event->key.keysym.mod & KMOD_CTRL) {
|
||||
level_picker_cursor_up(&game->level_picker);
|
||||
}
|
||||
} break;
|
||||
|
||||
case SDLK_n: {
|
||||
if (event->key.keysym.mod & KMOD_CTRL) {
|
||||
level_picker_cursor_down(&game->level_picker);
|
||||
} else {
|
||||
game->level = RESET_LT(
|
||||
game->lt,
|
||||
game->level,
|
||||
create_level_from_level_editor(
|
||||
game->level_editor));
|
||||
}
|
||||
memory_clean(&game->level_editor_memory);
|
||||
game->level_editor = create_level_editor(
|
||||
&game->level_editor_memory,
|
||||
&game->cursor);
|
||||
|
||||
if (game->level == NULL) {
|
||||
return -1;
|
||||
}
|
||||
if (game->level == NULL) {
|
||||
game->level = PUSH_LT(
|
||||
game->lt,
|
||||
create_level_from_level_editor(
|
||||
game->level_editor),
|
||||
destroy_level);
|
||||
} else {
|
||||
game->level = RESET_LT(
|
||||
game->lt,
|
||||
game->level,
|
||||
create_level_from_level_editor(
|
||||
game->level_editor));
|
||||
}
|
||||
|
||||
game_switch_state(game, GAME_STATE_LEVEL);
|
||||
if (game->level == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
game_switch_state(game, GAME_STATE_LEVEL);
|
||||
}
|
||||
} break;
|
||||
|
||||
case SDLK_i: {
|
||||
|
|
|
@ -236,28 +236,15 @@ int level_picker_event(LevelPicker *level_picker,
|
|||
}
|
||||
} break;
|
||||
|
||||
case SDL_KEYDOWN:
|
||||
case SDL_KEYDOWN: {
|
||||
switch (event->key.keysym.sym) {
|
||||
case SDLK_UP:
|
||||
if (level_picker->items_cursor == 0) {
|
||||
level_picker->items_cursor = level_picker->items.count - 1;
|
||||
} else {
|
||||
level_picker->items_cursor--;
|
||||
}
|
||||
break;
|
||||
case SDLK_DOWN:
|
||||
level_picker->items_cursor++;
|
||||
if (level_picker->items_cursor == level_picker->items.count) {
|
||||
level_picker->items_cursor = 0;
|
||||
}
|
||||
break;
|
||||
case SDLK_RETURN:
|
||||
case SDLK_RETURN: {
|
||||
if (level_picker->items_cursor < level_picker->items.count) {
|
||||
level_picker->selected_item = (int) level_picker->items_cursor;
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
|
||||
case SDL_MOUSEMOTION: {
|
||||
const Vec2f mouse_pos = vec((float) event->motion.x, (float) event->motion.y);
|
||||
|
@ -359,3 +346,22 @@ int level_picker_enter_camera_event(LevelPicker *level_picker,
|
|||
camera_center_at(camera, level_picker->camera_position);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void level_picker_cursor_up(LevelPicker *level_picker)
|
||||
{
|
||||
trace_assert(level_picker);
|
||||
if (level_picker->items_cursor == 0) {
|
||||
level_picker->items_cursor = level_picker->items.count - 1;
|
||||
} else {
|
||||
level_picker->items_cursor--;
|
||||
}
|
||||
}
|
||||
|
||||
void level_picker_cursor_down(LevelPicker *level_picker)
|
||||
{
|
||||
trace_assert(level_picker);
|
||||
level_picker->items_cursor++;
|
||||
if (level_picker->items_cursor == level_picker->items.count) {
|
||||
level_picker->items_cursor = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,6 +44,8 @@ int level_picker_input(LevelPicker *level_picker,
|
|||
SDL_Joystick *the_stick_of_joy);
|
||||
int level_picker_enter_camera_event(LevelPicker *level_picker,
|
||||
Camera *camera);
|
||||
void level_picker_cursor_up(LevelPicker *level_picker);
|
||||
void level_picker_cursor_down(LevelPicker *level_picker);
|
||||
|
||||
const char *level_picker_selected_level(const LevelPicker *level_picker);
|
||||
void level_picker_clean_selection(LevelPicker *level_picker);
|
||||
|
|
Loading…
Reference in New Issue