The Command_processor should have the following information in it for each valid command: Valid Command - "move west" Pre Acceptance Checking - "can I 'move west'" Event Class - "what kind of event is 'move west'" Event Delay - "how long will moving west take?" Event - "how do I 'move west'" The Command_Processor will most likely have CODEREFS for each of the data types, except for Event Class. For efficiency, Command_Processor will contain a single hash of hashes... perhaps like the following: $self->{matrix}= ( "move west"=> ( "Test"=>\&Player::MoveTest('west'), "Class"=>"Player", "Delay"=>\&Player::MoveDelay('walk'), "Event"=>\&Player::Move('west') ), "run west" => ( "Test"=>\&Player::MoveTest('west'), "Class"=>"Player", "Delay"=>sub { return int (100/($DEXTERITY /2) +)} , # OR ## "Delay"=>\&Player::MoveDelay('run'), "Event"=>\&Player::Move('west') ), } ############################################################### So when the command processor recieves a request, it first checks for the validity of the command: return $INVALID_CMD unless defined ($self->{matrix}->{$NEWCOMM +AND}); And then: return $CMD_FAIL unless &$self->{matrix}->{$NEWCOMMAND}->{'Tes +t'}; and if everything is okay: return $self->{eventqueue}->event_add( &$self->{matrix}->{$NEWCOMMAND}->{'Delay'}, &$self->{matrix}->{$NEWCOMMAND}->{'Event'} ); And this is how it should work. ###############################################################
In reply to Re: MoLD: Request for Advice
by vaevictus
in thread MoLD: Request for Advice
by vaevictus
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |