40 lines
1.1 KiB
GDScript
40 lines
1.1 KiB
GDScript
extends Object
|
|
class_name RoomData
|
|
|
|
var rotations: int = 0
|
|
var doorPositions: Array[DoorPosition]
|
|
var roomGrid: Array[Array]
|
|
var roomSceneRef: String
|
|
var roomScene: PackedScene
|
|
|
|
func _init(roomImage: Image = null, roomSceneReference: String = "") -> void:
|
|
if !roomImage: return
|
|
roomSceneRef = roomSceneReference
|
|
|
|
if !roomSceneReference == "":
|
|
roomScene = load(roomSceneReference)
|
|
|
|
var roomImmageLoader: RoomImageLoader = RoomImageLoader.new()
|
|
|
|
roomGrid = roomImmageLoader.loadRoomData(roomImage)
|
|
|
|
doorPositions = roomImmageLoader.getDoors(roomGrid)
|
|
|
|
roomImmageLoader.free()
|
|
|
|
func duplicateRoom() -> RoomData:
|
|
var returnData: RoomData = RoomData.new()
|
|
returnData.rotations = rotations
|
|
for position in doorPositions:
|
|
returnData.doorPositions.push_back(position.duplicate())
|
|
for x in roomGrid.size():
|
|
var array: Array
|
|
returnData.roomGrid.push_back(array)
|
|
for y in roomGrid[x].size():
|
|
returnData.roomGrid[x].push_back(null)
|
|
returnData.roomGrid[x][y] = roomGrid[x][y].duplicate()
|
|
returnData.roomGrid = roomGrid.duplicate(true)
|
|
returnData.roomSceneRef = roomSceneRef
|
|
returnData.roomScene = roomScene
|
|
return returnData
|