panning
This commit is contained in:
parent
162e7a7fb0
commit
7189f28c00
8 changed files with 139 additions and 33 deletions
|
|
@ -25,6 +25,8 @@ static const struct kubo_context_state_data kubo_context_states[] = {
|
|||
{.id = KUBO_CONTEXT_WALL_SELECT, .label = "Wall Select", .color = BLUE}};
|
||||
|
||||
static inline void wall_select_refresh(struct kubo_context *context);
|
||||
static void select_next_wall(struct kubo_context *context);
|
||||
static void select_prev_wall(struct kubo_context *context);
|
||||
|
||||
void kubo_context_init(struct kubo_context *context) {
|
||||
if (!context) {
|
||||
|
|
@ -36,6 +38,9 @@ void kubo_context_init(struct kubo_context *context) {
|
|||
context->exit_pending = false;
|
||||
|
||||
context->state = kubo_context_states[KUBO_CONTEXT_NORMAL];
|
||||
|
||||
context->offset_x = 0;
|
||||
context->offset_y = 0;
|
||||
}
|
||||
|
||||
void kubo_context_cleanup(struct kubo_context *context) {
|
||||
|
|
@ -95,12 +100,63 @@ void kubo_context_delete_wall(struct kubo_context *context) {
|
|||
}
|
||||
|
||||
kubo_wall_arr_del(&context->walls, context->wall_select_index);
|
||||
kubo_context_select_next_wall(context);
|
||||
select_next_wall(context);
|
||||
}
|
||||
|
||||
void kubo_context_select_next_wall(struct kubo_context *context) {
|
||||
if (context->state.id != KUBO_CONTEXT_WALL_SELECT ||
|
||||
!context->walls.count) {
|
||||
void kubo_context_input_up(struct kubo_context *context) {
|
||||
switch (context->state.id) {
|
||||
case KUBO_CONTEXT_NORMAL:
|
||||
context->offset_y -= KUBO_CONTEXT_OFFSET_JMP;
|
||||
break;
|
||||
case KUBO_CONTEXT_WALL_SELECT:
|
||||
select_next_wall(context);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void kubo_context_input_down(struct kubo_context *context) {
|
||||
switch (context->state.id) {
|
||||
case KUBO_CONTEXT_NORMAL:
|
||||
context->offset_y += KUBO_CONTEXT_OFFSET_JMP;
|
||||
break;
|
||||
case KUBO_CONTEXT_WALL_SELECT:
|
||||
select_prev_wall(context);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void kubo_context_input_left(struct kubo_context *context) {
|
||||
switch (context->state.id) {
|
||||
case KUBO_CONTEXT_NORMAL:
|
||||
context->offset_x -= KUBO_CONTEXT_OFFSET_JMP;
|
||||
break;
|
||||
case KUBO_CONTEXT_WALL_SELECT:
|
||||
select_prev_wall(context);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void kubo_context_input_right(struct kubo_context *context) {
|
||||
switch (context->state.id) {
|
||||
case KUBO_CONTEXT_NORMAL:
|
||||
context->offset_x += KUBO_CONTEXT_OFFSET_JMP;
|
||||
break;
|
||||
case KUBO_CONTEXT_WALL_SELECT:
|
||||
select_next_wall(context);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void select_next_wall(struct kubo_context *context) {
|
||||
if (!context->walls.count) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -110,7 +166,7 @@ void kubo_context_select_next_wall(struct kubo_context *context) {
|
|||
wall_select_refresh(context);
|
||||
}
|
||||
|
||||
void kubo_context_select_prev_wall(struct kubo_context *context) {
|
||||
static void select_prev_wall(struct kubo_context *context) {
|
||||
if (context->state.id != KUBO_CONTEXT_WALL_SELECT ||
|
||||
!context->walls.count) {
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue