From a6266a336b53644520bbec54df71af6eed72a6a0 Mon Sep 17 00:00:00 2001 From: declan Date: Sat, 4 Oct 2025 15:53:55 +0100 Subject: [PATCH] movey boy --- code/first.c | 93 +++++++++++++++++++++++------------------ code/game/impl/player.c | 22 ++++++++++ code/game/player.h | 11 +++++ 3 files changed, 86 insertions(+), 40 deletions(-) create mode 100644 code/game/impl/player.c create mode 100644 code/game/player.h diff --git a/code/first.c b/code/first.c index 6d714a8..2e7c94d 100644 --- a/code/first.c +++ b/code/first.c @@ -8,17 +8,22 @@ #include "vulkan/core.h" -int main(int argc, char **argv) { - (void) argc; - (void) argv; +#include "game/impl/player.c" - if (!SDL_Init(SDL_INIT_VIDEO)) { +int main(int argc, char **argv) +{ + (void)argc; + (void)argv; + + if (!SDL_Init(SDL_INIT_VIDEO)) + { printf("[Error] :: Failed to initialise SDL3 (%s)\n", SDL_GetError()); return 1; } SDL_Window *window = SDL_CreateWindow("Ludum", 1280, 720, SDL_WINDOW_HIGH_PIXEL_DENSITY); - if (!window) { + if (!window) + { printf("[Error] :: Failed to create window (%s)\n", SDL_GetError()); return 1; } @@ -26,10 +31,19 @@ int main(int argc, char **argv) { Vk_Setup(window); bool running = true; - while (running) { + Player player; + player.pos.x = 0; + player.pos.y = 0; + while (running) + { SDL_Event e; - while (SDL_PollEvent(&e)) { - if (e.type == SDL_EVENT_QUIT) { running = false; } + while (SDL_PollEvent(&e)) + { + PlayerUpdate(&e, &player); + if (e.type == SDL_EVENT_QUIT) + { + running = false; + } } int w, h; @@ -37,25 +51,24 @@ int main(int argc, char **argv) { Vk_Frame *frame = Vk_FrameBegin(window); VkCommandBuffer cmd = frame->cmd; - - VkImageMemoryBarrier2 colour_optimal = { 0 }; - colour_optimal.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2; - colour_optimal.srcStageMask = VK_PIPELINE_STAGE_2_NONE; + VkImageMemoryBarrier2 colour_optimal = {0}; + colour_optimal.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2; + colour_optimal.srcStageMask = VK_PIPELINE_STAGE_2_NONE; colour_optimal.srcAccessMask = VK_ACCESS_2_NONE; - colour_optimal.dstStageMask = VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT; + colour_optimal.dstStageMask = VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT; colour_optimal.dstAccessMask = VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT; - colour_optimal.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; - colour_optimal.newLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - colour_optimal.image = vk.swapchain.images[frame->image]; + colour_optimal.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; + colour_optimal.newLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + colour_optimal.image = vk.swapchain.images[frame->image]; colour_optimal.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; colour_optimal.subresourceRange.layerCount = 1; colour_optimal.subresourceRange.levelCount = 1; - VkDependencyInfo colour_barrier = { 0 }; - colour_barrier.sType = VK_STRUCTURE_TYPE_DEPENDENCY_INFO; + VkDependencyInfo colour_barrier = {0}; + colour_barrier.sType = VK_STRUCTURE_TYPE_DEPENDENCY_INFO; colour_barrier.imageMemoryBarrierCount = 1; - colour_barrier.pImageMemoryBarriers = &colour_optimal; + colour_barrier.pImageMemoryBarriers = &colour_optimal; vk.CmdPipelineBarrier2(cmd, &colour_barrier); @@ -65,43 +78,43 @@ int main(int argc, char **argv) { clear_colour.color.float32[2] = 0.0f; clear_colour.color.float32[3] = 1.0f; - VkRenderingAttachmentInfo colour_attachment = { 0 }; - colour_attachment.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO; - colour_attachment.imageView = vk.swapchain.views[frame->image]; + VkRenderingAttachmentInfo colour_attachment = {0}; + colour_attachment.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO; + colour_attachment.imageView = vk.swapchain.views[frame->image]; colour_attachment.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - colour_attachment.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; - colour_attachment.storeOp = VK_ATTACHMENT_STORE_OP_STORE; - colour_attachment.clearValue = clear_colour; + colour_attachment.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; + colour_attachment.storeOp = VK_ATTACHMENT_STORE_OP_STORE; + colour_attachment.clearValue = clear_colour; - VkRenderingInfo rendering_info = { 0 }; - rendering_info.sType = VK_STRUCTURE_TYPE_RENDERING_INFO; - rendering_info.renderArea = (VkRect2D) { 0, 0, w, h }; - rendering_info.layerCount = 1; + VkRenderingInfo rendering_info = {0}; + rendering_info.sType = VK_STRUCTURE_TYPE_RENDERING_INFO; + rendering_info.renderArea = (VkRect2D){0, 0, w, h}; + rendering_info.layerCount = 1; rendering_info.colorAttachmentCount = 1; - rendering_info.pColorAttachments = &colour_attachment; + rendering_info.pColorAttachments = &colour_attachment; vk.CmdBeginRendering(cmd, &rendering_info); vk.CmdEndRendering(cmd); - VkImageMemoryBarrier2 present_src = { 0 }; - present_src.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2; - present_src.srcStageMask = VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT; + VkImageMemoryBarrier2 present_src = {0}; + present_src.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2; + present_src.srcStageMask = VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT; present_src.srcAccessMask = VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT; - present_src.dstStageMask = VK_PIPELINE_STAGE_2_NONE; + present_src.dstStageMask = VK_PIPELINE_STAGE_2_NONE; present_src.dstAccessMask = VK_ACCESS_2_NONE; - present_src.oldLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - present_src.newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; - present_src.image = vk.swapchain.images[frame->image]; + present_src.oldLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + present_src.newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; + present_src.image = vk.swapchain.images[frame->image]; present_src.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; present_src.subresourceRange.layerCount = 1; present_src.subresourceRange.levelCount = 1; - VkDependencyInfo to_present = { 0 }; - to_present.sType = VK_STRUCTURE_TYPE_DEPENDENCY_INFO; + VkDependencyInfo to_present = {0}; + to_present.sType = VK_STRUCTURE_TYPE_DEPENDENCY_INFO; to_present.imageMemoryBarrierCount = 1; - to_present.pImageMemoryBarriers = &present_src; + to_present.pImageMemoryBarriers = &present_src; vk.CmdPipelineBarrier2(cmd, &to_present); diff --git a/code/game/impl/player.c b/code/game/impl/player.c new file mode 100644 index 0000000..4c26667 --- /dev/null +++ b/code/game/impl/player.c @@ -0,0 +1,22 @@ +#include "../player.h" + +void PlayerUpdate(SDL_Event *event, Player *player) +{ + SDL_KeyboardEvent key = event->key; + if (key.key == SDLK_W) + { + player->pos.y += 10; + } + if (key.key == SDLK_A) + { + player->pos.x -= 10; + } + if (key.key == SDLK_D) + { + player->pos.x += 10; + } + if (key.key == SDLK_S) + { + player->pos.y -= 10; + } +} diff --git a/code/game/player.h b/code/game/player.h new file mode 100644 index 0000000..b1fb884 --- /dev/null +++ b/code/game/player.h @@ -0,0 +1,11 @@ +#include "core/types.h" +#include +#include "../core/macros.h" + +typedef struct Player Player; +struct Player +{ + V2f pos; +}; + +function void PlayerUpdate(SDL_Event *event, Player *player); \ No newline at end of file