form->select($field, $label)->options([ BUFF_TYPE::HARVEST_GOD->value => BUFF_TYPE::getName(BUFF_TYPE::HARVEST_GOD->value), BUFF_TYPE::RAIN_GOD->value => BUFF_TYPE::getName(BUFF_TYPE::RAIN_GOD->value), BUFF_TYPE::WEED_KILLER_GOD->value => BUFF_TYPE::getName(BUFF_TYPE::WEED_KILLER_GOD->value), BUFF_TYPE::PEST_CLEANER_GOD->value => BUFF_TYPE::getName(BUFF_TYPE::PEST_CLEANER_GOD->value), ])->required(); } /** * 添加生长阶段选择 * * @param string $field 字段名 * @param string $label 标签名 * @return Field\Select */ public function selectGrowthStage(string $field = 'growth_stage', string $label = '生长阶段'): Field\Select { return $this->form->select($field, $label)->options([ GROWTH_STAGE::SEED->value => GROWTH_STAGE::getName(GROWTH_STAGE::SEED->value), GROWTH_STAGE::SPROUT->value => GROWTH_STAGE::getName(GROWTH_STAGE::SPROUT->value), GROWTH_STAGE::GROWTH->value => GROWTH_STAGE::getName(GROWTH_STAGE::GROWTH->value), GROWTH_STAGE::MATURE->value => GROWTH_STAGE::getName(GROWTH_STAGE::MATURE->value), GROWTH_STAGE::WITHERED->value => GROWTH_STAGE::getName(GROWTH_STAGE::WITHERED->value), ])->required(); } /** * 添加土地类型选择 * * @param string $field 字段名 * @param string $label 标签名 * @return Field\Select */ public function selectLandType(string $field = 'land_type', string $label = '土地类型'): Field\Select { $options = FarmLandType::pluck('name', 'id')->toArray(); return $this->form->select($field, $label)->options($options)->required(); } /** * 添加种子类型选择 * * @param string $field 字段名 * @param string $label 标签名 * @return Field\Select */ public function selectSeedType(string $field = 'type', string $label = '种子类型'): Field\Select { return $this->form->select($field, $label)->options([ SEED_TYPE::NORMAL->value => SEED_TYPE::getName(SEED_TYPE::NORMAL->value), SEED_TYPE::MYSTERIOUS->value => SEED_TYPE::getName(SEED_TYPE::MYSTERIOUS->value), SEED_TYPE::GIANT->value => SEED_TYPE::getName(SEED_TYPE::GIANT->value), ])->required(); } /** * 添加升级类型选择 * * @param string $field 字段名 * @param string $label 标签名 * @return Field\Select */ public function selectUpgradeType(string $field = 'upgrade_type', string $label = '升级类型'): Field\Select { return $this->form->select($field, $label)->options([ UPGRADE_TYPE::LAND->value => UPGRADE_TYPE::getName(UPGRADE_TYPE::LAND->value), UPGRADE_TYPE::HOUSE->value => UPGRADE_TYPE::getName(UPGRADE_TYPE::HOUSE->value), ])->required(); } /** * 添加种子选择(下拉列表) * * @param string $field 字段名 * @param string $label 标签名 * @return Field\Select */ public function selectSeedDropdown(string $field = 'seed_id', string $label = '种子'): Field\Select { $options = FarmSeed::pluck('name', 'id')->toArray(); return $this->form->select($field, $label)->options($options)->required(); } /** * 添加种子选择(表格选择器) * * @param string $field 字段名 * @param string $label 标签名 * @param int|null $type 种子类型,可选 * @return Field\SelectTable */ public function selectSeed(string $field = 'seed_id', string $label = '种子', ?int $type = null) { $table = \App\Module\Farm\AdminControllers\LazyRenderable\FarmSeedLazyRenderable::make([ 'type' => $type ]); return $this->form->selectTable($field, $label)->from($table) ->title($label) ->dialogWidth('70%') ->model($table->getModel(), $table->getModelSelectId(), $table->getModelViewName()); } /** * 添加是否施肥开关 * * @param string $field 字段名 * @param string $label 标签名 * @return Field\Switch */ public function switchFertilized(string $field = 'fertilized', string $label = '已施肥'): Field\SwitchField { return $this->form->switch($field, $label)->default(false); } /** * 添加产量加成滑块 * * @param string $field 字段名 * @param string $label 标签名 * @return Field\Rate */ public function rateOutputBonus(string $field = 'output_bonus', string $label = '产量加成'): Field\Rate { return $this->form->rate($field, $label)->max(1)->step(0.05)->required(); } /** * 添加灾害抵抗滑块 * * @param string $field 字段名 * @param string $label 标签名 * @return Field\Rate */ public function rateDisasterResistance(string $field = 'disaster_resistance', string $label = '灾害抵抗'): Field\Rate { return $this->form->rate($field, $label)->max(1)->step(0.05)->required(); } /** * 添加是否特殊土地开关 * * @param string $field 字段名 * @param string $label 标签名 * @return Field\Switch */ public function switchIsSpecial(string $field = 'is_special', string $label = '特殊土地'): Field\Switch { return $this->form->switch($field, $label)->default(false); } /** * 添加灾害抵抗表格 * * @param string $field 字段名 * @param string $label 标签名 * @return Field\Table */ public function tableDisasterResistance(string $field = 'disaster_resistance', string $label = '灾害抵抗'): Field\Table { return $this->form->table($field, $label, function (Form\NestedForm $table) { $table->select('type', '灾害类型')->options([ DISASTER_TYPE::DROUGHT->value => DISASTER_TYPE::getName(DISASTER_TYPE::DROUGHT->value), DISASTER_TYPE::PEST->value => DISASTER_TYPE::getName(DISASTER_TYPE::PEST->value), DISASTER_TYPE::WEED->value => DISASTER_TYPE::getName(DISASTER_TYPE::WEED->value), ])->required(); $table->rate('resistance', '抵抗率')->max(1)->step(0.05)->required(); }); } /** * 添加种子产出表格 * * @param string $field 字段名 * @param string $label 标签名 * @return Field\Table */ public function tableSeedOutputs(string $field = 'outputs', string $label = '种子产出'): Field\Table { return $this->form->table($field, $label, function (Form\NestedForm $table) { $table->text('item_id', '物品ID')->required(); $table->text('item_name', '物品名称')->required(); $table->number('min_quantity', '最小数量')->min(1)->default(1)->required(); $table->number('max_quantity', '最大数量')->min(1)->default(1)->required(); $table->rate('probability', '概率')->max(1)->step(0.01)->required(); }); } /** * 添加键值对JSON编辑器 * * @param string $field 字段名 * @param string $label 标签名 * @return Field\KeyValue */ public function formKeyValueJson(string $field, string $label): Field\KeyValue { return $this->form->keyValue($field, $label) ->saving(function ($value) { return json_encode($value, JSON_UNESCAPED_UNICODE); }); } }