/* Do not remove the headers from this file! see /USAGE for more info. */ /* ** msg_recipient.c -- handle message passing for objects ** ** DOWNWARD: into the contents of the object ** UPWARD: up to this object's container ** ** 960603, Deathblade: added this header re: directions */ //:FUNCTION environment_can_hear //Returns 1 if messages should propagate upwards to our environment. int environment_can_hear() { object env = environment(); return env && !env->cant_hear_contents(); } //:FUNCTION receive_inside_msg //Handle a message received from inside us (which should never happen, but...) //Inside messages propogate upward and downward, but we have no downward varargs void receive_inside_msg(string msg, object array exclude, int message_type, mixed other) { object env; receive(msg); if(environment_can_hear() && (env = environment()) && (!arrayp(exclude) || member_array(env,exclude) == -1)) { env->receive_inside_msg(msg, arrayp(exclude) ? exclude + ({this_object()}) : ({this_object()}), message_type, other); } } //:FUNCTION receive_outside_msg //Receive a message from outside of us. //Outside messages propogate downward, so just receive varargs void receive_outside_msg(string msg, object array exclude, int message_type, mixed other) { receive(msg); } //### Where is this used? Is it needed? What is it's purpose? //Remote messages propogate just like an inside message by default varargs void receive_remote_msg(string msg, object array exclude, int message_type, mixed other) { receive_inside_msg(msg, exclude, message_type, other); } //:FUNCTION receive_private_msg //Receive a message sent just to us. varargs void receive_private_msg(string msg, int message_type, mixed other) { receive(msg); }