Added player weapon generation from seed

This commit is contained in:
2025-12-14 17:10:29 +03:00
parent abb680ed53
commit ccf5d4c93b
8 changed files with 50 additions and 20 deletions
+10 -2
View File
@@ -2,7 +2,15 @@ class_name PlayerData
extends Resource
@export var first_weapon_id: String
@export var second_weapon_id: String
@export var weapon_ids: Array[String]
@export var hull: int
var is_new_game: bool = false
func reset() -> void:
weapon_ids.clear()
hull = 0
is_new_game = true
+2
View File
@@ -5,3 +5,5 @@ extends Resource
@export var areas : Array[AreaData] = []
@export var seed_value : int = 0
@export var player_start_weapon_ids: Array[String]
+18
View File
@@ -4,9 +4,16 @@ extends Node
const AREA_COUNT = 3
const WEAPON_GROUPS : Array[Array] = [
[ "gatling", "railgun", "shrapnel", ],
[ "laser", "plasma", "tesla", ],
[ "minelayer", "launcher", "cannon", ],
]
var local_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new()
var area_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new()
var weapon_rng : RandomNumberGenerator = RandomNumberGenerator.new()
@onready var area_generator : AreaGenerator = $AreaGenerator
@@ -15,11 +22,13 @@ var area_seed_rng : RandomNumberGenerator = RandomNumberGenerator.new()
func generate(seed_value: int) -> WorldData:
local_seed_rng.seed = seed_value
area_seed_rng.seed = local_seed_rng.randi()
weapon_rng.seed = local_seed_rng.randi()
var data : WorldData = WorldData.new()
data.seed_value = seed_value
_fill_areas(data)
_fill_weapons(data)
return data
@@ -29,3 +38,12 @@ func _fill_areas(data : WorldData) -> void:
var seed_value := area_seed_rng.randi()
var area := area_generator.generate(seed_value)
data.areas.append(area)
func _fill_weapons(data : WorldData) -> void:
for i in range(WEAPON_GROUPS.size()):
var group := WEAPON_GROUPS[i]
if group.size() == 0: continue
var index := weapon_rng.randi_range(1, group.size()) - 1
data.player_start_weapon_ids.append(group[index])