savinmax 3f12ce8d3f Add dynamic grid sizing support for levels
- Add gridWidth and gridHeight properties to level configuration
- Update GameGrid to accept custom dimensions instead of using constants
- Modify GridComponent to calculate gem size based on grid dimensions
- Update MatchThreeGame constructor to pass grid dimensions
- Ensure proper scaling and positioning for variable grid sizes
2025-09-21 18:06:00 +02:00

123 lines
2.7 KiB
JSON

{
"levels": [
{
"id": 1,
"name": "Getting Started",
"description": "Learn the basics by reaching the target score",
"gridWidth": 8,
"gridHeight": 8,
"constraints": {
"targetScore": 1000
},
"objectives": {},
"starRating": {
"criteria": "SCORE",
"thresholds": {
"oneStar": 1000,
"twoStar": 1200,
"threeStar": 1500
}
},
"availableGemTypes": [0, 1, 2, 3, 4, 5],
"unlocked": true
},
{
"id": 2,
"name": "Move Master",
"description": "Reach the target score with limited moves",
"gridWidth": 7,
"gridHeight": 9,
"constraints": {
"targetScore": 1500,
"maxMoves": 20
},
"objectives": {},
"starRating": {
"criteria": "MOVES_REMAINING",
"thresholds": {
"oneStar": 0,
"twoStar": 5,
"threeStar": 10
}
},
"availableGemTypes": [0, 1, 2, 3, 4, 5],
"unlocked": false
},
{
"id": 3,
"name": "Time Trial",
"description": "Beat the clock to reach your goal",
"gridWidth": 10,
"gridHeight": 6,
"constraints": {
"targetScore": 2000,
"timeLimit": 60
},
"objectives": {},
"starRating": {
"criteria": "TIME_REMAINING",
"thresholds": {
"oneStar": 0,
"twoStar": 15,
"threeStar": 30
}
},
"availableGemTypes": [0, 1, 2, 3, 4, 5],
"unlocked": false
},
{
"id": 4,
"name": "Color Focus",
"description": "Clear specific gem colors while reaching the score",
"gridWidth": 6,
"gridHeight": 10,
"constraints": {
"targetScore": 1800
},
"objectives": {
"clearGemTypes": {
"0": 15,
"2": 12
}
},
"starRating": {
"criteria": "EFFICIENCY",
"thresholds": {
"oneStar": 1800,
"twoStar": 2200,
"threeStar": 2600
}
},
"availableGemTypes": [0, 1, 2, 3, 4, 5],
"unlocked": false
},
{
"id": 5,
"name": "Ultimate Challenge",
"description": "Master all skills in this combined challenge",
"gridWidth": 9,
"gridHeight": 8,
"constraints": {
"targetScore": 2500,
"maxMoves": 25
},
"objectives": {
"clearGemTypes": {
"1": 8,
"3": 10
}
},
"starRating": {
"criteria": "COMBINED",
"thresholds": {
"oneStar": 2500,
"twoStar": 3000,
"threeStar": 3500
}
},
"availableGemTypes": [0, 1, 2, 3, 4, 5],
"unlocked": false
}
]
}