// packages/feature_game_spider/lib/models/spider_difficulty.dart import 'package:service_api/service_api.dart'; // ๐Ÿ‘ˆ ๊ณตํ†ต GameDifficulty ๋ชจ๋ธ /// ์ŠคํŒŒ์ด๋” ๊ฒŒ์ž„์˜ ๋‚œ์ด๋„ ์ •์˜ class SpiderDifficulty extends GameDifficulty { /// ๋ ˆ๋ฒจ ์ˆœ์„œ (1-9) final int levelIndex; /// ๋ฌด๋Šฌ ์ˆ˜ (1, 2, 4) final int numSuits; /// ์นด๋“œ ๋ถ„๋ฐฐ ๋ฌธ์ž์—ด (์˜ˆ: "4,3") final String numCardsDistribution; const SpiderDifficulty({ required this.levelIndex, required super.name, required super.contextId, required this.numSuits, required this.numCardsDistribution, }); } /// ์•ฑ ์ „์—ญ์—์„œ ์‚ฌ์šฉํ•  ์ŠคํŒŒ์ด๋” ๋‚œ์ด๋„ ๋ชฉ๋ก (์ด 9๊ฐœ) /// (์Šค๋„์ฟ ์˜ AppLevels์™€ ๋™์ผํ•œ ๊ตฌ์กฐ) class SpiderDifficulties { static final List allDifficulties = [ // --- 1 Suit (Easy) --- const SpiderDifficulty( levelIndex: 1, name: '์ž…๋ฌธ (1 Suit)', contextId: 'SPIDER_L1_1SUIT_4-3', numSuits: 1, numCardsDistribution: '4,3', ), const SpiderDifficulty( levelIndex: 2, name: '์ดˆ๊ธ‰ (1 Suit)', contextId: 'SPIDER_L2_1SUIT_5-4', numSuits: 1, numCardsDistribution: '5,4', ), const SpiderDifficulty( levelIndex: 3, name: '์ค‘๊ธ‰ (1 Suit)', contextId: 'SPIDER_L3_1SUIT_6-5', numSuits: 1, numCardsDistribution: '6,5', ), // --- 2 Suits (Medium) --- const SpiderDifficulty( levelIndex: 4, name: '์ƒ๊ธ‰ (2 Suits)', contextId: 'SPIDER_L4_2SUITS_5-4', numSuits: 2, numCardsDistribution: '5,4', ), const SpiderDifficulty( levelIndex: 5, name: '์ „๋ฌธ๊ฐ€ (2 Suits)', contextId: 'SPIDER_L5_2SUITS_6-5', numSuits: 2, numCardsDistribution: '6,5', ), const SpiderDifficulty( levelIndex: 6, name: '๋งˆ์Šคํ„ฐ (2 Suits)', contextId: 'SPIDER_L6_2SUITS_7-6', numSuits: 2, numCardsDistribution: '7,6', ), // --- 4 Suits (Hard) --- const SpiderDifficulty( levelIndex: 7, name: '์ตœ์ƒ๊ธ‰ (4 Suits)', contextId: 'SPIDER_L7_4SUITS_6-5', numSuits: 4, numCardsDistribution: '6,5', ), const SpiderDifficulty( levelIndex: 8, name: '์ง€์˜ฅ (4 Suits)', contextId: 'SPIDER_L8_4SUITS_7-6', numSuits: 4, numCardsDistribution: '7,6', ), const SpiderDifficulty( levelIndex: 9, name: '์ฑ”ํ”ผ์–ธ (4 Suits)', contextId: 'SPIDER_L9_4SUITS_8-7', numSuits: 4, numCardsDistribution: '8,7', ), ]; /// ๋ ˆ๋ฒจ ์ธ๋ฑ์Šค(1-9)๋กœ ๋ ˆ๋ฒจ ์ •๋ณด ์ฐพ๊ธฐ static SpiderDifficulty getLevel(int levelIndex) { if (levelIndex < 1) levelIndex = 1; if (levelIndex > allDifficulties.length) levelIndex = allDifficulties.length; return allDifficulties.firstWhere((level) => level.levelIndex == levelIndex, orElse: () => allDifficulties[0] ); } /// ๋žญํ‚น ํ™”๋ฉด์šฉ ๋งต (ContextId -> ์ด๋ฆ„) static Map get contextIdToNameMap { return { for (var level in allDifficulties) level.contextId : level.name }; } }