Implemented a button. Not quite usable yet though.
This commit is contained in:
parent
0564f6c3a2
commit
c2266b892d
|
@ -35,7 +35,12 @@ if (NOT WIN32)
|
|||
endif (NOT WIN32)
|
||||
|
||||
if (NOT WIN32)
|
||||
add_definitions("-std=gnu11 -pedantic -Wall -Wextra -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes")
|
||||
add_definitions(-std=gnu11
|
||||
-pedantic -Wall -Wextra -Wshadow
|
||||
-Wpointer-arith -Wcast-qual
|
||||
-Wstrict-prototypes
|
||||
-Wmissing-prototypes
|
||||
)
|
||||
endif (NOT WIN32)
|
||||
|
||||
# PROGRAMS:
|
||||
|
@ -62,6 +67,7 @@ add_executable(breakhack
|
|||
src/item
|
||||
src/item_builder
|
||||
src/pointer
|
||||
src/gui_button
|
||||
)
|
||||
|
||||
target_link_libraries(breakhack
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
#include <stdlib.h>
|
||||
#include "util.h"
|
||||
#include "gui_button.h"
|
||||
|
||||
GuiButton *
|
||||
gui_button_create(SDL_Rect area)
|
||||
{
|
||||
GuiButton *button = ec_malloc(sizeof(GuiButton));
|
||||
button->area = area;
|
||||
button->hover = false;
|
||||
return button;
|
||||
}
|
||||
|
||||
void
|
||||
gui_button_check_pointer(GuiButton *button, Pointer *pointer)
|
||||
{
|
||||
SDL_Rect *r = &button->area;
|
||||
Position *p = &pointer->sprite->pos;
|
||||
|
||||
button->hover = r->x <= p->x && r->x + r->w >= p->x &&
|
||||
r->y <= p->y && r->y + r->h >= p->y;
|
||||
|
||||
if (button->hover)
|
||||
debug("Pointer is over button");
|
||||
}
|
||||
|
||||
void
|
||||
gui_button_destroy(GuiButton *button)
|
||||
{
|
||||
free(button);
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
#ifndef GUI_BUTTON_H_
|
||||
#define GUI_BUTTON_H_
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
#include "pointer.h"
|
||||
#include "sprite.h"
|
||||
#include "linkedlist.h"
|
||||
#include "camera.h"
|
||||
|
||||
typedef struct GuiButton_t {
|
||||
SDL_Rect area;
|
||||
bool hover;
|
||||
} GuiButton;
|
||||
|
||||
GuiButton *
|
||||
gui_button_create(SDL_Rect);
|
||||
|
||||
void
|
||||
gui_button_check_pointer(GuiButton*, Pointer*);
|
||||
|
||||
void
|
||||
gui_button_destroy(GuiButton*);
|
||||
|
||||
#endif // GUI_BUTTON_H_
|
|
@ -17,6 +17,7 @@
|
|||
#include "util.h"
|
||||
#include "item_builder.h"
|
||||
#include "pointer.h"
|
||||
#include "gui_button.h"
|
||||
|
||||
static SDL_Window *gWindow = NULL;
|
||||
static SDL_Renderer *gRenderer = NULL;
|
||||
|
@ -25,6 +26,7 @@ static Map *gMap = NULL;
|
|||
static RoomMatrix *gRoomMatrix = NULL;
|
||||
static Gui *gGui = NULL;
|
||||
static Pointer *gPointer = NULL;
|
||||
static GuiButton *gButton = NULL;
|
||||
static unsigned int cLevel = 1;
|
||||
static double renderScale = 1.0;
|
||||
static GameState gGameState;
|
||||
|
@ -134,6 +136,7 @@ bool init(void)
|
|||
gGui = gui_create(gRenderer);
|
||||
item_builder_init(gRenderer);
|
||||
gPointer = pointer_create(gRenderer);
|
||||
gButton = gui_button_create((SDL_Rect) { 100, 100, 100, 100 });
|
||||
}
|
||||
|
||||
gGameState = PLAYING;
|
||||
|
@ -165,6 +168,9 @@ bool handle_events(void)
|
|||
}
|
||||
pointer_handle_event(gPointer, &event);
|
||||
}
|
||||
|
||||
gui_button_check_pointer(gButton, gPointer);
|
||||
|
||||
return quit;
|
||||
}
|
||||
|
||||
|
@ -292,6 +298,7 @@ void close(void)
|
|||
roommatrix_destroy(gRoomMatrix);
|
||||
gui_destroy(gGui);
|
||||
pointer_destroy(gPointer);
|
||||
gui_button_destroy(gButton);
|
||||
item_builder_close();
|
||||
SDL_DestroyRenderer(gRenderer);
|
||||
SDL_DestroyWindow(gWindow);
|
||||
|
|
Loading…
Reference in New Issue