#pragma once #include #include "Player.h" INCLUDE_DATA struct ClassInfo{ std::string className; std::string classFullImgName; int baseHealth; int baseAtk; float healthGrowthRate; float atkGrowthRate; Ability*ability1; Ability*ability2; Ability*ability3; Ability*rightClickAbility; }; class classutils{ public: static inline ClassInfo GetClassInfo(std::string className){ ClassInfo data{ DATA.GetProperty(className+".ClassName").GetString(), DATA.GetProperty(className+".FullRender").GetString(), DATA.GetProperty(className+".BaseHealth").GetInt(), DATA.GetProperty(className+".BaseAtk").GetInt(), float(DATA.GetProperty(className+".HealthGrowthRate").GetReal()), float(DATA.GetProperty(className+".AtkGrowthRate").GetReal()) }; if(className=="Warrior"){ data.rightClickAbility=&Warrior::rightClickAbility; data.ability1=&Warrior::ability1; data.ability2=&Warrior::ability2; data.ability3=&Warrior::ability3; }else if(className=="Wizard"){ data.rightClickAbility=&Wizard::rightClickAbility; data.ability1=&Wizard::ability1; data.ability2=&Wizard::ability2; data.ability3=&Wizard::ability3; }else if(className=="Ranger"){ data.rightClickAbility=&Ranger::rightClickAbility; data.ability1=&Ranger::ability1; data.ability2=&Ranger::ability2; data.ability3=&Ranger::ability3; }else if(className=="Trapper"){ data.rightClickAbility=&Trapper::rightClickAbility; data.ability1=&Trapper::ability1; data.ability2=&Trapper::ability2; data.ability3=&Trapper::ability3; }else if(className=="Witch"){ data.rightClickAbility=&Witch::rightClickAbility; data.ability1=&Witch::ability1; data.ability2=&Witch::ability2; data.ability3=&Witch::ability3; }else if(className=="Thief"){ data.rightClickAbility=&Thief::rightClickAbility; data.ability1=&Thief::ability1; data.ability2=&Thief::ability2; data.ability3=&Thief::ability3; }else{ std::cout<<"WARNING! Could not get class info for non-existent class "+className+"!"; throw; } return data; } };