{"action":"created","comment":{"url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls/comments/46188275","id":46188275,"diff_hunk":"@@ -0,0 +1,34 @@\n+#ifndef SENSES_H\n+#define SENSES_H\n+\n+#include <vector>\n+\n+enum home_area_type : int;\n+using mfaction_id = int_id<monfaction>;\n+enum movement_mode : int;\n+struct tripoint;\n+\n+/**\n+ * Object to inject into monster AI to isolate AI code from map or overmap accesses.\n+ */\n+class senses {","path":"src/senses.h","position":14,"original_position":14,"commit_id":"6ca8731cf6ad04a4fa6dd50e7860bb799b68b2bc","original_commit_id":"6ca8731cf6ad04a4fa6dd50e7860bb799b68b2bc","user":{"login":"CIB","id":902211,"avatar_url":"https://avatars.githubusercontent.com/u/902211?v=3","gravatar_id":"","url":"https://api.github.com/users/CIB","html_url":"https://github.com/CIB","followers_url":"https://api.github.com/users/CIB/followers","following_url":"https://api.github.com/users/CIB/following{/other_user}","gists_url":"https://api.github.com/users/CIB/gists{/gist_id}","starred_url":"https://api.github.com/users/CIB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CIB/subscriptions","organizations_url":"https://api.github.com/users/CIB/orgs","repos_url":"https://api.github.com/users/CIB/repos","events_url":"https://api.github.com/users/CIB/events{/privacy}","received_events_url":"https://api.github.com/users/CIB/received_events","type":"User","site_admin":false},"body":":+1: ","created_at":"2015-11-30T19:15:57Z","updated_at":"2015-11-30T19:15:57Z","html_url":"https://github.com/CleverRaven/Cataclysm-DDA/pull/14240#discussion_r46188275","pull_request_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls/14240","_links":{"self":{"href":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls/comments/46188275"},"html":{"href":"https://github.com/CleverRaven/Cataclysm-DDA/pull/14240#discussion_r46188275"},"pull_request":{"href":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls/14240"}}},"pull_request":{"url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls/14240","id":52076428,"html_url":"https://github.com/CleverRaven/Cataclysm-DDA/pull/14240","diff_url":"https://github.com/CleverRaven/Cataclysm-DDA/pull/14240.diff","patch_url":"https://github.com/CleverRaven/Cataclysm-DDA/pull/14240.patch","issue_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/14240","number":14240,"state":"open","locked":false,"title":"[WIP] Hordes 2.0","user":{"login":"kevingranade","id":860276,"avatar_url":"https://avatars.githubusercontent.com/u/860276?v=3","gravatar_id":"","url":"https://api.github.com/users/kevingranade","html_url":"https://github.com/kevingranade","followers_url":"https://api.github.com/users/kevingranade/followers","following_url":"https://api.github.com/users/kevingranade/following{/other_user}","gists_url":"https://api.github.com/users/kevingranade/gists{/gist_id}","starred_url":"https://api.github.com/users/kevingranade/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kevingranade/subscriptions","organizations_url":"https://api.github.com/users/kevingranade/orgs","repos_url":"https://api.github.com/users/kevingranade/repos","events_url":"https://api.github.com/users/kevingranade/events{/privacy}","received_events_url":"https://api.github.com/users/kevingranade/received_events","type":"User","site_admin":false},"body":"I've been poking at this for a while, and I finally sorted some things out to my satisfaction and am implementing it.\r\n\r\nThere are two key points to the design:\r\n1. Monsters are stored on a per-overmap-tile priority queue (monster_group) which is itself stored on a per-overmap priority queue.  This effectively creates a scheduler for periodically allowing monsters to move, while managing how many updates happen per game tick.  The plan is to let individual monster_groups get a little behind, and then catch them up all at once so that each batch of monster updates pulls from a small number of groups and write to a small number of groups, improving locality of reference.\r\n2. The senses object isolates monster AI from the overmap code, it knows the kind of things the AI needs to know, and knows how to get that information from the overmap.  I intend to extend this for use with map-scale monster AI later for similar reasons.","created_at":"2015-11-30T00:56:43Z","updated_at":"2015-11-30T19:15:57Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9cbd33052b5778f2c044023e5e065cd730cb39b3","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls/14240/commits","review_comments_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls/14240/comments","review_comment_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls/comments{/number}","comments_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/14240/comments","statuses_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/statuses/6ca8731cf6ad04a4fa6dd50e7860bb799b68b2bc","head":{"label":"kevingranade:hordes-2.0","ref":"hordes-2.0","sha":"6ca8731cf6ad04a4fa6dd50e7860bb799b68b2bc","user":{"login":"kevingranade","id":860276,"avatar_url":"https://avatars.githubusercontent.com/u/860276?v=3","gravatar_id":"","url":"https://api.github.com/users/kevingranade","html_url":"https://github.com/kevingranade","followers_url":"https://api.github.com/users/kevingranade/followers","following_url":"https://api.github.com/users/kevingranade/following{/other_user}","gists_url":"https://api.github.com/users/kevingranade/gists{/gist_id}","starred_url":"https://api.github.com/users/kevingranade/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kevingranade/subscriptions","organizations_url":"https://api.github.com/users/kevingranade/orgs","repos_url":"https://api.github.com/users/kevingranade/repos","events_url":"https://api.github.com/users/kevingranade/events{/privacy}","received_events_url":"https://api.github.com/users/kevingranade/received_events","type":"User","site_admin":false},"repo":{"id":9759215,"name":"Cataclysm-DDA","full_name":"kevingranade/Cataclysm-DDA","owner":{"login":"kevingranade","id":860276,"avatar_url":"https://avatars.githubusercontent.com/u/860276?v=3","gravatar_id":"","url":"https://api.github.com/users/kevingranade","html_url":"https://github.com/kevingranade","followers_url":"https://api.github.com/users/kevingranade/followers","following_url":"https://api.github.com/users/kevingranade/following{/other_user}","gists_url":"https://api.github.com/users/kevingranade/gists{/gist_id}","starred_url":"https://api.github.com/users/kevingranade/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kevingranade/subscriptions","organizations_url":"https://api.github.com/users/kevingranade/orgs","repos_url":"https://api.github.com/users/kevingranade/repos","events_url":"https://api.github.com/users/kevingranade/events{/privacy}","received_events_url":"https://api.github.com/users/kevingranade/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kevingranade/Cataclysm-DDA","description":"Cataclysm - Dark Days Ahead. A fork/variant of Cataclysm Roguelike by Whales.","fork":true,"url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA","forks_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/forks","keys_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/teams","hooks_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/hooks","issue_events_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/issues/events{/number}","events_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/events","assignees_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/assignees{/user}","branches_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/branches{/branch}","tags_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/tags","blobs_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/git/refs{/sha}","trees_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/statuses/{sha}","languages_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/languages","stargazers_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/stargazers","contributors_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/contributors","subscribers_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/subscribers","subscription_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/subscription","commits_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/commits{/sha}","git_commits_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/git/commits{/sha}","comments_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/comments{/number}","issue_comment_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/issues/comments{/number}","contents_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/contents/{+path}","compare_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/merges","archive_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/downloads","issues_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/issues{/number}","pulls_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/pulls{/number}","milestones_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/milestones{/number}","notifications_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/labels{/name}","releases_url":"https://api.github.com/repos/kevingranade/Cataclysm-DDA/releases{/id}","created_at":"2013-04-29T22:15:31Z","updated_at":"2015-03-21T16:31:24Z","pushed_at":"2015-11-30T02:59:50Z","git_url":"git://github.com/kevingranade/Cataclysm-DDA.git","ssh_url":"git@github.com:kevingranade/Cataclysm-DDA.git","clone_url":"https://github.com/kevingranade/Cataclysm-DDA.git","svn_url":"https://github.com/kevingranade/Cataclysm-DDA","homepage":"http://www.cataclysm.glyphgryph.com/","size":595193,"stargazers_count":3,"watchers_count":3,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":3,"default_branch":"master"}},"base":{"label":"CleverRaven:master","ref":"master","sha":"87db652b88958f5d0fc2bea38261ddf7fa84df97","user":{"login":"CleverRaven","id":4367009,"avatar_url":"https://avatars.githubusercontent.com/u/4367009?v=3","gravatar_id":"","url":"https://api.github.com/users/CleverRaven","html_url":"https://github.com/CleverRaven","followers_url":"https://api.github.com/users/CleverRaven/followers","following_url":"https://api.github.com/users/CleverRaven/following{/other_user}","gists_url":"https://api.github.com/users/CleverRaven/gists{/gist_id}","starred_url":"https://api.github.com/users/CleverRaven/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CleverRaven/subscriptions","organizations_url":"https://api.github.com/users/CleverRaven/orgs","repos_url":"https://api.github.com/users/CleverRaven/repos","events_url":"https://api.github.com/users/CleverRaven/events{/privacy}","received_events_url":"https://api.github.com/users/CleverRaven/received_events","type":"Organization","site_admin":false},"repo":{"id":5973855,"name":"Cataclysm-DDA","full_name":"CleverRaven/Cataclysm-DDA","owner":{"login":"CleverRaven","id":4367009,"avatar_url":"https://avatars.githubusercontent.com/u/4367009?v=3","gravatar_id":"","url":"https://api.github.com/users/CleverRaven","html_url":"https://github.com/CleverRaven","followers_url":"https://api.github.com/users/CleverRaven/followers","following_url":"https://api.github.com/users/CleverRaven/following{/other_user}","gists_url":"https://api.github.com/users/CleverRaven/gists{/gist_id}","starred_url":"https://api.github.com/users/CleverRaven/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CleverRaven/subscriptions","organizations_url":"https://api.github.com/users/CleverRaven/orgs","repos_url":"https://api.github.com/users/CleverRaven/repos","events_url":"https://api.github.com/users/CleverRaven/events{/privacy}","received_events_url":"https://api.github.com/users/CleverRaven/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CleverRaven/Cataclysm-DDA","description":"Cataclysm - Dark Days Ahead. A fork/variant of Cataclysm Roguelike by Whales.","fork":false,"url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA","forks_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/forks","keys_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/teams","hooks_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/hooks","issue_events_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/events{/number}","events_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/events","assignees_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/assignees{/user}","branches_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/branches{/branch}","tags_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/tags","blobs_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/git/refs{/sha}","trees_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/statuses/{sha}","languages_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/languages","stargazers_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/stargazers","contributors_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/contributors","subscribers_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/subscribers","subscription_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/subscription","commits_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/commits{/sha}","git_commits_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/git/commits{/sha}","comments_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/comments{/number}","issue_comment_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/comments{/number}","contents_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/contents/{+path}","compare_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/merges","archive_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/downloads","issues_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues{/number}","pulls_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls{/number}","milestones_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/milestones{/number}","notifications_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/labels{/name}","releases_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/releases{/id}","created_at":"2012-09-26T22:57:43Z","updated_at":"2015-11-30T15:23:54Z","pushed_at":"2015-11-30T19:06:36Z","git_url":"git://github.com/CleverRaven/Cataclysm-DDA.git","ssh_url":"git@github.com:CleverRaven/Cataclysm-DDA.git","clone_url":"https://github.com/CleverRaven/Cataclysm-DDA.git","svn_url":"https://github.com/CleverRaven/Cataclysm-DDA","homepage":"http://en.cataclysmdda.com/","size":835082,"stargazers_count":800,"watchers_count":800,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":807,"mirror_url":null,"open_issues_count":1143,"forks":807,"open_issues":1143,"watchers":800,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls/14240"},"html":{"href":"https://github.com/CleverRaven/Cataclysm-DDA/pull/14240"},"issue":{"href":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/14240"},"comments":{"href":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/14240/comments"},"review_comments":{"href":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls/14240/comments"},"review_comment":{"href":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls/14240/commits"},"statuses":{"href":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/statuses/6ca8731cf6ad04a4fa6dd50e7860bb799b68b2bc"}}}}