Equipment类“装备组件”详细使用方法
19天前
Equipment 类是玩家装备系统的核心组件,负责管理装备的穿戴、卸下、属性加成计算等功能,通过与玩家对象和背包组件交互,实现装备系统的完整逻辑。
public function __construct($player)参数:
$player (Player):玩家对象实例,用于关联玩家数据和其他组件初始化流程:
equipment_slots)和装备配置(equipment)public function getEquipAttrs() : array['attack' => 25, 'defense' => 10]缓存机制:
使用示例:
// 获取玩家装备的总属性加成
$totalAttrs = $player->getComponent('Equipment')->getEquipAttrs();
echo "总攻击力加成: " . ($totalAttrs['attack'] ?? 0);public function equip($itemId) : array参数:
$itemId (string):装备ID(需在装备配置中存在)返回值:操作结果数组,包含:
success (bool):操作是否成功msg (string):操作结果描述执行流程:
equipment_equipped 事件使用示例:
// 穿戴木剑
$result = $player->getComponent('Equipment')->equip('wooden_sword');
if ($result['success']) {
echo $result['msg']; // 输出: 成功穿戴【木剑】
} else {
echo "穿戴失败: " . $result['msg'];
}public function unequip($slot) : array参数:
$slot (string):装备槽位标识(如 weapon、armor 等)success 和 msg 字段执行流程:
equipment_unequipped 事件使用示例:
// 卸下武器槽的装备
$result = $player->getComponent('Equipment')->unequip('weapon');
if ($result['success']) {
echo $result['msg']; // 输出: 成功卸下【木剑】
}public function getEquipped() : array返回值:格式化的装备列表,结构如下:
[
'weapon' => [
'slot_name' => '武器',
'equipment' => [
'id' => 'wooden_sword',
'name' => '木剑',
'attrs' => ['attack' => 5]
]
],
'armor' => [
'slot_name' => ' armor',
'equipment' => null // 无装备时为null
]
// 其他槽位...
]使用示例:
$equipped = $player->getComponent('Equipment')->getEquipped();
foreach ($equipped as $slot => $info) {
echo $info['slot_name'] . ": " .
($info['equipment'] ? $info['equipment']['name'] : '无') . "<br>";
}// 序列化:将装备数据转换为可存储格式
public function serialize() : array
// 反序列化:从存储数据恢复装备状态
public function unserialize($data) : void使用示例:
// 保存装备数据
$saveData = $player->getComponent('Equipment')->serialize();
$_SESSION['player_equipment'] = $saveData;
// 恢复装备数据
$equipment = $player->getComponent('Equipment');
$equipment->unserialize($_SESSION['player_equipment']);// 获取原始数据(主要用于调试)
public function getRawData() : array
// 清空缓存(装备变动时自动调用)
private function clearCache() : void装备系统会触发两种事件,可通过 EventManager 监听:
equipment_equipped:装备穿戴成功时触发
player(玩家对象)、equipment_id(装备ID)、equipment(装备配置)equipment_unequipped:装备卸下成功时触发
该类依赖以下配置文件:
equipment_slots.php:定义装备槽位(如武器、 armor等)equipment.php:定义所有装备的详细信息(包含名称、槽位、属性、等级要求等)getEquipped() 获取所有装备信息并展示getEquipAttrs() 获取属性加成,计算玩家总属性equip() 和 unequip() 方法serialize() 和 unserialize() 处理装备数据