{"size": 1093, "ext": "js", "max_stars_repo_path": "docs/assets/js/modules/key.js", "max_stars_repo_name": "GungeeSpla/salmon_tower_battle", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "docs/assets/js/modules/key.js", "max_issues_repo_name": "GungeeSpla/salmon_tower_battle", "max_issues_repo_issues_event_min_datetime": "2021-03-10T12:22:05.000Z", "max_issues_repo_issues_event_max_datetime": "2021-03-10T12:22:05.000Z", "max_forks_repo_path": "docs/assets/js/modules/key.js", "max_forks_repo_name": "GungeeSpla/salmon_tower_battle", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": 1, "max_forks_count": null, "avg_line_length": 21.86, "max_line_length": 62, "alphanum_fraction": 0.6468435499}
import * as constants from './constants/config.js';
import * as utilities from './utilities.js';

/** getKeyType(keyCode)
 * 押されたキーコードが何のボタン(←、→、START、A、B…)に該当するのかを
 * キーコンフィグに従って判定し、その結果を返します。
 * @param {number} keyCode - 押されたキーコード
 * @return {string|null} 判定されたボタンの種類
 */
export function getKeyType(keyCode) {
  for (let i = 0; i < constants.KEY_TYPES.length; i += 1) {
    const keyType = constants.KEY_TYPES[i];
    if (constants.KEY_CONFIG[keyType].indexOf(keyCode) > -1) {
      return keyType;
    }
  }
  return null;
}

/** removeAllListener()
 * 初期化します。
 */
export function removeAllListener() {

}

/** initialize()
 * 初期化します。
 */
export function initialize() {
  window.addEventListener('keydown', (e) => {
    const keyType = getKeyType(e.keyCode);
    if (keyType) {
      utilities.logger.log(`keydown-${keyType}`);
      utilities.dispatchDocumentEvent(`keydown-${keyType}`, {
        isAlt: e.altKey,
        isCtrl: e.ctrlKey,
        isShift: e.shiftKey,
      });
    }
  });
}

// keyモジュールの定義とエクスポート
const key = {
  initialize,
  removeAllListener,
};
export default key;
