12,14 → 12,36 |
connect(timer, SIGNAL(timeout()), this, SLOT(update())); |
timer->start(50); |
|
timer2 = new QTimer(this); |
connect(timer2, SIGNAL(timeout()),this,SLOT(clientTimeOut())); |
timer2->setSingleShot(true); |
|
suddenDeath = false; |
suddenDeathTimer = new QTimer(this); |
connect(suddenDeathTimer, SIGNAL(timeout()), this, SLOT(activateSuddenDeath())); |
suddenDeathTimer->start(300000); |
|
|
|
id = 0; |
} |
|
|
void MainWindow::clientTimeOut() |
{ |
cout << "Timeout function called\n"; |
Bike *bike; |
foreach(bike,bikes) |
{ |
if(!bike->hasHadGo) |
{ |
bike->socket->disconnectFromHost(); |
bike->dead = true; |
bike->hasHadGo = true; |
} |
} |
} |
|
MainWindow::~MainWindow() |
{ |
delete server; |
37,12 → 59,6 |
} |
} |
|
void *runtherun(void *bike){ |
Bike *realbike = (Bike *)bike; |
realbike->run(); |
pthread_exit(NULL); |
} |
|
void MainWindow::paintEvent(QPaintEvent *e) |
{ |
if (suddenDeath) |
65,28 → 81,33 |
{ |
ready = false; |
} |
bikes[i]->hasHadGo = false; |
bikes[i]->haveSentAlready = false; |
} |
|
if (ready) |
{ |
cout << ":: Sent move request..." << endl; |
pthread_t threads[bikes.count()]; |
// cout << ":: Sent move request..." << endl; |
bool alldone = false; |
timer2->start(10000); |
while(!alldone){ |
for (int i = 0; i < bikes.count(); i++) |
{ |
if (bikes[i]->show) |
if (bikes[i]->show && !bikes[i]->hasHadGo) |
{ |
bikes[i]->hasHadGo = false; |
bikes[i]->bikes = bikes; |
pthread_create(&threads[i],NULL,runtherun,(void *)bikes[i]); |
bikes[i]->run(); |
} |
} |
Bike *bike; |
foreach(bike,bikes) |
{ |
while(!bike->hasHadGo) |
{ |
alldone = true; |
for (int i = 0; i < bikes.count(); i++){ |
if(bikes[i]->show && !bikes[i]->hasHadGo){ |
alldone = false; |
} |
} |
} |
timer2->stop(); |
} |
|
for (int i = 0; i < bikes.count(); i++) |
{ |
95,7 → 116,6 |
bikes[i]->draw(&painter,bikes); |
} |
} |
} |
|
checkClients(); |
} |
108,6 → 128,7 |
Bike *bike = new Bike(socket, id); |
connect(bike, SIGNAL(chat(QString,QString)), this, SLOT(chat(QString,QString))); |
id += 1; |
cout << "Resetting from here\n"; |
reset(); |
|
bikes.append(bike); |
138,15 → 159,16 |
{ |
everyoneDied = false; |
} |
else if (bikes[i]->dead) |
{ |
everyoneDied = false; |
// else if (bikes[i]->dead) |
// { |
// everyoneDied = false; |
// } |
} |
} |
} |
|
if (everyoneDied) |
{ |
cout << "resetting from other place\n"; |
reset(); |
} |
} |