twn_input: singleton rework, twn_control.h and fixes
This commit is contained in:
		| @@ -16,14 +16,17 @@ | ||||
| void handle_input(void) | ||||
| { | ||||
|     State *state = ctx.udata; | ||||
|     if (ctx.input.mouse_state == 1 && ctx.input.mouse_window_position.y > 60) | ||||
|  | ||||
|     if (ctx.mouse_window_position.y <= 60) | ||||
|         return; | ||||
|  | ||||
|     if (input_is_action_pressed("add_a_bit")) | ||||
|     { // Left click | ||||
|         for (int i = 0; i < LEFT_CLICK_ADD; i++) | ||||
|         { | ||||
|             if (state->bunniesCount < MAX_BUNNIES) | ||||
|             { | ||||
|                 state->bunnies[state->bunniesCount].position = | ||||
|                     (Vec2){(float)ctx.input.mouse_window_position.x, (float)ctx.input.mouse_window_position.y}; | ||||
|                 state->bunnies[state->bunniesCount].position = input_get_action_position("add_a_bit"); | ||||
|                 state->bunnies[state->bunniesCount].speed.x = (float)(rand() % 500 - 250) / 60.0; | ||||
|                 state->bunnies[state->bunniesCount].speed.y = (float)(rand() % 500 - 250) / 60.0; | ||||
|                 state->bunnies[state->bunniesCount].color = | ||||
| @@ -33,14 +36,13 @@ void handle_input(void) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     if (ctx.input.mouse_state == 4) | ||||
|     if (input_is_action_pressed("add_a_lot")) | ||||
|     { // Right click | ||||
|         for (int i = 0; i < RIGHT_CLICK_ADD; i++) | ||||
|         { | ||||
|             if (state->bunniesCount < MAX_BUNNIES) | ||||
|             { | ||||
|                 state->bunnies[state->bunniesCount].position = | ||||
|                     (Vec2){(float)ctx.input.mouse_window_position.x, (float)ctx.input.mouse_window_position.y}; | ||||
|                 state->bunnies[state->bunniesCount].position = input_get_action_position("add_a_lot"); | ||||
|                 state->bunnies[state->bunniesCount].speed.x = (float)(rand() % 500 - 250) / 60.0; | ||||
|                 state->bunnies[state->bunniesCount].speed.y = (float)(rand() % 500 - 250) / 60.0; | ||||
|                 state->bunnies[state->bunniesCount].color = | ||||
| @@ -53,8 +55,7 @@ void handle_input(void) | ||||
|  | ||||
| void game_tick(void) | ||||
| { | ||||
|     static char bunny_count_text[64]; | ||||
|     static char bunny_path[64] = "wabbit_alpha.png"; | ||||
|     char bunny_count_text[64]; | ||||
|  | ||||
|     // State *state = ctx.udata; | ||||
|     if (ctx.initialization_needed) | ||||
| @@ -62,7 +63,12 @@ void game_tick(void) | ||||
|         // Allocating State struct to store data there | ||||
|         if (!ctx.udata) | ||||
|             ctx.udata = ccalloc(1, sizeof(State)); | ||||
|         ((State *)ctx.udata)->bunniesCount = 0; | ||||
|  | ||||
|         input_add_action("add_a_bit"); | ||||
|         input_bind_action_control("add_a_bit", CONTROL_LEFT_MOUSE); | ||||
|  | ||||
|         input_add_action("add_a_lot"); | ||||
|         input_bind_action_control("add_a_lot", CONTROL_RIGHT_MOUSE); | ||||
|     } | ||||
|  | ||||
|     State *state = ctx.udata; | ||||
| @@ -90,16 +96,16 @@ void game_tick(void) | ||||
|  | ||||
|     for (int i = 0; i < state->bunniesCount; i++) | ||||
|     { // Draw each bunny based on their position and color, also scale accordingly | ||||
|         m_sprite(m_set(path, bunny_path), | ||||
|         m_sprite(m_set(path, "wabbit_alpha.png"), | ||||
|                  m_set(rect, ((Rect){.x = (int)state->bunnies[i].position.x, | ||||
|                                      .y = (int)state->bunnies[i].position.y, | ||||
|                                      .w = BUNNY_W * SPRITE_SCALE, | ||||
|                                      .h = BUNNY_H * SPRITE_SCALE})), | ||||
|                  m_opt(color, (state->bunnies[i].color)), m_opt(stretch, true), ); | ||||
|     } | ||||
|  | ||||
|     // Formatting text to display, might want to add FPS here too | ||||
|     snprintf(bunny_count_text, 64, "Bunnies: %d", state->bunniesCount); | ||||
|  | ||||
|     draw_text(bunny_count_text, (Vec2){0, 0}, 40, BLACK, "/fonts/kenney-pixel.ttf"); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -19,7 +19,6 @@ typedef struct State | ||||
| { | ||||
|     Bunny bunnies[MAX_BUNNIES]; | ||||
|     int bunniesCount; | ||||
|     InputState mouse_state; | ||||
| } State; | ||||
|  | ||||
| #endif | ||||
|   | ||||
		Reference in New Issue
	
	Block a user