No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 

97 líneas
1.7 KiB

  1. define([
  2. '../config/eventPhases/phaseTemplate'
  3. ], function(
  4. phaseTemplate
  5. ) {
  6. return {
  7. configs: null,
  8. init: function(instance) {
  9. this.instance = instance;
  10. var configs = null;
  11. try {
  12. configs = require('../config/maps/' + this.instance.map.name + '/events');
  13. }
  14. catch (e) {}
  15. if (!configs)
  16. return;
  17. this.configs = extend(true, [], configs);
  18. this.configs.forEach(c => (c.ttl = 5));
  19. },
  20. update: function() {
  21. var configs = this.configs;
  22. if (!configs)
  23. return;
  24. var cLen = configs.length;
  25. for (var i = 0; i < cLen; i++) {
  26. var c = configs[i];
  27. if (c.event) {
  28. this.updateEvent(c.event);
  29. continue;
  30. }
  31. else if (c.ttl > 0) {
  32. c.ttl--;
  33. continue;
  34. }
  35. c.event = this.startEvent(c);
  36. }
  37. },
  38. startEvent: function(config) {
  39. var event = {
  40. config: config,
  41. phases: [],
  42. nextPhase: 0
  43. };
  44. return event;
  45. },
  46. updateEvent: function(event) {
  47. var currentPhases = event.phases;
  48. var cLen = currentPhases.length;
  49. var stillBusy = false;
  50. for (var i = 0; i < cLen; i++) {
  51. var phase = currentPhases[i];
  52. if (phase.end)
  53. continue
  54. else {
  55. stillBusy = true;
  56. phase.update();
  57. }
  58. }
  59. if (stillBusy)
  60. return;
  61. var config = event.config;
  62. var phases = config.phases;
  63. var pLen = phases.length;
  64. for (var i = event.nextPhase; i < pLen; i++) {
  65. var p = phases[i];
  66. var phaseFile = 'phase' + p.type[0].toUpperCase() + p.type.substr(1);
  67. var typeTemplate = require('config/eventPhases/' + phaseFile);
  68. var phase = extend(true, {
  69. instance: this.instance
  70. }, phaseTemplate, typeTemplate, p);
  71. event.phases.push(phase);
  72. phase.init();
  73. event.nextPhase = i + 1;
  74. if (!p.auto)
  75. break;
  76. }
  77. }
  78. };
  79. });