201424-农场模块后台土地类型列表增加产出详情列.md 5.2 KB

农场模块后台土地类型列表增加产出详情列

时间: 2025年06月20日 14:24
任务: 在农场模块后台土地类型列表中增加"产出详情"列,展示该土地类型对所有种子产出配置的计算后结果

任务概述

在农场模块后台土地类型管理页面的列表中增加"产出详情"列,用于展示土地类型的产量加成对种子产出的影响效果。

实现内容

1. 分析产出计算逻辑

理解了农场系统的产出计算公式:

最终产量 = 基础产量 × (1 + 土地加成) × (1 + 房屋加成) × (1 - 灾害减产)

其中:

  • 基础产量:从种子产出配置中获取,考虑是否有灾害影响
  • 土地加成:土地类型的 output_bonus 字段
  • 房屋加成:房屋等级的 output_bonus 字段(需要除以100转换为小数)
  • 灾害减产:每个未处理的灾害减产5%

2. 在GridHelper中添加产出详情列方法

app/Module/Farm/AdminControllers/Helper/GridHelperTrait.php 中添加了 columnOutputDetails 方法:

/**
 * 添加产出详情列
 * 
 * 展示土地类型对种子产出的影响,包括基础产出范围和应用土地加成后的产出范围
 */
public function columnOutputDetails(string $field = 'output_details', string $label = '产出详情'): Column
{
    return $this->grid->column($field, $label)->display(function () {
        // 获取当前土地类型的产量加成
        $landOutputBonus = $this->output_bonus ?? 0;
        
        // 获取所有种子的产出配置
        $seedOutputs = \App\Module\Farm\Models\FarmSeedOutput::with(['seed', 'item'])
            ->where('is_default', true)
            ->get()
            ->groupBy('seed_id');
        
        // 生成HTML表格展示产出详情
        // ...
    })->width(300);
}

3. 在FarmLandTypeController中添加产出详情列

app/Module/Farm/AdminControllers/FarmLandTypeController.phpgrid 方法中添加:

// 添加产出详情列
$helper->columnOutputDetails();

4. 修正显示逻辑

根据用户反馈,修正了产出详情列的显示逻辑,改为展示:

  1. 神秘种子产出概率:使用MysterySeeLLogic计算在该土地类型上的产出概率
  2. 普通种子产出:展示固定的种子产出配置
  3. 产量计算:应用土地加成后的实际产量范围

测试结果

通过浏览器访问后台土地类型列表页面,验证了正确的产出详情显示:

神秘种子产出概率

  • 普通土地:萝卜和辣椒各50%概率,其他作物0%
  • 红土地:萝卜和辣椒各47%,苹果和西瓜各3%
  • 黑土地:苹果和西瓜各40%,萝卜和辣椒各8%,草莓和南瓜各2%
  • 金土地:各种作物都有不同的概率分布

产量计算验证

  • 普通土地(100%加成):200-300 → 400-600
  • 红土地(50%加成):200-300 → 300-450
  • 金土地(150%加成):200-300 → 500-750

计算结果正确,使用了服务层逻辑,保持了与实际游戏逻辑的一致性。

代码提交

第一次提交(初始实现)

git add app/Module/Farm/AdminControllers/FarmLandTypeController.php app/Module/Farm/AdminControllers/Helper/GridHelperTrait.php
git commit -m "农场模块:后台土地类型列表增加产出详情列

- 在GridHelperTrait中添加columnOutputDetails方法
- 展示土地类型对种子产出的影响,包括基础产出范围和应用土地加成后的产出范围
- 在FarmLandTypeController中调用新的产出详情列方法
- 产出详情以表格形式展示,包含种子名称、产出物品、基础产出、应用土地加成后的产出
- 添加说明文字提醒用户这只是土地加成效果,实际收获还会受到房屋加成、灾害影响等因素"
git push

第二次提交(修正逻辑)

git add app/Module/Farm/AdminControllers/Helper/GridHelperTrait.php
git commit -m "农场模块:修正后台土地类型产出详情列显示逻辑

- 修改产出详情列展示内容,正确显示该土地类型的作物种类概率和产量
- 神秘种子部分:使用MysterySeeLLogic计算在该土地类型上的产出概率,展示各种作物的概率和应用土地加成后的产量
- 普通种子部分:展示固定的种子产出配置和应用土地加成后的产量
- 使用服务层计算逻辑,保持与实际游戏逻辑的一致性
- 产出详情以表格形式清晰展示,包含概率、基础产量、应用土地加成后的产量"
git push

总结

成功实现了农场模块后台土地类型列表的产出详情列功能。经过用户反馈和修正,现在正确展示:

  1. 神秘种子产出概率:使用服务层MysterySeeLLogic计算各种作物在该土地类型上的产出概率
  2. 普通种子产出:展示固定的种子产出配置
  3. 产量计算:应用土地加成后的实际产量范围

管理员现在可以直观地看到:

  • 该土地类型能产出哪些作物种类及其概率
  • 每种作物的具体产量范围(应用土地加成后)

这为游戏平衡性调整和配置管理提供了重要的数据支持,使用了服务层计算逻辑,保持了与实际游戏逻辑的一致性。