71 lines
No EOL
2 KiB
C++
71 lines
No EOL
2 KiB
C++
#include "client.h"
|
|
|
|
#include <iostream>
|
|
|
|
#include "net.h"
|
|
|
|
#include "game.h"
|
|
#include "filesystem.h"
|
|
|
|
int runClient(int argc, char* argv[])
|
|
{
|
|
// must provide information
|
|
if (argc < 2)
|
|
fatal_error("Usage: ttrts client HOST");
|
|
|
|
std::string hostname = argv[1];
|
|
|
|
sockaddr_in serv_addr; // Server address
|
|
memset(&serv_addr,0, sizeof(serv_addr));
|
|
|
|
// Set the server to AF_INET
|
|
serv_addr.sin_family = AF_INET;
|
|
// Set our server address port to the port number provided
|
|
serv_addr.sin_port = htons(TTRTS_PORT);
|
|
|
|
std::cout<<"TTRTS: Connecting to "<<hostname<<std::endl;
|
|
int sockfd = ConnectToHostServer(hostname, serv_addr);
|
|
|
|
unsigned int player;
|
|
std::string gameNameString;
|
|
|
|
// Handshake with server to fetch player and gamestring
|
|
PerformClientHandshake(sockfd, player, gameNameString);
|
|
|
|
// output our information
|
|
player_t myPlayer = (player_t)player;
|
|
std::cout<<"TTRTS: I am player "<<std::to_string((int)myPlayer)<<std::endl;
|
|
std::cout<<"TTRTS: Game is "<<gameNameString<<std::endl;
|
|
|
|
// Clean out the games dir
|
|
CreateAndCleanGameDir(gameNameString);
|
|
|
|
// Buffer for messages
|
|
char buffer[1028];
|
|
memset(buffer,0,sizeof(buffer));
|
|
|
|
int n = 0; // return value for read and write calls
|
|
while ( n >= 0 )
|
|
{
|
|
std::cout<<"TTRTS: Waiting for gamestate"<<std::endl;
|
|
std::string gamestate = WaitForGamestateMessage(sockfd);
|
|
|
|
// Output the gamestate file for this game
|
|
CTTRTSGame thisGame = GetGameFromString(gamestate);
|
|
OutputGameStateFile(thisGame);
|
|
|
|
// If game over, exit with out winning player and message
|
|
if(thisGame.GameOver())
|
|
exit( OutputGameEnd(thisGame) );
|
|
|
|
// Get the order file for this turn`
|
|
std::string orders = GetOrdersFromPlayerFile(thisGame,myPlayer);
|
|
|
|
std::cout<<"TTRTS: Sending orders"<<std::endl;
|
|
std::cout<<orders<<std::endl;
|
|
// Write to the socket with the buffer
|
|
n = SendOrdersToServer(sockfd, orders);
|
|
}
|
|
|
|
return 0;
|
|
} |