1 |
#! perl |
2 |
|
3 |
use Scalar::Util; |
4 |
|
5 |
# minesweeper extension. dumb. |
6 |
|
7 |
sub on_time { |
8 |
my ($event) = @_; |
9 |
|
10 |
my $who = $event->{who}; |
11 |
|
12 |
unless ($who->{map}) { |
13 |
my %arg = split /(?:\s+|=)/, $event->{options}; |
14 |
|
15 |
warn join ":", %arg; |
16 |
|
17 |
my $map = $who->{map} = []; |
18 |
|
19 |
for my $x ($who->x .. $who->x + $arg{width} - 1) { |
20 |
for my $y ($who->y .. $who->y + $arg{height} - 1) { |
21 |
my $ob = $map->[$x][$y] = cf::object::new "minesweeper-unknown"; |
22 |
$ob->set_name ("apply to try your luck and intelligence"); |
23 |
Scalar::Util::weaken ($ob->{meta} = $who); |
24 |
|
25 |
my $ev = cf::object::new "event_apply"; |
26 |
$ev->set_title ("perl"); |
27 |
$ev->set_slaying ("minesweeper"); |
28 |
$ev->insert_in_ob ($ob); |
29 |
|
30 |
$ob->insert_ob_in_map_at ($who->map, undef, cf::INS_ABOVE_FLOOR_ONLY, $x, $y); |
31 |
} |
32 |
} |
33 |
} |
34 |
|
35 |
# $who->remove; |
36 |
# $who->free; |
37 |
} |
38 |
|
39 |
sub apply { |
40 |
my ($meta, $x, $y) = @_; |
41 |
|
42 |
warn "$meta $x $y\n";#d# |
43 |
} |
44 |
|
45 |
sub on_apply { |
46 |
my ($event) = @_; |
47 |
|
48 |
my $who = $event->{who}; |
49 |
|
50 |
apply $who->{meta}, $who->x, $who->y; |
51 |
|
52 |
$who->remove; |
53 |
$who->free; |
54 |
} |
55 |
|
56 |
|