extends "res://db/MBase.gd"

var m_value = 0
var m_lock = null
var m_label = null
var m_label_counter = null
var m_tick_reference = 0
var m_key = null
var m_level = null
var m_mesh = null
var m_counter = null
var m_row_id = null

const LOCK_ID = 0
const LABEL_ID = 1
const KEY_ID = 2
const LEVEL_ID = 3
const MESH_ID = 4
const LABEL_COUNTER = 5
const COUNTER_ID = 6

func _init(row_index):
	table = Global.database.get_table_by_name("scenes")
	m_row_id = row_index
	var datas = table.get_data_at_row_idx(m_row_id)
	
	if _get_level(datas) == Global.current_scene_int:
		m_key = _get_key(datas)
		m_lock = _get_lock(datas)
		m_label = _get_label(datas)
		m_label_counter = _get_label_counter(datas)
		m_mesh = _get_mesh(datas)
		m_counter = _get_counter(datas)

func key():
	return m_key

func label():
	return m_label

func label_counter():
	return m_label_counter

func lock():
	return m_lock

func set_lock(value):
	m_lock = _set_data(LOCK_ID, m_row_id, value)

func mesh():
	return m_mesh

func tween():
	return m_mesh + "/Tween"

func set_mesh(value):
	m_mesh = value

func tick_reference():
	return m_tick_reference

func set_tick_reference(value):
	m_tick_reference = value

func value():
	return m_value

func set_value(value):
	m_value = value

func audio_sound():
	var stream = load("res://assets/sounds/objects/" + label() + ".ogg")
	stream.set_loop(false)
	return stream

func counter():
	return m_counter

## PRIVATE
func _get_lock(datas):
	return int(_get_data(datas, LOCK_ID)) as bool

func _get_label(datas):
	return _get_data(datas, LABEL_ID) as String

func _get_key(datas):
	return _get_data(datas, KEY_ID) as String

func _get_level(datas):
	return _get_data(datas, LEVEL_ID) as int

func _get_mesh(datas):
	return "HiddenObjectsItems/" + String(_get_data(datas, MESH_ID))

func _get_label_counter(datas):
	return _get_data(datas, LABEL_COUNTER) as String

func _get_counter(datas):
	return _get_data(datas, COUNTER_ID) as int
