diff options
author | Fabio Maciel <6810827+fabiomaciel@users.noreply.github.com> | 2022-12-07 17:49:43 -0300 |
---|---|---|
committer | Fabio Maciel <6810827+fabiomaciel@users.noreply.github.com> | 2022-12-07 17:49:43 -0300 |
commit | 3b62cccc277e1e2bc465528a7b9a06e8ee09629f (patch) | |
tree | a97ef67c6b88923c459ff981e0fc45262592422b | |
parent | d9e4bcd542f3efe97e6b8951ee47f10c223a6bf3 (diff) | |
parent | 394ffe17766082c6895208f3fc5710a53cb4f01f (diff) |
Merge remote-tracking branch 'johnny/master'
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | .gitmodules | 4 | ||||
-rw-r--r-- | AUTHORS | 2 | ||||
-rw-r--r-- | LICENSE | 28 | ||||
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | README.md | 10 | ||||
-rw-r--r-- | TODO | 3 | ||||
-rw-r--r-- | src/controller.c | 106 | ||||
-rw-r--r-- | src/controller.h | 52 | ||||
-rw-r--r-- | src/main.c | 103 | ||||
-rw-r--r-- | src/player.c | 91 | ||||
-rw-r--r-- | src/player.h | 55 | ||||
-rw-r--r-- | test/controller-test.c | 46 |
13 files changed, 433 insertions, 76 deletions
@@ -1,5 +1,6 @@ *.exe *.o -/lib /build +/lib blast_attack +tags diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a1d1dca --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "third_party/munit"] + path = third_party/munit + url = git@github.com:nemequ/munit.git + branch = v0.2.0 @@ -0,0 +1,2 @@ +Fabio Maciel <fabiomsdev@gmail.com> +Johnny Richard <johnny@johnnyrichard.com> @@ -0,0 +1,28 @@ +Copyright (c) 2021, Blast Attack Authors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + @@ -4,8 +4,8 @@ TEST_DIR ?= ./test LIB_DIR ?= ./lib BUILD_DIR ?= ./build -CFLAGS := -Wall -CFLAGS_TEST := -Isrc -Ithird_party -Llib -lmunit +CFLAGS := -Wall -lm +CFLAGS_TEST := -Isrc -Ithird_party -Llib -lmunit SRCS := $(wildcard $(SOURCE_DIR)/*.c) SRCS_TEST := $(wildcard $(TEST_DIR)/*.c) OBJS := $(patsubst $(SOURCE_DIR)/%.c, $(BUILD_DIR)/%.o, $(SRCS)) @@ -44,7 +44,7 @@ $(TEST_DIR)/%: $(TEST_DIR)/%-test test: lib/libmunit.so $(BUILD_DIR) $(TESTS) lib/libmunit.so: $(LIB_DIR) third_party/munit/munit.c - $(CC) -Wall -Werror -fpic -c third_party/munit/munit.c -shared -o lib/libmunit.so + $(CC) -Wall -fpic -c third_party/munit/munit.c -shared -o lib/libmunit.so clean: @rm -rf $(BUILD_DIR) @@ -1,5 +1,11 @@ -Black Attack ------------- +Blast Attack +============ + +## Download + +```shell +$ git clone --recursive git@git.sr.ht:~johnnyrichard/blast-attack +``` ## Dependencies @@ -0,0 +1,3 @@ +- [ ] Create a second player + - [ ] Make controller more flexible to accept different buttons +- [ ] Create enemies diff --git a/src/controller.c b/src/controller.c index 5fb1e0b..4e488e9 100644 --- a/src/controller.c +++ b/src/controller.c @@ -1,46 +1,96 @@ +/* + * Copyright (c) 2021, Johnny Richard + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + #include <SDL.h> #include "controller.h" -void -controller_update(controller_t *self, +void +controller_update(controller_t *self, SDL_Event *event) { if (event->type == SDL_KEYDOWN) { switch (event->key.keysym.sym) { - case SDLK_UP: - self->up = true; - break; - case SDLK_DOWN: - self->down = true; - break; - case SDLK_LEFT: - self->left = true; - break; - case SDLK_RIGHT: - self->right = true; - break; + case SDLK_UP: + self->pressed_buttons |= BTN_UP; + break; + case SDLK_DOWN: + self->pressed_buttons |= BTN_DOWN; + break; + case SDLK_LEFT: + self->pressed_buttons |= BTN_LEFT; + break; + case SDLK_RIGHT: + self->pressed_buttons |= BTN_RIGHT; + break; } } if (event->type == SDL_KEYUP) { switch (event->key.keysym.sym) { - case SDLK_UP: - self->up = false; - break; + case SDLK_UP: + self->pressed_buttons ^= BTN_UP; + break; + case SDLK_DOWN: + self->pressed_buttons ^= BTN_DOWN; + break; + case SDLK_LEFT: + self->pressed_buttons ^= BTN_LEFT; + break; + case SDLK_RIGHT: + self->pressed_buttons ^= BTN_RIGHT; + break; + } + } +} - case SDLK_DOWN: - self->down = false; - break; +bool +controller_is_up_pressed(controller_t *self) +{ + return self->pressed_buttons & BTN_UP; +} - case SDLK_LEFT: - self->left = false; - break; +bool +controller_is_down_pressed(controller_t *self) +{ + return self->pressed_buttons & BTN_DOWN; +} - case SDLK_RIGHT: - self->right = false; - break; - } - } +bool +controller_is_right_pressed(controller_t *self) +{ + return self->pressed_buttons & BTN_RIGHT; } +bool +controller_is_left_pressed(controller_t *self) +{ + return self->pressed_buttons & BTN_LEFT; +} diff --git a/src/controller.h b/src/controller.h index a97fc7a..ecc0389 100644 --- a/src/controller.h +++ b/src/controller.h @@ -1,25 +1,57 @@ +/* + * Copyright (c) 2021, Johnny Richard + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + #ifndef CONTROLLER_H #define CONTROLLER_H #include <SDL.h> #include <stdbool.h> +#include <stdint.h> -#ifdef __cplusplus -extern "C" { -#endif +enum btn_t { + BTN_UP = 1 << 0, + BTN_DOWN = 1 << 1, + BTN_RIGHT = 1 << 2, + BTN_LEFT = 1 << 3 +}; typedef struct controller_t { - bool up; - bool down; - bool left; - bool right; + uint8_t pressed_buttons; } controller_t; void controller_update(controller_t *self, SDL_Event *event); -#ifdef __cplusplus -} -#endif +bool controller_is_up_pressed(controller_t *self); +bool controller_is_down_pressed(controller_t *self); +bool controller_is_right_pressed(controller_t *self); +bool controller_is_left_pressed(controller_t *self); #endif /* CONTROLLER_H */ @@ -1,64 +1,119 @@ +/* +* Copyright (c) 2021, Johnny Richard +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this +* list of conditions and the following disclaimer. +* +* 2. Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following disclaimer in the documentation +* and/or other materials provided with the distribution. +* +* 3. Neither the name of the copyright holder nor the names of its +* contributors may be used to endorse or promote products derived from +* this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + #include <stdio.h> #include <stdlib.h> #include <stdbool.h> +#include <math.h> #include <SDL.h> #include "controller.h" +#include "player.h" const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; -int +int main (int argc, char *args[]) { - SDL_Window* window = NULL; - SDL_Surface* screenSurface = NULL; if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "SDL could not initialize! SDL_Error: %s\n", SDL_GetError()); + fprintf( + stderr, + "SDL could not be initialized! SDL_Error: %s\n", + SDL_GetError() + ); return EXIT_FAILURE; } - window = SDL_CreateWindow( - "SDL Tutorial", - SDL_WINDOWPOS_UNDEFINED, - SDL_WINDOWPOS_UNDEFINED, - SCREEN_WIDTH, SCREEN_HEIGHT, - SDL_WINDOW_SHOWN + SDL_Window* window = SDL_CreateWindow( + "Blast Attack", + SDL_WINDOWPOS_UNDEFINED, + SDL_WINDOWPOS_UNDEFINED, + SCREEN_WIDTH, SCREEN_HEIGHT, + SDL_WINDOW_RESIZABLE ); - if (window == NULL) { fprintf(stderr, "Window could not be created! SDL_Error: %s\n", SDL_GetError()); return EXIT_FAILURE; } - - SDL_Rect rect = { .x = 0, .y = 0, .w = 20, .h = 20 }; + + SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + if (renderer == NULL) { + fprintf(stderr, "Could not create renderer: %s\n", SDL_GetError()); + return EXIT_FAILURE; + } + + if (SDL_RenderSetLogicalSize(renderer, SCREEN_WIDTH, SCREEN_HEIGHT) < 0) { + fprintf(stderr, "Could not set logical size: %s\n", SDL_GetError()); + return EXIT_FAILURE; + } + + SDL_Rect bg_rect = { .x = 0, .y = 0, .w = SCREEN_WIDTH, .h = SCREEN_HEIGHT }; bool quit = false; - controller_t controller = {0}; + controller_t ctrl = {0}; + + player_t player; + player_init(&player); while (!quit) { - screenSurface = SDL_GetWindowSurface(window); - SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0xFF)); + SDL_SetRenderDrawColor(renderer, 0, 0, 0, 1); + SDL_RenderClear(renderer); + + uint64_t start = SDL_GetPerformanceCounter(); + + SDL_SetRenderDrawColor(renderer, 0XCC, 0XCC, 0XCC, 1); + SDL_RenderFillRect(renderer, &bg_rect); SDL_Event event; - while (SDL_PollEvent(&event) != 0) { + while (SDL_PollEvent(&event) != 0) { if (event.type == SDL_QUIT) { quit = true; } - controller_update(&controller, &event); + controller_update(&ctrl, &event); } - if (controller.up) rect.y -= 1; - if (controller.down) rect.y += 1; - if (controller.left) rect.x -= 1; - if (controller.right) rect.x += 1; + player_update(&player, &ctrl, SCREEN_WIDTH, SCREEN_HEIGHT); + player_draw(&player, renderer); + + SDL_RenderPresent(renderer); + + uint64_t end = SDL_GetPerformanceCounter(); - SDL_FillRect(screenSurface, &rect, SDL_MapRGB(screenSurface->format, 0xFF, 0x0, 0x0)); - SDL_UpdateWindowSurface(window); + float elapsedMS = (end - start) / (float)SDL_GetPerformanceFrequency() * 1000.0f; + SDL_Delay(floor(16.666f - elapsedMS)); } + SDL_DestroyRenderer(renderer); SDL_DestroyWindow(window); SDL_Quit(); return EXIT_SUCCESS; diff --git a/src/player.c b/src/player.c new file mode 100644 index 0000000..000eb76 --- /dev/null +++ b/src/player.c @@ -0,0 +1,91 @@ +/* +* Copyright (c) 2021, Johnny Richard +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this +* list of conditions and the following disclaimer. +* +* 2. Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following disclaimer in the documentation +* and/or other materials provided with the distribution. +* +* 3. Neither the name of the copyright holder nor the names of its +* contributors may be used to endorse or promote products derived from +* this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "player.h" + +#include <assert.h> +#include <SDL.h> + +void +player_init(player_t *player) +{ + assert(player && "player is required"); + player->x = 0; + player->y = 0; + player->width = 20; + player->height = 20; + player->speed = 8; +} + +void player_update(player_t *player, + controller_t *ctrl, + int screen_width, + int screen_height) +{ + if (controller_is_up_pressed(ctrl) && player->y > 0) { + player->y -= player->speed; + player->y = player->y < 0 ? 0 : player->y; + } + + if (controller_is_down_pressed(ctrl) && player->y < screen_height) { + player->y += player->speed; + player->y = player->y + player->height > screen_height + ? screen_height - player->height + : player->y; + } + + if (controller_is_left_pressed(ctrl) && player->x > 0) { + player->x -= player->speed; + player->x = player->x < 0 + ? 0 + : player->x; + } + + if (controller_is_right_pressed(ctrl) && player->x < screen_width) { + player->x += player->speed; + player->x = player->x + player->width > screen_width + ? screen_width - player->width + : player->x; + } +} + +void +player_draw(player_t *player, SDL_Renderer *renderer) +{ + SDL_Rect rect = { + .x = player->x, + .y = player->y, + .w = player->width, + .h = player->height + }; + + SDL_SetRenderDrawColor(renderer, 0, 0, 0xFF, 1); + SDL_RenderFillRect(renderer, &rect); +} diff --git a/src/player.h b/src/player.h new file mode 100644 index 0000000..1f211c7 --- /dev/null +++ b/src/player.h @@ -0,0 +1,55 @@ +/* +* Copyright (c) 2021, Johnny Richard +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this +* list of conditions and the following disclaimer. +* +* 2. Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following disclaimer in the documentation +* and/or other materials provided with the distribution. +* +* 3. Neither the name of the copyright holder nor the names of its +* contributors may be used to endorse or promote products derived from +* this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +#ifndef PLAYER_H +#define PLAYER_H + +#include "controller.h" + +#include <stdint.h> + +typedef struct player { + uint16_t x; + uint16_t y; + uint16_t width; + uint16_t height; + uint16_t speed; +} player_t; + +void player_init(player_t *player); + +// FIXME: Find out a better way to provide screen w and h properties +void player_update(player_t *player, + controller_t *ctrl, + int screen_width, + int screen_height); + +void player_draw(player_t *player, SDL_Renderer *renderer); + +#endif /* PLAYER_H */ diff --git a/test/controller-test.c b/test/controller-test.c index fb13000..c271756 100644 --- a/test/controller-test.c +++ b/test/controller-test.c @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2021, Johnny Richard + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + #define MUNIT_ENABLE_ASSERT_ALIASES #include "controller.h" #include <munit/munit.h> @@ -17,11 +47,11 @@ press_and_release_up(const MunitParameter params[], void* fixture) SDL_Event event = an_event(SDL_KEYDOWN, SDLK_UP); controller_update(&ctrl, &event); - assert_true(ctrl.up); + assert_true(controller_is_up_pressed(&ctrl)); event = an_event(SDL_KEYUP, SDLK_UP); controller_update(&ctrl, &event); - assert_false(ctrl.up); + assert_false(controller_is_up_pressed(&ctrl)); return MUNIT_OK; } @@ -32,11 +62,11 @@ press_and_release_down(const MunitParameter params[], void* fixture) SDL_Event event = an_event(SDL_KEYDOWN, SDLK_DOWN); controller_update(&ctrl, &event); - assert_true(ctrl.down); + assert_true(controller_is_down_pressed(&ctrl)); event = an_event(SDL_KEYUP, SDLK_DOWN); controller_update(&ctrl, &event); - assert_false(ctrl.down); + assert_false(controller_is_down_pressed(&ctrl)); return MUNIT_OK; } @@ -47,11 +77,11 @@ press_and_release_right(const MunitParameter params[], void* fixture) SDL_Event event = an_event(SDL_KEYDOWN, SDLK_RIGHT); controller_update(&ctrl, &event); - assert_true(ctrl.right); + assert_true(controller_is_right_pressed(&ctrl)); event = an_event(SDL_KEYUP, SDLK_RIGHT); controller_update(&ctrl, &event); - assert_false(ctrl.right); + assert_false(controller_is_right_pressed(&ctrl)); return MUNIT_OK; } @@ -62,11 +92,11 @@ press_and_release_left(const MunitParameter params[], void* fixture) SDL_Event event = an_event(SDL_KEYDOWN, SDLK_LEFT); controller_update(&ctrl, &event); - assert_true(ctrl.left); + assert_true(controller_is_left_pressed(&ctrl)); event = an_event(SDL_KEYUP, SDLK_LEFT); controller_update(&ctrl, &event); - assert_false(ctrl.left); + assert_false(controller_is_left_pressed(&ctrl)); return MUNIT_OK; } |