quinta-feira, 24 de janeiro de 2013

Estruturando um jogo: Propriedades de Objetos


Ryan Lindeman criou um simples e eficiente sistema que gerencia propriedades de objetos de forma fácil.
Para começar, salve o código daqui como header (.h).
Salve o código daqui como source (.cpp).
Salve o código daqui como header.
Salve o código daqui como source.
Salve o código daqui como header.
E um exemplo básico:
#include "PropertyManager.hpp"

int main(int argc, char* argv[])
{
  PropertyManager properties;

  // Adicionar uma propriedade
  properties.Add<sf::Clock>("AnimationClock", sf::Clock());

  // Adicionar uma propriedade
  properties.Add<sf::Sprite>("Sprite", sf::Sprite());

  // Adicionar uma propriedade
  properties.Add<bool>("Visible", true);

  // Testar uma propriedade
  if(properties.Get<bool>("Visible") == true)
  {
    // Desenhar uma sprite
    renderWindow.draw(properties.Get<sf::Sprite>("Sprite"));

    // Obter uma propriedade
    sf::Clock anClock = properties.Get<sf::Clock>("AnimationClock");

    // Reiniciar o relógio de animação
    anClock.reset();

    // Atribuindo valores
    properties.Set<sf::Clock>("AnimationClock", anClock);
  }

  // Se uma propriedade existe
  if(properties.HasID("NotExist"))
  {
    printf("It exists!\n");
  }
  else
  {
    printf("It doesn't exist\n");
  }

  return 0;
}
O que podemos notar é que há bastante código por trás de tudo isso, mas, no final das contas, usaremos bem menos códigos para usar o sistema.


Nenhum comentário:

Postar um comentário