BoredProject

This commit is contained in:
IlyaShurupov 2023-09-01 22:44:47 +03:00
parent 3f2e6fdb4e
commit b3d06906ff
9 changed files with 195 additions and 3 deletions

33
Chat/CMakeLists.txt Normal file
View file

@ -0,0 +1,33 @@
cmake_minimum_required(VERSION 3.2)
set(CMAKE_CXX_STANDARD 23)
project(Chat)
### ---------------------- Externals --------------------- ###
set(BINDINGS_INCLUDE ${EXTERNALS}/glfw/include ${EXTERNALS}/glew/include)
set(BINDINGS_LIBS glfw glew_s Imgui Nanovg)
### ---------------------- Static Library --------------------- ###
file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp")
file(GLOB HEADERS "./public/*.hpp")
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
target_include_directories(${PROJECT_NAME} PUBLIC ./public/)
target_include_directories(${PROJECT_NAME} PRIVATE ${BINDINGS_INCLUDE})
target_link_libraries(${PROJECT_NAME} PUBLIC Graphics Connection)
target_link_libraries(${PROJECT_NAME} PRIVATE ${BINDINGS_LIBS})
### -------------------------- Examples -------------------------- ###
add_executable(ChatGUI applications/ChatGUI.cpp)
target_link_libraries(ChatGUI ${PROJECT_NAME} ${BINDINGS_LIBS})
target_include_directories(ChatGUI PRIVATE ${BINDINGS_INCLUDE})
### -------------------------- Tests -------------------------- ###
enable_testing()
file(GLOB TEST_SOURCES "./tests/*.cpp")
add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES})
target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils)
add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests)
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib)

View file

@ -0,0 +1,39 @@
#include "ClientGui.hpp"
#include "Window.hpp"
using namespace tp;
int main() {
ModuleManifest* deps[] = { &tp::gModuleChat, nullptr };
ModuleManifest testModule("ClientGUI", nullptr, nullptr, deps);
if (!testModule.initialize()) {
return 1;
}
{
ChatAPI chat;
ClientGUI gui;
auto window = Window::createWindow(1000, 700, "Window 1");
if (window) {
window->getGraphics().getDebugGui().setFontSize(4);
while (!window->shouldClose()) {
window->processEvents();
gui.draw(chat);
window->draw();
}
}
Window::destroyWindow(window);
}
testModule.deinitialize();
}

18
Chat/private/Chat.cpp Normal file
View file

@ -0,0 +1,18 @@
#include "Chat.hpp"
#include "Graphics.hpp"
using namespace tp;
static ModuleManifest* deps[] = { &gModuleGraphics, nullptr };
ModuleManifest tp::gModuleChat = ModuleManifest("Chat", nullptr, nullptr, deps );
bool ChatAPI::isLogged() const {
return mLogged;
}
void ChatAPI::login(const Credentials& credentials) {
mLogged = String::Logic::isEqualLogic(credentials.name, "111");
}

View file

@ -0,0 +1,46 @@
#include "ClientGui.hpp"
#include "imgui.h"
using namespace tp;
using namespace ImGui;
void ClientGUI::draw(ChatAPI& api) {
if (Begin("window_name")) {
if (api.isLogged()) {
static int item_current1 = 0;
const char *items1[] = {"Never", "Gonna", "Give", "You", "Up"};
Combo("User", &item_current1, items1, IM_ARRAYSIZE(items1));
BeginListBox("History");
Text("as");
Text("asa");
EndListBox();
static char buff[1000];
InputTextMultiline("Message", buff, 1000);
if (Button("Send")) {
}
} else {
InputText("Name", mCredentials.name, ChatAPI::Credentials::SIZE);
InputText("Pass", mCredentials.pass, ChatAPI::Credentials::SIZE);
if (mInvalidCredentials) {
Text("Invalid Credentials");
}
if (Button("Login")) {
api.login(mCredentials);
mInvalidCredentials = !api.isLogged();
}
}
} End();
}

27
Chat/public/Chat.hpp Normal file
View file

@ -0,0 +1,27 @@
#pragma once
#include "Module.hpp"
namespace tp {
extern ModuleManifest gModuleChat;
class ChatAPI {
public:
struct Credentials {
enum { SIZE = 64 };
tp::int1 name[SIZE] {0};
tp::int1 pass[SIZE] {0};
};
public:
ChatAPI() = default;
[[nodiscard]] bool isLogged() const;
void login(const Credentials& credentials);
private:
bool mLogged = false;
Credentials mCredentials;
};
}

13
Chat/public/ClientGui.hpp Normal file
View file

@ -0,0 +1,13 @@
#pragma once
#include "Chat.hpp"
namespace tp {
class ClientGUI {
ChatAPI::Credentials mCredentials;
bool mInvalidCredentials = false;
public:
ClientGUI() = default;
void draw(ChatAPI& api);
};
}

4
Chat/tests/Tests.cpp Normal file
View file

@ -0,0 +1,4 @@
int main () {
}