Wrapper fuer ReceiveMsg()
Da die Wrapper im /std/room thematisch nirgendwo hin passten, wurde
/std/room/comm.c neu erstellt und ReceiveMsg() aus /std/room/items.c
dort hin verlegt.
Die lfun _notify() ist durch SendNotify() ueberfluessig und wurde
ersetzt.
Change-Id: Ia42d131228963cbf8023f6b1563c38f65a38bd63
diff --git a/std/room/comm.c b/std/room/comm.c
new file mode 100644
index 0000000..3f2516b
--- /dev/null
+++ b/std/room/comm.c
@@ -0,0 +1,52 @@
+#pragma strict_types, save_types, pedantic, range_check
+#pragma no_clone
+
+inherit "/std/living/comm_structs";
+
+#include <thing/language.h>
+
+// Per Default nur an alle Items im Inventar weiterleiten.
+public varargs int ReceiveMsg(string msg, int msg_type, string msg_action,
+ string msg_prefix, object origin)
+{
+ int *res = ({int*})all_inventory()->ReceiveMsg(msg, msg_type, msg_action,
+ msg_prefix,
+ origin || previous_object());
+ if (sizeof(res))
+ return min(res);
+ return 0;
+}
+
+// Sortierfunktion um das Array mit dem kleinsten Wert auszugeben
+
+private int* _minarr(int** arr)
+{
+ if(!sizeof(arr)) return 0;
+ return sort_array(&arr,
+ function int(int* a, int* b)
+ {
+ return a[0] > b[0];
+ })[0];
+}
+
+// Wrapper fuer ReceiveMsg()
+
+public varargs int* ReceiveSay(string msg, string prefix,
+ struct msg_s sense_blocked)
+{
+ // Das muss schon hier passieren, damit previous_object() stimmt
+ if(!prefix)
+ {
+ prefix = ({string})previous_object().Name(WER, 1) + " sagt: ";
+ }
+
+ int** res = ({int**})all_inventory()->ReceiveSay(msg, prefix, sense_blocked);
+ return _minarr(res);
+}
+
+public varargs int* ReceiveMultisense(struct msg_s msgs,
+ string action, int commontypes)
+{
+ int** res = ({int**})all_inventory()->ReceiveMultisense(msgs, action, commontypes);
+ return _minarr(res);
+}
diff --git a/std/room/items.c b/std/room/items.c
index f799570..734ec9c 100644
--- a/std/room/items.c
+++ b/std/room/items.c
@@ -26,16 +26,3 @@
if ( !sizeof(inh & users()) )
remove_multiple(3);
}
-
-// Per Default nur an alle Items im Inventar weiterleiten.
-public varargs int ReceiveMsg(string msg, int msg_type, string msg_action,
- string msg_prefix, object origin)
-{
- int *res = all_inventory()->ReceiveMsg(msg, msg_type, msg_action,
- msg_prefix,
- origin || previous_object());
- if (sizeof(res))
- return min(res);
- return 0;
-}
-