Update entry point
This commit is contained in:
parent
292df44840
commit
f3c334741b
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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user