diff --git a/Crawler/Crawler.vcxproj b/Crawler/Crawler.vcxproj
index a47757da..b6427db2 100644
--- a/Crawler/Crawler.vcxproj
+++ b/Crawler/Crawler.vcxproj
@@ -129,6 +129,7 @@
+
@@ -137,6 +138,7 @@
+
diff --git a/Crawler/Crawler.vcxproj.filters b/Crawler/Crawler.vcxproj.filters
index 69ac8a8b..bd1e3320 100644
--- a/Crawler/Crawler.vcxproj.filters
+++ b/Crawler/Crawler.vcxproj.filters
@@ -30,10 +30,16 @@
Header Files
+
+ Header Files
+
Source Files
+
+ Source Files
+
\ No newline at end of file
diff --git a/Crawler/InitialConcept.txt b/Crawler/InitialConcept.txt
new file mode 100644
index 00000000..41fdabb7
--- /dev/null
+++ b/Crawler/InitialConcept.txt
@@ -0,0 +1,65 @@
+Intro:
+Sizes are in proportion to Player Character Size.
+Character in test will be a Warrior Tank kind of character.
+Dungeon map can be just a single corridor for first test.
+Monster Aggro range needs to be figured out.
+Probably better to only spawn Monster if you get close enough to there location.
+I will play Realm of the mad god the next days to check how enemy AI works there.
+I dont want to copy alot of that game but i feel like they are doing combat kinda right.
+
+
+Player Stats
+Hp: 100
+Atk: 10
+Move-Spd.: 100%
+Size: 100%
+Attack Range: 150
+
+Attack Range: 100 Range = 1x Player Character Hitbox
+
+Leftclick: (Auto Attack)
+Cooldown: 0,75 Second
+
+Righclick: (Block)
+Cooldown: 15 Seconds
+Blocks all damage for the next 3 seconds.
+
+Button 1: Ground Slam
+Cooldown: 20 Seconds
+Mana: no Mana during first concept Test
+Dmg: Atk x 2.5 (25 in this case)
+Range: 300 (AoE)
+Location: Center of character.
+
+Monster:
+
+Monster A
+HP: 10
+Atk: 5
+Move-Spd: 110%
+Size: 80%
+Strategie: Runs Towards Player, damage on collision
+
+Monster B
+HP: 30
+Atk: 10
+Move-Spd: 80%
+Size: 100%
+Strategie: Shoots projectiles with 800 Range, tries to stay 600-700 Range away from player, 1 sec. attack cd
+
+Monster C
+HP: 25
+Atk: 10
+Move-Spd: 95%
+Size: 120%
+Strategie: Runs towards player, damage on collision
+
+
+Encounter:
+1: 2x A
+2: 2x A 1x C
+3: 2x B
+4: 3x A 2x B
+5: 2x B 2x C
+6: 5x C
+7: 5x B
\ No newline at end of file
diff --git a/Crawler/Monster.h b/Crawler/Monster.h
new file mode 100644
index 00000000..1979f41a
--- /dev/null
+++ b/Crawler/Monster.h
@@ -0,0 +1,45 @@
+#include "olcPixelGameEngine.h"
+
+enum MonsterStrategy{
+ RUN_TOWARDS,
+ SHOOT_AFAR
+};
+
+struct MonsterData{
+ private:
+ int hp;
+ int atk;
+ float moveSpd;//1.0=100%
+ float size;
+ MonsterStrategy strategy;
+ public:
+ MonsterData(){};
+ MonsterData(int hp,int atk,float moveSpd=1.0f,float size=1.0f,MonsterStrategy strategy=RUN_TOWARDS):
+ hp(hp),atk(atk),moveSpd(moveSpd),size(size),strategy(strategy){}
+ int GetHealth(){
+ return hp;
+ }
+ int GetAttack(){
+ return atk;
+ }
+ float GetMoveSpdMult(){
+ return moveSpd;
+ }
+ float GetSizeMult(){
+ return size;
+ }
+ MonsterStrategy GetAIStrategy(){
+ return strategy;
+ }
+};
+
+enum MonsterName{
+ SLIME_GREEN,
+ SLIME_BLUE,
+ SLIME_RED,
+ SLIME_YELLOW,
+};
+
+struct Monster{
+
+};
\ No newline at end of file
diff --git a/Crawler/MonsterData.cpp b/Crawler/MonsterData.cpp
new file mode 100644
index 00000000..b5e2d3d3
--- /dev/null
+++ b/Crawler/MonsterData.cpp
@@ -0,0 +1,10 @@
+#include "olcPixelGameEngine.h"
+#include "Monster.h"
+
+
+std::mapMONSTER_DATA={
+ {SLIME_GREEN,MonsterData(10,5,1.1f,0.8f,MonsterStrategy::RUN_TOWARDS)},
+ {SLIME_BLUE,MonsterData(30,10,0.8f,1.0f,MonsterStrategy::SHOOT_AFAR)},
+ {SLIME_RED,MonsterData(25,10,0.95f,1.2f,MonsterStrategy::RUN_TOWARDS)},
+ //{SLIME_YELLOW,{}},
+};
\ No newline at end of file
diff --git a/Crawler/main.cpp b/Crawler/main.cpp
index d64fe002..63407959 100644
--- a/Crawler/main.cpp
+++ b/Crawler/main.cpp
@@ -4,12 +4,12 @@
#define OLC_PGEX_TRANSFORMEDVIEW
#include "olcPGEX_TransformedView.h"
#include "olcUTIL_Animate2D.h"
-
-using namespace olc;
-using namespace olc::utils;
+#include "Monster.h"
const vi2d WINDOW_SIZE={24*8,24*8};
+extern std::mapMONSTER_DATA;
+
enum AnimationState{
WALK_S,WALK_E,WALK_N,WALK_W,
IDLE_S,IDLE_E,IDLE_N,IDLE_W
@@ -120,6 +120,8 @@ public:
player.pos={4*24,4*24};
player.UpdateAnimation(IDLE_S);
+
+ std::cout< m_vSequences;
std::unordered_map m_mapStateIndices;
};
-}
\ No newline at end of file
+}
+
+using namespace olc::utils;
\ No newline at end of file
diff --git a/Crawler/olcUTIL_Camera2D.h b/Crawler/olcUTIL_Camera2D.h
index c3d49235..161a293c 100644
--- a/Crawler/olcUTIL_Camera2D.h
+++ b/Crawler/olcUTIL_Camera2D.h
@@ -255,4 +255,6 @@ namespace olc::utils
float m_fLazyFollowRate = 4.0f;
olc::vi2d m_vScreenSize = { 16,15 };
};
-}
\ No newline at end of file
+}
+
+using namespace olc::utils;
\ No newline at end of file
diff --git a/Crawler/olcUTIL_Geometry2D.h b/Crawler/olcUTIL_Geometry2D.h
index 1b7d1be9..b3afe212 100644
--- a/Crawler/olcUTIL_Geometry2D.h
+++ b/Crawler/olcUTIL_Geometry2D.h
@@ -1043,4 +1043,6 @@ namespace olc::utils::geom2d
return {};
}
-}
\ No newline at end of file
+}
+
+using namespace olc::utils;
\ No newline at end of file