From 32fd8e5bc211aa0c93df2545e8c05e5d7667c48c Mon Sep 17 00:00:00 2001 From: Warwick Date: Wed, 9 Aug 2023 14:47:05 +0100 Subject: [PATCH] Created a simple world storage method --- .gitignore | 1 + CMakeLists.txt | 2 +- src/server/main.c | 7 ++++++- src/server/world.c | 23 +++++++++++++++++++++++ src/server/world.h | 19 +++++++++++++++++++ 5 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/server/world.c create mode 100644 src/server/world.h diff --git a/.gitignore b/.gitignore index 2501485..6e65c64 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ #Build files +.cmake .cache CMakeCache.txt CMakeFiles diff --git a/CMakeLists.txt b/CMakeLists.txt index 42d2493..aeb78eb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ project(urchin HOMEPAGE_URL "https://git.warwick-new.co.uk/" LANGUAGES C) -set(CMAKE_C_STANDARD 90) +set(CMAKE_C_STANDARD 99) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_C_CLANG_TIDY) diff --git a/src/server/main.c b/src/server/main.c index 1b70aec..9c63465 100644 --- a/src/server/main.c +++ b/src/server/main.c @@ -10,6 +10,8 @@ #include #include // sockaddr #include +#include +#include "world.h" int main(int argc, char *argv[]) { // Set up containers for file descriptor id's @@ -27,10 +29,12 @@ int main(int argc, char *argv[]) { socklen_t clilen = sizeof cli_addr; // We can do this here as cli_addr isn't // touched until it's used + // Create world + Room* world = wrld__create(); + // Create socket serv_sockfd = msg__create_serv_connection(portno); - // Accept connection cli_sockfd = msg__accept_cli_connection(serv_sockfd); @@ -63,6 +67,7 @@ int main(int argc, char *argv[]) { msg__destroy_connection(cli_sockfd); msg__destroy_connection(serv_sockfd); + wrld__destroy(world); return EXIT_SUCCESS; } diff --git a/src/server/world.c b/src/server/world.c new file mode 100644 index 0000000..cc112c3 --- /dev/null +++ b/src/server/world.c @@ -0,0 +1,23 @@ +#include "world.h" + +Room* wrld__create() { + Room *rooms = malloc(WORLD_SIZE * sizeof(*rooms)); + + for (unsigned int i = 0; i < WORLD_SIZE; i++) { + char strbuf[(int)log10(WORLD_SIZE) + 1 + 80]; + snprintf(strbuf, sizeof(strbuf), "Room name: %d",i); + + rooms[i].name = strbuf; + rooms[i].description = strbuf; + rooms[i].north = NULL; + rooms[i].east = NULL; + rooms[i].south = NULL; + rooms[i].west = NULL; + } + + return rooms; +} + +void wrld__destroy(Room* rooms){ + free(rooms); +} diff --git a/src/server/world.h b/src/server/world.h new file mode 100644 index 0000000..d3d962e --- /dev/null +++ b/src/server/world.h @@ -0,0 +1,19 @@ +#define WORLD_SIZE 100 + +#include +#include +#include + +// Define what a room is. +typedef struct room { + char* name; + char* description; + struct room* north; + struct room* east; + struct room* south; + struct room* west; +} Room; + +// Creator and destructor for the world +Room* wrld__create(); +void wrld__destroy(Room* rooms);