Skip to content

Commit

Permalink
temp: level select UI
Browse files Browse the repository at this point in the history
  • Loading branch information
akorzunin committed Sep 12, 2024
1 parent ee42f51 commit 8f745a8
Show file tree
Hide file tree
Showing 17 changed files with 117 additions and 21 deletions.
5 changes: 5 additions & 0 deletions project.godot
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,11 @@ ui_pause={
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null)
]
}
ui_reload={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":82,"location":0,"echo":false,"script":null)
]
}

[input_devices]

Expand Down
2 changes: 1 addition & 1 deletion src/components/EndRay.gd
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ enum AngleType {ANGLE_WRONG, ANGLE_OK, ANGLE_GOOD}

func check_angle(v: Vector3) -> AngleType:
var a = AngleType
if pass_vec.angle_to(v) < 0.2:
if pass_vec.angle_to(v) < 0.22:
return a.ANGLE_GOOD
if pass_vec.angle_to(v) < 0.5:
return a.ANGLE_OK
Expand Down
7 changes: 1 addition & 6 deletions src/components/GameProgress.gd
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,10 @@ var time_passed_formated: String:
return loop_timer.get_elapsed_time()
var max_reached_level := 0

static func is_level_up(nodes: int, level: int) -> bool:
match level:
0: return nodes > 10
#1: return nodes > 20
_: return false

func add_one():
figures_passed += 1
if is_level_up(figures_passed, pattern_gen.level):
if LevelPatterns.is_level_up(figures_passed, pattern_gen.level):
G.level_changed.emit(pattern_gen.level + 1)

func reset():
Expand Down
2 changes: 2 additions & 0 deletions src/components/controls/CommonControls.gd
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,5 @@ func _unhandled_input(event: InputEvent) -> void:
toggle_debug_stats.emit(state)
config._on_debug_stats_state(state)
get_viewport().set_input_as_handled()
if event.is_action_pressed('ui_reload'):
G.reload_settings.emit()
11 changes: 11 additions & 0 deletions src/components/controls/MenuControls.gd
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ func get_controlled_node() -> Node3D:
return menuSpawner.get_node("Anchor")
return null




## Get selected menu intem and execute action that item meant to do
func call_menu_action():
var selected = menu_selector.get_selected_item()
Expand All @@ -37,8 +40,16 @@ func call_menu_action():
var action = selected.get("action")
if action == "menu_start_game":
sfx_player.on_action_select.emit()
G.data.level = selected.items.level
else:
sfx_player.on_section_select.emit()
if action == "menu_level_select":
menuSpawner.open_menu_section(
controlledNode,
{items = LevelPatterns.get_menu_levels(G.settings.MAX_LEVEL)}
)
return

if action != "placeholder_action":
actions.call(selected.action)
return
Expand Down
7 changes: 7 additions & 0 deletions src/components/gui/menu/MenuActions.gd
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@ func menu_start_game():
return
Utils.set_scene(self, 'LoopScene')

func menu_level_select():
#if G.settings.MAX_LEVEL == 0:
#start_tutorial()
#return
#show_avaliable_levels()
return

func settings_fps_counter_on():
config.set_fps_counter_state.emit(true)

Expand Down
4 changes: 2 additions & 2 deletions src/components/gui/menu/MenuStruct.gd
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ static var menu_items := {
items = {
1: {
name = "start",
action = "menu_start_game",
action = "menu_level_select",
},
2: {
name = "settings",
Expand Down Expand Up @@ -165,7 +165,7 @@ static var menu_items_emoji := {
items = {
1: {
'name': "🎮",
'action': "menu_start_game",
'action': "menu_level_select",
},
2: {
'name': "⚙️",
Expand Down
64 changes: 61 additions & 3 deletions src/components/level_system/LevelPatterns.gd
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,14 @@ const patterns: Dictionary = {
0: [19, 18],
1: [17, 18],
2: [19, 17],
3: [17, 17, 17],
4: [19, 19],
# level 1
3: [17, 19, 14], # 1 motion
4: [2, 3], # 2 simple motions
5: [13, 7], # 2 motions
# level 2
6: [15, 1, 2],
7: [12, 8],
8: [6, 16],
}

const levels: Dictionary = {
Expand All @@ -15,7 +21,59 @@ const levels: Dictionary = {
random = false,
},
1: {
level_patterns = [3, 4],
level_patterns = [3, 4, 5],
random = true,
# game_speed = 20,
},
2: {
level_patterns = [6, 7, 8],
random = true,
# game_speed = 10,
}
}

static func is_level_up(nodes: int, level: int) -> bool:
match level:
0: return nodes > 10
1: return nodes > 20
_: return false

const menu_levels := {
6: {
name = "tutorial",
action = "menu_start_game",
level = 0,
},
1: {
name = "level 1",
action = "menu_start_game",
level = 1,
},
2: {
name = "level 2",
action = "menu_start_game",
level = 2,
}
}

static func get_menu_levels(max_level: int):
var d = {}
const tutorial_item := {
name = "tutorial",
action = "menu_start_game",
level = 0,
}
if max_level == 0:
return {1: tutorial_item }
var idx = {}
for i in max_level:
idx[max_level - i] = i
for i in range(max_level, 0, -1): # 2, 1
d[max_level - i + 1] = {
name = "level %s" % i,
action = "menu_start_game",
level = i,
}
d[6] = tutorial_item

return d
9 changes: 8 additions & 1 deletion src/components/level_system/PatternGen.gd
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,24 @@ class_name PatternGen
const MAX_LEVEL := 10
enum SpawnMode {TUTORIAL, DEBUG, QUEUE}

@export var level: int = G.settings.DEFAULT_LEVEL:
@export var level: int = 0:
set(val):
level = clamp(0, MAX_LEVEL, val)

var level_queue := LevelQueue.new()

func _ready():
G.level_changed.connect(_on_level_changed)
var l = G.data.get("level")
if l:
level = l
add_patterns()

func _on_level_changed(new_level: int):
var new_gs = LevelPatterns.levels[new_level].get("game_speed")
if new_gs:
G.settings.GAME_SPEED = new_gs
G.reload_settings.emit()
level = new_level

func next_pattern() -> int:
Expand Down
5 changes: 5 additions & 0 deletions src/components/settings/Config.gd
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ func _init() -> void:
func _ready() -> void:
set_fps_counter_state.connect(_on_fps_counter_state)
set_debug_stats_state.connect(_on_debug_stats_state)
G.reload_settings.connect(_on_reload_settings)

func _on_reload_settings():
var gs = SettingsConfig.load_gs(config)
G.settings = gs

func _on_fps_counter_state(state: bool):
G.settings.FPS_COUNTER_ENABLED = state
Expand Down
2 changes: 2 additions & 0 deletions src/components/settings/DefaultConfig.gd
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ const settings = {
SPAWN_MODE=2,
DESPAWNER_MODE=16633,
SCALE_FACTOR=10,
SPAWN_SPEED=10,
GAME_SPEED=10,
ROTATION_SPEED=12,
MAX_LEVEL=0,
},
Expand Down
2 changes: 1 addition & 1 deletion src/components/timers/LoopTimer.gd
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ func _process(delta: float) -> void:
func _on_game_state_changed(old_state: GameStateManager.GameState, new_state: GameStateManager.GameState) -> void:
var gs = GameStateManager.GameState
if new_state == gs.GAME_ACTIVE:
start(10. / G.settings.get("SPAWN_SPEED", 10))
start(10. / (G.settings.SPAWN_SPEED * (G.settings.GAME_SPEED / 10.)))
time_start = Time.get_ticks_msec()
if new_state in [gs.GAME_END, gs.GAME_MENU]:
stop()
Expand Down
3 changes: 3 additions & 0 deletions src/globals.gd
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,6 @@ signal font_changed(new_font: FontType)

@warning_ignore("unused_signal")
signal level_changed(new_level: int)

@warning_ignore("unused_signal")
signal reload_settings()
2 changes: 1 addition & 1 deletion src/models/icosahedron/components/Icosahedron.gd
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func _ready() -> void:

func _on_scale_tick() -> void:
if scaling_enabled:
var sf: float = (G.settings.SCALE_FACTOR + 1000.) / 1000.
var sf: float = ((G.settings.SCALE_FACTOR + 1000. + G.settings.GAME_SPEED)) / 1000.
scale_object_local(Vector3(sf, sf, sf))

func despawn():
Expand Down
5 changes: 3 additions & 2 deletions src/models/icosahedron/shaders/outline_v1.gdshader
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@ void vertex() {

void fragment() {
if (enable) {
ALBEDO = color.rgb;
ALPHA = 0.5;
//ALBEDO = color.rgb;
ALBEDO = vec3(0.);
ALPHA = 0.9;
} else {
ALPHA = 0.;
}
Expand Down
6 changes: 3 additions & 3 deletions src/models/icosahedron/test/variant_test.gd
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ var controlledNode

@onready var pattern_gen: PatternGen = $PatternGen

@export var ROTATION_SPEED: float = G.settings.ROTATION_SPEED
@export var ROTATION_SPEED: float = 12

@export_category("variant settings")
@export var show_face_numbers: bool = true
Expand All @@ -23,9 +23,9 @@ func get_next():
var next_type: int
match spawn_type:
0: next_type = pattern_gen.next_pattern()
1: next_type = randi_range(17, 19)
1: next_type = randi_range(0, 19)
2: next_type = variant_type
print_debug("Spawinig next figure woth type: ", next_type)
print_debug("Spawinig next figure with type: ", next_type)
spawn_next(next_type)

func remove_current():
Expand Down
2 changes: 1 addition & 1 deletion src/models/icosahedron/test/variant_test.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ shader_parameter/bg_color = Color(0.729, 0.902, 0.992, 1)

[node name="VariantTest" type="Node3D"]
script = ExtResource("1_4av47")
spawn_type = 2
spawn_type = 1

[node name="Environment" type="Node3D" parent="."]

Expand Down

0 comments on commit 8f745a8

Please sign in to comment.