From cbbee7aaa4e47ee7124d54d004708399b1e150e8 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sun, 11 Jun 2023 20:03:30 -0500 Subject: [PATCH] Initial setup of Monster structures --- Crawler/Crawler.vcxproj | 2 + Crawler/Crawler.vcxproj.filters | 6 +++ Crawler/InitialConcept.txt | 65 +++++++++++++++++++++++++++++++++ Crawler/Monster.h | 45 +++++++++++++++++++++++ Crawler/MonsterData.cpp | 10 +++++ Crawler/main.cpp | 8 ++-- Crawler/olcPixelGameEngine.h | 2 + Crawler/olcUTIL_Animate2D.h | 4 +- Crawler/olcUTIL_Camera2D.h | 4 +- Crawler/olcUTIL_Geometry2D.h | 4 +- 10 files changed, 144 insertions(+), 6 deletions(-) create mode 100644 Crawler/InitialConcept.txt create mode 100644 Crawler/Monster.h create mode 100644 Crawler/MonsterData.cpp 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