140 lines
6.9 KiB
GDScript
140 lines
6.9 KiB
GDScript
extends Node
|
|
class_name WorldLayout
|
|
|
|
## Data-driven description of what's in the multiplayer world. The server (or
|
|
## the single machine, when offline) spawns every entry through
|
|
## NetworkManager.spawn_item() instead of baking these into the scene file, so
|
|
## a joining client receives them from the server rather than assuming its own
|
|
## copy of the scene matches. Swapping the contents of these two functions is
|
|
## the only change needed for a future varying/procedural layout.
|
|
##
|
|
## Positions below are transcribed verbatim from the previous baked layout in
|
|
## Scenes/multiPlayer.tscn so the starting world is unchanged.
|
|
|
|
|
|
func get_node_data(node):
|
|
# {"scene": "res://Stations/Hob.tscn", "name": "Hob",
|
|
# "xform": Transform3D(Basis(), Vector3(0.29336345, 0.8981018, -1.484)), "props": {}},
|
|
var data = {}
|
|
data["scene"] = node.scene_file_path
|
|
data["name"] = node.name
|
|
data["xform"] = node.transform
|
|
data["props"] = {}
|
|
var scrip = node.get_script()
|
|
if scrip:
|
|
for i in scrip.get_script_property_list():
|
|
if i.usage & PROPERTY_USAGE_STORAGE:
|
|
data["props"][i["name"]] = node.get(i["name"])
|
|
return data
|
|
|
|
|
|
func get_stations() -> Array[Dictionary]:
|
|
var Stations = ResourceLoader.list_directory("res://Stations/")
|
|
|
|
var Stations2 = []
|
|
for i in Stations:
|
|
Stations2.append("res://Stations/" + i)
|
|
Stations = Stations2
|
|
|
|
var Stations_nodes = []
|
|
for i in get_tree().root.find_children("*", "StaticBody3D", true, false):
|
|
if i.scene_file_path in Stations:
|
|
Stations_nodes.append(i)
|
|
|
|
var data: Array[Dictionary] = []
|
|
for i in Stations_nodes:
|
|
data.append(get_node_data(i))
|
|
return data
|
|
|
|
|
|
func get_items() -> Array[Dictionary]:
|
|
var Items = ResourceLoader.list_directory("res://Items/")
|
|
|
|
var Items2 = []
|
|
for i in Items:
|
|
Items2.append("res://Items/" + i)
|
|
Items = Items2
|
|
|
|
var Items_nodes = []
|
|
for i in get_tree().root.find_children("*", "XRToolsPickable", true, false):
|
|
if i.scene_file_path in Items:
|
|
Items_nodes.append(i)
|
|
|
|
var data: Array[Dictionary] = []
|
|
for i in Items_nodes:
|
|
data.append(get_node_data(i))
|
|
return data
|
|
|
|
|
|
|
|
|
|
static func get_stations_old() -> Array[Dictionary]:
|
|
return [
|
|
{"scene": "res://Stations/Hob.tscn", "name": "Hob",
|
|
"xform": Transform3D(Basis(), Vector3(0.29336345, 0.8981018, -1.484)), "props": {}},
|
|
{"scene": "res://Stations/BurgerBunsDispenser.tscn", "name": "BurgerBunsDispenser",
|
|
"xform": Transform3D(Basis(), Vector3(-1.832131, 0.40028095, -1.4813508)), "props": {}},
|
|
{"scene": "res://Stations/sink.tscn", "name": "Sink",
|
|
"xform": Transform3D(Basis(), Vector3(1.3140475, 0.9061539, -1.4941733)), "props": {}},
|
|
{"scene": "res://Stations/dirt_station.tscn", "name": "DirtStation",
|
|
"xform": Transform3D(Basis(), Vector3(2.0864775, 0.8981018, -1.244947)), "props": {}},
|
|
{"scene": "res://Stations/Counter.tscn", "name": "Counter",
|
|
"xform": Transform3D(Basis(), Vector3(-0.7124918, 0.90304357, -1.4886917)), "props": {}},
|
|
{"scene": "res://Stations/Counter.tscn", "name": "Counter2",
|
|
"xform": Transform3D(Vector3(-4.371139e-08, 0.0, 1.0), Vector3(0.0, 1.0, 0.0), Vector3(-1.0, 0.0, -4.371139e-08), Vector3(-1.7648025, 0.90304357, -0.4458799)), "props": {}},
|
|
{"scene": "res://Stations/Counter.tscn", "name": "Counter3",
|
|
"xform": Transform3D(Vector3(-4.371139e-08, 0.0, 1.0), Vector3(0.0, 1.0, 0.0), Vector3(-1.0, 0.0, -4.371139e-08), Vector3(-1.7648025, 0.90304357, 0.55367994)), "props": {}},
|
|
{"scene": "res://Stations/Counter.tscn", "name": "Counter4",
|
|
"xform": Transform3D(Vector3(-4.371139e-08, 0.0, 1.0), Vector3(0.0, 1.0, 0.0), Vector3(-1.0, 0.0, -4.371139e-08), Vector3(-1.7648025, 0.90304357, 1.5539298)), "props": {}},
|
|
{"scene": "res://Stations/table.tscn", "name": "Table",
|
|
"xform": Transform3D(Basis(), Vector3(1.633146, 0.9030438, 1.1343781)),
|
|
"props": {
|
|
"initial_thinking_time": 8.0,
|
|
"initial_primary_time": 40.0,
|
|
"initial_friend_time": 3.0,
|
|
"initial_eating_time": 3.0,
|
|
}},
|
|
]
|
|
|
|
|
|
static func get_items_old() -> Array[Dictionary]:
|
|
var items: Array[Dictionary] = []
|
|
|
|
items.append(_item("res://Items/BurgerBuns.tscn", "BurgerBuns", Vector3(-1.8162017, 1.6081157, -1.4714175)))
|
|
items.append(_item("res://Items/BurgerBuns.tscn", "BurgerBuns2", Vector3(-1.3596323, 1.4110342, -0.22482127)))
|
|
|
|
items.append(_item("res://Containers/plate.tscn", "Plate", Vector3(-1.5717233, 1.5454081, 1.5373346)))
|
|
items.append(_item("res://Containers/plate.tscn", "Plate2", Vector3(-1.5730225, 1.499024, 0.59790254)))
|
|
items.append(_item("res://Containers/plate.tscn", "Plate3", Vector3(-1.5818124, 1.499024, -0.4634577)))
|
|
|
|
items.append(_item("res://Items/burger.tscn", "burger", Vector3(0.6888188, 1.4195822, -1.7110313)))
|
|
items.append(_item("res://Items/burger.tscn", "burger2", Vector3(0.6931299, 1.5300478, -1.71225)))
|
|
items.append(_item("res://Items/burger.tscn", "burger3", Vector3(0.69027674, 1.4969791, -1.7210286)))
|
|
items.append(_item("res://Items/burger.tscn", "burger4", Vector3(0.69134104, 1.4543622, -1.7210286)))
|
|
|
|
items.append(_item("res://Items/hamburger.tscn", "Hamburger", Vector3(-1.9352558, 1.623975, 1.2447833)))
|
|
items.append(_item("res://Items/hamburger.tscn", "Hamburger2", Vector3(-1.9857153, 1.5329368, 0.9472374)))
|
|
items.append(_item("res://Items/hamburger.tscn", "Hamburger3", Vector3(-1.7201865, 1.5329367, 0.14773655)))
|
|
|
|
items.append(_item("res://Items/cooked_burger.tscn", "CookedBurger", Vector3(-0.30671906, 1.4131018, -1.0928738)))
|
|
items.append(_item("res://Items/cooked_burger.tscn", "CookedBurger2", Vector3(-0.30671906, 1.4496142, -1.0928738)))
|
|
items.append(_item("res://Items/cooked_burger.tscn", "CookedBurger3", Vector3(-1.3344773, 1.4398065, -0.7096845)))
|
|
items.append(_item("res://Items/cooked_burger.tscn", "CookedBurger4", Vector3(-0.30671906, 1.525444, -1.0928738)))
|
|
|
|
items.append(_item("res://Items/PickupCube.tscn", "PickableObject", Vector3(0.6225724, 1.4792972, -1.0473135)))
|
|
items.append(_item("res://Items/PickupCube.tscn", "PickableObject2", Vector3(0.6359743, 1.4639391, -1.1673055)))
|
|
items.append(_item("res://Items/PickupCube.tscn", "PickableObject3", Vector3(0.5142721, 1.4792972, -1.0473135)))
|
|
items.append(_item("res://Items/PickupCube.tscn", "PickableObject4", Vector3(0.5276739, 1.4639391, -1.1673055)))
|
|
items.append(_item("res://Items/PickupCube.tscn", "PickableObject5", Vector3(0.73287535, 1.4792972, -1.0473135)))
|
|
items.append(_item("res://Items/PickupCube.tscn", "PickableObject6", Vector3(0.7462772, 1.4639391, -1.1673055)))
|
|
items.append(_item("res://Items/PickupCube.tscn", "PickableObject7", Vector3(-1.3556751, 1.4792972, 0.28881657)))
|
|
items.append(_item("res://Items/PickupCube.tscn", "PickableObject8", Vector3(-1.3422732, 1.4639391, 0.16882455)))
|
|
items.append(_item("res://Items/PickupCube.tscn", "PickableObject9", Vector3(-1.4639754, 1.4792972, 0.28881657)))
|
|
items.append(_item("res://Items/PickupCube.tscn", "PickableObject10", Vector3(-1.4505737, 1.4639391, 0.16882455)))
|
|
|
|
return items
|
|
|
|
|
|
static func _item(scene: String, name: String, pos: Vector3) -> Dictionary:
|
|
return {"scene": scene, "name": name, "xform": Transform3D(Basis(), pos), "props": {}}
|