Added Glitch Room Source code to Gitty
This commit is contained in:
commit
1ac9eb5644
505 files changed
+28504
No files matched your search
@@ -0,0 +1,38 @@
|
||||
extends SceneTree
|
||||
## Export designer resources to the controller's deployment catalog.
|
||||
func _initialize() -> void:
|
||||
call_deferred("run")
|
||||
func run() -> void:
|
||||
var database: ProjectDatabase = load("res://data/project_database.tres")
|
||||
var room: RoomDefinition = load("res://data/rooms/arcade_room.tres")
|
||||
var catalog := {"version": 1, "games": {}, "cabinets": {}, "scenarios": {}, "layout": {"boundary": [], "walls": [], "devices": []}}
|
||||
for game in database.games:
|
||||
catalog.games[str(game.game_id)] = {"name": game.display_name, "requirements": Array(game.required_capabilities), "alternatives": Array(game.control_alternatives)}
|
||||
for cabinet in database.cabinets:
|
||||
var actions: Array = []
|
||||
if cabinet.hardware_config != null:
|
||||
for action in cabinet.hardware_config.actions: actions.append(str(action.action_id))
|
||||
var placement := room.get_cabinet_placement(cabinet.cabinet_id)
|
||||
catalog.cabinets[str(cabinet.cabinet_id)] = {"name": cabinet.display_name, "capabilities": Array(cabinet.capabilities), "actions": actions, "position": [placement.position.x, placement.position.y] if placement else null}
|
||||
for scenario in database.scenarios:
|
||||
var assignments: Array = []
|
||||
for assignment in scenario.assignments:
|
||||
if assignment.cabinet == null or assignment.game == null: continue
|
||||
var mappings := {}
|
||||
for mapping in assignment.event_mappings:
|
||||
if not mappings.has(str(mapping.game_event)): mappings[str(mapping.game_event)] = []
|
||||
mappings[str(mapping.game_event)].append_array(Array(mapping.hardware_actions))
|
||||
assignments.append({"cabinet": str(assignment.cabinet.cabinet_id), "game": str(assignment.game.game_id), "variant": str(assignment.variant), "mappings": mappings})
|
||||
catalog.scenarios[str(scenario.scenario_id)] = {"name": scenario.display_name, "assignments": assignments}
|
||||
for point in room.boundary_points: catalog.layout.boundary.append([point.x, point.y])
|
||||
for wall in room.walls: catalog.layout.walls.append([[wall.start.x, wall.start.y], [wall.end.x, wall.end.y]])
|
||||
for device in room.devices:
|
||||
catalog.layout.devices.append({"id": str(device.device_id), "name": device.display_name, "position": [device.position.x, device.position.y]})
|
||||
var file := FileAccess.open("res://tools/room_controller/catalog.json", FileAccess.WRITE)
|
||||
if file == null:
|
||||
push_error("Cannot write controller catalog")
|
||||
quit(1)
|
||||
return
|
||||
file.store_string(JSON.stringify(catalog, "\t"))
|
||||
print("Exported controller catalog from editor resources")
|
||||
quit()
|
||||
Reference in new issue
Block a user