<?php

/**
 * 文件功能：游戏默认配置数据填充器
 *
 * 初始化所有娱乐游戏的默认参数，管理员可在后台修改。
 * 所有游戏默认关闭，需要管理员手动开启。
 *
 * @author  ChatRoom Laravel
 *
 * @version 1.0.0
 */

namespace Database\Seeders;

use App\Models\GameConfig;
use Illuminate\Database\Seeder;

class GameConfigSeeder extends Seeder
{
    /**
     * 填充所有游戏默认配置。
     */
    public function run(): void
    {
        $games = [
            // ─── 百家乐（大小押注）────────────────────────────────────
            [
                'game_key' => 'baccarat',
                'name' => '百家乐',
                'icon' => '🎲',
                'description' => '系统每隔一段时间自动开一局，玩家在倒计时内押注大/小/豹子，骰子结果决定胜负。',
                'enabled' => false,
                'params' => [
                    'interval_minutes' => 2,       // 多少分钟开一局
                    'bet_window_seconds' => 60,      // 每局押注窗口（秒）
                    'min_bet' => 100,     // 最低押注金币
                    'max_bet' => 50000,   // 最高押注金币
                    'payout_big' => 1,       // 大：1:1 赔率
                    'payout_small' => 1,       // 小：1:1 赔率
                    'payout_triple' => 24,      // 豹子：1:24 赔率
                    'kill_points' => [3, 18], // 庄家收割点数（全灭）
                ],
            ],

            // ─── 老虎机 ──────────────────────────────────────────────
            [
                'game_key' => 'slot_machine',
                'name' => '老虎机',
                'icon' => '🎰',
                'description' => '消耗金币转动老虎机，三列图案匹配可获得不同倍率奖励，三个7大奖全服广播。',
                'enabled' => false,
                'params' => [
                    'cost_per_spin' => 100,     // 每次旋转消耗
                    'house_edge_percent' => 15,      // 庄家边际（%）
                    'daily_limit' => 100,     // 每日最多转动次数（0=不限）
                    'jackpot_payout' => 100,     // 三个7 赔率
                    'triple_payout' => 50,      // 三个💎 赔率
                    'same_payout' => 10,      // 其他三同 赔率
                    'pair_payout' => 2,       // 两同 赔率
                    'curse_enabled' => true,    // 是否开启诅咒（三💀扣双倍）
                ],
            ],

            // ─── 神秘箱子 ────────────────────────────────────────────
            [
                'game_key' => 'mystery_box',
                'name' => '神秘箱子',
                'icon' => '📦',
                'description' => '管理员随时投放或系统定时自动投放神秘箱，最快发送暗号的用户开箱获得奖励。',
                'enabled' => false,
                'params' => [
                    'auto_drop_enabled' => false,  // 是否自动定时投放
                    'auto_interval_hours' => 2,      // 自动投放间隔（小时）
                    'claim_window_seconds' => 60,     // 领取窗口（秒）
                    'normal_reward_min' => 500,    // 普通箱最低奖励
                    'normal_reward_max' => 2000,   // 普通箱最高奖励
                    'rare_reward_min' => 5000,   // 稀有箱最低奖励
                    'rare_reward_max' => 20000,  // 稀有箱最高奖励
                    'trap_penalty_min' => 200,    // 黑化箱最低惩罚
                    'trap_penalty_max' => 1000,   // 黑化箱最高惩罚
                    'trap_chance_percent' => 10,     // 黑化箱触发概率（%）
                ],
            ],

            // ─── 赛马竞猜 ────────────────────────────────────────────
            [
                'game_key' => 'horse_racing',
                'name' => '赛马竞猜',
                'icon' => '🐎',
                'description' => '系统定期举办赛马，用户在倒计时内下注，按注池赔率结算，跑马过程 WebSocket 实时播报。',
                'enabled' => false,
                'params' => [
                    'interval_minutes' => 30,      // 多少分钟一场
                    'bet_window_seconds' => 90,      // 押注窗口（秒）
                    'race_duration' => 30,      // 跑马动画时长（秒）
                    'horse_count' => 4,       // 参赛马匹数量
                    'min_bet' => 100,     // 最低押注
                    'max_bet' => 100000,  // 最高押注
                    'seed_pool' => 10000, // 系统初始化资金池
                    'house_take_percent' => 5,       // 庄家抽水（%）
                ],
            ],

            // ─── 神秘占卜 ────────────────────────────────────────────
            [
                'game_key' => 'fortune_telling',
                'name' => '神秘占卜',
                'icon' => '🔮',
                'description' => '每日一次免费占卜，系统生成玄学签文并赋予当日加成效果（幸运/倒霉）。额外占卜消耗金币。',
                'enabled' => false,
                'params' => [
                    'free_count_per_day' => 1,       // 每日免费次数
                    'extra_cost' => 500,     // 额外次数消耗金币
                    'buff_duration_hours' => 24,      // 加成效果持续时间
                    'jackpot_chance' => 5,       // 上上签概率（%）
                    'good_chance' => 20,      // 上签概率（%）
                    'bad_chance' => 20,      // 下签概率（%）
                    'curse_chance' => 5,       // 大凶签概率（%）
                ],
            ],

            // ─── 钓鱼小游戏 ──────────────────────────────────────────────
            [
                'game_key' => 'fishing',
                'name' => '钓鱼小游戏',
                'icon' => '🎣',
                'description' => '消耗金币抛竿，等待浮漂下沉后点击收竿，随机获得奖励或惩罚。持有自动钓鱼卡可自动循环。',
                'enabled' => false,
                'params' => [
                    'fishing_cost' => 5,    // 每次抛竿消耗金币
                    'fishing_wait_min' => 8,    // 浮漂等待最短秒数
                    'fishing_wait_max' => 15,   // 浮漂等待最长秒数
                    'fishing_cooldown' => 300,  // 收竿后冷却秒数
                ],
            ],

            // ─── 双色球彩票 ──────────────────────────────────────────────
            [
                'game_key' => 'lottery',
                'name' => '双色球彩票',
                'icon' => '🎟️',
                'description' => '每日一期，选3红球(1-12)+1蓝球(1-6)，按奖池比例派奖，无一等奖滚存累积。',
                'enabled' => false,
                'params' => [
                    // ── 开奖时间 ──
                    'draw_hour' => 20,    // 每天几点开奖（24小时制）
                    'draw_minute' => 0,     // 几分开奖
                    'stop_sell_minutes' => 2,     // 开奖前几分钟停止购票

                    // ── 购票限制 ──
                    'ticket_price' => 100,   // 每注金币
                    'max_tickets_per_user' => 50,    // 每期单人最多购票注数
                    'max_tickets_per_buy' => 10,    // 单次最多购买注数

                    // ── 奖池分配比例（%）──
                    'pool_ratio' => 70,    // 购票金额进奖池比例
                    'prize_1st_ratio' => 60,    // 一等奖占奖池%
                    'prize_2nd_ratio' => 20,    // 二等奖占奖池%
                    'prize_3rd_ratio' => 10,    // 三等奖占奖池%
                    'carry_ratio' => 10,    // 强制滚存比例%

                    // ── 固定小奖 ──
                    'prize_4th_fixed' => 150,   // 四等奖固定金额/注
                    'prize_5th_fixed' => 50,    // 五等奖固定金额/注

                    // ── 超级期 ──
                    'super_issue_threshold' => 3,     // 连续几期无一等奖触发超级期
                    'super_issue_inject' => 20000, // 超级期系统注入金额上限
                ],
            ],
        ];

        foreach ($games as $game) {
            GameConfig::updateOrCreate(
                ['game_key' => $game['game_key']],
                $game,
            );
        }
    }
}
