支持所有游戏按房间范围配置和运行
This commit is contained in:
@@ -5,7 +5,6 @@
|
||||
@section('content')
|
||||
@php
|
||||
$riddleTypeOptions = \App\Models\Riddle::typeOptions();
|
||||
$availableRooms = \App\Models\Room::orderBy('id')->get();
|
||||
@endphp
|
||||
|
||||
<div class="space-y-6">
|
||||
@@ -88,6 +87,7 @@
|
||||
{{-- 参数配置区域 --}}
|
||||
<div class="p-5">
|
||||
<form action="{{ route('admin.game-configs.params', $game) }}" method="POST"
|
||||
data-game-room-form
|
||||
@if ($game->game_key === 'idiom') data-idiom-config-form @endif>
|
||||
@csrf
|
||||
|
||||
@@ -97,8 +97,9 @@
|
||||
$hiddenLegacyKeys = $game->game_key === 'mystery_box'
|
||||
? ['min_reward', 'max_reward', 'rare_min_reward', 'rare_max_reward']
|
||||
: [];
|
||||
$hiddenConfigKeys = ['room_scope_mode', 'room_ids'];
|
||||
$paramKeys = array_values(array_unique(array_merge(array_keys($labels), array_keys($params))));
|
||||
$paramKeys = array_values(array_filter($paramKeys, fn ($key) => ! in_array($key, $hiddenLegacyKeys, true)));
|
||||
$paramKeys = array_values(array_filter($paramKeys, fn ($key) => ! in_array($key, array_merge($hiddenLegacyKeys, $hiddenConfigKeys), true)));
|
||||
@endphp
|
||||
|
||||
@if ($game->game_key === 'idiom')
|
||||
@@ -108,6 +109,9 @@
|
||||
'riddleTypeOptions' => $riddleTypeOptions,
|
||||
])
|
||||
@else
|
||||
@php
|
||||
$roomScopeConfig = gameRoomScopeConfig($params);
|
||||
@endphp
|
||||
<div class="grid grid-cols-2 gap-4 md:grid-cols-3 lg:grid-cols-4">
|
||||
@foreach ($paramKeys as $paramKey)
|
||||
@php
|
||||
@@ -155,6 +159,14 @@
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<div class="mt-4 border-t border-gray-100 pt-4">
|
||||
@include('admin.game-configs.partials.common-room-scope', [
|
||||
'availableRooms' => $availableRooms,
|
||||
'roomScopeConfig' => $roomScopeConfig,
|
||||
'roomScopeTitle' => '参与房间',
|
||||
])
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="mt-4 flex items-center gap-3">
|
||||
@@ -189,7 +201,7 @@
|
||||
style="padding:8px 16px; background:linear-gradient(135deg,#7f1d1d,#ef4444); color:#fff; border:none; border-radius:8px; font-size:13px; font-weight:700; cursor:pointer; transition:opacity .15s;">
|
||||
☠️ 投放黑化箱
|
||||
</button>
|
||||
<span class="text-xs text-gray-400">直接向 #1 房间投放,立即广播暗号</span>
|
||||
<span class="text-xs text-gray-400">投放到当前配置的首选房间,立即广播暗号。</span>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@@ -461,4 +473,16 @@
|
||||
->all(),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析通用游戏的房间范围配置。
|
||||
*
|
||||
* @return array{room_scope_mode:string,room_ids:array<int, int>}
|
||||
*/
|
||||
function gameRoomScopeConfig(array $params): array
|
||||
{
|
||||
$roomScopeService = app(\App\Services\GameRoomScopeService::class);
|
||||
|
||||
return $roomScopeService->getScopeConfigForParams($params);
|
||||
}
|
||||
@endphp
|
||||
|
||||
Reference in New Issue
Block a user