--- /dev/null
+/* Simple EDC exemplifying how to receive and emit all types of messages */
+
+/* Actually for sets it will send back a message of the same type with the
+ * first item and N other messages with the remaining items. */
+
+collections {
+ group {
+ name: "messages_echo";
+
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ min: 400 50;
+ max: 400 50;
+ color: 0 0 0 255;
+ }
+ }
+
+ part {
+ name: "text";
+ type: TEXT;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ text {
+ font: "Sans";
+ size: 20;
+ text: "I will echo all your messages ;)";
+ }
+ }
+ }
+ }
+
+ script {
+ public message(Msg_Type:type, id, ...) {
+ if (type == MSG_INT)
+ send_message(type, id, getarg(2));
+ else if (type == MSG_FLOAT)
+ send_message(type, id, getfarg(2));
+ else if (type == MSG_STRING) {
+ new buf[1024];
+ getsarg(2, buf, sizeof(buf));
+ send_message(type, id, buf);
+ }
+ else if (type == MSG_STRING_INT) {
+ new buf[1024];
+ getsarg(2, buf, sizeof(buf));
+ send_message(type, id, buf, getarg(3));
+ }
+ else if (type == MSG_STRING_FLOAT) {
+ new buf[1024];
+ getsarg(2, buf, sizeof(buf));
+ send_message(type, id, buf, getfarg(3));
+ }
+ else if (type == MSG_INT_SET) {
+ new i, n = numargs();
+ send_message(type, id, getarg(2));
+ for (i = 3; i < n; i++)
+ send_message(MSG_STRING_INT, id, "Extra INT:", getarg(i));
+ }
+ else if (type == MSG_FLOAT_SET) {
+ new i, n = numargs();
+ send_message(type, id, getfarg(2));
+ for (i = 3; i < n; i++)
+ send_message(MSG_STRING_FLOAT, id, "Extra FLOAT:",
+ getfarg(i));
+ }
+ else if (type == MSG_STRING_SET) {
+ new buf[1024], i, n = numargs();
+ getsarg(2, buf, sizeof(buf));
+ send_message(type, id, buf);
+ for (i = 3; i < n; i++) {
+ getsarg(i, buf, sizeof(buf));
+ send_message(MSG_STRING_SET, id, "Extra STRING:", buf);
+ }
+ }
+ else if (type == MSG_STRING_INT_SET) {
+ new buf[1024], i, n = numargs();
+ getsarg(2, buf, sizeof(buf));
+ send_message(type, id, buf, getarg(3));
+ for (i = 4; i < n; i++)
+ send_message(MSG_STRING_INT, id, "Extra INT:", getarg(i));
+ }
+ else if (type == MSG_STRING_FLOAT_SET) {
+ new buf[1024], i, n = numargs();
+ getsarg(2, buf, sizeof(buf));
+ send_message(type, id, buf, getfarg(3));
+ for (i = 4; i < n; i++)
+ send_message(MSG_STRING_INT, id, "Extra FLOAT:", getfarg(i));
+ }
+ }
+ }
+ }
+}