… | |
… | |
16 | |
16 | |
17 | package Crossfire::MapWidget; |
17 | package Crossfire::MapWidget; |
18 | |
18 | |
19 | use strict; |
19 | use strict; |
20 | |
20 | |
|
|
21 | use Glib; |
21 | use Gtk2; |
22 | use Gtk2; |
22 | use Storable (); |
23 | use Storable (); |
23 | |
24 | |
24 | use Crossfire; |
25 | use Crossfire; |
25 | |
26 | |
26 | use Glib::Object::Subclass |
27 | use Glib::Object::Subclass |
27 | 'Gtk2::DrawingArea'; |
28 | 'Gtk2::DrawingArea', |
|
|
29 | signals => { |
|
|
30 | stack_change => { |
|
|
31 | flags => [qw/run-last/], |
|
|
32 | return_type => undef, |
|
|
33 | param_types => ["Glib::Int", "Glib::Int", "Glib::Scalar"], |
|
|
34 | class_closure => \&set, |
|
|
35 | }, |
|
|
36 | }; |
28 | |
37 | |
29 | use List::Util qw(min max); |
38 | use List::Util qw(min max); |
30 | |
39 | |
31 | #my ($TILE_MINX, $TILE_MINY, $TILE_MAXX, $TILE_MAXY); |
40 | #my ($TILE_MINX, $TILE_MINY, $TILE_MAXX, $TILE_MAXY); |
32 | # |
41 | # |
… | |
… | |
519 | sub change_stack { |
528 | sub change_stack { |
520 | my ($self, $x, $y, $as) = @_; |
529 | my ($self, $x, $y, $as) = @_; |
521 | |
530 | |
522 | $self->{change}{map}[$x][$y] ||= [$x, $y, $self->{map}{map}[$x][$y]]; |
531 | $self->{change}{map}[$x][$y] ||= [$x, $y, $self->{map}{map}[$x][$y]]; |
523 | |
532 | |
524 | $self->set ($x, $y, $as); |
533 | $self->signal_emit (stack_change => $x, $y, $as); |
525 | } |
534 | } |
526 | |
535 | |
527 | sub change_end { |
536 | sub change_end { |
528 | my ($self) = @_; |
537 | my ($self) = @_; |
529 | |
538 | |