Пример #1
0
void uniFinalizar()
{
	if (!uniEstaInicializada())
		return;

	//	finaliza gerenciador de tempo
	gTempo.finalizar();

	//	finaliza gerenciador de recursos
	gRecursos.descarregarTudo();

	// finaliza audio
	gAudios.finalizar();

	//	finaliza painel de debug
	gDebug.finalizar();

	//	finaliza gerenciador de graficos
	gGraficos.finalizar();

	//	destroi janela principal
	gJanela.destruir();

	//	finaliza globais
	Global::getInstancia().finalizar();

	// finaliza SDL_ttf (biblioteca de fontes)
	TTF_Quit();

	//	finaliza SDL
	SDL_Quit();

	//	seta uniInicializada para false
	uniInicializada = false;
}
Пример #2
0
bool TileSet::carregar(const string& arquivo, int largura_tiles, int altura_tiles)
{
	if(!uniEstaInicializada())
	{
		gDebug.erro("Sem uniInicializar() antes de tentar carregar: '" + arquivo + "'.");
		return false;
	}

	if(estaCarregado())
	{
		gDebug.erro("Arquivo '" + arquivo + "' nao pode ser carregado, pois TileSet '" + nome + "' ja carregou algum arquivo.");
		return false;
	}

	bool r = tex.criarDoArquivo(arquivo, QUALIDADE_ESCALA_BAIXA);
	
	if(!r) 
	{
		gDebug.erro("Erro ao carregar arquivo: '" + arquivo + "'.");
		return false;
	}

	largura_tile = largura_tiles;
	altura_tile = altura_tiles;

	int largura_total;
	int altura_total;
	tex.obterTamanho(largura_total, altura_total);

	num_tiles_x = largura_total/largura_tiles;
	num_tiles_y = altura_total/altura_tiles;

	return true;
}
Пример #3
0
bool Audio::carregar(string arquivo)
{
	if(!uniEstaInicializada())
	{
		gDebug.erro("Sem uniInicializar() antes de tentar carregar: '" + arquivo + "'.");
		return false;
	}
	
	if(estaCarregado())
	{
		gDebug.erro("Arquivo '" + arquivo + "' nao pode ser carregado, pois Som ja carregou o arquivo " + caminho_arquivo + ".");
		return false;
	}
	mix_chunk = Mix_LoadWAV(arquivo.c_str());
	
	if(!mix_chunk) 
	{
		gDebug.erro("Erro ao carregar arquivo: '" + arquivo + "' - " + SDL_GetError() + ".");
		return false;
	}

	caminho_arquivo = arquivo;
	carregado = true;

	return carregado;
}
Пример #4
0
bool Fonte::carregarTrueType(const string& arquivo, int tamanho, int estilo, Uint16 primeiro_glifo, Uint16 ultimo_glifo, EnumQualidadeEscala qualidade_escala)
{
	if (!uniEstaInicializada())
	{
		gDebug.erro("Sem uniInicializar() antes de tentar carregar: '" + arquivo + "'.");
		return false;
	}

	if (estaCarregada())
	{
		gDebug.erro("Arquivo '" + arquivo + "' nao pode ser carregado, pois Fonte ja carregou o arquivo " + tex.getCaminhoDoArquivo() + ".");
		return false;
	}

	TTF_Font* ttf_font = TTF_OpenFont(arquivo.c_str(), tamanho);
	if (!ttf_font)
	{
		gDebug.erro("Erro ao carregar arquivo: '" + arquivo + "' - " + SDL_GetError() + ".");
		return false;
	}

	TTF_SetFontStyle(ttf_font, estilo);

	if (!criarTexturaTrueType(ttf_font, tamanho, primeiro_glifo, ultimo_glifo, qualidade_escala))
	{
		glifos.clear();
		gDebug.erro("Erro ao criar textura para fonte ttf, usando arquivo: '" + arquivo + "' - " + SDL_GetError() + ".");
		return false;
	}
	glifoNulo.quad.x = 0;
	glifoNulo.quad.y = 0;
	glifoNulo.quad.larg = 0;
	glifoNulo.quad.alt = 0;
	glifoNulo.alturaAcimaDaBase = 0;
	glifoNulo.avanco = tamanho;
	glifoNulo.caractere = 0;

	this->estilo = estilo;
	monoespacada = TTF_FontFaceIsFixedWidth(ttf_font) > 0;

	larguraGlifos = tamanho;
	alturaGlifos = TTF_FontHeight(ttf_font);

	ttf = true;
	return true;
}
Пример #5
0
bool SpriteSheet::carregar(string arquivo, int num_animacoes, int num_max_frames, EnumQualidadeEscala qualidade_escala)
{
	if(!uniEstaInicializada())
	{
		gDebug.erro("Sem uniInicializar() antes de tentar carregar: '" + arquivo + "'.");
		return false;
	}

	if(estaCarregado())
	{
		gDebug.erro("Arquivo '" + arquivo + "' nao pode ser carregado, pois SpriteSheet ja carregou o arquivo " + tex.getCaminhoDoArquivo() + ".");
		return false;
	}

	if(!tex.criarDoArquivo(arquivo, qualidade_escala))
	{
		gDebug.erro("Erro ao carregar arquivo: '" + arquivo + "' - " + SDL_GetError() + ".");
		return false;
	}

	if(num_animacoes < 1)
		num_animacoes = 1;
	if(num_max_frames < 1)
		num_max_frames = 1;

	int largura_frame = tex.getLargura()/num_max_frames;
	int altura_frame = tex.getAltura()/num_animacoes;

	frames.resize(num_animacoes);
	for(int i = 0; i < frames.size(); ++i)
	{
		frames[i].resize(num_max_frames);
		for(int j = 0; j < num_max_frames; ++j)
		{
			frames[i][j] = Quad(j*largura_frame, i*altura_frame, largura_frame, altura_frame);
		}
	}

	return true;
}
Пример #6
0
bool uniInicializar(int largura_janela, int altura_janela, bool tela_cheia, string titulo_janela, int flags_sdl_window)
{
	if (uniEstaInicializada())
	{
		gDebug.erro("uniInicializar() falhou. A biblioteja já foi inicializada anteriormente.");
		return false;
	}

	//	inicializa SDL
	SDL_Init(SDL_INIT_EVERYTHING);
	if (!SDL_WasInit(0))
		return false;

	//	inicializa SDL_ttf (biblioteca de fontes)
	TTF_Init();
	if (!TTF_WasInit())
	{
		SDL_Quit();
		return false;
	}

	//	inicializa globais
	Global::getInstancia().inicializar();

	//	cria janela principal
	bool janela_ok = gJanela.criar(largura_janela, altura_janela, tela_cheia, titulo_janela, flags_sdl_window);
	if (!janela_ok)
	{
		Global::getInstancia().finalizar();
		TTF_Quit();
		SDL_Quit();
		return false;
	}

	uniInicializada = true;		//	seta uniInicializada para true. Precisa ser feito aqui para poder carregar a fonte padrao
	gGraficos.inicializar(gJanela.getSDL_Renderer());
	if (!gGraficos.getFontePadrao())
	{
		//	se a fonte padrao nao foi carregada,
		//  limpa o painel de debug e desativa 
		//	para nao tentar desenhar sem ter uma fonte.
		gDebug.limpar();
		gDebug.desativar();
	}
	uniInicializada = false;	//	volta a ser false para continuar a inicializacao

								//	inicializa painel de debug
	gDebug.inicializar();

	//	inicializa audio
	gAudios.inicializar();
	if (!gAudios.estaInicializado())
	{
		gDebug.finalizar();
		gGraficos.finalizar();
		gJanela.destruir();
		Global::getInstancia().finalizar();
		TTF_Quit();
		SDL_Quit();
		return false;
	}

	//	inicializa handlers de eventos
	gEventos.janela = &gJanela;
	gEventos.mouse = &gMouse;
	gEventos.teclado = &gTeclado;
	gEventos.joysticks = &gJoysticks;
	gEventos.toques = &gToques;
	gEventos.atualizar();

	//	inicializa gerenciador de tempo
	gTempo.inicializar();

	//	seta uniInicializada para true
	uniInicializada = true;

	return true;
}
Пример #7
0
bool Fonte::carregarBitmap(const string& arquivo, const wstring& caracteres, int num_glifos_x, int num_glifos_y, EnumQualidadeEscala qualidade_escala)
{
	if (!uniEstaInicializada())
	{
		gDebug.erro("Sem uniInicializar() antes de tentar carregar: '" + arquivo + "'.");
		return false;
	}

	if (estaCarregada())
	{
		gDebug.erro("Arquivo '" + arquivo + "' nao pode ser carregado, pois Fonte ja carregou o arquivo " + tex.getCaminhoDoArquivo() + ".");
		return false;
	}

	if (caracteres.empty())
	{
		gDebug.erro("Fonte bitmap '" + arquivo + "' não pode ser carregada sem informar os caracteres usados.");
		return false;
	}

	if (!criarTexturaBitmap(arquivo, qualidade_escala))
	{
		glifos.clear();
		gDebug.erro("Erro ao criar textura para fonte bitmap, usando arquivo: '" + arquivo + "' - " + SDL_GetError() + ".");
		return false;
	}

	int larg, alt;
	tex.obterTamanho(larg, alt);
	larg /= num_glifos_x;
	alt /= num_glifos_y;
	ascent = alt;
	unsigned int size = num_glifos_x*num_glifos_y;
	if (caracteres.size() < size)
		size = caracteres.size();
	glifos.resize(size);
	for (unsigned int i = 0; i < size; ++i)
	{
		Glifo* g = &glifos[i];
		g->caractere = (Uint16)caracteres[i];
		g->quad.alt = alt;
		g->quad.larg = larg;
		g->avanco = larg;
		g->quad.x = (i % num_glifos_x)*larg;
		g->quad.y = (i / num_glifos_x)*alt;
		g->dx = 0;
		g->alturaAcimaDaBase = alt;
	}
	//	ordena caracteres para poder acessa-los mais facilmente
	for (unsigned int i = 0; i < size; ++i)
		for (unsigned int j = i + 1; j < size; ++j)
		{
			if (glifos[j].caractere < glifos[i].caractere)
			{
				Glifo temp = glifos[i];
				glifos[i] = glifos[j];
				glifos[j] = temp;
			}
		}
	glifoNulo.quad.x = 0;
	glifoNulo.quad.y = 0;
	glifoNulo.quad.larg = 0;
	glifoNulo.quad.alt = 0;
	glifoNulo.dx = 0;
	glifoNulo.alturaAcimaDaBase = 0;
	glifoNulo.avanco = larg;
	glifoNulo.caractere = 0;

	estilo = FONTE_ESTILO_NORMAL;
	monoespacada = true;
	numGlifosX = num_glifos_x;
	numGlifosY = num_glifos_y;
	larguraGlifos = glifos[0].quad.larg;
	alturaGlifos = glifos[0].quad.alt;

	ttf = false;
	return true;
}