void Game::SetCup(Cup *cup) { if(this->cup)delete this->cup; this->cup=cup; if(survive) { connect(this,SIGNAL(PlayerSurvived(uchar)),this->cup,SLOT(PlayerSurvive(uchar))); } else { connect(this,SIGNAL(PlayerDied(uchar,uchar)),this->cup,SLOT(PlayerDie(uchar,uchar))); } connect(cup,SIGNAL(PlayerPointChanged(uchar,int)),this,SLOT(ChangePlayerPoint(uchar,int))); connect(cup,SIGNAL(PlayerWonTheCup(uchar,QString)),this,SLOT(PlayerWinTheCup(uchar,QString))); }
/* ============ Killed ============ */ void Killed (edict_t *targ, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) { if (targ->health < -999) targ->health = -999; targ->enemy = attacker; if ((targ->svflags & SVF_MONSTER) && (targ->deadflag != DEAD_DEAD)) { // targ->svflags |= SVF_DEADMONSTER; // now treat as a different content type if (!(targ->monsterinfo.aiflags & AI_GOOD_GUY)) { level.killed_monsters++; if (coop->value && attacker->client) attacker->client->resp.score++; // medics won't heal monsters that they kill themselves if (strcmp(attacker->classname, "monster_medic") == 0) targ->owner = attacker; } } if (targ->movetype == MOVETYPE_PUSH || targ->movetype == MOVETYPE_STOP || targ->movetype == MOVETYPE_NONE) { // doors, triggers, etc targ->die (targ, inflictor, attacker, damage, point); return; } if ((targ->svflags & SVF_MONSTER) && (targ->deadflag != DEAD_DEAD)) { targ->touch = NULL; monster_death_use (targ); } ///Q2 Camera Begin PlayerDied(targ); ///Q2 Camera End targ->die (targ, inflictor, attacker, damage, point); }
void Game::clientsync(Command c) { switch(c.GetMessageType()) { case 0: { emit PlayerPointChanged(c.GetPlayerId(),c.GetMessage()); break; } case 1://move { emit PlayerMoved(c.GetPlayerId(),c.GetMessage()); break; } case 2://plant { emit BombPlanted((c.GetMessage()/256)%256,c.GetMessage()%256,c.GetPlayerId()); break; } case 3://boom { if((c.GetMessage()/(256*256))%256==255)emit DeleteBomb((c.GetMessage()/256)%256,c.GetMessage()%256); emit FieldBlasted((c.GetMessage()/256)%256,c.GetMessage()%256,c.GetPlayerId(),(c.GetMessage()/(256*256))%256); break; } case 4://kioltas { emit FieldExcinted((c.GetMessage()/256)%256,c.GetMessage()%256); break; } case 5://die/blast { if(c.GetMessage()!=256){emit PlayerDied(c.GetPlayerId(),c.GetMessage());} else{emit PlayerBlasted(c.GetPlayerId());} break; } case 6://mezőváltozás { fields[(c.GetMessage()/256)%256][c.GetMessage()%256]=(c.GetMessage()/(256*256))%256; emit FieldChanged((c.GetMessage()/256)%256,c.GetMessage()%256,(c.GetMessage()/(256*256))%256); break; } case 7://bónuszok { switch(c.GetMessage()/(256*256*256)) { case 1: emit BonusTurnVisible((c.GetMessage()/256)%256,c.GetMessage()%256,(c.GetMessage()/(256*256))%256); break; case 2: emit BonusTurnInvisible((c.GetMessage()/256)%256,c.GetMessage()%256,(c.GetMessage()/(256*256))%256); break; case 3: emit PlayerTurnVisible(c.GetPlayerId()); break; case 4: emit PlayerTurnInvisible(c.GetPlayerId()); break; default: break; } break; } case 248: { emit Disconnected(); } case 249: { emit DeleteBomb((c.GetMessage()/256)%256,c.GetMessage()%256); break; } case 250://pályaszinkron { fields[(c.GetMessage()/256)%256][c.GetMessage()%256]=(c.GetMessage()/(256*256))%256; break; } case 251://játék kezdete { emit GameStarted(c.GetMessage()); if(clientconnection && cup->GetPlayerName(1)=="") { for(uchar i=0;i<clientconnection->GetPlayers().size();i++)cup->AddPlayer(clientconnection->GetPlayers().at(i)); } break; } case 252://játék vége { emit GameOver(); break; } case 253://a győztes { switch(c.GetMessage()) { case 0: emit PlayerWonTheCup(GetPlayers()[c.GetPlayerId()]); break; case 1: emit PlayerWonTheRound(GetPlayers()[c.GetPlayerId()]); if(map){destroymap->stop();QTimer::singleShot(2000,this,SLOT(StopTheGame()));} break; } break; } case 254://alaphelyzetbe állítás { emit SetPlayerStartPosition(c.GetPlayerId(),(c.GetMessage()/256)%256,c.GetMessage()%256); break; } case 255://azonosítás { playerid=c.GetPlayerId(); survive=c.GetMessage()==0?true:false; break; } default: { break; } } }