void Force::processCoward(QDataStream *ds, QHostAddress *from) { processAnnounce(ds, from); Jedi *j = jediMap[*from]; if(j && (state & FightBit)) { setState(WaitingForAction); emit gotCoward(j); } }
void Force::processDatagrams(QUdpSocket *s) { while(s->hasPendingDatagrams()) { QHostAddress from; QByteArray ba; MessageType t; quint8 ver, t_uint; ba.resize(s->pendingDatagramSize()); s->readDatagram(ba.data(), ba.size(), &from); QDataStream ds(ba); ds.setByteOrder(QDataStream::LittleEndian); ds >> ver >> t_uint; t = (MessageType) t_uint; if(ver != FORCE_VERSION) { // Version mismatch return; } if(isSelfAddress(from)) { // From self, not interesting return; } switch(t) { case AnnouncePresence: processAnnounce(&ds, &from); break; case DefyYou: processDefy(&ds, &from); break; case PissedOnMyself: processCoward(&ds, &from); break; case SaberMoved: processSaber(&ds, &from); break; } } }
void processPacket(struct packet *p) { if ((p->len==32) && (p->protocol=='G') && (p->id == id || p->id == 0) ){ //check sanity, protocol, id if (p->command=='T'){ struct packet ack; ack.len=sizeof(p); ack.protocol='G'; ack.command='a'; ack.id= id; ack.ctr= p->ctr; ack.c.ack.flags = 0; nrf_snd_pkt_crc(sizeof(ack),(uint8_t*)&ack); processText(&(p->c.text)); } else if (p->command=='N'){ processNickRequest(&(p->c.nickrequest)); } else if (p->command=='A'){ processAnnounce(&(p->c.announce)); } } }
void ForwMachine::start(int o_id_num) { our_id_num = o_id_num; processAnnounce(); }