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:
darknight
2021-06-06 16:54:38 +02:00
parent d3ded14020
commit 1883355678
19 changed files with 376 additions and 532 deletions
+92 -50
View File
@@ -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: