Update entry point
This commit is contained in:
		
							
								
								
									
										78
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										78
									
								
								main.c
									
									
									
									
									
								
							@@ -1,11 +1,27 @@
 | 
				
			|||||||
 | 
					#include "SDL_mouse.h"
 | 
				
			||||||
 | 
					#include "aliases/aliases.h"
 | 
				
			||||||
 | 
					#include "drawing.h"
 | 
				
			||||||
#include <SDL2/SDL.h>
 | 
					#include <SDL2/SDL.h>
 | 
				
			||||||
#include <SDL2/SDL_events.h>
 | 
					#include <SDL2/SDL_events.h>
 | 
				
			||||||
#include <SDL2/SDL_render.h>
 | 
					#include <SDL2/SDL_render.h>
 | 
				
			||||||
#include <SDL2/SDL_video.h>
 | 
					#include <SDL2/SDL_video.h>
 | 
				
			||||||
#include <stdbool.h>
 | 
					#include <stdbool.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define WINDOW_WIDTH 800
 | 
					#define WINDOW_WIDTH 1280
 | 
				
			||||||
#define WINDOW_HEIGHT 600
 | 
					#define WINDOW_HEIGHT 720
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct state state_t;
 | 
				
			||||||
 | 
					struct state {
 | 
				
			||||||
 | 
					  i32 mouse_x;
 | 
				
			||||||
 | 
					  i32 mouse_y;
 | 
				
			||||||
 | 
					  i32 current_origin_x;
 | 
				
			||||||
 | 
					  i32 current_origin_y;
 | 
				
			||||||
 | 
					  bool running;
 | 
				
			||||||
 | 
					  bool drawing;
 | 
				
			||||||
 | 
					  arrows_t arrows;
 | 
				
			||||||
 | 
					  arrow_t tmp_arrow;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(void) {
 | 
					int main(void) {
 | 
				
			||||||
  SDL_Init(SDL_INIT_EVERYTHING);
 | 
					  SDL_Init(SDL_INIT_EVERYTHING);
 | 
				
			||||||
@@ -17,15 +33,55 @@ int main(void) {
 | 
				
			|||||||
  SDL_Renderer *renderer = SDL_CreateRenderer(
 | 
					  SDL_Renderer *renderer = SDL_CreateRenderer(
 | 
				
			||||||
      window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
 | 
					      window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bool running = true;
 | 
					  state_t st = {
 | 
				
			||||||
 | 
					      .mouse_x = -1,
 | 
				
			||||||
 | 
					      .mouse_y = -1,
 | 
				
			||||||
 | 
					      .current_origin_x = -1,
 | 
				
			||||||
 | 
					      .current_origin_y = -1,
 | 
				
			||||||
 | 
					      .running = true,
 | 
				
			||||||
 | 
					      .drawing = false,
 | 
				
			||||||
 | 
					      .arrows = {0},
 | 
				
			||||||
 | 
					      .tmp_arrow = {0},
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SDL_Event event = {0};
 | 
					  SDL_Event event = {0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while (running) {
 | 
					  if (!init_arrows_default(&(st.arrows))) {
 | 
				
			||||||
 | 
					    return EXIT_FAILURE;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while (st.running) {
 | 
				
			||||||
    while (SDL_PollEvent(&event)) {
 | 
					    while (SDL_PollEvent(&event)) {
 | 
				
			||||||
      switch (event.type) {
 | 
					      switch (event.type) {
 | 
				
			||||||
      case SDL_QUIT:
 | 
					      case SDL_QUIT:
 | 
				
			||||||
        running = false;
 | 
					        st.running = false;
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case SDL_MOUSEBUTTONUP:
 | 
				
			||||||
 | 
					        if (event.button.button == SDL_BUTTON_LEFT) {
 | 
				
			||||||
 | 
					          if (st.drawing) {
 | 
				
			||||||
 | 
					            add_arrow(&(st.arrows), st.tmp_arrow);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            st.tmp_arrow = (arrow_t){0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            st.drawing = false;
 | 
				
			||||||
 | 
					          } else {
 | 
				
			||||||
 | 
					            st.current_origin_x = event.button.x;
 | 
				
			||||||
 | 
					            st.current_origin_y = event.button.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            st.drawing = true;
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        } else if (event.button.button == SDL_BUTTON_RIGHT) {
 | 
				
			||||||
 | 
					          st.current_origin_x = -1;
 | 
				
			||||||
 | 
					          st.current_origin_y = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          st.drawing = false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case SDL_MOUSEMOTION:
 | 
				
			||||||
 | 
					        st.mouse_x = event.motion.x;
 | 
				
			||||||
 | 
					        st.mouse_y = event.motion.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -34,6 +90,16 @@ int main(void) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    SDL_RenderClear(renderer);
 | 
					    SDL_RenderClear(renderer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (st.drawing) {
 | 
				
			||||||
 | 
					      st.tmp_arrow.origin = (point_t){st.current_origin_x, st.current_origin_y};
 | 
				
			||||||
 | 
					      st.tmp_arrow.direction = (vec2_t){st.mouse_x - st.current_origin_x,
 | 
				
			||||||
 | 
					                                        st.mouse_y - st.current_origin_y};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      draw_arrow(renderer, &(st.tmp_arrow), (colour_t){.abgr = 0xff0000ff});
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    draw_arrows(renderer, &(st.arrows), (colour_t){.abgr = 0xff000000});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SDL_RenderPresent(renderer);
 | 
					    SDL_RenderPresent(renderer);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -43,5 +109,5 @@ int main(void) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  SDL_Quit();
 | 
					  SDL_Quit();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return 0;
 | 
					  return EXIT_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user