#pragma once #include "Ability.h" #include "Animation.h" #include "olcPixelGameEngine.h" enum Class{ WARRIOR,THIEF,RANGER,BARD,WIZARD,WITCH }; struct ClassData{ std::string name; Class cl; Ability rightClickAbility,ability1,ability2,ability3; AnimationState walk_n,walk_e,walk_s,walk_w,idle_n,idle_e,idle_s,idle_w; static void InitializeClassData(); ClassData(std::string name,Class cl,Ability rightClickAbility,Ability ability1,Ability ability2,Ability ability3, AnimationState walk_n,AnimationState walk_e,AnimationState walk_s,AnimationState walk_w,AnimationState idle_n,AnimationState idle_e,AnimationState idle_s,AnimationState idle_w); virtual ~ClassData()=default; virtual void Update(float fElapsedTime)=0; virtual bool AutoAttack()=0; virtual bool Ability1()=0; virtual bool Ability2()=0; virtual bool Ability3()=0; virtual bool RightClickAbility()=0; }; struct Warrior:public ClassData{ Warrior(std::string name,Class cl,Ability rightClickAbility,Ability ability1,Ability ability2,Ability ability3, AnimationState walk_n,AnimationState walk_e,AnimationState walk_s,AnimationState walk_w,AnimationState idle_n,AnimationState idle_e,AnimationState idle_s,AnimationState idle_w); void Update(float fElapsedTime)override; bool AutoAttack()override; bool Ability1()override; bool Ability2()override; bool Ability3()override; bool RightClickAbility()override; }; struct Thief:public ClassData{ Thief(std::string name,Class cl,Ability rightClickAbility,Ability ability1,Ability ability2,Ability ability3, AnimationState walk_n,AnimationState walk_e,AnimationState walk_s,AnimationState walk_w,AnimationState idle_n,AnimationState idle_e,AnimationState idle_s,AnimationState idle_w); void Update(float fElapsedTime)override; bool AutoAttack()override; bool Ability1()override; bool Ability2()override; bool Ability3()override; bool RightClickAbility()override; }; struct Ranger:public ClassData{ Ranger(std::string name,Class cl,Ability rightClickAbility,Ability ability1,Ability ability2,Ability ability3, AnimationState walk_n,AnimationState walk_e,AnimationState walk_s,AnimationState walk_w,AnimationState idle_n,AnimationState idle_e,AnimationState idle_s,AnimationState idle_w); void Update(float fElapsedTime)override; bool AutoAttack()override; bool Ability1()override; bool Ability2()override; bool Ability3()override; bool RightClickAbility()override; }; struct Bard:public ClassData{ Bard(std::string name,Class cl,Ability rightClickAbility,Ability ability1,Ability ability2,Ability ability3, AnimationState walk_n,AnimationState walk_e,AnimationState walk_s,AnimationState walk_w,AnimationState idle_n,AnimationState idle_e,AnimationState idle_s,AnimationState idle_w); void Update(float fElapsedTime)override; bool AutoAttack()override; bool Ability1()override; bool Ability2()override; bool Ability3()override; bool RightClickAbility()override; }; struct Wizard:public ClassData{ Wizard(std::string name,Class cl,Ability rightClickAbility,Ability ability1,Ability ability2,Ability ability3, AnimationState walk_n,AnimationState walk_e,AnimationState walk_s,AnimationState walk_w,AnimationState idle_n,AnimationState idle_e,AnimationState idle_s,AnimationState idle_w); void Update(float fElapsedTime)override; bool AutoAttack()override; bool Ability1()override; bool Ability2()override; bool Ability3()override; bool RightClickAbility()override; }; struct Witch:public ClassData{ Witch(std::string name,Class cl,Ability rightClickAbility,Ability ability1,Ability ability2,Ability ability3, AnimationState walk_n,AnimationState walk_e,AnimationState walk_s,AnimationState walk_w,AnimationState idle_n,AnimationState idle_e,AnimationState idle_s,AnimationState idle_w); void Update(float fElapsedTime)override; bool AutoAttack()override; bool Ability1()override; bool Ability2()override; bool Ability3()override; bool RightClickAbility()override; };