Files
tekton/scripts/managers/scarcity_manager.gd
T
2026-01-27 03:43:51 +08:00

52 lines
1.0 KiB
GDScript

extends Node
class_name ScarcityManager
# ScarcityManager - Handles weighted random, tile generation for gameplay balance
const TILES = [7, 8, 9, 10]
const SPECIAL_TILES = [11, 12, 13, 14]
# Weights (higher = more common)
# Standard tiles: Heart, Diamond, Star, Coin
const TILE_WEIGHTS = {
7: 100, # Heart
8: 100, # Diamond
9: 100, # Star
10: 100 # Coin
}
# Special tiles: Burn, Spawn, Freeze, Block, Invisible
const SPECIAL_WEIGHTS = {
11: 5,
12: 5,
13: 5,
14: 5
}
static func get_random_tile_id() -> int:
var rng = RandomNumberGenerator.new()
rng.randomize()
var total_weight = 0
var pool = {}
# Add standard tiles
for id in TILE_WEIGHTS:
pool[id] = TILE_WEIGHTS[id]
total_weight += TILE_WEIGHTS[id]
# Add special tiles
for id in SPECIAL_WEIGHTS:
pool[id] = SPECIAL_WEIGHTS[id]
total_weight += SPECIAL_WEIGHTS[id]
var roll = rng.randi_range(0, total_weight - 1)
var current = 0
for id in pool:
current += pool[id]
if roll < current:
return id
return 7 # Fallback to Heart