Added sector selection movement

This commit is contained in:
2025-12-09 18:03:55 +03:00
parent cddd07695d
commit b31b3699ba
5 changed files with 84 additions and 8 deletions
+5
View File
@@ -21,6 +21,11 @@ enum SectorType {
@export var type : SectorType = SectorType.DebrisSector
@export var sector_to_left: SectorData = null
@export var sector_to_right: SectorData = null
@export var sector_above: SectorData = null
@export var sector_below: SectorData = null
var is_active: bool = true:
set(value):
+48
View File
@@ -66,6 +66,8 @@ func _fill_stages(data : AreaData) -> void:
var seed_value := stage_seed_rng.randi()
var stage := stage_generator.generate(seed_value, stage_type)
data.stages.append(stage)
_update_neighbors(data)
func _get_stage_type(stage_index: int) -> StageGenerator.StageType:
@@ -224,3 +226,49 @@ func _get_passage_type(
var key := "%d %d %d" % [from_size, to_size, diff]
return PASSAGE_TYPES.get(key, PassageData.PassageType.ZeroGrad)
func _update_neighbors(data : AreaData) -> void:
for stage_index in range(data.stages.size()):
var stage := data.stages[stage_index]
for sector_index in range(stage.sectors.size()):
var sector := stage.sectors[sector_index]
sector.sector_to_left = _get_left_neighbor(data, stage_index, sector_index)
sector.sector_to_right = _get_right_neighbor(data, stage_index, sector_index)
func _get_left_neighbor(data : AreaData, stage_index: int, sector_index: int) -> SectorData:
if stage_index == 0: return null
var current_stage := data.stages[stage_index]
var left_stage := data.stages[stage_index-1]
return _get_side_neighbor(sector_index, current_stage, left_stage)
func _get_right_neighbor(data : AreaData, stage_index: int, sector_index: int) -> SectorData:
if stage_index == data.stages.size() - 1: return null
var current_stage := data.stages[stage_index]
var right_stage := data.stages[stage_index+1]
return _get_side_neighbor(sector_index, current_stage, right_stage)
func _get_side_neighbor(
sector_index: int, current_stage: StageData, side_stage: StageData
) -> SectorData:
var current_size := current_stage.sectors.size()
var side_size := side_stage.sectors.size()
if side_size == 0:
return null
if current_size == 1:
return side_stage.sectors[floori(side_size / 2.0)]
var normalized_position := float(sector_index) / float(current_size - 1)
var side_index := floori(normalized_position * (side_size - 1))
side_index = clampi(side_index, 0, side_size - 1)
return side_stage.sectors[side_index]
+11 -1
View File
@@ -12,7 +12,7 @@ enum StageType {
const CHANSES_BY_SECTOR_COUNT : Dictionary[int, int] = {
1: 20,
2: 30,
3: 50
3: 50,
}
@@ -48,6 +48,7 @@ func _fill_sectors(data : StageData, type: StageType = StageType.Inner) -> void:
sector.type = SectorData.SectorType.StartSector
StageType.Boss:
sector.type = SectorData.SectorType.BossSector
_update_neighbors(data)
func _get_sector_count() -> int:
@@ -64,3 +65,12 @@ func _get_sector_count() -> int:
return count
return 1
func _update_neighbors(data : StageData) -> void:
var size := data.sectors.size()
for i in range(size):
if i > 0:
data.sectors[i].sector_above = data.sectors[i-1]
if i < size - 1:
data.sectors[i].sector_below = data.sectors[i+1]