Ordem de eventos em ct.js

Esses eventos são sempre executados na seguinte ordem:

  1. A biblioteca principal do ct.js é executada;
  2. Os módulos são inicializados;
  3. Os scripts personalizados adicionados nas configurações do projeto são executados;
  4. O evento oncreate da room é invocado, o qual é emitido quando um usuário inicia um jogo ou alterna para uma nova room;
  5. oncreate é invocado para cada;
  6. Então o loop principal do jogo começa:
    1. O evento onstep é invocado para todas as copies na room;
    2. O evento onstep da room atual é invocado;
    3. ondestroy é invocado para todas as copies que foram marcadas para morrer com a propriedade kill;
    4. Todas as copies são reorganizadas;
    5. ondraw é invocado para todas as copies;
    6. ondraw é invocado para um room;
    7. Os eventos de entrada são apagados. Aguardando por uma nova interação do loop de jogo.
  7. Quando o usuário alternar para uma nova room, um evento onleave é invocado para a room anterior.

Ordem de execução com a injeção dos módulos

Na inicialização:

  1. A biblioteca principal do ct.js é executada.
  2. load.js.
  3. Os módulos são inicializados.
  4. Os scripts personalizados adicionados nas configurações do projeto são executados;
  5. resload.js é executado quando todos os assets foram carregados.
  6. start.js — Invocado logo antes do game ser iniciado (nenhuma room foi criada ainda).
  7. A primeira room é criada.
  8. O OnCreate da room é invocado.
  9. roomoncreate.js.
  10. switch.js é invocado.
  11. ct.camera é devidamente posicionada.

Na transição de uma room para outra:

  1. O evento OnLeave da room anterior é invocado.
  2. roomonleave.js.
  3. OnCreate da nova room é invocado.
  4. As copies são criadas aqui, com todos os seus eventos e injeções.
  5. roomoncreate.js
  6. switch.js
  7. ct.camera é devidamente posicionada.

A cada frame:

  1. beforeframe.js é executado em contexto global.
  2. beforestep.js with this being the current type.
  3. Copies' own OnStep is called.
  4. afterstep.js com this sendo o tipo atual.
  5. beforeroomstep.js com this sendo uma room atual (pode ser diferente de ct.room)
  6. O OnStep da room que o contém é invocado.
  7. afterroomstep.js com this sendo uma room atual (pode ser diferente de ct.room)
  8. As copies são destruídas com com os seus eventos OnDestroy.
  9. A posição da camera é atualizada.
  10. beforedraw.js com this sendo o tipo atual.
  11. O OnDraw das copies que o contém é invocado.
  12. afterdraw.js com this sendo o tipo atual.
  13. beforeroomdraw.js com this sendo uma room atual (pode ser diferente de ct.room)
  14. OnDraw da room que o contém é invocado.
  15. afterroomdraw.js com this sendo uma room atual (pode ser diferente de ct.room)
  16. afterframe.js é invocado ante de irmos para o próximo frame.

Na criação da copy:

  1. onbeforecreate.js
  2. OnCreate das copies que o contém é invocado.
  3. oncreate.js

Na exclusão da copy:

  1. ondestroy.js
  2. O evento OnDestroy das copies que o contém é invocado.