… | |
… | |
7 | |
7 | |
8 | use CFClient; |
8 | use CFClient; |
9 | use CFClient::UI; |
9 | use CFClient::UI; |
10 | |
10 | |
11 | use base 'Crossfire::Protocol::Base'; |
11 | use base 'Crossfire::Protocol::Base'; |
|
|
12 | |
|
|
13 | our %open_logs; |
12 | |
14 | |
13 | sub new { |
15 | sub new { |
14 | my $class = shift; |
16 | my $class = shift; |
15 | |
17 | |
16 | my $self = $class->SUPER::new (@_); |
18 | my $self = $class->SUPER::new (@_); |
… | |
… | |
58 | # per server |
60 | # per server |
59 | $self->{mapcache} = CFClient::db_table "mapcache_$self->{host}_$self->{port}"; |
61 | $self->{mapcache} = CFClient::db_table "mapcache_$self->{host}_$self->{port}"; |
60 | |
62 | |
61 | $self |
63 | $self |
62 | } |
64 | } |
|
|
65 | |
|
|
66 | sub logprint { |
|
|
67 | my ($self, @a) = @_; |
|
|
68 | my $filename = "$Crossfire::VARDIR/log.$self->{host}"; |
|
|
69 | |
|
|
70 | my $fh = $open_logs{$filename}; |
|
|
71 | unless ($fh) { |
|
|
72 | # FIXME: handle this more gracefully? |
|
|
73 | open $fh, ">>", $filename |
|
|
74 | or die "Couldn't open logfile: log.$self->{host}: $!"; |
|
|
75 | |
|
|
76 | $open_logs{$filename} = $fh; |
|
|
77 | } |
|
|
78 | |
|
|
79 | my ($sec, $min, $hour, $mday, $mon, $year) = localtime (time); |
|
|
80 | |
|
|
81 | my $ts = sprintf "%04d-%02d-%02d %02d:%02d:%02d", |
|
|
82 | $year + 1900, $mon + 1, $mday, $hour, $min, $sec; |
|
|
83 | |
|
|
84 | print $fh "$ts ", @a, "\n"; |
|
|
85 | $fh->flush; |
|
|
86 | } |
|
|
87 | |
|
|
88 | |
63 | |
89 | |
64 | sub stats_update { |
90 | sub stats_update { |
65 | my ($self, $stats) = @_; |
91 | my ($self, $stats) = @_; |
66 | |
92 | |
67 | if (my $exp = $stats->{+CS_STAT_EXP64}) { |
93 | if (my $exp = $stats->{+CS_STAT_EXP64}) { |
… | |
… | |
79 | |
105 | |
80 | if ($self->{record}) { |
106 | if ($self->{record}) { |
81 | push @{$self->{record}}, $command; |
107 | push @{$self->{record}}, $command; |
82 | } |
108 | } |
83 | |
109 | |
|
|
110 | $self->logprint ("send: ", $command); |
84 | $self->send_command ($command); |
111 | $self->send_command ($command); |
85 | ::status $command; |
112 | ::status $command; |
86 | } |
113 | } |
87 | |
114 | |
88 | sub start_record { |
115 | sub start_record { |
… | |
… | |
369 | [0.55, 0.41, 0.13], |
396 | [0.55, 0.41, 0.13], |
370 | [0.99, 0.77, 0.26], |
397 | [0.99, 0.77, 0.26], |
371 | [0.74, 0.65, 0.41], |
398 | [0.74, 0.65, 0.41], |
372 | ); |
399 | ); |
373 | |
400 | |
|
|
401 | $self->logprint ("info: ", $text); |
|
|
402 | |
374 | my $time = sprintf "%02d:%02d:%02d", (localtime time)[2,1,0]; |
403 | my $time = sprintf "%02d:%02d:%02d", (localtime time)[2,1,0]; |
375 | |
404 | |
376 | # try to create single paragraphs of multiple lines sent by the server |
405 | # try to create single paragraphs of multiple lines sent by the server |
377 | $text =~ s/(?<=\S)\n(?=\w)/ /g; |
406 | $text =~ s/(?<=\S)\n(?=\w)/ /g; |
378 | |
407 | |