ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/main.C
(Generate patch)

Comparing deliantra/server/server/main.C (file contents):
Revision 1.145 by root, Sun Nov 29 09:41:28 2009 UTC vs.
Revision 1.152 by root, Sun Apr 18 12:50:07 2010 UTC

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 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
5 * Copyright (©) 2001-2003,2007 Mark Wedel & Crossfire Development Team 5 * Copyright (©) 2001-2003 Mark Wedel & Crossfire Development Team
6 * Copyright (©) 1992,2007 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
10 * Free Software Foundation, either version 3 of the License, or (at your 10 * Free Software Foundation, either version 3 of the License, or (at your
11 * option) any later version. 11 * option) any later version.
147 if (i < 0) 147 if (i < 0)
148 golem->drop_and_destroy (); 148 golem->drop_and_destroy ();
149 else 149 else
150 { 150 {
151 newmap->insert (golem, x + freearr_x[i], y + freearr_y[i]); 151 newmap->insert (golem, x + freearr_x[i], y + freearr_y[i]);
152 golem->direction = find_dir_2 (x - golem->x, y - golem->y); 152 golem->direction = find_dir_2 (golem->x - x, golem->y - y);
153 } 153 }
154 } 154 }
155 155
156 /* since the players map is already loaded, we don't need to worry 156 /* since the players map is already loaded, we don't need to worry
157 * about pending objects. 157 * about pending objects.
233 prefetch (&next->anim_speed, 0, 1); 233 prefetch (&next->anim_speed, 0, 1);
234 prefetch (&next->contr , 0, 1); 234 prefetch (&next->contr , 0, 1);
235 } 235 }
236 236
237 /* Now process op */ 237 /* Now process op */
238 if (expect_false (QUERY_FLAG (op, FLAG_FREED))) 238 if (expect_false (op->flag [FLAG_FREED]))
239 { 239 {
240 LOG (llevError, "BUG: process_events(): Free object on list\n"); 240 LOG (llevError, "BUG: process_events(): Free object on list\n");
241 op->set_speed (0); 241 op->set_speed (0);
242 continue; 242 continue;
243 } 243 }
253 if (expect_false (op->flag [FLAG_REMOVED])) 253 if (expect_false (op->flag [FLAG_REMOVED]))
254 { 254 {
255 LOG (llevError, "BUG: process_events(): removed object is on active list: %s\n", 255 LOG (llevError, "BUG: process_events(): removed object is on active list: %s\n",
256 op->debug_desc ()); 256 op->debug_desc ());
257 op->set_speed (0); 257 op->set_speed (0);
258 continue;
259 }
260
261 //TODO: remove soon
262 if (expect_false (op->speed < 0.))
263 {
264 LOG (llevError, "BUG: process_events(): Object %s has negative speed (%f), "
265 "but is on active list\n", op->debug_desc (), op->speed);
266 op->speed = -op->speed;
267 continue; 258 continue;
268 } 259 }
269 260
270 /* Animate the object. Bug or feature that anim_speed 261 /* Animate the object. Bug or feature that anim_speed
271 * is based on ticks, and not the creatures speed? 262 * is based on ticks, and not the creatures speed?
380 * 371 *
381 * I also think this code makes it easier to see how often we really are 372 * I also think this code makes it easier to see how often we really are
382 * doing the various things. 373 * doing the various things.
383 */ 374 */
384static void 375static void
385do_specials (void) 376do_specials ()
386{ 377{
387 shstr::gc (); 378 shstr::gc ();
388 archetype::gc (); 379 archetype::gc ();
389 380
390 if (expect_false (!(pticks % TICKS_PER_HOUR))) 381 if (expect_false (!(pticks % TICKS_PER_HOUR)))
417 // then do some bookkeeping, should not really be here 408 // then do some bookkeeping, should not really be here
418 do_specials (); /* Routines called from time to time. */ 409 do_specials (); /* Routines called from time to time. */
419 attachable::check_mortals (); 410 attachable::check_mortals ();
420 411
421 ++pticks; 412 ++pticks;
413
414 if (object::object_count >= RESTART_COUNT)
415 cleanup ("running out of protocol ID values - need full restart");
422} 416}
423 417
424// normal main 418// normal main
425int 419int
426main (int argc, char **argv) 420main (int argc, char **argv)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines