ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/gde/GCE/MainWindow.pm
(Generate patch)

Comparing deliantra/gde/GCE/MainWindow.pm (file contents):
Revision 1.7 by root, Sun Feb 5 21:19:41 2006 UTC vs.
Revision 1.8 by elmex, Mon Feb 6 09:21:33 2006 UTC

16use GCE::AttrEdit; 16use GCE::AttrEdit;
17 17
18use Glib::Object::Subclass 18use Glib::Object::Subclass
19 Gtk2::Window, 19 Gtk2::Window,
20 signals => { 20 signals => {
21 open_pick => { return_type => undef, param_types => [Glib::String] } 21 open_pick => { return_type => undef, param_types => [Glib::String] },
22 update_stack_view => { return_type => undef, param_types => [Glib::Int, Glib::Int, Glib::Scalar] },
22 }; 23 };
23 24
24use strict; 25use strict;
25 26
26sub get_picks { 27sub get_picks {
28 or die "Can't open editor picks: $main::pickdir: $!"; 29 or die "Can't open editor picks: $main::pickdir: $!";
29 30
30 grep { !m/^(\.|\.\.)$/ && -f "$main::PICKDIR/$_" } readdir PICKS 31 grep { !m/^(\.|\.\.)$/ && -f "$main::PICKDIR/$_" } readdir PICKS
31} 32}
32 33
34sub get_tile_stack {
35 my ($self, $x, $y) = @_;
36 my $as;
37
38 if ($x > 0 || $x < $self->{map}{width}
39 || $y > 0 || $y < $self->{map}{height}) {
40
41 $as = $self->{map}{map}{map}[$x][$y] || [];
42 }
43
44 return $as;
45}
46
33sub INIT_INSTANCE { 47sub INIT_INSTANCE {
34 my ($self) = @_; 48 my ($self) = @_;
35 49
50 $self->signal_connect (button_release_event => sub {
51 my ($self, $event) = @_;
52 return unless defined $self->{map};
53
54 my ($mx, $my) = $self->{map}->coord ($event->x, $event->y);
55 my $s = $self->get_tile_stack ($mx, $my);
56 $self->signal_emit (update_stack_view => $mx, $my, $s);
57 });
36 $self->set_title ("gce - main window"); 58 $self->set_title ("gce - main window");
37 59
38 my @pick; 60 my @pick;
39 for (get_picks ()) { 61 for (get_picks ()) {
40 push @pick, $_ => { 62 push @pick, $_ => {
99 121
100 my $map = new Crossfire::MapWidget; 122 my $map = new Crossfire::MapWidget;
101 # XXX:load $ARGV _cleanly_? 123 # XXX:load $ARGV _cleanly_?
102 my $path = $ARGV[0] || "$Crossfire::LIB/maps/dragonisland/advguild3"; 124 my $path = $ARGV[0] || "$Crossfire::LIB/maps/dragonisland/advguild3";
103 $map->set_map (arch2map read_arch $path); 125 $map->set_map (arch2map read_arch $path);
104 $self->{_map} = $map; 126 $self->{map} = $map;
105 127
106 $vb->pack_start ($map, 1, 1, 0); 128 $vb->pack_start ($map, 1, 1, 0);
107} 129}
108 130
109sub new_cb { 131sub new_cb {
119 ); 141 );
120 $fc->add_shortcut_folder ("$Crossfire::LIB/maps"); 142 $fc->add_shortcut_folder ("$Crossfire::LIB/maps");
121 143
122 if ('ok' eq $fc->run) { 144 if ('ok' eq $fc->run) {
123 my $map = arch2map read_arch $fc->get_filename; 145 my $map = arch2map read_arch $fc->get_filename;
124 $self->{_map}->set_map ($map); 146 $self->{map}->set_map ($map);
125 $self->{_map}->hide; 147 $self->{map}->hide;
126 $self->{_map}->show_all; 148 $self->{map}->show_all;
127 } 149 }
128 150
129 $fc->destroy; 151 $fc->destroy;
130} 152}
131 153

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines