1 | /* |
1 | /* |
2 | * This file is part of Deliantra, the Roguelike Realtime MMORPG. |
2 | * This file is part of Deliantra, the Roguelike Realtime MMORPG. |
3 | * |
3 | * |
4 | * Copyright (©) 2005,2006,2007,2008 Marc Alexander Lehmann / Robin Redeker / the Deliantra team |
4 | * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012 Marc Alexander Lehmann / Robin Redeker / the Deliantra team |
5 | * Copyright (©) 2002 Mark Wedel & Crossfire Development Team |
5 | * Copyright (©) 2002 Mark Wedel & Crossfire Development Team |
6 | * Copyright (©) 1992 Frank Tore Johansen |
6 | * Copyright (©) 1992 Frank Tore Johansen |
7 | * |
7 | * |
8 | * Deliantra is free software: you can redistribute it and/or modify it under |
8 | * Deliantra is free software: you can redistribute it and/or modify it under |
9 | * the terms of the Affero GNU General Public License as published by the |
9 | * the terms of the Affero GNU General Public License as published by the |
… | |
… | |
93 | for (msg_buf *buf = msgbuf; buf < msgbuf + MSG_BUF_COUNT; ++buf) |
93 | for (msg_buf *buf = msgbuf; buf < msgbuf + MSG_BUF_COUNT; ++buf) |
94 | { |
94 | { |
95 | if (len == buf->len && !memcmp (msg, buf->msg, len)) |
95 | if (len == buf->len && !memcmp (msg, buf->msg, len)) |
96 | { |
96 | { |
97 | // found matching buf, see if expired |
97 | // found matching buf, see if expired |
98 | if (buf->expire <= pticks || !buf->count) |
98 | if (buf->expire <= server_tick || !buf->count) |
99 | { |
99 | { |
100 | // yes, take over matching buffer, print |
100 | // yes, take over matching buffer, print |
101 | buf->expire = pticks + pl->outputs_sync; |
101 | buf->expire = server_tick + pl->outputs_sync; |
102 | buf->count = pl->outputs_count; |
102 | buf->count = pl->outputs_count; |
103 | |
103 | |
104 | return false; |
104 | return false; |
105 | } |
105 | } |
106 | |
106 | |
… | |
… | |
112 | if (lru->expire > buf->expire) |
112 | if (lru->expire > buf->expire) |
113 | lru = buf; |
113 | lru = buf; |
114 | } |
114 | } |
115 | |
115 | |
116 | // new message, evoke oldest buffer |
116 | // new message, evoke oldest buffer |
117 | lru->expire = pticks + pl->outputs_sync; |
117 | lru->expire = server_tick + pl->outputs_sync; |
118 | lru->count = pl->outputs_count; |
118 | lru->count = pl->outputs_count; |
119 | lru->len = len; |
119 | lru->len = len; |
120 | memcpy (lru->msg, msg, len); |
120 | memcpy (lru->msg, msg, len); |
121 | |
121 | |
122 | return false; |
122 | return false; |
… | |
… | |
339 | * Mark Wedel |
339 | * Mark Wedel |
340 | */ |
340 | */ |
341 | void |
341 | void |
342 | draw_magic_map (object *pl) |
342 | draw_magic_map (object *pl) |
343 | { |
343 | { |
344 | char *map_mark = (char *)calloc (MAGIC_MAP_SIZE * MAGIC_MAP_SIZE, 1); |
|
|
345 | int xmin, xmax, ymin, ymax; |
344 | int xmin, xmax, ymin, ymax; |
346 | |
345 | |
347 | if (pl->type != PLAYER) |
346 | if (pl->type != PLAYER) |
348 | { |
347 | { |
349 | LOG (llevError, "Non player object called draw_map.\n"); |
348 | LOG (llevError, "Non player object called draw_map.\n"); |
350 | return; |
349 | return; |
351 | } |
350 | } |
|
|
351 | |
|
|
352 | char *map_mark = (char *)calloc (MAGIC_MAP_SIZE * MAGIC_MAP_SIZE, 1); |
|
|
353 | assert(("Out of memory!", map_mark != NULL)); |
352 | |
354 | |
353 | /* First, we figure out what spaces are 'reachable' by the player */ |
355 | /* First, we figure out what spaces are 'reachable' by the player */ |
354 | magic_mapping_mark (pl, map_mark, 3); |
356 | magic_mapping_mark (pl, map_mark, 3); |
355 | |
357 | |
356 | /* We now go through and figure out what spaces have been |
358 | /* We now go through and figure out what spaces have been |