浏览代码

生长周期优化

AI Assistant 6 月之前
父节点
当前提交
47d5c99ea7

+ 6 - 19
app/Module/Farm/AdminControllers/FarmSeedController.php

@@ -48,17 +48,13 @@ class FarmSeedController extends AdminController
             $grid->column('type', '类型')->display(function ($value) {
                 return SEED_TYPE::getName($value);
             })->sortable();
-            $grid->column('seed_time', '种子期时间(秒)')->sortable();
-            $grid->column('sprout_time', '发芽期时间(秒)')->sortable();
-            $grid->column('growth_time', '生长期时间(秒)')->sortable();
-            $grid->column('fruit_time', '果实期时间(秒)')->sortable()->display(function ($value) {
-                if ($value == 0) {
-                    return '0 (跳过)';
-                }
+            $grid->column('seed_time', '种子期时间(秒)')->sortable()->display(function ($value) {
                 return $value . ' (' . gmdate('H:i:s', $value) . ')';
             });
             $grid->column('min_output', '最小产出')->sortable();
             $grid->column('max_output', '最大产出')->sortable();
+            $grid->column('disaster_min_output', '灾害时最小产出')->sortable();
+            $grid->column('disaster_max_output', '灾害时最大产出')->sortable();
             $grid->column('disaster_max_output', '灾害时最大产出')->sortable();
             $grid->column('disaster_min_output', '灾害时最小产出')->sortable();
             $grid->column('item_id', '物品ID')->sortable();
@@ -108,13 +104,7 @@ class FarmSeedController extends AdminController
             $show->field('type', '类型')->as(function ($value) {
                 return SEED_TYPE::getName($value);
             });
-            $show->field('seed_time', '种子期时间(秒)');
-            $show->field('sprout_time', '发芽期时间(秒)');
-            $show->field('growth_time', '生长期时间(秒)');
-            $show->field('fruit_time', '果实期时间(秒)')->as(function ($value) {
-                if ($value == 0) {
-                    return '0 (跳过)';
-                }
+            $show->field('seed_time', '种子期时间(秒)')->as(function ($value) {
                 return $value . ' (' . gmdate('H:i:s', $value) . ')';
             });
             $show->field('min_output', '最小产出');
@@ -145,11 +135,8 @@ class FarmSeedController extends AdminController
                 SEED_TYPE::MYSTERIOUS->value => SEED_TYPE::getName(SEED_TYPE::MYSTERIOUS->value),
                 SEED_TYPE::GIANT->value => SEED_TYPE::getName(SEED_TYPE::GIANT->value),
             ])->required();
-            $form->number('seed_time', '种子期时间(秒)')->min(0)->required();
-            $form->number('sprout_time', '发芽期时间(秒)')->min(0)->required();
-            $form->number('growth_time', '生长期时间(秒)')->min(0)->required();
-            $form->number('fruit_time', '果实期时间(秒)')->min(0)->default(0)
-                ->help('果实期持续时间,单位:秒。设置为0表示跳过果实期,使用果实生长周期配置');
+            $form->number('seed_time', '种子期时间(秒)')->min(0)->required()
+                ->help('种子期持续时间,单位:秒。其他阶段时间请在果实生长周期配置中设置');
             $form->number('min_output', '最小产出')->min(0)->required();
             $form->number('max_output', '最大产出')->min(0)->required();
             $form->number('disaster_max_output', '灾害时最大产出')->min(0)->default(2000)->required()

+ 2 - 4
app/Module/Farm/AdminControllers/Helper/ShowHelperTrait.php

@@ -210,10 +210,8 @@ trait ShowHelperTrait
 
                 // 显示种子属性
                 $html .= "<div class='mt-2'>";
-                $html .= "<small>种子期: {$seed->seed_time}秒 | ";
-                $html .= "发芽期: {$seed->sprout_time}秒 | ";
-                $html .= "生长期: {$seed->growth_time}秒 | ";
-                $html .= "果实期: " . ($seed->fruit_time ?? 0) . "秒</small>";
+                $html .= "<small>种子期: {$seed->seed_time}秒 (" . gmdate('H:i:s', $seed->seed_time) . ")</small>";
+                $html .= "<br><small class='text-muted'>其他阶段时间请查看果实生长周期配置</small>";
                 $html .= "</div>";
 
                 // 如果有关联的物品ID,尝试获取物品名称

+ 0 - 5
app/Module/Farm/Commands/GenerateFarmSeedConfigJson.php

@@ -74,11 +74,6 @@ class GenerateFarmSeedConfigJson extends Command
                     'name' => $seed->name,
                     'type' => $seed->type,
                     'seed_time' => $seed->seed_time,
-                    'sprout_time' => $seed->sprout_time ?? 0,  // 种子级别的发芽期时间
-                    'growth_time' => $seed->growth_time ?? 0,  // 种子级别的生长期时间
-                    'fruit_time' => $seed->fruit_time ?? 0,    // 种子级别的果实期时间
-                    'mature_time' => $seed->mature_time ?? 0,  // 种子级别的成熟期时间
-                    'wither_time' => $seed->wither_time ?? 0,  // 种子级别的枯萎期时间
                     'min_output' => $seed->min_output,
                     'max_output' => $seed->max_output,
                     'disaster_min_output' => $seed->disaster_min_output ?? 0,

+ 7 - 6
app/Module/Farm/Docs/数据库设计.md

@@ -435,12 +435,13 @@ farm_land_upgrade_configs
 初始化基本的种子数据,包括普通种子、神秘种子和巨化种子。
 
 ```sql
-INSERT INTO `farm_seeds` (`id`, `name`, `type`, `seed_time`, `sprout_time`, `growth_time`, `min_output`, `max_output`, `item_id`, `disaster_resistance`) VALUES
-(1, '萝卜种子', 1, 1800, 3600, 7200, 1000, 1500, 2001, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),
-(2, '辣椒种子', 1, 3600, 7200, 14400, 1500, 2000, 2002, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),
-(3, '苹果种子', 1, 7200, 14400, 28800, 2000, 2500, 2003, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),
-(4, '西瓜种子', 1, 10800, 21600, 43200, 2500, 3000, 2004, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),
-(5, '草莓种子', 1, 14400, 28800, 57600, 3000, 3500, 2005, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),
+INSERT INTO `farm_seeds` (`id`, `name`, `type`, `seed_time`, `min_output`, `max_output`, `disaster_min_output`, `disaster_max_output`, `item_id`, `disaster_resistance`) VALUES
+(1, '萝卜种子', 1, 1800, 1000, 1500, 500, 2000, 2001, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),
+(2, '辣椒种子', 1, 1800, 1500, 2000, 500, 2000, 2002, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),
+(3, '苹果种子', 1, 1800, 2000, 2500, 500, 2000, 2003, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),
+(4, '西瓜种子', 1, 1800, 2500, 3000, 500, 2000, 2004, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),
+(5, '草莓种子', 1, 1800, 3000, 3500, 500, 2000, 2005, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),
+(11, '神秘种子', 2, 10800, 1000, 6000, 500, 2000, 2011, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),
 (6, '南瓜种子', 1, 18000, 36000, 72000, 3500, 4000, 2006, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),
 (7, '核桃种子', 1, 21600, 43200, 86400, 4000, 4500, 2007, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),
 (8, '可可种子', 1, 25200, 50400, 100800, 4500, 5000, 2008, '{"drought": 0.05, "pest": 0.05, "weed": 0.05}'),

+ 4 - 8
app/Module/Farm/Docs/生长周期.md

@@ -393,20 +393,16 @@ private function calculateStageEndTime(FarmCrop $crop, int $stage)
             return now()->addSeconds($seed->seed_time);
 
         case GROWTH_STAGE::SPROUT->value:
-            $time = $fruitGrowthCycle ? $fruitGrowthCycle->sprout_time : $seed->sprout_time;
-            return now()->addSeconds($time);
+            return now()->addSeconds($fruitGrowthCycle->sprout_time);
 
         case GROWTH_STAGE::GROWTH->value:
-            $time = $fruitGrowthCycle ? $fruitGrowthCycle->growth_time : $seed->growth_time;
-            return now()->addSeconds($time);
+            return now()->addSeconds($fruitGrowthCycle->growth_time);
 
         case GROWTH_STAGE::FRUIT->value:
-            $time = $fruitGrowthCycle ? $fruitGrowthCycle->fruit_time : ($seed->fruit_time ?? 0);
-            return $time > 0 ? now()->addSeconds($time) : null;
+            return $fruitGrowthCycle->fruit_time > 0 ? now()->addSeconds($fruitGrowthCycle->fruit_time) : null;
 
         case GROWTH_STAGE::MATURE->value:
-            $time = $fruitGrowthCycle ? $fruitGrowthCycle->mature_time : ($seed->mature_time ?? 0);
-            return $time > 0 ? now()->addSeconds($time) : null;
+            return $fruitGrowthCycle->mature_time > 0 ? now()->addSeconds($fruitGrowthCycle->mature_time) : null;
 
         case GROWTH_STAGE::WITHERED->value:
             if ($fruitGrowthCycle && $fruitGrowthCycle->wither_time > 0) {

+ 13 - 12
app/Module/Farm/Docs/种子与作物系统.md

@@ -18,18 +18,19 @@ enum SEED_TYPE: int {
 
 ### 2.2 普通种子列表
 
-| ID | 名称 | 种子期(秒) | 发芽期(秒) | 生长期(秒) | 最小产出 | 最大产出 |
-|----|------|-----------|-----------|-----------|---------|---------|
-| 1 | 萝卜种子 | 1800 | 3600 | 7200 | 1000 | 1500 |
-| 2 | 辣椒种子 | 3600 | 7200 | 14400 | 1500 | 2000 |
-| 3 | 苹果种子 | 7200 | 14400 | 28800 | 2000 | 2500 |
-| 4 | 西瓜种子 | 10800 | 21600 | 43200 | 2500 | 3000 |
-| 5 | 草莓种子 | 14400 | 28800 | 57600 | 3000 | 3500 |
-| 6 | 南瓜种子 | 18000 | 36000 | 72000 | 3500 | 4000 |
-| 7 | 核桃种子 | 21600 | 43200 | 86400 | 4000 | 4500 |
-| 8 | 可可种子 | 25200 | 50400 | 100800 | 4500 | 5000 |
-| 9 | 人参种子 | 28800 | 57600 | 115200 | 5000 | 5500 |
-| 10 | 玫瑰种子 | 32400 | 64800 | 129600 | 5500 | 6000 |
+| ID | 名称 | 种子期(秒) | 最小产出 | 最大产出 | 说明 |
+|----|------|-----------|---------|---------|------|
+| 1 | 萝卜种子 | 1800 | 1000 | 1500 | 其他阶段时间由果实生长周期配置 |
+| 2 | 辣椒种子 | 1800 | 1500 | 2000 | 其他阶段时间由果实生长周期配置 |
+| 3 | 苹果种子 | 1800 | 2000 | 2500 | 其他阶段时间由果实生长周期配置 |
+| 4 | 西瓜种子 | 1800 | 2500 | 3000 | 其他阶段时间由果实生长周期配置 |
+| 5 | 草莓种子 | 1800 | 3000 | 3500 | 其他阶段时间由果实生长周期配置 |
+| 6 | 南瓜种子 | 1800 | 3500 | 4000 | 其他阶段时间由果实生长周期配置 |
+| 7 | 核桃种子 | 1800 | 4000 | 4500 | 其他阶段时间由果实生长周期配置 |
+| 8 | 可可种子 | 1800 | 4500 | 5000 | 其他阶段时间由果实生长周期配置 |
+| 9 | 人参种子 | 1800 | 5000 | 5500 | 其他阶段时间由果实生长周期配置 |
+| 10 | 玫瑰种子 | 1800 | 5500 | 6000 | 其他阶段时间由果实生长周期配置 |
+| 11 | 神秘种子 | 10800 | 1000 | 6000 | 特殊种子,产出随机果实 |
 
 ### 2.3 神秘种子
 

+ 5 - 0
app/Module/Farm/README.md

@@ -118,12 +118,16 @@ app/Module/Farm/
 | seed_time | int | 种子期时间(秒) |
 | min_output | int | 最小产出 |
 | max_output | int | 最大产出 |
+| disaster_min_output | int | 有灾害时最小产出 |
+| disaster_max_output | int | 有灾害时最大产出 |
 | item_id | bigint | 对应的物品ID |
 | disaster_resistance | json | 灾害抵抗 |
 | display_attributes | json | 显示属性 |
 | created_at | timestamp | 创建时间 |
 | updated_at | timestamp | 更新时间 |
 
+**注意**:种子只配置种子期时间,其他阶段时间由果实生长周期配置决定。
+
 ### 5. 果实生长周期表 (farm_fruit_growth_cycles)
 | 字段名 | 类型 | 说明 |
 |--------|------|------|
@@ -131,6 +135,7 @@ app/Module/Farm/
 | fruit_item_id | bigint | 果实物品ID |
 | sprout_time | int | 发芽期时间(秒) |
 | growth_time | int | 成长期时间(秒) |
+| fruit_time | int | 果实期时间(秒) |
 | mature_time | int | 成熟期时间(秒,0表示无限) |
 | wither_time | int | 枯萎期时间(秒,0表示无限) |
 | created_at | timestamp | 创建时间 |