Compare commits

..

5 Commits

Author SHA1 Message Date
35a646d3e8 Add imgui 2025-01-31 12:50:25 +01:00
c1921dd3ac Change to use precompiled libs 2025-01-31 12:31:50 +01:00
3ea3ef7c11 seperete create_tables 2025-01-31 00:18:58 +01:00
4c38bfe9a6 add view project 2025-01-30 23:03:51 +01:00
3d42b59b60 combine net 2025-01-30 22:55:41 +01:00
11 changed files with 169 additions and 113 deletions

3
.gitignore vendored
View File

@ -11,4 +11,5 @@ treender
*.vcxproj*
Console*/
main
*.bin
*.bin
external

View File

@ -5,34 +5,17 @@ project(MyProject)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb")
# set(CMAKE_VERBOSE_MAKEFILE ON)
add_compile_options(-ggdb)
include(ExternalProject)
ExternalProject_Add(
sqlite
PREFIX ""
URL https://www.sqlite.org/2025/sqlite-amalgamation-3480000.zip
URL_HASH SHA256=d9a15a42db7c78f88fe3d3c5945acce2f4bfe9e4da9f685cd19f6ea1d40aa884
DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/downloads
SOURCE_DIR ${CMAKE_BINARY_DIR}/sqlite
CONFIGURE_COMMAND ""
BUILD_COMMAND
${CMAKE_C_COMPILER} -c ${CMAKE_BINARY_DIR}/sqlite/sqlite3.c -o ${CMAKE_BINARY_DIR}/sqlite-prefix/sqlite3.o -DSQLITE_DQS=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_USE_ALLOCA -DSQLITE_OMIT_AUTOINIT -DSQLITE_STRICT_SUBTYPE=1 -DSQLITE_THREADSAFE=2 &&
${CMAKE_AR} rcs ${CMAKE_BINARY_DIR}/sqlite-prefix/libsqlite3.a ${CMAKE_BINARY_DIR}/sqlite-prefix/sqlite3.o
INSTALL_COMMAND ""
)
ExternalProject_Add(
raylib
PREFIX ""
URL https://github.com/raysan5/raylib/releases/download/5.5/raylib-5.5_linux_amd64.tar.gz
URL_HASH SHA256=3d95ef03d5b38dfa55c0a16ca122d382134b078f0e5b270b52fe7eae0549c000
DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/downloads
SOURCE_DIR ${CMAKE_BINARY_DIR}/raylib
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
include_directories(external/include/)
link_libraries(
${CMAKE_SOURCE_DIR}/external/libimgui.a
${CMAKE_SOURCE_DIR}/external/libraylib.a
${CMAKE_SOURCE_DIR}/external/libsqlite3.a
pthread
dl
m
)
add_executable(app
@ -51,19 +34,34 @@ add_executable(app
shared/src/TcpSocket.cpp
)
# Add include directories
target_include_directories(app PRIVATE app/inc shared/inc ${CMAKE_BINARY_DIR}/raylib/include)
target_link_libraries(app ${CMAKE_BINARY_DIR}/raylib/lib/libraylib.a)
target_include_directories(app PRIVATE app/inc shared/inc )
add_executable(server
server/src/server.cpp
server/src/sql.cpp
server/src/checker.cpp
shared/src/sql.cpp
shared/src/TcpSocket.cpp
shared/src/values/Dna.cpp
shared/src/values/DnaManager.cpp
shared/src/values/mrand.cpp
)
# Add include directories
target_include_directories(server PRIVATE server/inc shared/inc ${CMAKE_BINARY_DIR}/sqlite/)
target_link_libraries(server PRIVATE pthread dl m ${CMAKE_BINARY_DIR}/sqlite-prefix/libsqlite3.a)
target_include_directories(server PRIVATE server/inc shared/inc)
add_executable(view
view/src/main.cpp
shared/src/canvas/BackGround.cpp
shared/src/canvas/BackGroundColors.cpp
shared/src/canvas/Canvas.cpp
shared/src/canvas/Circle.cpp
shared/src/canvas/Tree.cpp
shared/src/values/Dna.cpp
shared/src/values/DnaManager.cpp
shared/src/values/mrand.cpp
shared/src/sql.cpp
)
# Add include directories
target_include_directories(view PRIVATE view/inc shared/inc)

View File

@ -9,7 +9,6 @@
#include "sys.hpp"
#include "DnaStore.hpp"
#include "TcpSocket.hpp"
#include "NetConst.hpp"
#include <raylib.h>

View File

@ -1,5 +1,4 @@
#include "TcpSocket.hpp"
#include "NetConst.hpp"
#include "sql.hpp"
#include "values/DnaManager.hpp"
#include "checker.hpp"
@ -118,6 +117,7 @@ void call(int sock, sockaddr_in newSocketInfo)
int main()
{
sql::init();
sql::create_tables();
std::thread t(checker);
// Bind the server to a port.
int err = TcpSocket::listent("0.0.0.0", serverPort, call);

View File

@ -1,17 +0,0 @@
#include <cinttypes>
constexpr int64_t StartHeader = 1737720524UL;
constexpr uint16_t serverPort = 9000;
enum Mess
{
RES_OK,
RES_NO,
REQ_SEND_GEN,
};
struct Message
{
Mess mess;
uint32_t data;
};

View File

@ -1,25 +1,42 @@
#include <string>
#include <netinet/in.h>
#include <cinttypes>
#define AS_DEFAULT_BUFFER_SIZE 0x1000 /*4096 bytes*/
constexpr int64_t StartHeader = 1737720524UL;
constexpr uint16_t serverPort = 9000;
enum Mess
{
RES_OK,
RES_NO,
REQ_SEND_GEN,
};
struct Message
{
Mess mess;
uint32_t data;
};
namespace TcpSocket
{
void setTimeout(int seconds, int sock);
void setTimeout(int seconds, int sock);
ssize_t sendt(int sock, const void *bytes, size_t byteslength);
ssize_t sendt(int sock, const void *bytes, size_t byteslength);
ssize_t recvt(int sock, void *bytes, size_t byteslength);
ssize_t recvt(int sock, void *bytes, size_t byteslength);
void closet(int sock);
void closet(int sock);
std::string remoteAddress(sockaddr_in &address);
std::string remoteAddress(sockaddr_in &address);
int remotePort(sockaddr_in &address);
int connectt(const char *host, uint16_t port);
int remotePort(sockaddr_in &address);
int connectt(const char *host, uint16_t port);
typedef void(OnNewConnectionCallBack)(int sock, sockaddr_in newSocketInfo);
int listent(const char *host, uint16_t port, OnNewConnectionCallBack callback);
typedef void(OnNewConnectionCallBack)(int sock, sockaddr_in newSocketInfo);
int listent(const char *host, uint16_t port, OnNewConnectionCallBack callback);
} // namespace TcpSocket

View File

@ -17,6 +17,7 @@ const char get_gen[] = "SELECT lt.HASH, lt.POS, lt.LIKED FROM like_table lt JOIN
const char get_user_table_id[] = "SELECT ID FROM user_table WHERE USER_ID = ? AND GEN = ?;";
const char rem_like_w_user_table_id[] = "DELETE FROM like_table WHERE USER_TABLE_ID = ?;";
const char rem_user_table_id[] = "DELETE FROM user_table WHERE ID = ?;";
const char set_checked[] = "UPDATE user_table SET CHECKED = 1 WHERE USER_ID = ? AND GEN = ?;";
@ -31,6 +32,7 @@ struct sqlite3_stmt;
namespace sql
{
void create_tables();
void init();
void shutdown();
int open(const char *filename, sqlite3 **ppDb);

View File

@ -1,5 +1,5 @@
#include "canvas/Circle.hpp"
#include "sunShader.hpp"
#include "canvas/sunShader.hpp"
#include <raylib.h>
#include <rlgl.h>

View File

@ -5,59 +5,64 @@
#include <sqlite3.h>
void sql::init()
{
sqlite3_initialize();
sqlite3 *db;
char *zErrMsg = 0;
int rc;
/* Open database */
rc = sqlite3_open(DB_NAME, &db);
if (rc)
{
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
return;
}
else
{
fprintf(stdout, "Opened database successfully\n");
}
/* Execute SQL statement */
rc = sqlite3_exec(db, create_like_table, nullptr, 0, &zErrMsg);
if (rc != SQLITE_OK)
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
else
{
fprintf(stdout, "like_table created successfully\n");
}
rc = sqlite3_exec(db, create_user_table, nullptr, 0, &zErrMsg);
if (rc != SQLITE_OK)
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
else
{
fprintf(stdout, "user_table created successfully\n");
}
sqlite3_close(db);
}
void sql::shutdown()
{
sqlite3_shutdown();
}
namespace sql
{
void create_tables()
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
/* Open database */
rc = sqlite3_open(DB_NAME, &db);
if (rc)
{
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
return;
}
else
{
fprintf(stdout, "Opened database successfully\n");
}
/* Execute SQL statement */
rc = sqlite3_exec(db, create_like_table, nullptr, 0, &zErrMsg);
if (rc != SQLITE_OK)
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
else
{
fprintf(stdout, "like_table created successfully\n");
}
rc = sqlite3_exec(db, create_user_table, nullptr, 0, &zErrMsg);
if (rc != SQLITE_OK)
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
else
{
fprintf(stdout, "user_table created successfully\n");
}
sqlite3_close(db);
}
void init()
{
sqlite3_initialize();
}
void shutdown()
{
sqlite3_shutdown();
}
int open(const char *filename, sqlite3 **ppDb)
{
return sqlite3_open(filename, ppDb);

51
view/src/main.cpp Normal file
View File

@ -0,0 +1,51 @@
#include <raylib.h>
#include <imgui.h>
#include <rlImGui.h>
int main(int argc, char *argv[])
{
int screenWidth = 800;
int screenHeight = 800;
SetConfigFlags(FLAG_WINDOW_RESIZABLE);
InitWindow(screenWidth, screenHeight, "VIEW");
SetTargetFPS(60);
rlImGuiSetup(true);
bool showDemoWindow = true;
ImGui::GetIO().ConfigFlags |= ImGuiConfigFlags_DockingEnable;
while (!WindowShouldClose())
{
BeginDrawing();
rlImGuiBegin();
ClearBackground(RAYWHITE);
ImGui::DockSpaceOverViewport(0, NULL, ImGuiDockNodeFlags_PassthruCentralNode);
if (ImGui::BeginMainMenuBar())
{
if (ImGui::BeginMenu("Window"))
{
if (ImGui::MenuItem("Demo Window", nullptr, showDemoWindow))
showDemoWindow = !showDemoWindow;
ImGui::EndMenu();
}
ImGui::EndMainMenuBar();
}
if (showDemoWindow)
ImGui::ShowDemoWindow(&showDemoWindow);
rlImGuiEnd();
EndDrawing();
}
rlImGuiShutdown();
CloseWindow();
return 0;
}