feature/templating-level (#74)

Co-authored-by: VAILLANT Jeremy <vaillant.jeremy@dev-crea.com>
Reviewed-on: Athena/game-source#74
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-05 14:11:47 +02:00
parent dee1ee5b1b
commit 213847e95c
23 changed files with 869 additions and 722 deletions
+54 -3
View File
@@ -6,6 +6,10 @@ const OFFSET_CAMERA_MAX = 0.12
const OFFSET_STEP_CHANGE = 0.01
const RAY_LENGTH = 1000
export (PackedScene) var object_first = load("res://scenes/levels/parts/ObjectListFirst.tscn")
export (PackedScene) var object_std = load("res://scenes/levels/parts/ObjectListStandard.tscn")
export (PackedScene) var object_last = load("res://scenes/levels/parts/ObjectListLast.tscn")
onready var gyroscope_value_old = Vector3(0, 0, 0)
onready var table = Global.database.get_table_by_name("scenes")
onready var meshes = {}
@@ -15,11 +19,58 @@ 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
func _ready():
_load_translations()
_load_meshes()
_back_button()
_prepare_victory_condition()
_display_hud_menu()
_play_ambient_sound()
func _back_button():
var _back = $Quit/TextureButton.connect("pressed", Event, "_on_main_scene_pressed")
func _display_hud_menu():
var counter = 0
var scene = null
var label_counter = null
for key in meshes:
scene = meshes[key]
_create_button_info(scene, counter, label_counter)
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():
if Setting.get_setting_ambient_sound():
$AmbientSound.play()
$AmbientSound.stream_paused = false
func _prepare_victory_condition():
var level = mlevel.new(Global.current_scene_int)
@@ -52,7 +103,7 @@ func _clean_mesh(key):
meshes[key].set_mesh(null)
func _check_change_angle_camera():
var camera = $"Main Camera"
var camera = $"MainCamera"
var gyroscope = Input.get_gyroscope()
if camera.h_offset >= -OFFSET_CAMERA_MAX:
@@ -122,7 +173,7 @@ func _start_dissolve(key):
func _check_victory_condition():
if victory_condition == victory_progress:
print("[levels#_check_victory_condition] \\o/")
Global.goto_scene("res://scenes/UI/Ending.tscn")
Global.goto_scene("res://scenes/UI/ending/Ending.tscn")
func _node_to_mesh(key):
return get_node(meshes[key].mesh())
@@ -158,7 +209,7 @@ func _load_meshes():
func _input(event):
if event is InputEventMouseButton or event is InputEventScreenTouch:
var camera = $"Main Camera"
var camera = $"MainCamera"
from = camera.project_ray_origin(event.position)
to = from + camera.project_ray_normal(event.position) * RAY_LENGTH