grid->column($field, $label)->display(function ($value) {
return BUFF_TYPE::getName($value);
});
}
/**
* 添加灾害类型列
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnDisasterType(string $field = 'disaster_type', string $label = '灾害类型'): Column
{
return $this->grid->column($field, $label)->display(function ($value) {
return DISASTER_TYPE::getName($value);
});
}
/**
* 添加生长阶段列
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnGrowthStage(string $field = 'growth_stage', string $label = '生长阶段'): Column
{
return $this->grid->column($field, $label)->display(function ($value) {
return GROWTH_STAGE::getName($value);
})->label([
GROWTH_STAGE::SEED->value => 'default',
GROWTH_STAGE::SPROUT->value => 'info',
GROWTH_STAGE::GROWTH->value => 'primary',
GROWTH_STAGE::MATURE->value => 'success',
GROWTH_STAGE::WITHERED->value => 'danger',
]);
}
/**
* 添加土地状态列
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnLandStatus(string $field = 'status', string $label = '土地状态'): Column
{
return $this->grid->column($field, $label)->display(function ($value) {
return LAND_STATUS::getName($value);
})->label([
LAND_STATUS::IDLE->value => 'default',
LAND_STATUS::PLANTING->value => 'primary',
LAND_STATUS::DISASTER->value => 'warning',
LAND_STATUS::HARVESTABLE->value => 'success',
LAND_STATUS::WITHERED->value => 'danger',
]);
}
/**
* 添加土地类型列
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnLandType(string $field = 'land_type', string $label = '土地类型'): Column
{
return $this->grid->column($field, $label)->display(function ($value) {
return LAND_TYPE::getName($value);
})->label([
LAND_TYPE::NORMAL->value => 'default',
LAND_TYPE::RED->value => 'danger',
LAND_TYPE::BLACK->value => 'dark',
LAND_TYPE::GOLD->value => 'warning',
LAND_TYPE::BLUE->value => 'info',
LAND_TYPE::PURPLE->value => 'primary',
]);
}
/**
* 添加种子类型列
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnSeedType(string $field = 'type', string $label = '种子类型'): Column
{
return $this->grid->column($field, $label)->display(function ($value) {
return SEED_TYPE::getName($value);
})->label([
SEED_TYPE::NORMAL->value => 'default',
SEED_TYPE::MYSTERIOUS->value => 'primary',
SEED_TYPE::GIANT->value => 'success',
]);
}
/**
* 添加升级类型列
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnUpgradeType(string $field = 'upgrade_type', string $label = '升级类型'): Column
{
return $this->grid->column($field, $label)->display(function ($value) {
return UPGRADE_TYPE::getName($value);
})->label([
UPGRADE_TYPE::LAND->value => 'primary',
UPGRADE_TYPE::HOUSE->value => 'success',
]);
}
/**
* 添加灾害情况列
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnDisasters(string $field = 'disasters', string $label = '灾害情况'): Column
{
return $this->grid->column($field, $label)->display(function ($value) {
if (empty($value)) {
return '无灾害';
}
$disasters = json_decode($value, true);
if (empty($disasters)) {
return '无灾害';
}
$result = [];
foreach ($disasters as $type => $time) {
$disasterName = DISASTER_TYPE::getName((int)$type);
$result[] = $disasterName;
}
return implode('
', $result);
});
}
/**
* 添加是否施肥列
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnFertilized(string $field = 'fertilized', string $label = '已施肥'): Column
{
return $this->grid->column($field, $label)->bool();
}
/**
* 添加产量加成列
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnOutputBonus(string $field = 'output_bonus', string $label = '产量加成'): Column
{
return $this->grid->column($field, $label)->display(function ($value) {
return ($value * 100) . '%';
});
}
/**
* 添加灾害抵抗列
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnDisasterResistance(string $field = 'disaster_resistance', string $label = '灾害抵抗'): Column
{
return $this->grid->column($field, $label)->display(function ($value) {
return ($value * 100) . '%';
});
}
/**
* 添加是否特殊土地列
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnIsSpecial(string $field = 'is_special', string $label = '特殊土地'): Column
{
return $this->grid->column($field, $label)->bool();
}
/**
* 添加种子列
*
* @param string $field 字段名
* @param string $label 标签名
* @param bool $showType 是否显示种子类型
* @return Column
*/
public function columnSeed(string $field = 'seed_id', string $label = '种子', bool $showType = true): Column
{
return $this->grid->column($field, $label)->display(function ($value) use ($showType) {
if (empty($value)) {
return '-';
}
// 尝试获取种子名称
$seed = \App\Module\Farm\Models\FarmSeed::find($value);
if ($seed) {
$html = "{$seed->name}";
if ($showType) {
$typeName = \App\Module\Farm\Enums\SEED_TYPE::getName($seed->type);
$html .= " {$typeName}";
}
// 如果有关联的物品ID,尝试获取物品名称
if ($seed->item_id) {
try {
$item = \App\Module\GameItems\Models\Item::find($seed->item_id);
if ($item) {
$html .= "
物品: {$item->name} (ID: {$item->id})";
}
} catch (\Exception $e) {
// 忽略异常,只是不显示物品信息
}
}
return $html;
}
return $value;
});
}
/**
* 添加物品列
*
* @param string $field 字段名
* @param string $label 标签名
* @param bool $showType 是否显示物品类型
* @return Column
*/
public function columnItem(string $field = 'item_id', string $label = '物品', bool $showType = true): Column
{
return $this->grid->column($field, $label)->display(function ($value) use ($showType) {
if (empty($value)) {
return '-';
}
// 尝试获取物品名称
try {
$item = \App\Module\GameItems\Models\Item::find($value);
if ($item) {
$html = "{$item->name}";
if ($showType && isset($item->type)) {
try {
$typeName = \App\Module\GameItems\Enums\ITEM_TYPE::getName($item->type);
$html .= " {$typeName}";
} catch (\Exception $e) {
// 忽略异常,只是不显示类型信息
}
}
return $html;
}
} catch (\Exception $e) {
// 忽略异常,只是不显示物品信息
}
return $value;
});
}
}