Ver código fonte

change to oop

Vincent Stumpf 2 anos atrás
pai
commit
98ac59a940

+ 3 - 19
src/map/skills/skill.hpp

@@ -12,18 +12,11 @@
 constexpr int MAX_SKILL_LEVEL = 13;
 
 
-template <typename T>
 class Skill {
 public:
-	int castend_damage_id() const {
-		return as_underlying().castendDamageId();
-	};
-	int castend_nodamage_id() const {
-		return as_underlying().castendNoDamageId();
-	};
-	int castend_pos2() const {
-		return as_underlying().castendPos2();
-	};
+	virtual int castendDamageId() const;
+	virtual int castendNodamageId() const;
+	virtual int castendPos2() const;
 
 	uint16_t getSkillID() const {
 		return nameid;
@@ -32,20 +25,11 @@ public:
 protected:
 	explicit Skill(e_skill skillid) : nameid(static_cast<uint16_t>(skillid)) {};
 private:
-	friend T;
 
 	uint16_t nameid;
 	std::string name;
 	std::string desc;
 	std::array<int32_t, MAX_SKILL_LEVEL> range;
-
-	inline T& as_underlying() {
-		return static_cast<T&>(*this);
-	}
-
-	inline const T& as_underlying() const {
-		return static_cast<const T&>(*this);
-	}
 };
 
 

+ 2 - 4
src/map/skills/swordsman/bash.hpp

@@ -5,16 +5,14 @@
 #include "../skills.hpp"
 
 
-class Bash : public Skill<Bash> {
+class Bash : public Skill {
 public:
 	int castendDamageId() const {
-		return 0;
+		skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
 	};
 
 	Bash() : Skill(e_skill::SM_BASH) {};
 
-private:
-	friend class Skill<Bash>;
 };
 
 #endif // SKILLS_SWORDSMAN_BASH_HPP

+ 1 - 2
src/map/skills/swordsman/provoke.hpp

@@ -4,7 +4,7 @@
 #include "../skill.hpp"
 
 
-class Provoke : public Skill<Provoke> {
+class Provoke : public Skill {
 public:
 	int castendNoDamageId() const {
 		return 0;
@@ -13,7 +13,6 @@ public:
 	Provoke() : Skill(e_skill::SM_PROVOKE) {};
 
 private:
-	friend class Skill<Provoke>;
 };
 
 #endif // SKILLS_SWORDSMAN_PROVOKE_HPP