<commit_before>#ifndef CARA_CRACHA
#define CARA_CRACHA

#include "EventManager.h"
#include "get_fill_size.hpp"
#include "Texto.h"

#define EXPEDIENTE_ALMO_INICIO 660
#define EXPEDIENTE_ALMO_FIM 840
#define EXPEDIENTE_JANT_INICIO 1020
#define EXPEDIENTE_JANT_FIM 1140

class Cara_cracha {
	SDL_Window* g_window; // Janela principal
	SDL_Point window_size; // Tamanho da janela
	SDL_Renderer* g_renderer; // Renderizador principal
	Queue<SDL_Texture*> g_bg; // Plano de fundo
	bool game_quit; // Responsavel pelo loop principal
	bool game_play; // Respons�vel por come�ar o jogo
	EventManager event; // Eventos
	bool mouse_pressed;

	short int max_fps;
	unsigned int curr_fr;
	unsigned int last_fr;

	double hora;
	Texto t_hora;
	Texto t_dia;
	Objeto janela;

	public:
			// tela_id == 0 (inicial/instruções)
			// tela_id == 1 (jogo rodando, sem ver carteirinha)
			// tela_id == 2 (jogo rodando, vendo carteirinha)
			// tela_id == 3 (fim de jogo, game over)
			// tela_id == 4 (jogo pausado)
		int tela_id;
		Pessoa player;
		Queue<Pessoa*> fila_dentro;
		Queue<Pessoa*> fila_fora;
		Queue<GeoA::Vetor> fila_pos;
		Objeto catraca;
		int count_criterios[4];
		Texto t_count_criterios[4];
		int pontua_prov;
		Texto t_pontua_prov;

		Texto t_instrucoes[12];
		Texto t_jogo_pausado;
		Texto t_controles[3];
		Objeto o_controles[2];

		Cara_cracha():
			g_window(NULL),
			g_renderer(NULL),
			game_quit(false),
			game_play(false),
			event(&this->game_quit, &this->game_play, &this->mouse_pressed, &tela_id, &fila_dentro, &this->catraca.estado, count_criterios),
			mouse_pressed(false),
			max_fps(60),
			curr_fr(0),
			last_fr(0),
			hora(540),
			tela_id(0),
			player(Pessoa(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)),
			pontua_prov(0) {
				for (int i = 0; i < 4; i++) {
					this->count_criterios[i] = 0;
				}
		};

		~Cara_cracha() {
			SDL_DestroyRenderer(this->g_renderer);
			SDL_DestroyWindow(this->g_window);
			this->g_renderer = NULL;
			this->g_window = NULL;

			IMG_Quit();
			TTF_Quit();
			SDL_Quit();
		}

		bool init() {
			//SDL_Init(SDL_INIT_VIDEO);
			this->g_window = SDL_CreateWindow("Cara crachá", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, -1, -1, SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_ALLOW_HIGHDPI);
			if (this->g_window == NULL) {
				SDL_Log("Window could not be created. SDL Error: %s", SDL_GetError());
				return false;
			} else {
				// Cria o renderizador
				this->g_renderer = SDL_CreateRenderer(this->g_window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
				if (this->g_renderer == NULL) {
					SDL_Log("Renderer could not be created. SDL Error: %s", SDL_GetError());
					return false;
				} else {

					// Inicializa a cor do renderizador
					SDL_SetRenderDrawColor(this->g_renderer, 0, 0, 0, 255);

					// Inicializa o carregamento de PNG
					int imgFlags = IMG_INIT_PNG;
					if (!(IMG_Init(imgFlags) & imgFlags)) {
						SDL_Log("SDL could not initialize image. SDL Error: %s", IMG_GetError());
						return false;
					}

					if(TTF_Init() == -1) {
						SDL_Log("TTF_Init: %s\n", TTF_GetError());
						return false;
					}

					// Do samething....
					this->event.update();


					SDL_GetWindowSize(this->g_window, &this->window_size.x, &this->window_size.y);


					this->t_instrucoes[0] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 50, {this->window_size.x/2, this->window_size.y/2 - 250, 0, 0}, {220, 220, 220}, "Instruções");

					// Aqui você é um estagiário de um restaurante, situado em uma universidade federal, o qual está passando por uma crise ética das pessoas que o utilizam. Algumas delas estão utilizando cartões de acesso doutras pessoas, por n motivos. Você foi encarregado de verificar TODOS aqueles que quiserem utilizar o restaurante. Exiga que entreguem os cartões de acesso caso necessário, tenha certeza que só entrará aqueles que possuírem seus próprios cartões de acesso. Você estará sendo monitorado a todo instante, olhe atentamente à foto presente no cartão de acesso. Porém, você precisa ser rápido. Não deixe que a fila se acomule. Seu expediente é das 11:00 às 14:00 e das 17:00 às 19:00. 

					this->t_instrucoes[1] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 - 100, 0, 0}, {220, 220, 220}, "Aqui você é um estagiário de um restaurante, situado em uma universidade federal,");
					this->t_instrucoes[2] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 - 80, 0, 0}, {220, 220, 220}, "o qual está passando por uma crise ética das pessoas que o utilizam. Algumas delas");
					this->t_instrucoes[3] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 - 60, 0, 0}, {220, 220, 220}, "estão utilizando cartões de acesso doutras pessoas, por \"n\" motivos. Você foi encar-");
					this->t_instrucoes[4] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 - 40, 0, 0}, {220, 220, 220}, "regado de verificar TODOS aqueles que quiserem utilizar o restaurante. Tenha certe-");
					this->t_instrucoes[5] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 - 20, 0, 0}, {220, 220, 220}, "certeza que só entrarão aqueles que possuírem seus próprios cartões de acesso. Vo-");
					this->t_instrucoes[6] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2, 0, 0}, {220, 220, 220}, "cê estará sendo monitorado a todo instante, olhe atentamente à foto presente no");
					this->t_instrucoes[7] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 + 20, 0, 0}, {220, 220, 220}, "cartão de acesso. Porém, você precisa ser rápido. Não deixe que a fila se acumule.");
					this->t_instrucoes[8] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 + 40, 0, 0}, {220, 220, 220}, "Seu expediente é das 11:00 às 14:00 e das 17:00 às 19:00.");
					//this->t_instrucoes[9] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 + 60, 0, 0}, {220, 220, 220}, "");

					this->t_instrucoes[10] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {20, this->window_size.y - 40, 0, 0}, {220, 220, 220}, "Pressione ENTER para começar");
					this->t_instrucoes[10].setAncora(-1);
					this->t_instrucoes[11] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x - 20, this->window_size.y - 40, 0, 0}, {220, 220, 220}, "Durante o jogo, pressione ESC para pausar/retornar");
					this->t_instrucoes[11].setAncora(1);


					this->t_jogo_pausado = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y - 20, 0, 0}, {220, 220, 220}, "Jogo pausado");


					this->t_controles[0] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 40, {this->window_size.x/2, this->window_size.y/2 - 250, 0, 0}, {220, 220, 220}, "Controles");
					this->t_controles[1] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 22, {this->window_size.x/4, this->window_size.y/2 - 100, 0, 0}, {220, 220, 220}, "Liberar entrada");
					this->o_controles[0].pos = GeoA::Vetor(this->window_size.x*.25 - 140/2, this->window_size.y*.5 - 172/2, 0);
					this->o_controles[0].tex_frente = Textura("../media/img/clique-esq.png", this->g_renderer, this->o_controles[0].pos.x, this->o_controles[0].pos.y, 140, 172);
					this->t_controles[2] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 22, {this->window_size.x*3/4, this->window_size.y/2 - 100, 0, 0}, {220, 220, 220}, "Impedir entrada");
					this->o_controles[1].pos = GeoA::Vetor(this->window_size.x*.75 - 140/2, this->window_size.y*.5 - 172/2, 0);
					this->o_controles[1].tex_frente = Textura("../media/img/clique-dir.png", this->g_renderer, this->o_controles[1].pos.x, this->o_controles[1].pos.y, 140, 172);


					this->janela.pos = GeoA::Vetor(50, 50, 0);
					this->janela.tex_fundo_0 = Textura("../media/img/box.png", this->g_renderer, this->janela.pos.x, this->janela.pos.y, 213, 350);

					this->t_hora = Texto("../media/font/Volter_Goldfish.ttf", this->g_renderer, 31, {254, 82, 0, 0}, {0, 0, 0}, ((int)(this->hora / 60) % 24 >= 10 ? "" : "0")+std::to_string((int)(this->hora/60) % 24)+((int) this->hora % 60 >= 10 ? ":" : ":0")+std::to_string((int) this->hora % 60));
					this->t_hora.setAncora(1);
					this->t_dia = Texto("../media/font/Volter_Goldfish.ttf", this->g_renderer, 17, {64, 82, 0, 0}, {0, 0, 0}, "Dia "+std::to_string((int)(this->hora / 60) / 24 + 1));<commit_msg>Reposicionado texto e imagem dos controles<commit_after>#ifndef CARA_CRACHA
#define CARA_CRACHA

#include "EventManager.h"
#include "get_fill_size.hpp"
#include "Texto.h"

#define EXPEDIENTE_ALMO_INICIO 660
#define EXPEDIENTE_ALMO_FIM 840
#define EXPEDIENTE_JANT_INICIO 1020
#define EXPEDIENTE_JANT_FIM 1140

class Cara_cracha {
	SDL_Window* g_window; // Janela principal
	SDL_Point window_size; // Tamanho da janela
	SDL_Renderer* g_renderer; // Renderizador principal
	Queue<SDL_Texture*> g_bg; // Plano de fundo
	bool game_quit; // Responsavel pelo loop principal
	bool game_play; // Respons�vel por come�ar o jogo
	EventManager event; // Eventos
	bool mouse_pressed;

	short int max_fps;
	unsigned int curr_fr;
	unsigned int last_fr;

	double hora;
	Texto t_hora;
	Texto t_dia;
	Objeto janela;

	public:
			// tela_id == 0 (inicial/instruções)
			// tela_id == 1 (jogo rodando, sem ver carteirinha)
			// tela_id == 2 (jogo rodando, vendo carteirinha)
			// tela_id == 3 (fim de jogo, game over)
			// tela_id == 4 (jogo pausado)
		int tela_id;
		Pessoa player;
		Queue<Pessoa*> fila_dentro;
		Queue<Pessoa*> fila_fora;
		Queue<GeoA::Vetor> fila_pos;
		Objeto catraca;
		int count_criterios[4];
		Texto t_count_criterios[4];
		int pontua_prov;
		Texto t_pontua_prov;

		Texto t_instrucoes[12];
		Texto t_jogo_pausado;
		Texto t_controles[3];
		Objeto o_controles[2];

		Cara_cracha():
			g_window(NULL),
			g_renderer(NULL),
			game_quit(false),
			game_play(false),
			event(&this->game_quit, &this->game_play, &this->mouse_pressed, &tela_id, &fila_dentro, &this->catraca.estado, count_criterios),
			mouse_pressed(false),
			max_fps(60),
			curr_fr(0),
			last_fr(0),
			hora(540),
			tela_id(0),
			player(Pessoa(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)),
			pontua_prov(0) {
				for (int i = 0; i < 4; i++) {
					this->count_criterios[i] = 0;
				}
		};

		~Cara_cracha() {
			SDL_DestroyRenderer(this->g_renderer);
			SDL_DestroyWindow(this->g_window);
			this->g_renderer = NULL;
			this->g_window = NULL;

			IMG_Quit();
			TTF_Quit();
			SDL_Quit();
		}

		bool init() {
			//SDL_Init(SDL_INIT_VIDEO);
			this->g_window = SDL_CreateWindow("Car<NAME>", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, -1, -1, SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_ALLOW_HIGHDPI);
			if (this->g_window == NULL) {
				SDL_Log("Window could not be created. SDL Error: %s", SDL_GetError());
				return false;
			} else {
				// Cria o renderizador
				this->g_renderer = SDL_CreateRenderer(this->g_window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
				if (this->g_renderer == NULL) {
					SDL_Log("Renderer could not be created. SDL Error: %s", SDL_GetError());
					return false;
				} else {

					// Inicializa a cor do renderizador
					SDL_SetRenderDrawColor(this->g_renderer, 0, 0, 0, 255);

					// Inicializa o carregamento de PNG
					int imgFlags = IMG_INIT_PNG;
					if (!(IMG_Init(imgFlags) & imgFlags)) {
						SDL_Log("SDL could not initialize image. SDL Error: %s", IMG_GetError());
						return false;
					}

					if(TTF_Init() == -1) {
						SDL_Log("TTF_Init: %s\n", TTF_GetError());
						return false;
					}

					// Do samething....
					this->event.update();


					SDL_GetWindowSize(this->g_window, &this->window_size.x, &this->window_size.y);


					this->t_instrucoes[0] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 50, {this->window_size.x/2, this->window_size.y/2 - 250, 0, 0}, {220, 220, 220}, "Instruções");

					// Aqui você é um estagiário de um restaurante, situado em uma universidade federal, o qual está passando por uma crise ética das pessoas que o utilizam. Algumas delas estão utilizando cartões de acesso doutras pessoas, por n motivos. Você foi encarregado de verificar TODOS aqueles que quiserem utilizar o restaurante. Exiga que entreguem os cartões de acesso caso necessário, tenha certeza que só entrará aqueles que possuírem seus próprios cartões de acesso. Você estará sendo monitorado a todo instante, olhe atentamente à foto presente no cartão de acesso. Porém, você precisa ser rápido. Não deixe que a fila se acomule. Seu expediente é das 11:00 às 14:00 e das 17:00 às 19:00. 

					this->t_instrucoes[1] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 - 100, 0, 0}, {220, 220, 220}, "Aqui você é um estagiário de um restaurante, situado em uma universidade federal,");
					this->t_instrucoes[2] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 - 80, 0, 0}, {220, 220, 220}, "o qual está passando por uma crise ética das pessoas que o utilizam. Algumas delas");
					this->t_instrucoes[3] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 - 60, 0, 0}, {220, 220, 220}, "estão utilizando cartões de acesso doutras pessoas, por \"n\" motivos. Você foi encar-");
					this->t_instrucoes[4] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 - 40, 0, 0}, {220, 220, 220}, "regado de verificar TODOS aqueles que quiserem utilizar o restaurante. Tenha certe-");
					this->t_instrucoes[5] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 - 20, 0, 0}, {220, 220, 220}, "certeza que só entrarão aqueles que possuírem seus próprios cartões de acesso. Vo-");
					this->t_instrucoes[6] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2, 0, 0}, {220, 220, 220}, "cê estará sendo monitorado a todo instante, olhe atentamente à foto presente no");
					this->t_instrucoes[7] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 + 20, 0, 0}, {220, 220, 220}, "cartão de acesso. Porém, você precisa ser rápido. Não deixe que a fila se acumule.");
					this->t_instrucoes[8] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 + 40, 0, 0}, {220, 220, 220}, "Seu expediente é das 11:00 às 14:00 e das 17:00 às 19:00.");
					//this->t_instrucoes[9] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y/2 + 60, 0, 0}, {220, 220, 220}, "");

					this->t_instrucoes[10] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {20, this->window_size.y - 40, 0, 0}, {220, 220, 220}, "Pressione ENTER para começar");
					this->t_instrucoes[10].setAncora(-1);
					this->t_instrucoes[11] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x - 20, this->window_size.y - 40, 0, 0}, {220, 220, 220}, "Durante o jogo, pressione ESC para pausar/retornar");
					this->t_instrucoes[11].setAncora(1);


					this->t_jogo_pausado = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 18, {this->window_size.x/2, this->window_size.y - 20, 0, 0}, {220, 220, 220}, "Jogo pausado");


					this->t_controles[0] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 40, {this->window_size.x/2, this->window_size.y/2 - 250, 0, 0}, {220, 220, 220}, "Controles");
					this->t_controles[1] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 22, {this->window_size.x/4, this->window_size.y/2 - 120, 0, 0}, {220, 220, 220}, "Liberar entrada");
					this->o_controles[0].pos = GeoA::Vetor(this->window_size.x*.25 - 140/2, this->window_size.y*.5 + 20 - 172/2, 0);
					this->o_controles[0].tex_frente = Textura("../media/img/clique-esq.png", this->g_renderer, this->o_controles[0].pos.x, this->o_controles[0].pos.y, 140, 172);
					this->t_controles[2] = Texto("../media/font/Ubuntu-R.ttf", this->g_renderer, 22, {this->window_size.x*3/4, this->window_size.y/2 - 120, 0, 0}, {220, 220, 220}, "Impedir entrada");
					this->o_controles[1].pos = GeoA::Vetor(this->window_size.x*.75 - 140/2, this->window_size.y*.5 + 20 - 172/2, 0);
					this->o_controles[1].tex_frente = Textura("../media/img/clique-dir.png", this->g_renderer, this->o_controles[1].pos.x, this->o_controles[1].pos.y, 140, 172);


					this->janela.pos = GeoA::Vetor(50, 50, 0);
					this->janela.tex_fundo_0 = Textura("../media/img/box.png", this->g_renderer, this->janela.pos.x, this->janela.pos.y, 213, 350);

					this->t_hora = Texto("../media/font/Volter_Goldfish.ttf", this->g_renderer, 31, {254, 82, 0, 0}, {0, 0, 0}, ((int)(this->hora / 60) % 24 >= 10 ? "" : "0")+std::to_string((int)(this->hora/60) % 24)+((int) this->hora % 60 >= 10 ? ":" : ":0")+std::to_string((int) this->hora % 60));
					this->t_hora.setAncora(1);
					this->t_dia = Texto("../media/font/Volter_Goldfish.ttf", this->g_renderer, 17, {64, 82, 0, 0}, {0, 0, 0}, "Dia "+std::to_string((int)(this->hora / 60) / 24 + 1));
{'fraction_non_alphanumeric': 0.17116652335912869, 'fraction_numerical': 0.05697907709945543, 'mean_word_length': 3.8609640568403454, 'pattern_counts': {'":': 4, '<': 14, '<?xml version=': 0, '>': 242, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5733180', 'n_tokens_mistral': 8622, 'n_tokens_neox': 7069, 'n_words': 1583}