/usr/local/CPAN/KGS/KGS/Listener/User.pm
package KGS::Listener::User;
use base KGS::Listener;
sub listen {
my $self = shift;
$self->SUPER::listen(@_,
qw(msg_chat usergraph game_record userinfo notify_event));
}
sub userinfo {
my ($self) = @_;
return if $self->{userinfo};
$self->send (req_userinfo => name => $self->{name});
}
sub game_record {
my ($self) = @_;
return if $self->{game_record};
$self->send (req_game_record =>
name => $self->{name});
}
sub usergraph {
my ($self) = @_;
return if $self->{usergraph};
$self->send (req_usergraph =>
name => $self->{name});
}
sub say {
my ($self, $msg) = @_;
$self->send (msg_chat =>
name => $self->{conn}{name},
name2 => $self->{name},
message => $msg);
}
sub _name {
my ($self, $name) = @_;
if ((lc $name) eq (lc $self->{name})) {
if ($name ne $self->{name}) {
$self->{name} = $name;
$self->event_name;
}
return 1;
} else {
return 0;
}
}
sub inject_msg_chat {
my ($self, $msg) = @_;
return unless $self->_name ($msg->{name}) || $self->_name ($msg->{name2});
$self->event_msg ($msg->{name}, $msg->{message})
}
sub inject_usergraph {
my ($self, $msg) = @_;
return unless $self->_name ($msg->{name});
$self->{usergraph} = $msg->{data};
$self->event_usergraph;
}
sub inject_game_record {
my ($self, $msg) = @_;
return unless $self->_name ($msg->{name});
push @{$self->{game_record}}, @{$msg->{games}};
if ($msg->{more}) {
$self->send (req_game_record =>
name => $self->{name},
timestamp => $msg->{games}[0]{timestamp});
} else {
$self->event_game_record;
}
}
sub inject_notify_event {
my ($self, $msg) = @_;
return unless $self->_name ($msg->{user}{name});
if ($msg->{event} == 0) {
$self->{flags} = $msg->{user}{flags};
}
# update gamerecord etc.
warn "\007notify_event in User.pm not yet implemented!\n";
}
sub inject_userinfo {
my ($self, $msg) = @_;
return unless $self->_name ($msg->{user}{name});
$self->{userinfo} = $msg;
$self->event_userinfo;
}
sub event_userinfo { }
sub event_usergraph { }
sub event_msg { }
sub event_game_record { }
sub event_name { }
1;