Bug fixes and cleanup

This commit is contained in:
Nitwel 2024-01-27 15:38:47 +01:00
parent f309d023f0
commit b94b414bb3
4 changed files with 50 additions and 20 deletions

View File

@ -38,7 +38,11 @@ func update_house():
create_room(new_room.name, 0) create_room(new_room.name, 0)
for entity in Store.house.entities: for entity in Store.house.entities:
var entity_instance = create_entity(entity.id, entity.position) var entity_instance = create_entity_in(entity.id, entity.room)
if entity_instance == null:
continue
entity_instance.global_rotation = entity.rotation entity_instance.global_rotation = entity.rotation
func create_room(room_name: String, level: int) -> RoomType: func create_room(room_name: String, level: int) -> RoomType:
@ -92,6 +96,7 @@ func delete_room(room_name):
room.get_parent().remove_child(room) room.get_parent().remove_child(room)
room.queue_free() room.queue_free()
await room.tree_exited
func is_editiong(room_name): func is_editiong(room_name):
return editing_room != null && editing_room.name == room_name return editing_room != null && editing_room.name == room_name
@ -140,12 +145,12 @@ func create_entity(entity_id: String, entity_position: Vector3):
var room = find_room_at(entity_position) var room = find_room_at(entity_position)
if room == null: if room == null:
return return null
var entity = EntityFactory.create_entity(entity_id) var entity = EntityFactory.create_entity(entity_id)
if entity == null: if entity == null:
return return null
room.get_node("Entities").add_child(entity) room.get_node("Entities").add_child(entity)
entity.global_position = entity_position entity.global_position = entity_position
@ -154,6 +159,24 @@ func create_entity(entity_id: String, entity_position: Vector3):
return entity return entity
func create_entity_in(entity_id: String, room_name: String):
var room = find_room(room_name)
if room == null:
return null
var entity = EntityFactory.create_entity(entity_id)
if entity == null:
return null
room.get_node("Entities").add_child(entity)
entity.global_position = room.get_aabb().position + room.get_aabb().size / 2.0
save_all_entities()
return entity
func update_mini_view(): func update_mini_view():
collision_shape.disabled = !mini_view collision_shape.disabled = !mini_view

View File

@ -22,6 +22,7 @@ func _on_enter():
add_floor_corner(Vector3(corners[0].x, 0, corners[0].y)) add_floor_corner(Vector3(corners[0].x, 0, corners[0].y))
add_height_corner(Vector3(corners[0].x, 0, corners[0].y)) add_height_corner(Vector3(corners[0].x, 0, corners[0].y))
room.room_ceiling.position.y = room_store.height room.room_ceiling.position.y = room_store.height
height_edge.align_to_corners(floor_corner.global_position, height_corner.global_position)
for i in range(1, corners.size()): for i in range(1, corners.size()):
add_corner(Vector3(corners[i].x, 0, corners[i].y)) add_corner(Vector3(corners[i].x, 0, corners[i].y))
@ -117,14 +118,14 @@ func add_floor_corner(position: Vector3):
height_edge.align_to_corners(new_position, new_position + Vector3.UP * room.room_ceiling.global_position.y) height_edge.align_to_corners(new_position, new_position + Vector3.UP * room.room_ceiling.global_position.y)
room.get_corner(moving_index).position.x = new_position.x get_corner(moving_index).position.x = new_position.x
room.get_corner(moving_index).position.z = new_position.z get_corner(moving_index).position.z = new_position.z
if room.wall_edges.get_child_count() == 0: if room.wall_edges.get_child_count() == 0:
return return
room.get_edge(moving_index).align_to_corners(new_position, room.get_corner(moving_index + 1).position) get_edge(moving_index).align_to_corners(new_position, get_corner(moving_index + 1).position)
room.get_edge(moving_index - 1).align_to_corners(room.get_corner(moving_index - 1).position, new_position) get_edge(moving_index - 1).align_to_corners(get_corner(moving_index - 1).position, new_position)
) )
floor_corner.get_node("Clickable").on_grab_up.connect(func(_event): floor_corner.get_node("Clickable").on_grab_up.connect(func(_event):
@ -199,13 +200,13 @@ func add_corner(position: Vector3, index: int = -1):
new_position = event.ray.global_position + direction new_position = event.ray.global_position + direction
room.get_corner(moving_index).global_position = new_position get_corner(moving_index).global_position = new_position
if room.wall_edges.get_child_count() == 0: if room.wall_edges.get_child_count() == 0:
return return
room.get_edge(moving_index).align_to_corners(room.get_corner(moving_index - 1).position, room.get_corner(moving_index + 1).position) get_edge(moving_index).align_to_corners(get_corner(moving_index - 1).position, get_corner(moving_index + 1).position)
room.get_edge(moving_index - 1).transform = room.get_edge(moving_index).transform get_edge(moving_index - 1).transform = get_edge(moving_index).transform
return return
@ -219,14 +220,14 @@ func add_corner(position: Vector3, index: int = -1):
if room.wall_edges.get_child_count() == 0: if room.wall_edges.get_child_count() == 0:
return return
room.get_edge(moving_index).align_to_corners(new_position, room.get_corner(moving_index + 1).position) get_edge(moving_index).align_to_corners(new_position, get_corner(moving_index + 1).position)
room.get_edge(moving_index - 1).align_to_corners(room.get_corner(moving_index - 1).position, new_position) get_edge(moving_index - 1).align_to_corners(get_corner(moving_index - 1).position, new_position)
) )
corner.get_node("Clickable").on_grab_up.connect(func(_event): corner.get_node("Clickable").on_grab_up.connect(func(_event):
if deleting: if deleting:
var moving_index = moving.get_index() var moving_index = moving.get_index()
room.remove_corner(moving_index) remove_corner(moving_index)
moving = null moving = null
deleting = false deleting = false
@ -238,13 +239,13 @@ func add_corner(position: Vector3, index: int = -1):
var num_corners = room.wall_corners.get_child_count() var num_corners = room.wall_corners.get_child_count()
if num_corners > 1: if num_corners > 1:
add_edge(position, room.get_corner(index + 1).position, index) add_edge(position, get_corner(index + 1).position, index)
if num_corners > 2: if num_corners > 2:
if num_corners != room.wall_edges.get_child_count(): if num_corners != room.wall_edges.get_child_count():
add_edge(room.get_corner(-2).position, room.get_corner(-1).position, -2) add_edge(get_corner(-2).position, get_corner(-1).position, -2)
else: else:
room.get_edge(index - 1).align_to_corners(room.get_corner(index - 1).position, position) get_edge(index - 1).align_to_corners(get_corner(index - 1).position, position)
func add_edge(from_pos: Vector3, to_pos: Vector3, index: int = -1): func add_edge(from_pos: Vector3, to_pos: Vector3, index: int = -1):
@ -273,7 +274,7 @@ func update_store():
store_room.corners = corners store_room.corners = corners
store_room.height = room.room_ceiling.position.y store_room.height = room.room_ceiling.position.y
if corners.size() > 3: if corners.size() < 3:
Store.house.rooms.erase(store_room) House.body.delete_room(room.name)
Store.house.save_local() Store.house.save_local()

View File

@ -146,7 +146,10 @@ func _on_entity_click(entity_name):
AudioPlayer.play_effect("spawn") AudioPlayer.play_effect("spawn")
House.body.create_entity(entity_name, global_position) var entity = House.body.create_entity(entity_name, global_position)
if entity == null:
EventSystem.notify("Entity is not in Room", EventNotify.Type.INFO)
func clear_menu(): func clear_menu():
for child in devices_node.get_children(): for child in devices_node.get_children():

View File

@ -96,6 +96,9 @@ func _generate_room_map():
old_room.queue_free() old_room.queue_free()
await old_room.tree_exited await old_room.tree_exited
if rooms.size() == 0:
return
var current_min = Vector2(rooms[0].corners[0].x, rooms[0].corners[0].y) var current_min = Vector2(rooms[0].corners[0].x, rooms[0].corners[0].y)
var current_max = current_min var current_max = current_min