Miscellany
public text v1 · immutablesub game_loop {
our @players;
my $gameevent;
my $rp;
my $senderid = "nobody";
my $host = shift || 'chaos';
my $port = shift || 160;
our $sock = new IO::Socket::INET(
PeerAddr => $host,
PeerPort => $port,
Proto => 'tcp');
$sock or die "no socket :$!";
$sock->autoflush(1);
while( !$ProneServer::STOP ) {
while ($gameevent = $ProneServer::GameQueue->dequeue_nb) {
print STDERR "Popped $gameevent off the queue\n";
$gameevent =~ /\[(.*) -.*\]/;
#I may have to change senderid for $local_player's id
$senderid = $1;
#TYPE:TARGET:WHO:WHAT ARGS
if( $gameevent =~ /REQUEST:server:(.*):LISTPLAYERS/ ){
print STDERR "PLAYER LIST REQUEST FROM $1\n";
my $who = $1 ;
foreach my $p ( @players ) {
if( $p->name =~ /$who/ ) {
$senderid = $p->id;
}
}
foreach my $p ( @players ) {
#a accorder avec 'chat' plus bas.
my $paquet = "SENDTO:";
$paquet .= "JOIN:";
$paquet .= "$senderid:";
$paquet .= $p->name ;
$paquet .= ":";
$paquet .= "JOINGAME";
if( $p->id != $senderid ) {
print $sock $paquet ."\n";
}
}
}
if( $gameevent =~ /INFO:server:(.*):JOIN/ ) {
if( $gameevent =~ /CHAT:everyone:(.*):(.*)/ ) { ;
#for now settings are fixed, exept name
#later the login function in the client will update other informations
my $who = $1 ;
my $words = $2;
foreach my $p ( @players ) {
my $paquet = "SENDTO:";
$paquet .= "CHAT:";
$paquet .= $p->id;
$paquet .= ":";
$paquet .= $who .":";
$paquet .= $words;
print "**:$paquet \n";
print $sock $paquet ."\n";
}
}
}
# print "users :\n";
# print STDERR Dumper ( @players );
}