project-villain/tiles/base_tile/tile.gd

120 lines
2.1 KiB
GDScript

extends Node3D
var id = null
var _debug_sel_mode = {
1: "not selected",
2: "room select",
3: "build select",
4: "invalid select"
}
var _debug_con_mode = {
1: "non interactalble",
2: "closed",
3: "open",
4: "built",
5: "reinforced",
6: "under construction"
}
var _debug_face_mode = {
1: "none",
2: "full",
3: "partial",
4: "door"
}
# list of objects contained within
var construction_mode = 0
var selection_mode = 0
var orange = preload("res://tiles/base_tile/orange.tres")
var gray = preload("res://tiles/base_tile/gray.tres")
var red = preload("res://tiles/base_tile/red.tres")
var blue = preload("res://tiles/base_tile/blue.tres")
var lightblue = preload("res://tiles/base_tile/lightblue.tres")
var faces = {
"floor": null,
"north": null,
"east": null,
"south": null,
"west": null
}
func _ready():
pass
func invalid_this_tile():
pass
func update(sel_mode: int = 0, con_mode: int = 0):
if sel_mode:
if sel_mode != selection_mode:
selection_mode = sel_mode
if sel_mode == 1:
# not selected
$Floor/FloorMesh.set_material_overlay(null)
elif sel_mode == 2:
# room selection
for i in $Walls.get_children():
i.Mesh.set_material_override(orange)
elif sel_mode == 3:
# build selection
$Floor/FloorMesh.set_material_overlay(lightblue)
#for i in $Walls.get_children():
#i.Mesh.set_material_override(blue)
elif sel_mode == 4:
# invalid selection
$Floor/FloorMesh.set_material_overlay(orange)
#for i in $Walls.get_children():
#i.set_material_override(red)
else:
pass
if con_mode:
if con_mode != construction_mode:
construction_mode = con_mode
if con_mode == 1:
# non-interactable
$Label3D.text = "1"
pass
elif con_mode == 2:
# closed
$Label3D.text = "2"
$Floor/FloorMesh.set_material_override(gray)
pass
elif con_mode == 3:
# open
pass
elif con_mode == 4:
# built
$Label3D.text = "4"
$Floor/FloorMesh.set_material_override(null)
pass
elif con_mode == 5:
# reinforced
pass
elif con_mode == 6:
# under construction
pass
else:
pass