project-villain/places/place_manager.gd

64 lines
1.3 KiB
GDScript

extends Node3D
var load_place = preload("res://places/base_place/base_place.tscn")
var place = load_place.instantiate()
var build_enabled = false
var is_building = false
var is_placing_door = false
var last_room = null
var build_start_pos = null
signal room_built
func _ready():
add_child(place)
func _input(event):
pass
func _on_build_toggle(toggled_on):
build_enabled = toggled_on
if not toggled_on:
place.clear_selection()
func _on_area_3d_input_event(_camera, event, event_position, _normal, _shade_id):
#Checks input events from the mouse planex
if event.is_action_pressed("select") && build_enabled:
build_start_pos = event_position
is_building = event
place.draw_tile_click(build_start_pos)
elif is_building:
if Input.is_action_pressed("select"):
place.init_select_drag(build_start_pos, event_position)
else:
is_building = event
place.end_select_drag()
elif is_placing_door:
if not event.button_mask:
place.hover_door(event_position)
if event.is_action_pressed("select"):
is_placing_door = false
place.build_door()
emit_signal("room_built")
func _on_confirm_button_pressed() -> void:
if is_building:
if place.build_allowed:
last_room = place.build_selection()
build_enabled = false
is_building = false
is_placing_door = true
#
else:
pass