Instancias
Estas funciones trabajan con las instancias de la room actual. El <T> es el objeto: spawn<Enemy>, count<Coin>.
| Función | Qué hace | Ejemplo |
|---|---|---|
T* spawn<T>(float atX, float atY, std::string_view layer) |
Crea una instancia de T en la posición dada, en la capa layer. Su onSpawn se ejecuta al momento. Devuelve la instancia creada (o nullptr si la room ya está terminando). |
spawn<Bullet>(x, y - 8, "Tiros"); |
void each<T>(fn) |
Llama a fn para cada instancia viva de T. Las creadas durante la llamada no entran. |
each<Enemy>([](Enemy& e) { e.destroy(); }); |
int count<T>() |
Cuántas instancias vivas de T existen. |
if (count<Enemy>() == 0) goTo("Victoria"); |
bool any<T>() |
true si existe al menos una instancia de T. |
if (!any<Player>()) restart(); |
T* closest<T>() |
La instancia de T más cercana (sin contar esta), o nullptr. |
if (Player* p = closest<Player>()) moveToward(p->x, p->y, 1); |
void destroyAll<T>() |
Destruye todas las instancias de T. |
destroyAll<Bullet>(); |
T* instance<T>() |
La primera instancia viva de T (puede ser esta misma), o nullptr. Hecha para objetos que solo tienen una instancia, como un controlador global. |
instance<Controle>()->moedas++; |
Por el nombre del objeto
Sección titulada «Por el nombre del objeto»each, count, any y destroyAll también aceptan el nombre del objeto entre comillas. Sirve para los objetos sin código, que no tienen clase. El each recibe un Entity&.
| Función | Ejemplo |
|---|---|
int count(std::string_view object) |
if (count("Moeda") == 0) goTo("Fase2"); |
bool any(std::string_view object) |
if (!any("Chave")) ... |
void each(std::string_view object, fn) |
each("Caixa", [](Entity& caixa) { caixa.visible = false; }); |
void destroyAll(std::string_view object) |
destroyAll("Moeda"); |
El nombre del objeto de una instancia está en objectName().
Observaciones
Sección titulada «Observaciones»- “Vivas” quiere decir que todavía no fueron destruidas.
- Las subclases cuentan: si
Bosshereda deEnemy,count<Enemy>()cuenta también a los jefes. - Comprueba siempre que el puntero devuelto no sea
nullptrantes de usarlo, como en los ejemplos conif (... = ...). - Para guardar una referencia a una instancia durante más de un paso, usa un Handle.
