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
+20 -1
View File
@@ -86,6 +86,21 @@ func _ready() -> void:
selected_sector = _get_random_sector()
func _input(event: InputEvent) -> void:
if selected_sector == null: return
if event.is_action_pressed("ui_left"):
_set_selected_sector(selected_sector.sector_to_left)
if event.is_action_pressed("ui_right"):
_set_selected_sector(selected_sector.sector_to_right)
if event.is_action_pressed("ui_up"):
_set_selected_sector(selected_sector.sector_above)
if event.is_action_pressed("ui_down"):
_set_selected_sector(selected_sector.sector_below)
if event.is_action_pressed("ui_accept"):
_load_text_test()
func _set_area_data(data: AreaData) -> void:
area_data = data
@@ -185,6 +200,8 @@ func _clear_node(node: Node) -> void:
func _set_current_sector(sector: SectorData) -> void:
if sector == null: return
if not sector in sector_positions:
current_sector_indicator.hide()
return
@@ -199,6 +216,8 @@ func _set_current_sector(sector: SectorData) -> void:
func _set_selected_sector(sector: SectorData) -> void:
if sector == null: return
if not sector in sector_positions:
selected_sector_indicator.hide()
return
@@ -229,7 +248,7 @@ func _is_sector_accessible(sector: SectorData) -> bool:
return false
func _on_test_timer_timeout() -> void:
func _load_text_test() -> void:
test_seed += 1
area_data = test_area_generator.generate(test_seed)
current_sector = _get_random_sector()
-6
View File
@@ -17,9 +17,3 @@ script = ExtResource("1_hkcry")
[node name="SelectedSectorIndicator" parent="." instance=ExtResource("3_oxnrh")]
[node name="TestAreaGenerator" parent="." instance=ExtResource("2_0o0gd")]
[node name="TestTimer" type="Timer" parent="."]
wait_time = 10.0
autostart = true
[connection signal="timeout" from="TestTimer" to="." method="_on_test_timer_timeout"]
+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]