#! perl use Scalar::Util; # minesweeper extension. dumb. sub on_time { my ($event) = @_; my $who = $event->{who}; unless ($who->{map}) { my %arg = split /(?:\s+|=)/, $event->{options}; warn join ":", %arg; my $map = $who->{map} = []; for my $x ($who->x .. $who->x + $arg{width} - 1) { for my $y ($who->y .. $who->y + $arg{height} - 1) { my $ob = $map->[$x][$y] = cf::object::new "minesweeper-unknown"; $ob->set_name ("apply to try your luck and intelligence"); Scalar::Util::weaken ($ob->{meta} = $who); my $ev = cf::object::new "event_apply"; $ev->set_title ("perl"); $ev->set_slaying ("minesweeper"); $ev->insert_in_ob ($ob); $ob->insert_ob_in_map_at ($who->map, undef, cf::INS_ABOVE_FLOOR_ONLY, $x, $y); } } } # $who->remove; # $who->free; } sub apply { my ($meta, $x, $y) = @_; warn "$meta $x $y\n";#d# } sub on_apply { my ($event) = @_; my $who = $event->{who}; apply $who->{meta}, $who->x, $who->y; $who->remove; $who->free; }