diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..676d9ff --- /dev/null +++ b/.clang-format @@ -0,0 +1,108 @@ +--- +UseTab: Always +UseCRLF: false +TabWidth: 4 +SpacesInSquareBrackets: false +SpacesInParentheses: false +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: 1 +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: false + AfterFunctionDeclarationName: false + AfterFunctionDefinitionName: false + AfterIfMacros: false + AfterOverloadedOperator: false + AfterRequiresInClause: false + BeforeNonEmptyParentheses: false + AfterRequiresInExpression: false +LineEnding: LF +NamespaceIndentation: All +Language: Cpp +IncludeBlocks: Regroup +CompactNamespaces: false +Standard: c++17 +BreakBeforeBraces: Attach +InsertNewlineAtEOF: true +InsertTrailingCommas: None +IndentWidth: 4 +IndentRequiresClause: false +SortIncludes: CaseSensitive +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: false +SpaceAroundPointerQualifiers: Before +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SortUsingDeclarations: Lexicographic +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatementsExceptControlMacros +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpacesInAngles: Never +SpacesInCStyleCastParentheses: false +SpacesInConditionalStatement: false +SpacesInContainerLiterals: false +SeparateDefinitionBlocks: Always +RequiresExpressionIndentation: OuterScope +RequiresClausePosition: SingleLine +ReferenceAlignment: Pointer +QualifierAlignment: Left +PointerAlignment: Left +PenaltyIndentedWhitespace: 20 +PackConstructorInitializers: CurrentLine +PPIndentWidth: 4 +LambdaBodyIndentation: Signature +KeepEmptyLinesAtTheStartOfBlocks: false +IndentPPDirectives: BeforeHash +IndentGotoLabels: true +IndentExternBlock: Indent +IndentCaseLabels: true +IndentCaseBlocks: false +IndentAccessModifiers: false +EmptyLineBeforeAccessModifier: Always +EmptyLineAfterAccessModifier: Never +DisableFormat: false +DerivePointerAlignment: false +Cpp11BracedListStyle: true +BraceWrapping: + SplitEmptyNamespace: false + SplitEmptyRecord: false + SplitEmptyFunction: false + IndentBraces: false + BeforeWhile: false + BeforeLambdaBody: false + BeforeElse: false + BeforeCatch: false + AfterClass: false + AfterCaseLabel: false + AfterControlStatement: Never + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false +BitFieldColonSpacing: After +AlwaysBreakAfterReturnType: None +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakTemplateDeclarations: No +AllowShortBlocksOnASingleLine: Always +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: false +AllowShortFunctionsOnASingleLine: Inline +AllowShortIfStatementsOnASingleLine: AllIfsAndElse +AllowShortLoopsOnASingleLine: true +AllowShortLambdasOnASingleLine: All +AllowAllParametersOfDeclarationOnNextLine: false +AllowAllArgumentsOnNextLine: false +AlignTrailingComments: + Kind: Always +AlignOperands: Align +AlignEscapedNewlines: Left diff --git a/README.md b/README.md index 0453aa4..6c13c08 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ # Hibis Game Engine Hibis (short for Hibiscus ([named after the genus of flowering plants](https://en.wikipedia.org/wiki/Hibiscus))) is a work in progress game engine written in C++.
-The goal of this game engine is to provide each part of the engine (renderer, audio, physics etc.) in seperate libraries so you can easily make your own system if need be. +The goal of this game engine is to provide each module of the engine (renderer, audio, physics etc.) in seperate libraries so you can easily make your own system if need be. # Install ## Pre-compiled libraries lmao they don't exist yet chill ## Compiling ### Note: MSVC -`MSVC` (Microsoft Visual C++ Compiler) is unsupported and I cannot guarentee that Hibis will compile using it. Please use another compiler like G++ or Ninja instead. +`MSVC` (Microsoft Visual C++ Compiler) is unsupported and I cannot guarentee that Hibis will compile/run properly using it. Please use another compiler like G++ or Ninja instead. ### Dependencies To compile Hibis, you will need: - Meson diff --git a/core/engine/engine.cpp b/core/engine/engine.cpp index d3eecf1..c20e68e 100644 --- a/core/engine/engine.cpp +++ b/core/engine/engine.cpp @@ -5,14 +5,14 @@ namespace hibis { Engine::Engine(Renderer* renderer, LoggerCallback logger) { - this->renderer = renderer; - loggerCallback = logger; - previousProcessTick = std::chrono::steady_clock::now(); - previousPhysicsProcessTick = std::chrono::steady_clock::now(); + this->mRenderer = renderer; + mLoggerCallback = logger; + mPreviousProcessTick = std::chrono::steady_clock::now(); + mPreviousPhysicsProcessTick = std::chrono::steady_clock::now(); //watch.start(); - this->loggerCallback(Information, "Started Hibis [using v" + (std::string)getEngineVersion() + "]!"); + this->mLoggerCallback(Information, "Started Hibis [using v" + (std::string)getEngineVersion() + "]!"); } Engine::~Engine() { @@ -22,31 +22,31 @@ namespace hibis { void Engine::runNodeProcesses() { TODO("check if delta calc is correct") const std::chrono::time_point current = std::chrono::steady_clock::now(); - auto delta = std::chrono::duration(current - previousProcessTick); + auto delta = std::chrono::duration(current - mPreviousProcessTick); - for (Node* node : nodeList) { + for (Node* node : mNodeList) { node->process(delta.count()); } - previousProcessTick = std::chrono::steady_clock::now(); + mPreviousProcessTick = std::chrono::steady_clock::now(); } void Engine::runNodePhysicsProcesses() { const std::chrono::time_point current = std::chrono::steady_clock::now(); - auto delta = std::chrono::duration(current - previousProcessTick); + auto delta = std::chrono::duration(current - mPreviousProcessTick); - for (Node* node : nodeList) { + for (Node* node : mNodeList) { node->physicsProcess(delta.count()); } - previousProcessTick = std::chrono::steady_clock::now(); + mPreviousProcessTick = std::chrono::steady_clock::now(); } void Engine::drawNodes() { TODO("check if this works") - for (Node* node : nodeList) { + for (Node* node : mNodeList) { if (Drawable* drawNode = (Drawable*)&node) { - drawNode->draw(renderer); + drawNode->draw(mRenderer); } } } diff --git a/core/engine/engine.hpp b/core/engine/engine.hpp index e1513e4..7926712 100644 --- a/core/engine/engine.hpp +++ b/core/engine/engine.hpp @@ -21,12 +21,12 @@ namespace hibis { const char* getEngineVersion(); private: - Renderer* renderer; + Renderer* mRenderer; //StopWatch watch; - std::chrono::time_point previousProcessTick; - std::chrono::time_point previousPhysicsProcessTick; + std::chrono::time_point mPreviousProcessTick; + std::chrono::time_point mPreviousPhysicsProcessTick; - std::vector nodeList; - LoggerCallback loggerCallback; + std::vector mNodeList; + LoggerCallback mLoggerCallback; }; } diff --git a/core/renderer/renderer.hpp b/core/renderer/renderer.hpp index 9190510..73347e9 100644 --- a/core/renderer/renderer.hpp +++ b/core/renderer/renderer.hpp @@ -23,6 +23,6 @@ namespace hibis { // Util virtual void setWindowTitle(std::string title) = 0; - bool keepOpen = true; + bool mKeepOpen = true; }; } diff --git a/core/resources/texture.hpp b/core/resources/texture.hpp index c551de2..b312401 100644 --- a/core/resources/texture.hpp +++ b/core/resources/texture.hpp @@ -6,6 +6,6 @@ namespace hibis { TODO("Make this function") class Texture : Resource { - void* data; + void* mData; }; } diff --git a/renderer/rsdl/resources/font.cpp b/renderer/rsdl/resources/font.cpp index 8fa1a17..5d0e86e 100644 --- a/renderer/rsdl/resources/font.cpp +++ b/renderer/rsdl/resources/font.cpp @@ -5,28 +5,28 @@ namespace hibis::rsdl { Font::Font(std::string path, uint size) { - this->size = size; - this->path = path; + this->mSize = size; + this->mPath = path; loadFont(); } Font::~Font() { - TTF_CloseFont(loadedFont); + TTF_CloseFont(mLoadedFont); } void Font::loadFont(bool reload) { // If already loaded, close font - if (loadedFont != NULL) { - TTF_CloseFont(loadedFont); - loadedFont = NULL; + if (mLoadedFont != NULL) { + TTF_CloseFont(mLoadedFont); + mLoadedFont = NULL; } - loadedFont = TTF_OpenFont(path.c_str(), size); + mLoadedFont = TTF_OpenFont(mPath.c_str(), mSize); // Do the message - if (!didReload) { - std::cout << fmt::format((reload ? "Reloaded font from" : "Loaded font at") + (std::string)" {}", path) << std::endl; - didReload = reload; + if (!mDidReload) { + std::cout << fmt::format((reload ? "Reloaded font from" : "Loaded font at") + (std::string)" {}", mPath) << std::endl; + mDidReload = reload; } } } diff --git a/renderer/rsdl/resources/font.hpp b/renderer/rsdl/resources/font.hpp index 5ae37e2..2c64f1c 100644 --- a/renderer/rsdl/resources/font.hpp +++ b/renderer/rsdl/resources/font.hpp @@ -12,17 +12,16 @@ namespace hibis::rsdl { ~Font(); - uint getFontSize() { return size; } + uint getFontSize() { return mSize; } - void setFontSize(uint newSize) { size = newSize; loadFont(true); } + void setFontSize(uint newSize) { mSize = newSize; loadFont(true); } - - TTF_Font* loadedFont = NULL; + TTF_Font* mLoadedFont = NULL; private: void loadFont(bool reload = false); - uint size; - std::string path; + uint mSize; + std::string mPath; - bool didReload = false; + bool mDidReload = false; }; } diff --git a/renderer/rsdl/rsdl.cpp b/renderer/rsdl/rsdl.cpp index 0050c71..dd5316e 100644 --- a/renderer/rsdl/rsdl.cpp +++ b/renderer/rsdl/rsdl.cpp @@ -8,33 +8,33 @@ namespace hibis::rsdl { RSDL::RSDL(std::string title, IntVec2 size, LoggerCallback callback) { - logger = callback; + mLoggerCallback = callback; SDL_Init(SDL_INIT_VIDEO); // Create window. `title` is cast to a char* here as tostd::stringz returns an immutable char* (causing an error) - window = SDL_CreateWindow(title.c_str(), SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, + mWindow = SDL_CreateWindow(title.c_str(), SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, size.x, size.y, SDL_WINDOW_RESIZABLE); - if (window == NULL) { - logger(Fatal, fmt::format("Couldn't create window! what: {}", SDL_GetError())); + if (mWindow == NULL) { + mLoggerCallback(Fatal, fmt::format("Couldn't create window! what: {}", SDL_GetError())); SDL_Quit(); exit(1); } - renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + mRendererContext = SDL_CreateRenderer(mWindow, -1, SDL_RENDERER_ACCELERATED); - if (renderer == NULL) { - logger(Fatal, fmt::format("Couldn't create renderer! what: {}", SDL_GetError())); - SDL_DestroyWindow(window); + if (mRendererContext == NULL) { + mLoggerCallback(Fatal, fmt::format("Couldn't create renderer! what: {}", SDL_GetError())); + SDL_DestroyWindow(mWindow); SDL_Quit(); exit(1); } if (TTF_Init() != 0) { - logger(Fatal, fmt::format("Couldn't load SDL_TTF! what: %d", TTF_GetError())); - SDL_DestroyRenderer(renderer); - SDL_DestroyWindow(window); + mLoggerCallback(Fatal, fmt::format("Couldn't load SDL_TTF! what: %d", TTF_GetError())); + SDL_DestroyRenderer(mRendererContext); + SDL_DestroyWindow(mWindow); SDL_Quit(); TTF_Quit(); exit(1); @@ -43,31 +43,31 @@ namespace hibis::rsdl { RSDL::~RSDL() { TTF_Quit(); - SDL_DestroyRenderer(renderer); - SDL_DestroyWindow(window); + SDL_DestroyRenderer(mRendererContext); + SDL_DestroyWindow(mWindow); SDL_Quit(); } void RSDL::clearScreen(Color col) { - SDL_SetRenderDrawColor(renderer, col.r, col.g, col.b, col.a); - SDL_RenderClear(renderer); + SDL_SetRenderDrawColor(mRendererContext, col.r, col.g, col.b, col.a); + SDL_RenderClear(mRendererContext); } void RSDL::renderCurrent() { - SDL_UpdateWindowSurface(window); - SDL_RenderPresent(renderer); + SDL_UpdateWindowSurface(mWindow); + SDL_RenderPresent(mRendererContext); } void RSDL::drawText(Resource* resource, std::string text, IntVec2 pos, Color color) { WARNING("tulip what the hell is this, this sucks.\nAvoid remaking textures every time text has to be drawn") if (Font* font = (Font*)resource) { - SDL_Surface* textSurface = TTF_RenderText_Solid(font->loadedFont, text.c_str(), SDL_Color {color.r, color.g, color.b, color.a }); - SDL_Texture* textTexture = SDL_CreateTextureFromSurface(renderer, textSurface); + SDL_Surface* textSurface = TTF_RenderText_Solid(font->mLoadedFont, text.c_str(), SDL_Color {color.r, color.g, color.b, color.a }); + SDL_Texture* textTexture = SDL_CreateTextureFromSurface(mRendererContext, textSurface); int width = 0; int height = 0; - TTF_SizeText(font->loadedFont, text.c_str(), &width, &height); + TTF_SizeText(font->mLoadedFont, text.c_str(), &width, &height); SDL_Rect textRect; textRect.x = pos.x; @@ -75,7 +75,7 @@ namespace hibis::rsdl { textRect.w = width; textRect.h = height; - SDL_RenderCopy(renderer, textTexture, NULL, &textRect); + SDL_RenderCopy(mRendererContext, textTexture, NULL, &textRect); SDL_DestroyTexture(textTexture); SDL_FreeSurface(textSurface); @@ -89,11 +89,11 @@ namespace hibis::rsdl { SDL_Event event; while(SDL_PollEvent(&event)) { - if (event.type == SDL_QUIT) keepOpen = false; + if (event.type == SDL_QUIT) mKeepOpen = false; } } void RSDL::setWindowTitle(std::string title) { - SDL_SetWindowTitle(window, title.c_str()); + SDL_SetWindowTitle(mWindow, title.c_str()); } } diff --git a/renderer/rsdl/rsdl.hpp b/renderer/rsdl/rsdl.hpp index f868a53..b26b277 100644 --- a/renderer/rsdl/rsdl.hpp +++ b/renderer/rsdl/rsdl.hpp @@ -33,9 +33,9 @@ namespace hibis::rsdl { void setWindowTitle(std::string title); private: - SDL_Window* window; - SDL_Renderer* renderer; + SDL_Window* mWindow; + SDL_Renderer* mRendererContext; - LoggerCallback logger; + LoggerCallback mLoggerCallback; }; } diff --git a/test/app.cpp b/test/app.cpp index e2514d0..23a3217 100644 --- a/test/app.cpp +++ b/test/app.cpp @@ -60,7 +60,7 @@ int main() { uint f = 0; logger(Information, "Started Hibis test app! BEHOLD: Colours."); - while (renderer.keepOpen) { + while (renderer.mKeepOpen) { engine.runNodeProcesses(); // Colour changing background!