{"action":"created","issue":{"url":"https://api.github.com/repos/Baystation12/Baystation12/issues/13742","repository_url":"https://api.github.com/repos/Baystation12/Baystation12","labels_url":"https://api.github.com/repos/Baystation12/Baystation12/issues/13742/labels{/name}","comments_url":"https://api.github.com/repos/Baystation12/Baystation12/issues/13742/comments","events_url":"https://api.github.com/repos/Baystation12/Baystation12/issues/13742/events","html_url":"https://github.com/Baystation12/Baystation12/pull/13742","id":165981449,"number":13742,"title":"Adds support for multiple holodecks","user":{"login":"thasc","id":538202,"avatar_url":"https://avatars.githubusercontent.com/u/538202?v=3","gravatar_id":"","url":"https://api.github.com/users/thasc","html_url":"https://github.com/thasc","followers_url":"https://api.github.com/users/thasc/followers","following_url":"https://api.github.com/users/thasc/following{/other_user}","gists_url":"https://api.github.com/users/thasc/gists{/gist_id}","starred_url":"https://api.github.com/users/thasc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thasc/subscriptions","organizations_url":"https://api.github.com/users/thasc/orgs","repos_url":"https://api.github.com/users/thasc/repos","events_url":"https://api.github.com/users/thasc/events{/privacy}","received_events_url":"https://api.github.com/users/thasc/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-07-17T15:30:26Z","updated_at":"2016-07-18T06:19:27Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Baystation12/Baystation12/pulls/13742","html_url":"https://github.com/Baystation12/Baystation12/pull/13742","diff_url":"https://github.com/Baystation12/Baystation12/pull/13742.diff","patch_url":"https://github.com/Baystation12/Baystation12/pull/13742.patch"},"body":"This allows different holodeck control consoles to use different program listings defined in the map datum, accessing them by a provided `programs_list_id`. Fake example:\r\n```\r\nholodeck_supported_programs = list(\r\n\t\"SportPrograms\" = list(\r\n\t\t\"Empty Court\"       = \"emptycourt\",\r\n\t\t\"Basketball Court\"  = \"basketball\",\r\n\t\t\"Thunderdome Court\" = \"thunderdomecourt\",\r\n\t),\r\n\t\"EvilPrograms\" = list(\r\n\t\t\"Puppy Wrestling\"      = \"puppywrestling\",\r\n\t\t\"Kitten Disappointing\" = \"kittendisappointing\",\r\n\t)\r\n)\r\n```\r\nOne holodeck can use the `SportPrograms` listing, and another can use the `EvilPrograms` listing by setting their control console's `programs_list_id` value, e.g. in the .dmm by the {} format. This also enables differently sized holodecks, as long as their programs are the right size (or aren't bothered by being truncated if too large, or sat with empty holodeck tiles around them if too small).\r\n\r\nThis also pulls out the program definitions (the `/datum/holodeck_program` bits) into the map datum, since they can be unique per-map. That's caused some duplication of content, but not really of logic. The intent would be that these programs can now gently drift away from each other per-map, rather than needing to be kept in lock-step across all maps.\r\n\r\nRemaining trickiness is that you have to create a new `/area/holodeck` for each holodeck you want to add so that you can link them up uniquely with `linkedholodeck_area`,  but that's kind of a small thing.\r\n\r\nThis is my first substantial bunch of logic changes for this repo so please rip to bits if I'm doing dumb things or going against project style."},"comment":{"url":"https://api.github.com/repos/Baystation12/Baystation12/issues/comments/233241154","html_url":"https://github.com/Baystation12/Baystation12/pull/13742#issuecomment-233241154","issue_url":"https://api.github.com/repos/Baystation12/Baystation12/issues/13742","id":233241154,"user":{"login":"thasc","id":538202,"avatar_url":"https://avatars.githubusercontent.com/u/538202?v=3","gravatar_id":"","url":"https://api.github.com/users/thasc","html_url":"https://github.com/thasc","followers_url":"https://api.github.com/users/thasc/followers","following_url":"https://api.github.com/users/thasc/following{/other_user}","gists_url":"https://api.github.com/users/thasc/gists{/gist_id}","starred_url":"https://api.github.com/users/thasc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thasc/subscriptions","organizations_url":"https://api.github.com/users/thasc/orgs","repos_url":"https://api.github.com/users/thasc/repos","events_url":"https://api.github.com/users/thasc/events{/privacy}","received_events_url":"https://api.github.com/users/thasc/received_events","type":"User","site_admin":false},"created_at":"2016-07-18T06:19:27Z","updated_at":"2016-07-18T06:19:27Z","body":"I'm thinking of reducing the map-of-maps thing in `holodeck_supported_programs` down to a map of ids to some new datum type. It wouldn't look much cleaner, but it'd reduce the risk of typos causing listings to be missed or mixed up."}}
{"actor":{"display_login":"thasc"}}