… | |
… | |
134 | |
134 | |
135 | $self->{map}->map1a_update ($data); |
135 | $self->{map}->map1a_update ($data); |
136 | $self->{map_widget}->update; |
136 | $self->{map_widget}->update; |
137 | } |
137 | } |
138 | |
138 | |
|
|
139 | sub magicmap { |
|
|
140 | my ($self, $w, $h, $x, $y, $data) = @_; |
|
|
141 | |
|
|
142 | $self->{map_widget}->set_magicmap ($w, $h, $x, $y, $data); |
|
|
143 | } |
|
|
144 | |
139 | sub flush_map { |
145 | sub flush_map { |
140 | my ($self) = @_; |
146 | my ($self) = @_; |
141 | |
147 | |
142 | my $map_info = delete $self->{map_info} |
148 | my $map_info = delete $self->{map_info} |
143 | or return; |
149 | or return; |
… | |
… | |
154 | |
160 | |
155 | $self->flush_map; |
161 | $self->flush_map; |
156 | delete $self->{neigh_map}; |
162 | delete $self->{neigh_map}; |
157 | |
163 | |
158 | $self->{map}->clear; |
164 | $self->{map}->clear; |
|
|
165 | delete $self->{map_widget}{magicmap}; |
159 | } |
166 | } |
160 | |
167 | |
161 | |
168 | |
162 | sub load_map($$$) { |
169 | sub load_map($$$) { |
163 | my ($self, $hash, $x, $y) = @_; |
170 | my ($self, $hash, $x, $y) = @_; |
… | |
… | |
306 | # I love transactions |
313 | # I love transactions |
307 | for (1..100) { |
314 | for (1..100) { |
308 | my $txn = $CFClient::DB_ENV->txn_begin; |
315 | my $txn = $CFClient::DB_ENV->txn_begin; |
309 | my $status = $self->{facemap}->db_get (id => $id); |
316 | my $status = $self->{facemap}->db_get (id => $id); |
310 | if ($status == 0 || $status == BerkeleyDB::DB_NOTFOUND) { |
317 | if ($status == 0 || $status == BerkeleyDB::DB_NOTFOUND) { |
311 | $id = ($id || 16) + 1; |
318 | $id = ($id || 64) + 1; |
312 | if ($self->{facemap}->put (id => $id) == 0 |
319 | if ($self->{facemap}->put (id => $id) == 0 |
313 | && $self->{facemap}->put ($hash => $id) == 0) { |
320 | && $self->{facemap}->put ($hash => $id) == 0) { |
314 | $txn->txn_commit; |
321 | $txn->txn_commit; |
315 | |
322 | |
316 | goto gotid; |
323 | goto gotid; |