Camadas e tiles
As camadas são as do painel Camadas da room. No código, uma camada é sempre indicada pelo nome, entre aspas.
Instâncias e camadas
Seção intitulada “Instâncias e camadas”| Função | O que faz | Exemplo |
|---|---|---|
T* spawn<T>(float atX, float atY, std::string_view layer) |
Cria uma instância de T na camada layer. Devolve nullptr (com erro na Saída) se a camada não existe ou não é de Instâncias. |
spawn<Bullet>(x, y - 8, "Tiros"); |
T* spawnAtDepth<T>(float atX, float atY, int atDepth) |
Cria uma instância fora das camadas, num depth escolhido. | spawnAtDepth<Faisca>(x, y, -50); |
void setLayer(std::string_view layer) |
Muda esta instância para outra camada de Instâncias. | setLayer("Frente"); |
const std::string& layerName() |
O nome da camada desta instância ("" se ela está fora das camadas). |
if (layerName() == "Fundo") ... |
Mostrar, esconder e mover
Seção intitulada “Mostrar, esconder e mover”| Função | O que faz | Exemplo |
|---|---|---|
void setLayerVisible(std::string_view layer, bool show) |
Mostra ou esconde uma camada. | setLayerVisible("Segredo", true); |
bool layerVisible(std::string_view layer) |
true se a camada está visível. |
if (layerVisible("Segredo")) ... |
void setLayerPosition(std::string_view layer, float x, float y) |
Põe o canto de uma camada de Fundo em (x, y) da room. |
setLayerPosition("Montanhas", scene().camera.x * 0.5f, 40); |
float layerX(std::string_view layer) e layerY |
A posição atual da camada. | float px = layerX("Montanhas"); |
| Função | O que faz | Exemplo |
|---|---|---|
int tileAt(std::string_view layer, float atX, float atY) |
O número do tile que está naquele ponto da camada de Tiles (o primeiro do tileset é o 0), ou -1 se não há tile. |
if (tileAt("Chao", x, y + 12) == 7) ... |
bool solidAt(float atX, float atY) |
true se há algo sólido naquele ponto: um tile sólido ou uma instância com solid. |
if (solidAt(x + 10, y)) flipX = !flipX; |
Observações
Seção intitulada “Observações”- O depth de uma instância vem da camada em que ela está.
depthainda pode ser lido e mudado no código, massetLayeré o jeito mais claro de mudar a ordem de desenho. - Esconder uma camada de Instâncias só deixa de desenhá-las: elas continuam rodando e colidindo.
- Uma camada de Tiles escondida continua barrando o movimento. Para ela deixar de colidir, desligue Colide no editor.
- Os tiles sólidos entram sozinhos em
placeFree,moveAndStop,onGround,hitFloor,hitWallehitCeiling. Veja Colisão e Movimento. - Os tiles não mudam com o jogo rodando nesta versão.
A janela do jogo
Seção intitulada “A janela do jogo”Para um menu de opções de vídeo. O que está em Configurações do projeto é só o valor inicial.
| Função | O que faz | Exemplo |
|---|---|---|
void Window::setFullscreen(bool on) |
Entra na tela cheia ou volta para a janela. | Window::setFullscreen(!Window::fullscreen()); |
bool Window::fullscreen() |
true se o jogo está em tela cheia. |
if (Window::fullscreen()) ... |
void Window::setScale(WindowScale scale) |
Como a imagem é ampliada: WindowScale::Integer, Fit (manter a proporção) ou Stretch. |
Window::setScale(WindowScale::Fit); |
WindowScale Window::scale() |
Como a imagem está sendo ampliada. | if (Window::scale() == WindowScale::Fit) ... |
void Window::setSize(int width, int height) |
Muda o tamanho da janela, em pixels de tela. Em tela cheia não faz nada. | Window::setSize(1280, 720); |
int Window::width() e height() |
O tamanho atual da janela. | int w = Window::width(); |
int Window::screenWidth() e screenHeight() |
O tamanho do monitor. | if (Window::screenWidth() >= 1920) ... |
A resolução do jogo não muda com setSize: a imagem é ampliada para o tamanho novo.
Veja Cenário com tiles e Fundo com parallax.
