diff --git a/build.cpp b/build.cpp index 4a07e75..29e1292 100644 --- a/build.cpp +++ b/build.cpp @@ -1,6 +1,5 @@ #define EXT_LINK #define EXT_INC -#define Wextra #include "build.hpp" #include diff --git a/inc/canvas/Canvas.hpp b/inc/canvas/Canvas.hpp index 3ee5920..5d17fb5 100644 --- a/inc/canvas/Canvas.hpp +++ b/inc/canvas/Canvas.hpp @@ -11,6 +11,7 @@ public: void init(int size); void deinit(); void newGen(RenderTexture2D &target, Dna *dna); + bool tick(RenderTexture2D &target); private: BackGround backGround; diff --git a/inc/canvas/Tree.hpp b/inc/canvas/Tree.hpp index 06f9a38..7a6a3e0 100644 --- a/inc/canvas/Tree.hpp +++ b/inc/canvas/Tree.hpp @@ -21,6 +21,7 @@ public: ~Tree() = default; void init(int size); void draw(Dna *dna); + bool tick(); private: Dna *m_dna; diff --git a/inc/values/Dna.hpp b/inc/values/Dna.hpp index 6e3d535..b115ba3 100644 --- a/inc/values/Dna.hpp +++ b/inc/values/Dna.hpp @@ -6,7 +6,7 @@ #include -#define MAX_DEPTH 11 +#define MAX_DEPTH 10 struct uint128 { diff --git a/src/App.cpp b/src/App.cpp index 9239280..8f2f01a 100644 --- a/src/App.cpp +++ b/src/App.cpp @@ -30,7 +30,8 @@ void App::init(int screenWidth, int screenHeight) void App::update() { - if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) + bool isDone = canvas.tick(canvasTexure); + if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && isDone) { Vector2 mouse = GetMousePosition(); if (CheckCollisionPointRec(mouse, disLikeBox)) diff --git a/src/canvas/Canvas.cpp b/src/canvas/Canvas.cpp index 4ef1c14..3f3a180 100644 --- a/src/canvas/Canvas.cpp +++ b/src/canvas/Canvas.cpp @@ -19,6 +19,14 @@ void Canvas::newGen(RenderTexture2D &target, Dna *dna) EndTextureMode(); } +bool Canvas::tick(RenderTexture2D &target) +{ + BeginTextureMode(target); + bool ret = tree.tick(); + EndTextureMode(); + return ret; +} + void Canvas::deinit() { backGround.deinit(); diff --git a/src/canvas/Tree.cpp b/src/canvas/Tree.cpp index 0f93c6c..d54fa46 100644 --- a/src/canvas/Tree.cpp +++ b/src/canvas/Tree.cpp @@ -7,6 +7,8 @@ #include #include +#define ITER_PER_FRAME 5000 + // Public void Tree::init(int size) { @@ -21,12 +23,21 @@ void Tree::draw(Dna *dna) m_dna = dna; draw_calls.push_back({start, 0, (float)size / 4, 1}); +} +bool Tree::tick() +{ + size_t i = 0; while (!draw_calls.empty()) { drawBranch(); draw_calls.pop_front(); + i++; + if (i >= ITER_PER_FRAME) + break; } + + return draw_calls.empty(); } // Private