SQC-15_online #1
| @@ -77,7 +77,8 @@ int Server::Ready() { | |||||||
| 		std::cin.getline(m_buf.ptr, BUFFER_LENGTH); | 		std::cin.getline(m_buf.ptr, BUFFER_LENGTH); | ||||||
| 		try { | 		try { | ||||||
| 			m_game.countdown = std::stoi(m_buf.ptr); | 			m_game.countdown = std::stoi(m_buf.ptr); | ||||||
| 		} catch(const std::exception& e) { | 		} | ||||||
|  | 		catch (const std::exception& e) { | ||||||
| 			Log(e.what(), true, false); | 			Log(e.what(), true, false); | ||||||
| 			m_game.countdown = 0; | 			m_game.countdown = 0; | ||||||
| 		} | 		} | ||||||
| @@ -87,7 +88,8 @@ int Server::Ready() { | |||||||
| 		std::cin.getline(m_buf.ptr, BUFFER_LENGTH); | 		std::cin.getline(m_buf.ptr, BUFFER_LENGTH); | ||||||
| 		try { | 		try { | ||||||
| 			m_game.seed = 9370707;//std::stoi(m_buf.ptr); | 			m_game.seed = 9370707;//std::stoi(m_buf.ptr); | ||||||
| 		} catch(const std::exception& e) { | 		} | ||||||
|  | 		catch (const std::exception& e) { | ||||||
| 			Log(e.what(), true, false); | 			Log(e.what(), true, false); | ||||||
| 			m_game.seed = 0; | 			m_game.seed = 0; | ||||||
| 		} | 		} | ||||||
| @@ -97,7 +99,8 @@ int Server::Ready() { | |||||||
| 		std::cin.getline(m_buf.ptr, BUFFER_LENGTH); | 		std::cin.getline(m_buf.ptr, BUFFER_LENGTH); | ||||||
| 		try { | 		try { | ||||||
| 			nbrjoueurs = std::stoi(m_buf.ptr); | 			nbrjoueurs = std::stoi(m_buf.ptr); | ||||||
| 		} catch(const std::exception& e) { | 		} | ||||||
|  | 		catch (const std::exception& e) { | ||||||
| 			Log(e.what(), true, false); | 			Log(e.what(), true, false); | ||||||
| 			nbrjoueurs = 0; | 			nbrjoueurs = 0; | ||||||
| 		} | 		} | ||||||
| @@ -207,10 +210,12 @@ void Server::Run() { | |||||||
| 		sync.timestamp = 0; | 		sync.timestamp = 0; | ||||||
| 		sync.timer = m_game.countdown; | 		sync.timer = m_game.countdown; | ||||||
| 		sendPackTo<Sync>(m_sock_udp, &sync, &m_buf, conn->getAddr()); | 		sendPackTo<Sync>(m_sock_udp, &sync, &m_buf, conn->getAddr()); | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	int timer = m_game.countdown, sync_acc = 0; | 	int timer = m_game.countdown, sync_acc = 0; | ||||||
| 	std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now(); | 	std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now(); | ||||||
| 	Timestamp last = 0; | 	Timestamp last = 0; | ||||||
|  | 	std::vector<Chat> chatlog; | ||||||
|  |  | ||||||
| 	while (!endgame) { | 	while (!endgame) { | ||||||
| 		using namespace std::chrono; | 		using namespace std::chrono; | ||||||
| @@ -227,23 +232,22 @@ void Server::Run() { | |||||||
| 		for (auto& [key, conn] : m_players) { | 		for (auto& [key, conn] : m_players) { | ||||||
| 			int deadplayers = 0; | 			int deadplayers = 0; | ||||||
| 			std::vector<char*> lsPck; | 			std::vector<char*> lsPck; | ||||||
| 				Input in; | 			Input in; Chat chat; Sync sync; | ||||||
| 				Sync sync; |  | ||||||
| 			lsPck = recvPacks(m_sock_udp, &m_buf); | 			lsPck = recvPacks(m_sock_udp, &m_buf); | ||||||
| 			for (auto& pck : lsPck) { | 			for (auto& pck : lsPck) { | ||||||
| 				uint32_t bsize = m_buf.len - (pck - m_buf.ptr); | 				uint32_t bsize = m_buf.len - (pck - m_buf.ptr); | ||||||
| 				switch (netprot::getType(pck, 1)) { | 				switch (netprot::getType(pck, 1)) { | ||||||
| 					using enum netprot::PACKET_TYPE; | 					using enum netprot::PACKET_TYPE; | ||||||
| 				case INPUT: | 				case INPUT: | ||||||
| 						if (Deserialize(&in, pck, &bsize)) { | 					if (Deserialize(&in, pck, &bsize)) | ||||||
| 						m_players[in.sid]->AddInput(in); | 						m_players[in.sid]->AddInput(in); | ||||||
| 						} |  | ||||||
| 					break; | 					break; | ||||||
| 				case SYNC: | 				case SYNC: | ||||||
| 					if (Deserialize(&sync, pck, &bsize)) {} | 					if (Deserialize(&sync, pck, &bsize)) {} | ||||||
| 					break; | 					break; | ||||||
| 				case CHAT: | 				case CHAT: | ||||||
| 						// TODO: Pitcher les chats à tous le monde. | 					if (Deserialize(&chat, pck, &bsize)) | ||||||
|  | 						chatlog.push_back(chat); | ||||||
| 					break; | 					break; | ||||||
| 				default: break; | 				default: break; | ||||||
| 				} | 				} | ||||||
| @@ -253,6 +257,7 @@ void Server::Run() { | |||||||
| 			if (conn->m_nsync) { | 			if (conn->m_nsync) { | ||||||
| 				if (conn->player->AmIDead()) { | 				if (conn->player->AmIDead()) { | ||||||
| 					++deadplayers; | 					++deadplayers; | ||||||
|  | 					conn->m_nsync == false; | ||||||
| 					continue; | 					continue; | ||||||
| 				} | 				} | ||||||
| 				conn->Run(m_world); | 				conn->Run(m_world); | ||||||
| @@ -262,12 +267,16 @@ void Server::Run() { | |||||||
| 			if (deadplayers == players - 1 || timer <= 0) | 			if (deadplayers == players - 1 || timer <= 0) | ||||||
| 				endgame = true; | 				endgame = true; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		for (auto& chat : chatlog) | ||||||
|  | 			for (auto& [key, conn] : m_players) | ||||||
|  | 				sendPackTo<Chat>(m_sock_udp, &chat, &m_buf, conn->getAddr()); | ||||||
|  | 		chatlog.clear(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// TODO: Gérer les 2-3 secondes post-game avant le billboard pour pas avoir un whiplash à la fin de la game. | 	// TODO: Gérer les 2-3 secondes post-game avant le billboard pour pas avoir un whiplash à la fin de la game. | ||||||
|  |  | ||||||
| } | } | ||||||
| } |  | ||||||
|  |  | ||||||
| inline std::string Server::LogTimestamp() { | inline std::string Server::LogTimestamp() { | ||||||
| 	time_t rawtime; | 	time_t rawtime; | ||||||
|   | |||||||
| @@ -1339,8 +1339,6 @@ void Engine::Render(float elapsedTime) { | |||||||
| 							if (diff.y < 1.) | 							if (diff.y < 1.) | ||||||
| 								diff.y = 0; | 								diff.y = 0; | ||||||
|  |  | ||||||
| 							//std::cout << sync.timestamp << " ms: " << comp.position << " - " << sync.position << " Diff: " << diff.Length() << std::endl; |  | ||||||
|  |  | ||||||
| 							if (diff.Length() > 1.5) { | 							if (diff.Length() > 1.5) { | ||||||
| 								diff.Normalize(); | 								diff.Normalize(); | ||||||
| 								m_player.Move(-diff); | 								m_player.Move(-diff); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user