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:
+54
-3
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user