예제 #1
0
파일: force.cpp 프로젝트: Xowap/Armdorande
void Force::processCoward(QDataStream *ds, QHostAddress *from) {
	processAnnounce(ds, from);

	Jedi *j = jediMap[*from];

	if(j && (state & FightBit)) {
		setState(WaitingForAction);
		emit gotCoward(j);
	}
}
예제 #2
0
파일: force.cpp 프로젝트: Xowap/Armdorande
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;
		}
	}
}
예제 #3
0
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));
     }
   }     
}
예제 #4
0
void ForwMachine::start(int o_id_num)
{
    our_id_num = o_id_num;
    processAnnounce();

}