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

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 ignore Character if out of range AND decrease max walk distance

Christian Immanuel · 2026-02-18 16:41 · d6ee3504e0f1978b92b475383eb9ef82dd7c7008

 src/character/enemy.cpp    | 10 +++++++---
 src/game/state_playing.cpp |  3 +++
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/character/enemy.cpp b/src/character/enemy.cpp
index 4e054af..cf60789 100644
--- a/src/character/enemy.cpp
+++ b/src/character/enemy.cpp
@@ -953,7 +953,7 @@ Enemy::set_MoveLogic(EnemyMovingType& type, Character& player) {
             int chance_move_far = rand() % 10;
             if (chance_move_far < 3) {
                 moving_logic.min_distance = 100;
-                moving_logic.max_distance = 240;
+                moving_logic.max_distance = 140;
             } else {
                 moving_logic.min_distance = 50;
                 moving_logic.max_distance = 101;
@@ -1000,8 +1000,12 @@ Enemy::Update(Character& player) {
     point_in_reach = false;
 
     is_character_in_range = character_InRange(player.collider_world);
-    if (!is_character_in_range && stats.is_attacking)
+    if (!is_character_in_range && moving_logic.move_type == EnemyMovingType::CHARACTER) {
+        next_moves.clear();
+        move_focus = EnemyMovingType::NONE;
+        moving_logic.move_type = EnemyMovingType::NONE;
         attack_Stop();
+     }
 
     // IS DEAD
     if (stats.health <= 0) {
@@ -1015,6 +1019,7 @@ Enemy::Update(Character& player) {
 
     // std::cout << "MVTY " << (int)moving_logic.move_type << std::endl;
     // DECIDE // REDECIDE
+    //std::cout << "WLK " << moving_logic.moving_distance.x << " >= " << moving_logic.max_distance << " || " << moving_logic.moving_distance.y << " >= " << moving_logic.max_distance << std::endl; 
     if ( moving_logic.move_type == EnemyMovingType::NONE || (
           moving_logic.move_type == EnemyMovingType::IDLE &&
           moving_logic.duration <= 0)) {
@@ -1028,7 +1033,6 @@ Enemy::Update(Character& player) {
         return;
     } else
     if (moving_logic.move_type == EnemyMovingType::WALK) {
-        //std::cout << "WLK " << moving_logic.moving_distance.x << " >= " << moving_logic.max_distance << " || " << moving_logic.moving_distance.y << " >= " << moving_logic.max_distance << std::endl; 
         if ( moving_logic.moving_distance.x >= moving_logic.max_distance ||
              moving_logic.moving_distance.y >= moving_logic.max_distance ) {
             moving_logic.move_type = EnemyMovingType::NONE;
diff --git a/src/game/state_playing.cpp b/src/game/state_playing.cpp
index 1f014cb..adc6933 100644
--- a/src/game/state_playing.cpp
+++ b/src/game/state_playing.cpp
@@ -83,6 +83,9 @@ bool StatePlaying::Init(Game* game) {
     // Enemy
     Enemy::enemies.clear();
     Enemy::enemies_to_spawn.clear();
+    Enemy::init_SpawnEnemy(0, WeaponType::SWORD, WeaponMaterial::WOOD, {850, 520}, {16,16,2,false,false,0,1.2});
+    Enemy::init_SpawnEnemy(0, WeaponType::SWORD, WeaponMaterial::WOOD, {450, 520}, {16,16,2,false,false,0,1.2});
+    Enemy::init_SpawnEnemy(0, WeaponType::SWORD, WeaponMaterial::WOOD, {150, 520}, {16,16,2,false,false,0,1.2});
     /*
     Enemy::init_SpawnEnemy(1, WeaponType::SWORD, WeaponMaterial::WOOD, {140, 100}, {6,6,1,false,false,0,1.2});
     Enemy::init_SpawnEnemy(1, WeaponType::SWORD, WeaponMaterial::WOOD, {100,  10}, {6,6,1,false,false,0,1.2});