feature/connect-level-and-reset-btn (#77)
Co-authored-by: VAILLANT Jeremy <vaillant.jeremy@dev-crea.com> Reviewed-on: Athena/game-source#77 Co-authored-by: darknight <vaillant.jeremy@dev-crea.com> Co-committed-by: darknight <vaillant.jeremy@dev-crea.com>
This commit is contained in:
+92
-50
@@ -19,20 +19,39 @@ onready var mlevel = load("res://db/MLevel.gd")
|
||||
onready var mscene = load("res://db/MScene.gd")
|
||||
onready var victory_condition = 0
|
||||
onready var victory_progress = 0
|
||||
onready var last_btn = null
|
||||
onready var last_button = null
|
||||
onready var animation_player = null
|
||||
|
||||
func _ready():
|
||||
_load_translations()
|
||||
_load_meshes()
|
||||
_back_button()
|
||||
_prepare_victory_condition()
|
||||
_display_hud_menu()
|
||||
_play_ambient_sound()
|
||||
_load_back_button()
|
||||
_load_prepare_victory_condition()
|
||||
_load_hud_menu()
|
||||
_load_ambient_sound()
|
||||
|
||||
func _back_button():
|
||||
func _load_translations():
|
||||
pass
|
||||
|
||||
func _load_meshes():
|
||||
var scene_detail = null
|
||||
|
||||
for row_index in range(0, table.m_rows_count):
|
||||
scene_detail = mscene.new(row_index)
|
||||
|
||||
if scene_detail.key() != null:
|
||||
meshes[scene_detail.key()] = scene_detail
|
||||
|
||||
func _load_back_button():
|
||||
var _back = $Quit/TextureButton.connect("pressed", Event, "_on_main_scene_pressed")
|
||||
|
||||
func _display_hud_menu():
|
||||
func _load_prepare_victory_condition():
|
||||
var level = mlevel.new(Global.current_scene_int)
|
||||
|
||||
victory_condition = level.object_to_find()
|
||||
victory_progress = level.object_finding()
|
||||
|
||||
func _load_hud_menu():
|
||||
var counter = 0
|
||||
var scene = null
|
||||
var label_counter = null
|
||||
@@ -43,40 +62,69 @@ func _display_hud_menu():
|
||||
label_counter = scene.label_counter()
|
||||
counter = counter + 1
|
||||
|
||||
func _create_button_info(scene, counter, label_counter):
|
||||
var btn = null
|
||||
|
||||
if counter == 0:
|
||||
btn = object_first.instance()
|
||||
elif counter == meshes.size() - 1:
|
||||
btn = object_last.instance()
|
||||
else:
|
||||
btn = object_std.instance()
|
||||
|
||||
if label_counter != null and label_counter == scene.label_counter():
|
||||
last_btn.get_node("Label").set_text(last_btn.get_node("Label").text + " " + String(scene.counter()))
|
||||
last_btn.set_meta("name", scene.label())
|
||||
last_btn.set_meta("counter", scene.counter())
|
||||
last_btn.set_meta("counted", 0)
|
||||
else:
|
||||
$ListObjects/ListContainer.add_child(btn)
|
||||
btn.get_node("Label").set_text(scene.label())
|
||||
btn.set_meta("name", scene.label())
|
||||
btn.set_meta("counter", scene.counter())
|
||||
btn.set_meta("counted", 0)
|
||||
|
||||
last_btn = btn
|
||||
|
||||
func _play_ambient_sound():
|
||||
func _load_ambient_sound():
|
||||
if Setting.get_setting_ambient_sound():
|
||||
$AmbientSound.play()
|
||||
$AmbientSound.stream_paused = false
|
||||
|
||||
func _prepare_victory_condition():
|
||||
var level = mlevel.new(Global.current_scene_int)
|
||||
func _create_button_info(scene, counter, label_counter):
|
||||
var button = _search_button_to_use(counter)
|
||||
var name = scene.label()
|
||||
|
||||
victory_condition = level.object_to_find()
|
||||
victory_progress = level.object_finding()
|
||||
if label_counter != null and label_counter == scene.label_counter():
|
||||
name = last_button.get_node("Label").text + " " + String(scene.counter())
|
||||
_configure_button_object(last_button, scene, name)
|
||||
_create_animation_warning(_get_node_animated().get_node("Label"), name)
|
||||
else:
|
||||
$ListObjects/ListContainer.add_child(button)
|
||||
_configure_button_object(button, scene, name)
|
||||
_create_animation_slide(_get_node_animated(), name)
|
||||
|
||||
last_button = button
|
||||
|
||||
func _get_node_animated():
|
||||
return $ListObjects/ListContainer.get_child($ListObjects/ListContainer.get_child_count() - 1 )
|
||||
|
||||
func _search_button_to_use(counter):
|
||||
if counter == 0:
|
||||
return object_first.instance()
|
||||
elif counter == meshes.size() - 1:
|
||||
return object_last.instance()
|
||||
else:
|
||||
return object_std.instance()
|
||||
|
||||
func _configure_button_object(button, scene, label):
|
||||
button.get_node("Label").set_text(label)
|
||||
button.set_meta("animation", label)
|
||||
button.set_meta("name", scene.label())
|
||||
button.set_meta("counter", scene.counter())
|
||||
button.set_meta("counted", 0)
|
||||
|
||||
func _create_animation_slide(node, name):
|
||||
var animation = Animation.new()
|
||||
var track_index = animation.add_track(Animation.TYPE_BEZIER)
|
||||
var node_element = String(node.get_path()) + ":rect_position:x"
|
||||
|
||||
animation.track_set_path(track_index, node_element)
|
||||
animation.bezier_track_insert_key(track_index, 0.0, 0.0, Vector2(-0.25, 0), Vector2(0.031, 190.492))
|
||||
animation.bezier_track_insert_key(track_index, 1.0, 170, Vector2(-0.349, 2.576), Vector2(0.25, 0))
|
||||
|
||||
$ListObjects/AnimationPlayer.add_animation(name, animation)
|
||||
|
||||
func _create_animation_warning(node, name):
|
||||
var animation = Animation.new()
|
||||
var track_index = animation.add_track(Animation.TYPE_BEZIER)
|
||||
var node_element = String(node.get_path()) + ":rect_position:x"
|
||||
|
||||
animation.track_set_path(track_index, node_element)
|
||||
animation.bezier_track_insert_key(track_index, 0.0, 0.0, Vector2(-0.25, 0), Vector2(0, 78.1))
|
||||
animation.bezier_track_insert_key(track_index, 0.2, 34.9, Vector2(-0.25, 0), Vector2(0, -66))
|
||||
animation.bezier_track_insert_key(track_index, 0.4, 12.1, Vector2(0, 73.2), Vector2(0, -124.8))
|
||||
animation.bezier_track_insert_key(track_index, 0.6, -41.9, Vector2(-0.095, 109.2), Vector2(0.062, -58.8))
|
||||
animation.bezier_track_insert_key(track_index, 0.8, 13.3, Vector2(-0.188, 93.6), Vector2(0.196, 104.4))
|
||||
animation.bezier_track_insert_key(track_index, 1.0, 0.0, Vector2(-0.155, -135.5), Vector2(0.25, 0))
|
||||
|
||||
$ListObjects/AnimationPlayer.add_animation(name, animation)
|
||||
|
||||
func _process(_delta):
|
||||
_check_dissolve_mesh()
|
||||
@@ -172,7 +220,8 @@ func _start_dissolve(key):
|
||||
|
||||
func _check_victory_condition():
|
||||
if victory_condition == victory_progress:
|
||||
print("[levels#_check_victory_condition] \\o/")
|
||||
print("[levels#_check_victory_condition] \\o/\\o/ \\o/ \\o/ \\o/\\o/")
|
||||
print("[levels#_check_victory_condition] Win !!")
|
||||
Global.goto_scene("res://scenes/UI/ending/Ending.tscn")
|
||||
|
||||
func _node_to_mesh(key):
|
||||
@@ -182,30 +231,23 @@ func _node_to_area(key):
|
||||
return get_node(meshes[key].mesh()+"/Area")
|
||||
|
||||
func _node_object_list(key):
|
||||
var animation_played = null
|
||||
|
||||
for child in $ListObjects/ListContainer.get_children():
|
||||
if child.get_meta("name") == meshes[key].label():
|
||||
child.set_meta("counted", child.get_meta("counted") + 1)
|
||||
|
||||
if child.get_meta("counter") == child.get_meta("counted"):
|
||||
child.visible = false
|
||||
animation_played = child.get_meta("name")
|
||||
else:
|
||||
var diff = child.get_meta("counter") - child.get_meta("counted")
|
||||
var txt = child.get_meta("name")
|
||||
if diff != 1:
|
||||
txt = txt + " " + String(diff)
|
||||
animation_played = child.get_meta("animation")
|
||||
child.get_node("Label").set_text(txt)
|
||||
|
||||
func _load_translations():
|
||||
pass
|
||||
|
||||
func _load_meshes():
|
||||
var scene_detail = null
|
||||
|
||||
for row_index in range(0, table.m_rows_count):
|
||||
scene_detail = mscene.new(row_index)
|
||||
|
||||
if scene_detail.key() != null:
|
||||
meshes[scene_detail.key()] = scene_detail
|
||||
|
||||
$ListObjects/AnimationPlayer.queue(animation_played)
|
||||
|
||||
func _input(event):
|
||||
if event is InputEventMouseButton or event is InputEventScreenTouch:
|
||||
|
||||
Reference in New Issue
Block a user