Nimbin[12]?SDL & Graphics / mapcreator / commits / d252760

mapcreator git · master

SDL3 2.5D game and engine using assets, with map editor

sdl3 c++ game engine map-editor cmake · first commit 2025-10-31 · last commit 2026-09-07 (1 month ago) · synced 3 days ago · upstream: git.ide3.de/hsnr/sdl-spieleentwicklung/map_creator

C++ 99.3%
git clone https://git.christianimmanuel.de/sdl-graphics/mapcreator.gitwget https://git.christianimmanuel.de/sdl-graphics/mapcreator/archive/mapcreator.tar.gz

Fix plant and eat logic

Christian Immanuel · 2026-02-16 21:40 · d2527604a0ab36d376bf61ad1ea52097b55ca9a9

 src/character/character.cpp | 17 +++++++++--------
 src/character/character.hpp |  2 +-
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/character/character.cpp b/src/character/character.cpp
index 2becc67..9519f10 100644
--- a/src/character/character.cpp
+++ b/src/character/character.cpp
@@ -1032,16 +1032,16 @@ Character::cultivate_Stop() {
     set_Status(CharacterStatus::IDLE);
 }
 
-void
+bool
 Character::plant_Start() {
     std::cout << "Plant Start\n";
     if (stamina_Get() <= 0)
-        return;
+        return false;
     if (!Farm::soil_IsMaptile(tile_world))
-        return;
+        return false;
     if (Map::tile_map[static_cast<size_t>(Map::get_IdFromTilePoint(tile_world))].objects.size() > 0) {
         std::cout << "SIZE:: " << Map::tile_map[static_cast<size_t>(Map::get_IdFromTilePoint(tile_world))].objects.size() << std::endl;
-        return;
+        return false;
     }
 
     set_Status(CharacterStatus::PLANTING);
@@ -1051,6 +1051,7 @@ Character::plant_Start() {
     planting_logic.tile_world  = tile_world;
     planting_logic.type        = static_cast<InventoryVegetable*>(selected_item)->type;
     planting_logic.is_seed = !static_cast<InventoryVegetable*>(selected_item)->is_seed;
+    return true;
 }
 
 void
@@ -1792,12 +1793,12 @@ Character::handle_Input(Input& input, SDL_Rect win_size) {
                     switch (selected_item->object_type) {
                         case InventoryObjectType::VEGETABLE:
                         case InventoryObjectType::SEED:
-                            plant_Start();
-                            return;
+                            if (plant_Start())
+                                return;
                         default: break;
                     }
-                } else
-                if (!consuming_logic.is_consuming && selected_item->object_type == InventoryObjectType::VEGETABLE) {
+                }
+                if (!planting_logic.is_planting && !consuming_logic.is_consuming && selected_item->object_type == InventoryObjectType::VEGETABLE) {
                     eat_Start();
                 }
             }
diff --git a/src/character/character.hpp b/src/character/character.hpp
index 9f072c2..6842fbd 100644
--- a/src/character/character.hpp
+++ b/src/character/character.hpp
@@ -289,7 +289,7 @@ class Character {
     void cultivate_Soil();
     void cultivate_Stop();
 
-    void plant_Start();
+    bool plant_Start();
     void plant_Vegetable();
     void plant_Stop();