26 lines
578 B
GDScript
26 lines
578 B
GDScript
class_name ScarcityController
|
|
extends RefCounted
|
|
|
|
# ScarcityController - Logic for tile generation based on ScarcityModel
|
|
|
|
static func get_random_tile_id() -> int:
|
|
var rng = RandomNumberGenerator.new()
|
|
rng.randomize()
|
|
|
|
var weights = ScarcityModel.get_tile_weights()
|
|
var total_weight = 0
|
|
|
|
# Calculate total weight
|
|
for tile in weights:
|
|
total_weight += weights[tile]
|
|
|
|
var roll = rng.randi_range(0, total_weight - 1)
|
|
var current = 0
|
|
|
|
for tile in weights:
|
|
current += weights[tile]
|
|
if roll < current:
|
|
return tile
|
|
|
|
return ScarcityModel.TILE_HEART # Fallback
|