diff options
| author | Franklin Wei <git@fwei.tk> | 2016-01-24 19:01:04 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2016-01-24 19:01:04 -0500 |
| commit | 6e3d6b3186bc07003d17ad7c54bb013c9b5d6dcf (patch) | |
| tree | c4edcb9e261dd8f819f52a992406749a7490eb7a /src/server_reqs.c | |
| parent | b346e948cb167c18efc33f32f0e7cfb21050fc96 (diff) | |
| download | netcosm-6e3d6b3186bc07003d17ad7c54bb013c9b5d6dcf.zip netcosm-6e3d6b3186bc07003d17ad7c54bb013c9b5d6dcf.tar.gz netcosm-6e3d6b3186bc07003d17ad7c54bb013c9b5d6dcf.tar.bz2 netcosm-6e3d6b3186bc07003d17ad7c54bb013c9b5d6dcf.tar.xz | |
objects partially work, can't serialize yet
Diffstat (limited to 'src/server_reqs.c')
| -rw-r--r-- | src/server_reqs.c | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/src/server_reqs.c b/src/server_reqs.c index d10acde..7f82236 100644 --- a/src/server_reqs.c +++ b/src/server_reqs.c @@ -135,8 +135,25 @@ static void req_send_desc(unsigned char *data, size_t datalen, struct child_data struct room_t *room = room_get(sender->room); send_packet(sender, REQ_BCASTMSG, room->data.desc, strlen(room->data.desc)); - send_packet(sender, REQ_PRINTNEWLINE, NULL, 0); + + /* list objects */ + char buf[MSG_MAX]; + buf[0] = 0; + void *save = NULL; + room_id id = sender->room; + while(1) + { + struct object_t *obj = room_obj_iterate(id, &save); + id = ROOM_NONE; + if(!obj) + break; + strlcat(buf, "There is a(n) ", sizeof(buf)); + strlcat(buf, obj->name, sizeof(buf)); + strlcat(buf, " here.\n", sizeof(buf)); + } + + send_packet(sender, REQ_BCASTMSG, buf, strlen(buf)); } static void req_send_roomname(unsigned char *data, size_t datalen, struct child_data *sender) @@ -236,6 +253,23 @@ static void req_kick_always(unsigned char *data, size_t datalen, send_packet(child, REQ_KICK, data, datalen); } +static void req_look_at(unsigned char *data, size_t datalen, struct child_data *sender) +{ + (void) datalen; + struct object_t *obj = room_obj_get(sender->room, (const char*)data); + if(obj) + { + const char *desc = obj->hook_desc(obj, sender); + send_packet(sender, REQ_BCASTMSG, (void*)desc, strlen(desc)); + send_packet(sender, REQ_PRINTNEWLINE, NULL, 0); + } + else + { + const char *msg = "I don't know what that is.\n"; + send_packet(sender, REQ_BCASTMSG, (void*)msg, strlen(msg)); + } +} + static const struct child_request { unsigned char code; @@ -264,7 +298,8 @@ static const struct child_request { { REQ_GETUSERDATA, true, CHILD_NONE, NULL, req_send_user, }, { REQ_DELUSERDATA, true, CHILD_NONE, NULL, req_del_user, }, { REQ_ADDUSERDATA, true, CHILD_NONE, NULL, req_add_user, }, - { REQ_KICKALL, true, CHILD_ALL_BUT_SENDER, req_kick_always, NULL }, + { REQ_KICKALL, true, CHILD_ALL_BUT_SENDER, req_kick_always, NULL, }, + { REQ_LOOKAT, true, CHILD_NONE, NULL, req_look_at, }, //{ REQ_ROOMMSG, true, CHILD_ALL, req_send_room_msg, NULL, }, }; |