Pular para o conteúdo
Baixar

Variáveis

Você quer ajustar a velocidade do jogador, a vida de um inimigo ou o destino de uma porta no editor, sem abrir o código a cada teste.

Uma variável é um valor com nome que você cria no objeto. No código, ela é um campo comum da classe. Na room, cada instância pode ter o seu próprio valor.

  1. Clique no objeto em Recursos.
  2. No Inspetor, na seção Variáveis, clique em + Variável e escolha o tipo.
  3. Clique no nome (começa como variavel) e dê o nome que você quer, por exemplo velocidade.
  4. Ao lado do nome, ajuste o valor padrão.

O botão ⋮ no fim da linha troca o Tipo, muda a ordem (Subir, Descer) e Exclui a variável.

Tipo O que guarda No código
número Um número com vírgula float
inteiro Um número inteiro int
sim/não Verdadeiro ou falso bool
texto Um texto std::string
cor Uma cor Color
room, objeto, sprite, som Um recurso do projeto, escolhido numa lista std::string (o nome)

A classe do objeto precisa da linha BRASA_VARS, logo depois de public:. O Novo objeto já cria o .hpp com ela:

class Player : public brasa::Entity {
public:
BRASA_VARS(Player)
void onUpdate() override;
};

Daí em diante, a variável é um campo como qualquer outro:

void Player::onUpdate() {
x += axis("esquerda", "direita") * velocidade;
}

Não declare na classe um campo com o mesmo nome: o BRASA_VARS já faz isso.

  1. Abra a room e clique na instância.
  2. No Inspetor, em Valores próprios, marque a caixinha ao lado da variável.
  3. Mude o valor.

Desmarcada, a instância usa o valor padrão do objeto. Um exemplo: uma bandeira com a variável destino, do tipo room. Cada bandeira da fase aponta para uma room diferente, e o código é um só:

onTouchStart<Player>([this](Player&) { goTo(destino); });
  • Mudar um valor (o padrão ou o de uma instância) não recompila nada: aperte Play.
  • Criar, renomear, excluir ou trocar o tipo de uma variável recompila o jogo no próximo Play.

Os valores já estão no objeto quando o onSpawn roda.

  • Ao renomear, o editor atualiza as instâncias de todas as rooms e pergunta se troca o nome também no .hpp e no .cpp do objeto. Outros arquivos que usam a variável ficam por sua conta.
  • Ao excluir, as instâncias perdem o valor próprio, e o código que usava a variável deixa de compilar até você tirá-la de lá.
  • Renomear uma room, um objeto, um sprite ou um som atualiza as variáveis que apontam para ele.

O aviso diz que a classe não tem BRASA_VARS: as variáveis ficam salvas, mas os valores não chegam ao jogo. Clique em Inserir BRASA_VARS no .hpp e o editor escreve a linha para você.

Num objeto antigo, com a classe dentro do .cpp, mova a classe para um .hpp primeiro. A classe também precisa ficar fora de namespace.