選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

112 行
2.7 KiB

  1. global.extend = require('../misc/clone');
  2. global.io = require('../db/io');
  3. global._ = require('../misc/helpers');
  4. global.consts = require('../config/consts');
  5. global.instancer = require('./instancer');
  6. global.eventManager = require('../events/events');
  7. global.clientConfig = require('../config/clientConfig');
  8. global.rezoneManager = require('./rezoneManager');
  9. const components = require('../components/components');
  10. const mods = require('../misc/mods');
  11. const animations = require('../config/animations');
  12. const skins = require('../config/skins');
  13. const factions = require('../config/factions');
  14. const classes = require('../config/spirits');
  15. const spellsConfig = require('../config/spellsConfig');
  16. const spells = require('../config/spells');
  17. const recipes = require('../config/recipes/recipes');
  18. const itemTypes = require('../items/config/types');
  19. const mapList = require('../config/maps/mapList');
  20. const itemEffects = require('../items/itemEffects');
  21. const profanities = require('../misc/profanities');
  22. const eventEmitter = require('../misc/events');
  23. instancer.mapName = process.argv[2];
  24. let onCpnsReady = async function () {
  25. factions.init();
  26. skins.init();
  27. animations.init();
  28. classes.init();
  29. spellsConfig.init();
  30. spells.init();
  31. itemTypes.init();
  32. mapList.init();
  33. recipes.init();
  34. itemEffects.init();
  35. profanities.init();
  36. rezoneManager.init();
  37. await clientConfig.init();
  38. process.send({
  39. method: 'onReady'
  40. });
  41. };
  42. let onModsReady = function () {
  43. components.init(onCpnsReady);
  44. };
  45. const onCrash = async e => {
  46. if (e.toString().indexOf('ERR_IPC_CHANNEL_CLOSED') > -1)
  47. return;
  48. _.log('Error Logged: ' + e.toString());
  49. _.log(e.stack);
  50. await io.setAsync({
  51. key: new Date(),
  52. table: 'error',
  53. value: e.toString() + ' | ' + e.stack.toString()
  54. });
  55. process.send({
  56. event: 'onCrashed'
  57. });
  58. };
  59. let onDbReady = async function () {
  60. require('../misc/random');
  61. process.on('uncaughtException', onCrash);
  62. process.on('unhandledRejection', onCrash);
  63. await mods.init();
  64. onModsReady();
  65. };
  66. io.init(onDbReady);
  67. process.on('message', m => {
  68. if (m.module) {
  69. let instances = instancer.instances;
  70. let iLen = instances.length;
  71. for (let i = 0; i < iLen; i++) {
  72. let objects = instances[i].objects.objects;
  73. let oLen = objects.length;
  74. let found = false;
  75. for (let j = 0; j < oLen; j++) {
  76. let object = objects[j];
  77. if (object.name === m.args[0]) {
  78. let mod = object.instance[m.module];
  79. mod[m.method].apply(mod, m.args);
  80. found = true;
  81. break;
  82. }
  83. }
  84. if (found)
  85. break;
  86. }
  87. } else if (m.threadModule)
  88. global[m.threadModule][m.method](m.data);
  89. else if (m.method)
  90. instancer[m.method](m.args);
  91. else if (m.event)
  92. eventEmitter.emit(m.event, m.data);
  93. });