From 26004d1f3b200374aae579a18e6f17696224fb8e Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Tue, 5 Aug 2025 21:27:39 +0600 Subject: [PATCH 01/20] Create Event.h and Event.cpp --- Engine/include/Application.h | 13 ++----------- Engine/include/Event.h | 7 +++++++ Engine/include/Objects/BaseObject.h | 3 ++- Engine/include/Objects/TextObject.h | 3 ++- Engine/include/log.h | 14 +++----------- Engine/include/textscript_api.h | 11 +++++++++++ 6 files changed, 27 insertions(+), 24 deletions(-) create mode 100644 Engine/include/Event.h create mode 100644 Engine/include/textscript_api.h diff --git a/Engine/include/Application.h b/Engine/include/Application.h index 706952f..0b4fc87 100644 --- a/Engine/include/Application.h +++ b/Engine/include/Application.h @@ -1,15 +1,6 @@ #pragma once -#ifdef _WIN3 - #ifdef T_EXPORTS - #define TEXTSCRIPT_API __declspec(dllexport) - #else - #define TEXTSCRIPT_API __declspec(dllimport) - #endif -#else //Linux/macOS - #define TEXTSCRIPT_API -#endif - +#include "textscript_api.h" #include "pch.h" namespace TextScript { @@ -31,5 +22,5 @@ namespace TextScript { std::string m_ApplicationName = ""; std::string m_CurrentKeyboardKey = ""; }; -}; // namespace TextScript +}; diff --git a/Engine/include/Event.h b/Engine/include/Event.h new file mode 100644 index 0000000..ef97101 --- /dev/null +++ b/Engine/include/Event.h @@ -0,0 +1,7 @@ +#pragma once +#pragma once +#include "pch.h" + +namespace TextScript { + +} diff --git a/Engine/include/Objects/BaseObject.h b/Engine/include/Objects/BaseObject.h index 70d82d2..8733b28 100644 --- a/Engine/include/Objects/BaseObject.h +++ b/Engine/include/Objects/BaseObject.h @@ -1,9 +1,10 @@ #pragma once #include "pch.h" +#include "textscript_api.h" namespace TextScript { - class BaseObject { + class TEXTSCRIPT_API BaseObject { public: BaseObject(const std::string& name, int x=0, int y=0); unsigned short X = 0; diff --git a/Engine/include/Objects/TextObject.h b/Engine/include/Objects/TextObject.h index 0c135c8..fb02c93 100644 --- a/Engine/include/Objects/TextObject.h +++ b/Engine/include/Objects/TextObject.h @@ -2,9 +2,10 @@ #include "pch.h" #include "Objects/BaseObject.h" +#include "textscript_api.h" namespace TextScript { - class TextObject : public TextScript::BaseObject { + class TEXTSCRIPT_API TextObject : public TextScript::BaseObject { public: TextObject(const std::string& name) : BaseObject(name) {} std::string Text = "█"; diff --git a/Engine/include/log.h b/Engine/include/log.h index 5c243f6..473fccd 100755 --- a/Engine/include/log.h +++ b/Engine/include/log.h @@ -1,17 +1,9 @@ #pragma once -#include -#ifdef _WIN32 - #ifdef T_EXPORTS - #define TEXTSCRIPT_API __declspec(dllexport) - #else - #define TEXTSCRIPT_API __declspec(dllimport) - #endif -#else // For Linux/macOS - #define TEXTSCRIPT_API -#endif +#include "pch.h" +#include "textscript_api.h" namespace TextScript { - namespace Logger { + namespace TEXTSCRIPT_API Logger { TEXTSCRIPT_API void log_info(std::string message); TEXTSCRIPT_API void log_warn(std::string message); TEXTSCRIPT_API void log_error(std::string message); diff --git a/Engine/include/textscript_api.h b/Engine/include/textscript_api.h new file mode 100644 index 0000000..8e1f8f8 --- /dev/null +++ b/Engine/include/textscript_api.h @@ -0,0 +1,11 @@ +#pragma once + +#ifdef _WIN32 + #ifdef T_EXPORTS + #define TEXTSCRIPT_API __declspec(dllexport) + #else + #define TEXTSCRIPT_API __declspec(dllimport) + #endif +#else // For Linux/macOS + #define TEXTSCRIPT_API +#endif From ac25e47c13636922d9de04b7be38b1122d99a531 Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Tue, 5 Aug 2025 22:11:20 +0600 Subject: [PATCH 02/20] Add keyboard.h and .cpp and setup cmake for new Event folder --- Engine/CMakeLists.txt | 2 +- Engine/include/Event/Event.h | 17 +++++++++++++++++ Engine/include/{Event.h => Event/Keyboard.h} | 3 ++- Engine/src/Event/Event.cpp | 5 +++++ Engine/src/Event/Keyboard.cpp | 1 + 5 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 Engine/include/Event/Event.h rename Engine/include/{Event.h => Event/Keyboard.h} (69%) create mode 100644 Engine/src/Event/Event.cpp create mode 100644 Engine/src/Event/Keyboard.cpp diff --git a/Engine/CMakeLists.txt b/Engine/CMakeLists.txt index b85f849..052a449 100755 --- a/Engine/CMakeLists.txt +++ b/Engine/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB_RECURSE SOURCES "src/*.cpp" "src/Objects/*.cpp") +file(GLOB_RECURSE SOURCES "src/*.cpp" "src/Objects/*.cpp" "src/Event/*.cpp") list(REMOVE_ITEM SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/pch.cpp") add_library(Engine-pch OBJECT "${CMAKE_CURRENT_SOURCE_DIR}/src/pch.cpp") diff --git a/Engine/include/Event/Event.h b/Engine/include/Event/Event.h new file mode 100644 index 0000000..a5553ca --- /dev/null +++ b/Engine/include/Event/Event.h @@ -0,0 +1,17 @@ +#pragma once +#include "pch.h" + +namespace TextScript { + enum class EventType { + Base, + KeyboardKeyPress, + MouseMovement, + MouseButtonPress, + }; + + class BaseEvent { + public: + virtual std::name GetEventName(){ return "BaseEvent"; } + virtual EventType GetEventType(){ return EventType::Base; } + }; +} diff --git a/Engine/include/Event.h b/Engine/include/Event/Keyboard.h similarity index 69% rename from Engine/include/Event.h rename to Engine/include/Event/Keyboard.h index ef97101..0723831 100644 --- a/Engine/include/Event.h +++ b/Engine/include/Event/Keyboard.h @@ -1,6 +1,7 @@ #pragma once -#pragma once + #include "pch.h" +#include "Event/Event.h" namespace TextScript { diff --git a/Engine/src/Event/Event.cpp b/Engine/src/Event/Event.cpp new file mode 100644 index 0000000..d2bb213 --- /dev/null +++ b/Engine/src/Event/Event.cpp @@ -0,0 +1,5 @@ +#include "pch.h" + +namespace TextScript { + +} diff --git a/Engine/src/Event/Keyboard.cpp b/Engine/src/Event/Keyboard.cpp new file mode 100644 index 0000000..760ac5c --- /dev/null +++ b/Engine/src/Event/Keyboard.cpp @@ -0,0 +1 @@ +#include "Event/Keyboard.h" From c3bced55877b45df05cce011842d4f252259c059 Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Thu, 7 Aug 2025 20:56:59 +0600 Subject: [PATCH 03/20] Use Event instead of just std::string --- .gitignore | 2 +- CMakeLists.txt | 2 +- Engine/include/Application.h | 3 +- Engine/include/Event/Event.h | 2 +- Engine/include/Event/Keyboard.h | 20 ++++++++- Engine/src/Application.cpp | 9 ++-- Engine/src/Event/Keyboard.cpp | 37 +++++++++++++++++ Engine/src/Objects/TextObject.cpp | 3 +- Sandbox/include/sandbox.h | 8 ++-- clean.bat | 49 ++++++++++++++++++++++ compile_commands.json | 68 +++++++++++++++++++++++++++++++ run | 2 +- run.bat | 31 ++++++++++++++ 13 files changed, 220 insertions(+), 16 deletions(-) create mode 100644 clean.bat create mode 100644 compile_commands.json create mode 100644 run.bat diff --git a/.gitignore b/.gitignore index 7f6c4bd..4b23412 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ # Build files /bin /lib - +/cache # Engine folder /Engine/CMakeCache.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index d167a67..300d840 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) project(TextScript CXX) diff --git a/Engine/include/Application.h b/Engine/include/Application.h index 0b4fc87..b976f35 100644 --- a/Engine/include/Application.h +++ b/Engine/include/Application.h @@ -2,6 +2,7 @@ #include "textscript_api.h" #include "pch.h" +#include "Event/Keyboard.h" namespace TextScript { class TEXTSCRIPT_API Application { @@ -15,7 +16,7 @@ namespace TextScript { virtual void OnStart(); virtual void OnUpdate(); - virtual void OnInput(const std::string& Key); + virtual void OnInput(KeyboardButtonPressEvent Key); private: bool m_IsRunning = true; diff --git a/Engine/include/Event/Event.h b/Engine/include/Event/Event.h index a5553ca..1c7ab59 100644 --- a/Engine/include/Event/Event.h +++ b/Engine/include/Event/Event.h @@ -11,7 +11,7 @@ namespace TextScript { class BaseEvent { public: - virtual std::name GetEventName(){ return "BaseEvent"; } + virtual std::string GetEventName(){ return "BaseEvent"; } virtual EventType GetEventType(){ return EventType::Base; } }; } diff --git a/Engine/include/Event/Keyboard.h b/Engine/include/Event/Keyboard.h index 0723831..0cafd70 100644 --- a/Engine/include/Event/Keyboard.h +++ b/Engine/include/Event/Keyboard.h @@ -2,7 +2,25 @@ #include "pch.h" #include "Event/Event.h" +#include namespace TextScript { - + class KeyboardButtonPressEvent : BaseEvent { + public: + enum class ArrowKey{ + NONE, + UP, + DOWN, + LEFT, + RIGHT, + }; + + KeyboardButtonPressEvent(const std::string& Key); + ArrowKey GetArrowKeyPress(); + std::string GetEventName() override; + std::string GetKeyPress(); + private: + std::string m_Key = ""; + }; } + diff --git a/Engine/src/Application.cpp b/Engine/src/Application.cpp index ea1ee6d..d37670d 100644 --- a/Engine/src/Application.cpp +++ b/Engine/src/Application.cpp @@ -1,6 +1,7 @@ #include "pch.h" #include "Application.h" #include "log.h" +#include "Event/Keyboard.h" namespace TextScript { Application::Application(std::string name) @@ -22,8 +23,8 @@ namespace TextScript { m_CurrentKeyboardKey = getch(); if (m_CurrentKeyboardKey == ""){} else { - OnInput(m_CurrentKeyboardKey); - m_CurrentKeyboardKey = ""; + KeyboardButtonPressEvent Key(m_CurrentKeyboardKey); + OnInput(Key); } std::this_thread::sleep_for(std::chrono::milliseconds(100)); // sleep for 0.1 second @@ -34,7 +35,7 @@ namespace TextScript { void Application::Close() { m_IsRunning = false; endwin(); - LOG_INFO("\033[48;5;208m\033[37m Engine \033[0m User exited Application"); + LOG_INFO("\033[48;5;208m\033[37m Engine \033[0m exited Application"); } void Application::RefreshScreen(){ @@ -48,7 +49,7 @@ namespace TextScript { void Application::OnUpdate() { // Override in derived class } - void Application::OnInput(const std::string& Key){ + void Application::OnInput(KeyboardButtonPressEvent Key){ // Override in derived class } } // namespace TextScript diff --git a/Engine/src/Event/Keyboard.cpp b/Engine/src/Event/Keyboard.cpp index 760ac5c..f6b4ba6 100644 --- a/Engine/src/Event/Keyboard.cpp +++ b/Engine/src/Event/Keyboard.cpp @@ -1 +1,38 @@ #include "Event/Keyboard.h" +#include "pch.h" + +namespace TextScript{ + KeyboardButtonPressEvent::KeyboardButtonPressEvent(const std::string& Key) + : m_Key(Key){ + + } + std::string KeyboardButtonPressEvent::GetEventName() { + return "KeyboardButtonPressEvent"; + } + KeyboardButtonPressEvent::ArrowKey KeyboardButtonPressEvent::GetArrowKeyPress() { + if (m_Key[0] >= 0 && m_Key[0] <= 255){ + return ArrowKey::NONE; + } + else{ + switch (m_Key[0]){ + case KEY_UP: + return ArrowKey::UP; + break; + case KEY_DOWN: + return ArrowKey::DOWN; + break; + case KEY_LEFT: + return ArrowKey::LEFT; + break; + case KEY_RIGHT: + return ArrowKey::RIGHT; + break; + } + } + } + std::string KeyboardButtonPressEvent::GetKeyPress(){ + if (m_Key[0] >= 0 && m_Key[0] <= 255) { + return m_Key; + } + } +} diff --git a/Engine/src/Objects/TextObject.cpp b/Engine/src/Objects/TextObject.cpp index 311ad25..928935a 100644 --- a/Engine/src/Objects/TextObject.cpp +++ b/Engine/src/Objects/TextObject.cpp @@ -4,7 +4,6 @@ namespace TextScript { void TextObject::Draw(){ clear(); - move(Y, X); - addstr(Text.c_str()); + mvprintw(Y, X, "%s", Text.c_str()); } } diff --git a/Sandbox/include/sandbox.h b/Sandbox/include/sandbox.h index 07b9eba..6a8c275 100644 --- a/Sandbox/include/sandbox.h +++ b/Sandbox/include/sandbox.h @@ -18,14 +18,14 @@ class Game : public TextScript::Application { RefreshScreen(); } - void OnInput(const std::string& Key) override { - if (Key == "d" ) { + void OnInput(TextScript::KeyboardButtonPressEvent Key) override { + if (Key.GetKeyPress() == "d" ) { player.X++; } - if (Key == "a") { + if (Key.GetKeyPress() == "a") { player.X--; } - if (Key == "q"){ + if (Key.GetKeyPress() == "q"){ Close(); } diff --git a/clean.bat b/clean.bat new file mode 100644 index 0000000..8acc59c --- /dev/null +++ b/clean.bat @@ -0,0 +1,49 @@ +@echo off +setlocal + +:: Define the directories to clean +set "DIRECTORIES=.\ .\%~dp0Sandbox\ .\%~dp0Engine\" + +:: Define the files and directories to remove +set "REMOVE_TARGETS=CMakeCache.txt CMakeFiles cmake_install.cmake Makefile build bin lib install" + +:: A counter to track if anything was removed +set "CLEANED_SOMETHING=0" + +echo Starting CMake cleanup process... + +:: Loop through each specified directory +for %%d in (%DIRECTORIES%) do ( + echo. + echo Searching for files in: "%%d" + + :: Check if the directory exists + if exist "%%d" ( + :: Loop through each target to remove + for %%t in (%REMOVE_TARGETS%) do ( + :: Use 'if exist' to check for the file or directory before attempting to delete + if exist "%%d%%t" ( + echo - Removing %%d%%t + rd /s /q "%%d%%t" >nul 2>&1 + if not errorlevel 1 ( + set "CLEANED_SOMETHING=1" + ) + ) + ) + ) else ( + echo Warning: Directory not found: "%%d" + ) +) + +echo. +echo Cleanup complete. +echo. + +if %CLEANED_SOMETHING% equ 0 ( + echo No CMake files or directories were found to remove. +) else ( + echo Successfully removed specified CMake build artifacts. +) + +endlocal + diff --git a/compile_commands.json b/compile_commands.json new file mode 100644 index 0000000..0042891 --- /dev/null +++ b/compile_commands.json @@ -0,0 +1,68 @@ +[ +{ + "directory": "/data/data/com.termux/files/home/TextScript/Engine", + "command": "/data/data/com.termux/files/usr/bin/c++ -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -o CMakeFiles/Engine-pch.dir/src/pch.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/pch.cpp", + "file": "/data/data/com.termux/files/home/TextScript/Engine/src/pch.cpp", + "output": "Engine/CMakeFiles/Engine-pch.dir/src/pch.cpp.o" +}, +{ + "directory": "/data/data/com.termux/files/home/TextScript/Engine", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -fpch-instantiate-templates -Xclang -emit-pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -x c++-header -o CMakeFiles/Engine.dir/cmake_pch.hxx.pch -c /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.cxx", + "file": "/data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.cxx", + "output": "Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch" +}, +{ + "directory": "/data/data/com.termux/files/home/TextScript/Engine", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Application.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Application.cpp", + "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Application.cpp", + "output": "Engine/CMakeFiles/Engine.dir/src/Application.cpp.o" +}, +{ + "directory": "/data/data/com.termux/files/home/TextScript/Engine", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Event/Event.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Event/Event.cpp", + "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Event/Event.cpp", + "output": "Engine/CMakeFiles/Engine.dir/src/Event/Event.cpp.o" +}, +{ + "directory": "/data/data/com.termux/files/home/TextScript/Engine", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Event/Keyboard.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Event/Keyboard.cpp", + "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Event/Keyboard.cpp", + "output": "Engine/CMakeFiles/Engine.dir/src/Event/Keyboard.cpp.o" +}, +{ + "directory": "/data/data/com.termux/files/home/TextScript/Engine", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Objects/BaseObject.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Objects/BaseObject.cpp", + "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Objects/BaseObject.cpp", + "output": "Engine/CMakeFiles/Engine.dir/src/Objects/BaseObject.cpp.o" +}, +{ + "directory": "/data/data/com.termux/files/home/TextScript/Engine", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Objects/TextObject.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Objects/TextObject.cpp", + "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Objects/TextObject.cpp", + "output": "Engine/CMakeFiles/Engine.dir/src/Objects/TextObject.cpp.o" +}, +{ + "directory": "/data/data/com.termux/files/home/TextScript/Engine", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/TextScript.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/TextScript.cpp", + "file": "/data/data/com.termux/files/home/TextScript/Engine/src/TextScript.cpp", + "output": "Engine/CMakeFiles/Engine.dir/src/TextScript.cpp.o" +}, +{ + "directory": "/data/data/com.termux/files/home/TextScript/Engine", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/log.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/log.cpp", + "file": "/data/data/com.termux/files/home/TextScript/Engine/src/log.cpp", + "output": "Engine/CMakeFiles/Engine.dir/src/log.cpp.o" +}, +{ + "directory": "/data/data/com.termux/files/home/TextScript/Sandbox", + "command": "/data/data/com.termux/files/usr/bin/c++ -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Sandbox/include -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -Winvalid-pch -fpch-instantiate-templates -Xclang -emit-pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx -x c++-header -o CMakeFiles/Sandbox.dir/cmake_pch.hxx.pch -c /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.cxx", + "file": "/data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.cxx", + "output": "Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.pch" +}, +{ + "directory": "/data/data/com.termux/files/home/TextScript/Sandbox", + "command": "/data/data/com.termux/files/usr/bin/c++ -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Sandbox/include -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx -o CMakeFiles/Sandbox.dir/src/main.cpp.o -c /data/data/com.termux/files/home/TextScript/Sandbox/src/main.cpp", + "file": "/data/data/com.termux/files/home/TextScript/Sandbox/src/main.cpp", + "output": "Sandbox/CMakeFiles/Sandbox.dir/src/main.cpp.o" +} +] \ No newline at end of file diff --git a/run b/run index 8f788f1..9e3e3c4 100755 --- a/run +++ b/run @@ -7,7 +7,7 @@ if [[ -d "$CMAKE_FILES" ]]; then echo "cmake files found" else echo "CMakeFiles not found. running cmake" - cmake . + cmake . -DCMAKE_EXPORT_COMPILE_COMMANDS=ON fi diff --git a/run.bat b/run.bat new file mode 100644 index 0000000..14bbdfc --- /dev/null +++ b/run.bat @@ -0,0 +1,31 @@ +@echo off +setlocal + +set "CMAKE_FILES=.\CMakeFiles" + +if exist "%CMAKE_FILES%" ( + echo cmake files found +) else ( + echo CMakeFiles not found. running cmake + cmake . +) + +if "%~1"=="" ( + echo build and run + echo Usage: %~nx0 ^ + exit /b 1 +) + +set EXECUTABLE_NAME=%~1 + +cls + +type message.txt +echo %EXECUTABLE_NAME% + +cmake --build . + +echo. +echo running App +".\bin\%EXECUTABLE_NAME%.exe" + From f616e78f37f5fc621cdc438f48f08355336cb981 Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Thu, 7 Aug 2025 21:25:56 +0600 Subject: [PATCH 04/20] Fix gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 4b23412..833cedc 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ # Build files /bin /lib -/cache +/.cache # Engine folder /Engine/CMakeCache.txt From cd0113feab4bd0a0a0dd86e2c871e199942ca652 Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Sat, 16 Aug 2025 19:40:46 +0600 Subject: [PATCH 05/20] update README --- README.md | 45 +++++++++++++++++++++++++++++++++++++++++++ compile_commands.json | 22 ++++++++++----------- 2 files changed, 56 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index ff2da49..47833f4 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,51 @@ int main() { return 0; } +``` + +sandbox.h: +```cpp +#pragma once +#include "TextScript.h" + +class Game : public TextScript::Application { +public: + Game(const std::string& name) + : TextScript::Application(name), player("player") {} + + void OnStart() override { + // This function is called once at the start of the application. + LOG_INFO("Application is working"); + LOG_INFO("Object name is " + player.GetName() + " and ID=" + player.GetObjectID()); + player.X = 0; + player.Y = 0; + LOG_INFO("Player position x:" + std::to_string(player.X) + " y:" + std::to_string(player.Y)); + } + + void OnUpdate() override { + // This function is called every frame. + player.Draw(); + RefreshScreen(); + } + + void OnInput(TextScript::KeyboardButtonPressEvent Key) override { + // This function handles keyboard input. + if (Key.GetKeyPress() == "d") { + player.X++; + } + if (Key.GetKeyPress() == "a") { + player.X--; + } + if (Key.GetKeyPress() == "q") { + Close(); // Quits the application. + } + } + +private: + TextScript::TextObject player; +}; + + ``` top level CMakeLists.txt: diff --git a/compile_commands.json b/compile_commands.json index 0042891..7c04a92 100644 --- a/compile_commands.json +++ b/compile_commands.json @@ -1,67 +1,67 @@ [ { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -o CMakeFiles/Engine-pch.dir/src/pch.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/pch.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -I/data/data/com.termux/files/home/TextScript/Engine/include -g -o CMakeFiles/Engine-pch.dir/src/pch.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/pch.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/pch.cpp", "output": "Engine/CMakeFiles/Engine-pch.dir/src/pch.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -fpch-instantiate-templates -Xclang -emit-pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -x c++-header -o CMakeFiles/Engine.dir/cmake_pch.hxx.pch -c /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.cxx", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -fpch-instantiate-templates -Xclang -emit-pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -x c++-header -o CMakeFiles/Engine.dir/cmake_pch.hxx.pch -c /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.cxx", "file": "/data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.cxx", "output": "Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Application.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Application.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Application.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Application.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Application.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/Application.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Event/Event.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Event/Event.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Event/Event.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Event/Event.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Event/Event.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/Event/Event.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Event/Keyboard.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Event/Keyboard.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Event/Keyboard.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Event/Keyboard.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Event/Keyboard.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/Event/Keyboard.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Objects/BaseObject.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Objects/BaseObject.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Objects/BaseObject.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Objects/BaseObject.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Objects/BaseObject.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/Objects/BaseObject.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Objects/TextObject.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Objects/TextObject.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Objects/TextObject.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Objects/TextObject.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Objects/TextObject.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/Objects/TextObject.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/TextScript.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/TextScript.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/TextScript.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/TextScript.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/TextScript.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/TextScript.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/log.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/log.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/log.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/log.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/log.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/log.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Sandbox", - "command": "/data/data/com.termux/files/usr/bin/c++ -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Sandbox/include -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -Winvalid-pch -fpch-instantiate-templates -Xclang -emit-pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx -x c++-header -o CMakeFiles/Sandbox.dir/cmake_pch.hxx.pch -c /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.cxx", + "command": "/data/data/com.termux/files/usr/bin/c++ -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Sandbox/include -I/data/data/com.termux/files/home/TextScript/Engine/include -g -Winvalid-pch -fpch-instantiate-templates -Xclang -emit-pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx -x c++-header -o CMakeFiles/Sandbox.dir/cmake_pch.hxx.pch -c /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.cxx", "file": "/data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.cxx", "output": "Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.pch" }, { "directory": "/data/data/com.termux/files/home/TextScript/Sandbox", - "command": "/data/data/com.termux/files/usr/bin/c++ -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Sandbox/include -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx -o CMakeFiles/Sandbox.dir/src/main.cpp.o -c /data/data/com.termux/files/home/TextScript/Sandbox/src/main.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Sandbox/include -I/data/data/com.termux/files/home/TextScript/Engine/include -g -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx -o CMakeFiles/Sandbox.dir/src/main.cpp.o -c /data/data/com.termux/files/home/TextScript/Sandbox/src/main.cpp", "file": "/data/data/com.termux/files/home/TextScript/Sandbox/src/main.cpp", "output": "Sandbox/CMakeFiles/Sandbox.dir/src/main.cpp.o" } From ff5d2eb740e218b7cef3a0c67c4e8b34bf76c6e7 Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Sat, 16 Aug 2025 20:44:28 +0600 Subject: [PATCH 06/20] Remove small wait from Application.cpp --- Engine/src/Application.cpp | 2 +- compile_commands.json | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Engine/src/Application.cpp b/Engine/src/Application.cpp index d37670d..621dbea 100644 --- a/Engine/src/Application.cpp +++ b/Engine/src/Application.cpp @@ -27,7 +27,7 @@ namespace TextScript { OnInput(Key); } - std::this_thread::sleep_for(std::chrono::milliseconds(100)); // sleep for 0.1 second + } } diff --git a/compile_commands.json b/compile_commands.json index 7c04a92..0042891 100644 --- a/compile_commands.json +++ b/compile_commands.json @@ -1,67 +1,67 @@ [ { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -I/data/data/com.termux/files/home/TextScript/Engine/include -g -o CMakeFiles/Engine-pch.dir/src/pch.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/pch.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -o CMakeFiles/Engine-pch.dir/src/pch.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/pch.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/pch.cpp", "output": "Engine/CMakeFiles/Engine-pch.dir/src/pch.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -fpch-instantiate-templates -Xclang -emit-pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -x c++-header -o CMakeFiles/Engine.dir/cmake_pch.hxx.pch -c /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.cxx", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -fpch-instantiate-templates -Xclang -emit-pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -x c++-header -o CMakeFiles/Engine.dir/cmake_pch.hxx.pch -c /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.cxx", "file": "/data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.cxx", "output": "Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Application.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Application.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Application.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Application.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Application.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/Application.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Event/Event.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Event/Event.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Event/Event.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Event/Event.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Event/Event.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/Event/Event.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Event/Keyboard.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Event/Keyboard.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Event/Keyboard.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Event/Keyboard.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Event/Keyboard.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/Event/Keyboard.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Objects/BaseObject.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Objects/BaseObject.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Objects/BaseObject.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Objects/BaseObject.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Objects/BaseObject.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/Objects/BaseObject.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Objects/TextObject.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Objects/TextObject.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/Objects/TextObject.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/Objects/TextObject.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/Objects/TextObject.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/Objects/TextObject.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/TextScript.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/TextScript.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/TextScript.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/TextScript.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/TextScript.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/TextScript.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Engine", - "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -g -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/log.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/log.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DEngine_EXPORTS -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -fPIC -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Engine/CMakeFiles/Engine.dir/cmake_pch.hxx -o CMakeFiles/Engine.dir/src/log.cpp.o -c /data/data/com.termux/files/home/TextScript/Engine/src/log.cpp", "file": "/data/data/com.termux/files/home/TextScript/Engine/src/log.cpp", "output": "Engine/CMakeFiles/Engine.dir/src/log.cpp.o" }, { "directory": "/data/data/com.termux/files/home/TextScript/Sandbox", - "command": "/data/data/com.termux/files/usr/bin/c++ -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Sandbox/include -I/data/data/com.termux/files/home/TextScript/Engine/include -g -Winvalid-pch -fpch-instantiate-templates -Xclang -emit-pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx -x c++-header -o CMakeFiles/Sandbox.dir/cmake_pch.hxx.pch -c /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.cxx", + "command": "/data/data/com.termux/files/usr/bin/c++ -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Sandbox/include -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -Winvalid-pch -fpch-instantiate-templates -Xclang -emit-pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx -x c++-header -o CMakeFiles/Sandbox.dir/cmake_pch.hxx.pch -c /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.cxx", "file": "/data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.cxx", "output": "Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.pch" }, { "directory": "/data/data/com.termux/files/home/TextScript/Sandbox", - "command": "/data/data/com.termux/files/usr/bin/c++ -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Sandbox/include -I/data/data/com.termux/files/home/TextScript/Engine/include -g -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx -o CMakeFiles/Sandbox.dir/src/main.cpp.o -c /data/data/com.termux/files/home/TextScript/Sandbox/src/main.cpp", + "command": "/data/data/com.termux/files/usr/bin/c++ -DT_EXPORTS -I/data/data/com.termux/files/home/TextScript/Sandbox/include -I/data/data/com.termux/files/home/TextScript/Engine/include -O2 -g -DNDEBUG -Winvalid-pch -Xclang -include-pch -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /data/data/com.termux/files/home/TextScript/Sandbox/CMakeFiles/Sandbox.dir/cmake_pch.hxx -o CMakeFiles/Sandbox.dir/src/main.cpp.o -c /data/data/com.termux/files/home/TextScript/Sandbox/src/main.cpp", "file": "/data/data/com.termux/files/home/TextScript/Sandbox/src/main.cpp", "output": "Sandbox/CMakeFiles/Sandbox.dir/src/main.cpp.o" } From 8aea2787e0111dcaf4632fb0fd5c726fca417328 Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Mon, 18 Aug 2025 13:31:33 +0600 Subject: [PATCH 07/20] Add image to README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 47833f4..8552542 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # TextScript a conosle base game engine made with C++(Ncurses) and Cmake +![TextScript_Terminal.jpg](https://github.com/user-attachments/assets/8137ed62-85df-4596-95ee-23b9ae4ded08) + ## How to Run first clean any unwanted files ```bash From 6d6b569a32a3b5a407d10205689fc9a230d8c81b Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Mon, 18 Aug 2025 13:35:10 +0600 Subject: [PATCH 08/20] Fix image in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8552542..c226487 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # TextScript a conosle base game engine made with C++(Ncurses) and Cmake -![TextScript_Terminal.jpg](https://github.com/user-attachments/assets/8137ed62-85df-4596-95ee-23b9ae4ded08) +![TextScript Terminal](https://github.com/user-attachments/assets/8137ed62-85df-4596-95ee-23b9ae4ded08) ## How to Run first clean any unwanted files From b26ed80d32f640b7107c9a7c6d11c50e7a304b95 Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Mon, 18 Aug 2025 13:37:48 +0600 Subject: [PATCH 09/20] Fix image in README --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c226487..74105e7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # TextScript a conosle base game engine made with C++(Ncurses) and Cmake -![TextScript Terminal](https://github.com/user-attachments/assets/8137ed62-85df-4596-95ee-23b9ae4ded08) + + ## How to Run first clean any unwanted files From 6b94edb846bb22726d72aa94ae320ba5f67036f7 Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Mon, 18 Aug 2025 13:38:33 +0600 Subject: [PATCH 10/20] Fix image in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 74105e7..2406727 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ a conosle base game engine made with C++(Ncurses) and Cmake - + ## How to Run first clean any unwanted files From 69514043f74966d44bb0b613cc5e03a128c85052 Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Mon, 18 Aug 2025 13:48:44 +0600 Subject: [PATCH 11/20] Fix image in README --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 2406727..5d593f6 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,7 @@ # TextScript a conosle base game engine made with C++(Ncurses) and Cmake - - - +![TextScript]("./.github/TextScript_Terminal.jpg") ## How to Run first clean any unwanted files ```bash From 2aeabdcfcc9150e7d6b675dd9de1b7a1991154cc Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Mon, 18 Aug 2025 13:49:25 +0600 Subject: [PATCH 12/20] Fix image in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d593f6..4fc5e57 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # TextScript a conosle base game engine made with C++(Ncurses) and Cmake -![TextScript]("./.github/TextScript_Terminal.jpg") +![TextScript](.github/TextScript_Terminal.jpg) ## How to Run first clean any unwanted files ```bash From 77267f78d8ec6106d88cb38aac6a85ae87d26759 Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Fri, 22 Aug 2025 19:31:16 +0600 Subject: [PATCH 13/20] docs: Update license, README, and ignore files feat(build): Convert engine to a static library docs: Add screenshots for terminal and update license chore: Add .github directory refactor: Restructure and clean up includes, source files, and build scripts --- .github/TextScript_Terminal.jpg | Bin 0 -> 59279 bytes .gitignore | 0 Engine/CMakeLists.txt | 2 +- Engine/include/Application.h | 0 Engine/include/Event/Event.h | 0 Engine/include/Event/Keyboard.h | 0 Engine/include/Objects/BaseObject.h | 0 Engine/include/Objects/TextObject.h | 0 Engine/include/textscript_api.h | 0 Engine/src/Application.cpp | 0 Engine/src/Event/Event.cpp | 0 Engine/src/Event/Keyboard.cpp | 0 Engine/src/Objects/BaseObject.cpp | 0 Engine/src/Objects/TextObject.cpp | 0 LICENSE | 0 README.md | 0 Sandbox/include/sandbox.h | 0 clean.bat | 0 compile_commands.json | 66 ++++++++++++++-------------- message.txt | 0 run.bat | 0 21 files changed, 34 insertions(+), 34 deletions(-) create mode 100755 .github/TextScript_Terminal.jpg mode change 100644 => 100755 .gitignore mode change 100644 => 100755 Engine/include/Application.h mode change 100644 => 100755 Engine/include/Event/Event.h mode change 100644 => 100755 Engine/include/Event/Keyboard.h mode change 100644 => 100755 Engine/include/Objects/BaseObject.h mode change 100644 => 100755 Engine/include/Objects/TextObject.h mode change 100644 => 100755 Engine/include/textscript_api.h mode change 100644 => 100755 Engine/src/Application.cpp mode change 100644 => 100755 Engine/src/Event/Event.cpp mode change 100644 => 100755 Engine/src/Event/Keyboard.cpp mode change 100644 => 100755 Engine/src/Objects/BaseObject.cpp mode change 100644 => 100755 Engine/src/Objects/TextObject.cpp mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 Sandbox/include/sandbox.h mode change 100644 => 100755 clean.bat mode change 100644 => 100755 compile_commands.json mode change 100644 => 100755 message.txt mode change 100644 => 100755 run.bat diff --git a/.github/TextScript_Terminal.jpg b/.github/TextScript_Terminal.jpg new file mode 100755 index 0000000000000000000000000000000000000000..d4098830ac95ac875953de8f10a9db11ef28c6bf GIT binary patch literal 59279 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 jUm4T*oczDCt@&|Mq9Aafs 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 Date: Fri, 22 Aug 2025 19:34:33 +0600 Subject: [PATCH 14/20] add compile command json to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 833cedc..53ae654 100755 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ /bin /lib /.cache +/compile_commands.json # Engine folder /Engine/CMakeCache.txt From 4978aa2f98001f9bceb8a7135b0acd5757136942 Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Sat, 30 Aug 2025 20:48:20 +0600 Subject: [PATCH 15/20] Remove README's image --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4fc5e57..9187bcb 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # TextScript a conosle base game engine made with C++(Ncurses) and Cmake -![TextScript](.github/TextScript_Terminal.jpg) + ## How to Run first clean any unwanted files ```bash From 78fe0995f0e671bc9f1f01f76f127d1354058c0b Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Mon, 1 Sep 2025 00:41:40 +0600 Subject: [PATCH 16/20] Update Sandbox --- Sandbox/include/sandbox.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Sandbox/include/sandbox.h b/Sandbox/include/sandbox.h index 6a8c275..ea9f8c8 100755 --- a/Sandbox/include/sandbox.h +++ b/Sandbox/include/sandbox.h @@ -1,6 +1,6 @@ #pragma once #include "TextScript.h" -#include + class Game : public TextScript::Application { public: @@ -11,6 +11,7 @@ class Game : public TextScript::Application { LOG_INFO("Application is working"); LOG_INFO("object name is " + player.GetName() + " and id=" + player.GetObjectID()); player.X = 0; + LOG_INFO("player position x:"+ std::to_string(player.X) + " y:"+ std::to_string(player.Y) ); } void OnUpdate() override { @@ -26,8 +27,13 @@ class Game : public TextScript::Application { player.X--; } if (Key.GetKeyPress() == "q"){ - Close(); - + Close(); + } + if (Key.GetKeyPress() == "s"){ + player.Y--; + } + if (Key.GetKeyPress() == "w") { + player.Y++; } } private: From 236820d08e6dc300e02beeda62dbd85611cd7509 Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Tue, 2 Sep 2025 23:06:48 +0600 Subject: [PATCH 17/20] Setup editor uv and flask --- Editor/.gitignore | 1 + Editor/.python-version | 1 + Editor/README.md | 0 Editor/app.py | 6 ++++++ Editor/pyproject.toml | 7 +++++++ 5 files changed, 15 insertions(+) create mode 100755 Editor/.gitignore create mode 100755 Editor/.python-version create mode 100755 Editor/README.md create mode 100755 Editor/app.py create mode 100755 Editor/pyproject.toml diff --git a/Editor/.gitignore b/Editor/.gitignore new file mode 100755 index 0000000..ef81b1e --- /dev/null +++ b/Editor/.gitignore @@ -0,0 +1 @@ +/.venv/ diff --git a/Editor/.python-version b/Editor/.python-version new file mode 100755 index 0000000..e4fba21 --- /dev/null +++ b/Editor/.python-version @@ -0,0 +1 @@ +3.12 diff --git a/Editor/README.md b/Editor/README.md new file mode 100755 index 0000000..e69de29 diff --git a/Editor/app.py b/Editor/app.py new file mode 100755 index 0000000..d8ceb45 --- /dev/null +++ b/Editor/app.py @@ -0,0 +1,6 @@ +def main(): + print("Hello from editor!") + + +if __name__ == "__main__": + main() diff --git a/Editor/pyproject.toml b/Editor/pyproject.toml new file mode 100755 index 0000000..2eacdec --- /dev/null +++ b/Editor/pyproject.toml @@ -0,0 +1,7 @@ +[project] +name = "editor" +version = "0.1.0" +description = "The editor for the TextScript game engine" +readme = "README.md" +requires-python = ">=3.12" +dependencies = [] From c36787864e05f84c289847e6c459c5bf74e46054 Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Tue, 2 Sep 2025 23:15:19 +0600 Subject: [PATCH 18/20] Create Base for flask-editor --- Editor/app.py | 11 +++++++++-- Editor/templates/.gitkeep | 0 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100755 Editor/templates/.gitkeep diff --git a/Editor/app.py b/Editor/app.py index d8ceb45..1a0b6a9 100755 --- a/Editor/app.py +++ b/Editor/app.py @@ -1,6 +1,13 @@ -def main(): - print("Hello from editor!") +from flask import Flask + +app = Flask(__name__) +@app.route("/") +def index(): + return "" + +def main(): + app.run(debug=True) if __name__ == "__main__": main() diff --git a/Editor/templates/.gitkeep b/Editor/templates/.gitkeep new file mode 100755 index 0000000..e69de29 From 4183ce626a3877935e789defdf05b570a93f860b Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Tue, 2 Sep 2025 23:24:54 +0600 Subject: [PATCH 19/20] Install Flask --- Editor/pyproject.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Editor/pyproject.toml b/Editor/pyproject.toml index 2eacdec..062c67a 100755 --- a/Editor/pyproject.toml +++ b/Editor/pyproject.toml @@ -4,4 +4,6 @@ version = "0.1.0" description = "The editor for the TextScript game engine" readme = "README.md" requires-python = ">=3.12" -dependencies = [] +dependencies = [ + "flask==3.1.2", +] From bcdf150bb6456a9175d2fa0e5db77d698af3b5de Mon Sep 17 00:00:00 2001 From: StickyCoolDev Date: Tue, 2 Sep 2025 23:36:28 +0600 Subject: [PATCH 20/20] Create run_editor script and Add gunicron And Update .gitingore --- Editor/.gitignore | 15 ++++ Editor/pyproject.toml | 1 + Editor/uv.lock | 157 ++++++++++++++++++++++++++++++++++++++++++ run_editor | 6 ++ 4 files changed, 179 insertions(+) create mode 100644 Editor/uv.lock create mode 100755 run_editor diff --git a/Editor/.gitignore b/Editor/.gitignore index ef81b1e..69c62a0 100755 --- a/Editor/.gitignore +++ b/Editor/.gitignore @@ -1 +1,16 @@ /.venv/ +.Python +build/ +develop-eggs/ +dist/ +eggs/ +*.egg-info/ +.installed.cfg +*.manifest +*.spec +pycache/ +*.py[cod] +*$py.class +*.so +*.pyd +*.dll diff --git a/Editor/pyproject.toml b/Editor/pyproject.toml index 062c67a..8657695 100755 --- a/Editor/pyproject.toml +++ b/Editor/pyproject.toml @@ -6,4 +6,5 @@ readme = "README.md" requires-python = ">=3.12" dependencies = [ "flask==3.1.2", + "gunicorn>=23.0.0", ] diff --git a/Editor/uv.lock b/Editor/uv.lock new file mode 100644 index 0000000..6c61aa5 --- /dev/null +++ b/Editor/uv.lock @@ -0,0 +1,157 @@ +version = 1 +revision = 3 +requires-python = ">=3.12" + +[[package]] +name = "blinker" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", size = 22460, upload-time = "2024-11-08T17:25:47.436Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458, upload-time = "2024-11-08T17:25:46.184Z" }, +] + +[[package]] +name = "click" +version = "8.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "editor" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "flask" }, + { name = "gunicorn" }, +] + +[package.metadata] +requires-dist = [ + { name = "flask", specifier = "==3.1.2" }, + { name = "gunicorn", specifier = ">=23.0.0" }, +] + +[[package]] +name = "flask" +version = "3.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "click" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "markupsafe" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/6d/cfe3c0fcc5e477df242b98bfe186a4c34357b4847e87ecaef04507332dab/flask-3.1.2.tar.gz", hash = "sha256:bf656c15c80190ed628ad08cdfd3aaa35beb087855e2f494910aa3774cc4fd87", size = 720160, upload-time = "2025-08-19T21:03:21.205Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/f9/7f9263c5695f4bd0023734af91bedb2ff8209e8de6ead162f35d8dc762fd/flask-3.1.2-py3-none-any.whl", hash = "sha256:ca1d8112ec8a6158cc29ea4858963350011b5c846a414cdb7a954aa9e967d03c", size = 103308, upload-time = "2025-08-19T21:03:19.499Z" }, +] + +[[package]] +name = "gunicorn" +version = "23.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/34/72/9614c465dc206155d93eff0ca20d42e1e35afc533971379482de953521a4/gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec", size = 375031, upload-time = "2024-08-10T20:25:27.378Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", size = 85029, upload-time = "2024-08-10T20:25:24.996Z" }, +] + +[[package]] +name = "itsdangerous" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload-time = "2024-04-16T21:28:15.614Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload-time = "2024-04-16T21:28:14.499Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload-time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload-time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload-time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "werkzeug" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925, upload-time = "2024-11-08T15:52:18.093Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498, upload-time = "2024-11-08T15:52:16.132Z" }, +] diff --git a/run_editor b/run_editor new file mode 100755 index 0000000..b186765 --- /dev/null +++ b/run_editor @@ -0,0 +1,6 @@ +#!/bin/bash + +echo "running Server" +cd Editor +uv sync +uv run gunicorn app:app