diff --git a/db/MLevel.gd b/db/MLevel.gd new file mode 100644 index 0000000..6b65594 --- /dev/null +++ b/db/MLevel.gd @@ -0,0 +1,31 @@ +extends "res://db/MBase.gd" + +var m_name = null +var m_thumb = null + +func _init(row_idx): + table = Global.database.get_table_by_name("levels") + + var datas = table.get_data_at_row_idx(row_idx) + if true: + m_name = _get_name(datas) + m_thumb = _get_thumb(datas) + +func object_to_find(): + return 25 as String + +func object_finding(): + return 9 as String + +func name(): + return m_name + +func thumbnail(): + return m_thumb + +## PRIVATE +func _get_name(datas): + return _get_data(datas, 0) as String + +func _get_thumb(datas): + return _get_data(datas, 1) as String diff --git a/db/MScene.gd b/db/MScene.gd index d177007..ebdbaee 100644 --- a/db/MScene.gd +++ b/db/MScene.gd @@ -32,15 +32,6 @@ func search_keys(): if m_tick_reference["id"] == null: m_tick_reference["id"] = _get_tick_reference_id(prop_index) -func object(): - return { - "label": m_label, - "lock": m_lock["value"], - "value": m_value["value"], - "tick_reference": m_tick_reference["value"], - "mesh": m_mesh - } - func key(): return m_key diff --git a/db/ahog.json b/db/ahog.json index 2e57850..80b5cd4 100644 --- a/db/ahog.json +++ b/db/ahog.json @@ -14,10 +14,9 @@ "table_name":"levels", "props":[ {"name":"name","type":"3","auto_increment":"0"}, - {"name":"thumb","type":"4","auto_increment":"0"}, - {"name":"resource","type":"4","auto_increment":"0"} + {"name":"thumb","type":"4","auto_increment":"0"} ], - "data":["WarCraft","res://assets/levels/warcraft.jpg","res://scenes/levels/warcraft/WarCraft.tscn"] + "data":["WarCraft","res://assets/levels/warcraft.jpg"] }, { "table_name":"scenes", @@ -33,4 +32,4 @@ "data":["0.0","True","Dagger","0","dagger","0","dagger","0.0","0","Fiole","7788","fiole1","0","fioles/fiole1","1.79","0","Fiole","0","fiole2","0","fioles/fiole2","0.0","0","Fiole","0","fiole3","0","fioles/fiole_socle/fiole3","0.0","0","Spyglass","0","spyglass","0","spyglass","0.0","0","Coins","0","coin1","0","golds/coin1","0.0","0","Coins","0","coin2","0","golds/coin2","0.0","0","Coins","0","coin3","0","golds/coin3","0.0","0","Weapon Gun","0","weapon","0","weapon","0.0","0","Apple","0","apple1","0","apples/apple1","0.0","0","Apple","0","apple2","0","apples/apple2","0.0","0","Apple","0","apple3","0","apples/apple3","0.0","0","Apple","0","apple4","0","apples/apple4","0.0","0","Beer","0","beer","0","beer","0.0","0","SuperDager","0","gadder","1","sm_super_dager"] } ] -} +} \ No newline at end of file diff --git a/scenes/UI/choose_scenes/ChooseScene.gd b/scenes/UI/choose_scenes/ChooseScene.gd index 8fbcdff..440ffc3 100644 --- a/scenes/UI/choose_scenes/ChooseScene.gd +++ b/scenes/UI/choose_scenes/ChooseScene.gd @@ -3,6 +3,8 @@ extends Control export (PackedScene) var template = load("res://scenes/levels/Template.tscn") onready var levels = Array() +onready var mlevel = load("res://db/MLevel.gd") +onready var table = Global.table_levels func _ready(): _apply_scenes() @@ -12,51 +14,16 @@ func _on_warcraft_pressed(): Global.current_scene_int = 0 Global.goto_scene("res://scenes/levels/warcraft/WarCraft.tscn") -func _on_develop_pressed(): - Global.current_scene_int = 1 - Global.goto_scene("res://developers/aurelien/CheckLightmap.tscn") +func _on_reset_level(): + print("Reset level ...") ## PRIVATE func _apply_scenes(): - var table = Global.table_levels - var datas = null - var name = null - var thumb = null - var resource = null - for row_index in range(0, Global.table_levels.m_rows_count): - datas = Global.table_levels.get_data_at_row_idx(row_index) - - for index in range(0, table.get_props_count()): - if name == null: - name = _get_name(index, table, datas) - if thumb == null: - thumb = _get_thumb(index, table, datas) - if resource == null: - resource = _get_resource(index, table, datas) - - _apply_scene(_load_scene(name), - _load_texture(thumb), - _build_path(name), - _build_method(name)) - name = null - thumb = null - resource = null - -func _get_name(index, table, datas): - if table.get_prop_at(index).get_prop_name() == "name": - return datas[index].get_data() - -func _get_thumb(index, table, datas): - if table.get_prop_at(index).get_prop_name() == "thumb": - return datas[index].get_data() - -func _get_resource(index, table, datas): - if table.get_prop_at(index).get_prop_name() == "resource": - return datas[index].get_data() + _apply_scene(mlevel.new(row_index)) func _build_path(name): - return "MarginContainer/HBoxContainer/"+name+"/TextureRect" + return "MarginContainer/HBoxContainer/"+name func _build_method(name): return "_on_"+name.to_lower()+"_pressed" @@ -70,9 +37,17 @@ func _load_scene(name): func _load_texture(thumbnail): return load(thumbnail) -func _apply_scene(instance, thumb, node, method): - $MarginContainer/HBoxContainer.add_child(instance) - var button = get_node(node+"/TextureButton") - button.set_normal_texture(thumb) - button.connect("pressed", self, method) +func _apply_scene(level): + $MarginContainer/HBoxContainer.add_child(_load_scene(level.name())) + var node = _build_path(level.name()) + var select = get_node(node+"/TextureRect/TextureButton") + var reset = get_node(node+"/VBoxContainer/ButtonReset") + var count = get_node(node+"/VBoxContainer/ButtonCount/Label") + + select.set_normal_texture(_load_texture(level.thumbnail())) + select.connect("pressed", self, _build_method(level.name())) + reset.set_disabled(true) + reset.connect("pressed", self, "_on_reset_level") + + count.set_text(level.object_finding()+" / "+level.object_to_find()) diff --git a/scenes/levels/levels.gd b/scenes/levels/levels.gd index 8cb17ec..b3f7864 100644 --- a/scenes/levels/levels.gd +++ b/scenes/levels/levels.gd @@ -9,11 +9,9 @@ const RAY_LENGTH = 1000 onready var gyroscope_value_old = Vector3(0, 0, 0) onready var table = Global.database.get_table_by_name("scenes") onready var meshes = {} -onready var meshes2 = null onready var from = null onready var to = null - -var mscene = load("res://db/MScene.gd") +onready var mscene = load("res://db/MScene.gd") func _ready(): _load_translations()