Acme-MUDLike
view release on metacpan or search on metacpan
lib/Acme/MUDLike.pm view on Meta::CPAN
path_session => 1,
port => 2000,
%args,
);
print "Admin:\n", $continuity->adapter->daemon->url, '?admin=', $password, '&nick=', (getpwuid $<)[0], "\n";
$floor ||= Acme::MUDLike::room->new();
$players ||= Acme::MUDLike::inventory->new();
bless { }, $package;
}
sub loop { my $self = shift; $continuity->loop(@_); }
sub header {
qq{
<html><head>
<script src="/jquery.js" type="text/javascript"></script>
<script src="/chat.js" type="text/javascript"></script>
</head><body>
lib/Acme/MUDLike.pm view on Meta::CPAN
}
}
#
# object
#
package Acme::MUDLike::object;
sub new { my $package = shift; bless { @_ }, $package; }
sub name :lvalue { $_[0]->{name} }
sub environment :lvalue { $_[0]->{environment} }
sub use { }
sub player { 0 }
sub desc { }
sub tell_object { }
sub get { 1 } # may be picked up
sub id { 0 }
#
# inventory
#
package Acme::MUDLike::inventory;
sub new {
# subclass this to build little container classes or create instances of it directly
my $package = shift; bless [ ], $package;
}
sub delete {
my $self = shift;
my $name = shift;
for my $i (0..$#$self) {
return splice @$self, $i, 1, () if $self->[$i]->id($name);
}
}
sub insert {
lib/Acme/MUDLike.pm view on Meta::CPAN
#
# player
#
package Acme::MUDLike::player;
push our @ISA, 'Acme::MUDLike::object';
sub player { 1 }
sub new {
my $pack = shift;
bless {
inventory => Acme::MUDLike::inventory->new,
messages => [ ],
@_,
}, $pack;
}
sub request :lvalue { $_[0]->{request} }
sub id { $_[0]->{name} eq $_[1] or $_[0] eq $_[1] }
sub name { $_[0]->{name} }
sub password { $_[0]->{password} }
sub x :lvalue { $_[0]->{x} }
( run in 1.625 second using v1.01-cache-2.11-cpan-de7293f3b23 )