Files
OnlineRpg/include/core/Characters.h
2025-10-26 20:44:58 +08:00

103 lines
1.9 KiB
C++

#pragma once
#include "ICharacter.h"
/**
* @brief 战士职业
*
* 技术点: 多态 (Polymorphism) - 继承和方法重写
* 特点: 高生命值、高防御、物理攻击
*/
class Warrior : public ICharacter {
private:
int m_rage; // 怒气值 (战士特有资源)
int m_maxRage; // 最大怒气值
public:
/**
* @brief 构造函数
* @param name 角色名称
* @param level 等级
*/
Warrior(const std::string& name, int level = 1);
/**
* @brief 析构函数
*/
virtual ~Warrior() {}
/**
* @brief 受到伤害 (重写) - 战士有格挡机制
*/
virtual void takeDamage(int damage) override;
/**
* @brief 治疗 (重写)
*/
virtual void heal(int amount) override;
/**
* @brief 获取怒气值
*/
int getRage() const { return m_rage; }
/**
* @brief 增加怒气值
*/
void addRage(int amount);
/**
* @brief 消耗怒气值
*/
bool consumeRage(int amount);
};
/**
* @brief 法师职业
*
* 技术点: 多态 (Polymorphism) - 继承和方法重写
* 特点: 高魔法值、魔法攻击、低防御
*/
class Mage : public ICharacter {
private:
int m_shield; // 法力护盾
int m_maxShield; // 最大护盾值
public:
/**
* @brief 构造函数
* @param name 角色名称
* @param level 等级
*/
Mage(const std::string& name, int level = 1);
/**
* @brief 析构函数
*/
virtual ~Mage() {}
/**
* @brief 受到伤害 (重写) - 法师有法力护盾机制
*/
virtual void takeDamage(int damage) override;
/**
* @brief 治疗 (重写)
*/
virtual void heal(int amount) override;
/**
* @brief 获取护盾值
*/
int getShield() const { return m_shield; }
/**
* @brief 添加护盾
*/
void addShield(int amount);
/**
* @brief 重置护盾
*/
void resetShield();
};