本文档描述了农场模块对外提供的服务接口,包括土地管理、房屋管理、种子与作物管理等功能。这些接口供其他模块调用,实现跨模块功能集成。
农场模块对外提供以下主要服务类:
/**
* 初始化新用户的农场
* 创建农场记录和初始土地
*
* @param int $userId 用户ID
* @return bool 初始化是否成功
*/
public function initUserFarm(int $userId): bool;
/**
* 获取用户农场概览信息
* 包括房屋等级、土地数量、作物数量等
*
* @param int $userId 用户ID
* @return array 农场概览信息
*/
public function getFarmOverview(int $userId): array;
/**
* 获取用户农场详细信息
* 包括房屋信息、所有土地和作物详情
*
* @param int $userId 用户ID
* @return array 农场详细信息
*/
public function getFarmDetails(int $userId): array;
/**
* 检查并处理农场相关的定时任务
* 包括作物生长、灾害生成、房屋降级等
*
* @return array 处理结果统计
*/
public function processScheduledTasks(): array;
/**
* 获取用户的所有土地
*
* @param int $userId 用户ID
* @return array 土地列表
*/
public function getUserLands(int $userId): array;
/**
* 获取土地详细信息
* 包括当前种植的作物和状态
*
* @param int $landId 土地ID
* @return array 土地详情
*/
public function getLandDetail(int $landId): array;
/**
* 升级土地
*
* @param int $landId 土地ID
* @param int $targetType 目标土地类型
* @return bool 升级是否成功
* @throws Exception 升级失败时抛出异常
*/
public function upgradeLand(int $landId, int $targetType): bool;
/**
* 检查用户是否可以拥有更多特殊土地
*
* @param int $userId 用户ID
* @param int $landType 目标土地类型
* @return bool 是否可以拥有
*/
public function canHaveMoreSpecialLand(int $userId, int $landType): bool;
/**
* 获取用户房屋信息
*
* @param int $userId 用户ID
* @return array 房屋信息
*/
public function getHouseInfo(int $userId): array;
/**
* 升级用户房屋
*
* @param int $userId 用户ID
* @return bool 升级是否成功
* @throws Exception 升级失败时抛出异常
*/
public function upgradeHouse(int $userId): bool;
/**
* 获取房屋升级所需材料
*
* @param int $userId 用户ID
* @return array 升级所需材料
*/
public function getHouseUpgradeMaterials(int $userId): array;
/**
* 检查并处理房屋降级
*
* @param int $userId 用户ID
* @return bool 是否发生降级
*/
public function checkAndProcessHouseDowngrade(int $userId): bool;
/**
* 在指定土地上种植作物
*
* @param int $landId 土地ID
* @param int $seedId 种子ID
* @return array 种植结果
* @throws Exception 种植失败时抛出异常
*/
public function plantCrop(int $landId, int $seedId): array;
/**
* 对作物使用化肥
*
* @param int $cropId 作物ID
* @param int $fertilizerId 化肥物品ID
* @return bool 使用是否成功
* @throws Exception 使用失败时抛出异常
*/
public function useFertilizer(int $cropId, int $fertilizerId): bool;
/**
* 处理作物灾害
*
* @param int $cropId 作物ID
* @param int $disasterType 灾害类型
* @param int $toolId 处理工具物品ID
* @return bool 处理是否成功
* @throws Exception 处理失败时抛出异常
*/
public function handleDisaster(int $cropId, int $disasterType, int $toolId): bool;
/**
* 收获作物
*
* @param int $cropId 作物ID
* @return array 收获结果,包括产出数量
* @throws Exception 收获失败时抛出异常
*/
public function harvestCrop(int $cropId): array;
/**
* 铲除作物
*
* @param int $cropId 作物ID
* @return bool 铲除是否成功
* @throws Exception 铲除失败时抛出异常
*/
public function removeCrop(int $cropId): bool;
/**
* 获取作物状态
*
* @param int $cropId 作物ID
* @return array 作物状态信息
*/
public function getCropStatus(int $cropId): array;
/**
* 获取所有种子列表
*
* @param array $filters 过滤条件
* @return array 种子列表
*/
public function getSeedList(array $filters = []): array;
/**
* 获取种子详细信息
*
* @param int $seedId 种子ID
* @return array 种子详情
*/
public function getSeedDetail(int $seedId): array;
/**
* 处理神秘种子的随机转化
*
* @param int $mysterySeedId 神秘种子ID
* @return int 转化后的种子ID
*/
public function processMysterySeeds(int $mysterySeedId): int;
/**
* 获取用户的种子库存
*
* @param int $userId 用户ID
* @return array 种子库存列表
*/
public function getUserSeedInventory(int $userId): array;
农场模块通过事件系统与其他模块进行松耦合通信。
/**
* 作物种植事件
*
* @param int $userId 用户ID
* @param int $landId 土地ID
* @param int $seedId 种子ID
* @param int $cropId 作物ID
*/
class CropPlantedEvent
/**
* 作物收获事件
*
* @param int $userId 用户ID
* @param int $landId 土地ID
* @param int $cropId 作物ID
* @param int $seedId 种子ID
* @param int $outputAmount 产出数量
*/
class CropHarvestedEvent
/**
* 土地升级事件
*
* @param int $userId 用户ID
* @param int $landId 土地ID
* @param int $oldType 旧土地类型
* @param int $newType 新土地类型
*/
class LandUpgradedEvent
/**
* 房屋升级事件
*
* @param int $userId 用户ID
* @param int $oldLevel 旧等级
* @param int $newLevel 新等级
*/
class HouseUpgradedEvent
/**
* 灾害发生事件
*
* @param int $userId 用户ID
* @param int $cropId 作物ID
* @param int $disasterType 灾害类型
*/
class DisasterOccurredEvent
/**
* 物品变更事件监听器
* 用于处理物品变更对农场的影响
*/
class ItemChangedListener
/**
* 宠物技能使用事件监听器
* 用于处理宠物技能对农场的影响
*/
class PetSkillUsedListener
所有服务方法在遇到错误时会抛出异常,异常类型包括:
调用方需要捕获这些异常并进行适当处理。
try {
$farmService = app(FarmService::class);
$result = $farmService->initUserFarm($userId);
if ($result) {
// 初始化成功
}
} catch (FarmException $e) {
// 处理异常
}
try {
$cropService = app(CropService::class);
$result = $cropService->plantCrop($landId, $seedId);
// 处理种植结果
} catch (CropException $e) {
// 处理异常
}
try {
$cropService = app(CropService::class);
$result = $cropService->harvestCrop($cropId);
// 处理收获结果
} catch (CropException $e) {
// 处理异常
}
try {
$houseService = app(HouseService::class);
$result = $houseService->upgradeHouse($userId);
if ($result) {
// 升级成功
}
} catch (HouseException $e) {
// 处理异常
}