update scarcity
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
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
|
||||
Reference in New Issue
Block a user