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

Comparing deliantra/server/server/cfperl.xs (file contents):
Revision 1.404 by root, Wed May 4 07:36:41 2011 UTC vs.
Revision 1.405 by root, Wed May 4 19:04:45 2011 UTC

67static int tick_inhibit; 67static int tick_inhibit;
68static int tick_pending; 68static int tick_pending;
69 69
70global gbl_ev; 70global gbl_ev;
71static AV *cb_global, *cb_attachable, *cb_object, *cb_player, *cb_client, *cb_type, *cb_map; 71static AV *cb_global, *cb_attachable, *cb_object, *cb_player, *cb_client, *cb_type, *cb_map;
72static SV *sv_runtime, *sv_tick_start, *sv_next_tick, *sv_now; 72static SV *sv_runtime, *sv_tick_start, *sv_next_tick, *sv_now, *sv_server_tick;
73static AV *av_reflect; 73static AV *av_reflect;
74 74
75bitset<NUM_EVENT_TYPES> ev_want_event; 75bitset<NUM_EVENT_TYPES> ev_want_event;
76bitset<NUM_TYPES> ev_want_type; 76bitset<NUM_TYPES> ev_want_type;
77 77
1404 stash_cf_region_wrap = gv_stashpv ("cf::region::wrap", 1); 1404 stash_cf_region_wrap = gv_stashpv ("cf::region::wrap", 1);
1405 stash_cf_living_wrap = gv_stashpv ("cf::living::wrap", 1); 1405 stash_cf_living_wrap = gv_stashpv ("cf::living::wrap", 1);
1406 stash_cf_layout_wrap = gv_stashpv ("cf::layout::wrap", 1); 1406 stash_cf_layout_wrap = gv_stashpv ("cf::layout::wrap", 1);
1407 stash_ext_map_world = gv_stashpv ("ext::map_world" , 1); 1407 stash_ext_map_world = gv_stashpv ("ext::map_world" , 1);
1408 1408
1409 sv_now = get_sv ("cf::NOW" , 1); SvUPGRADE (sv_now , SVt_NV); 1409 sv_now = get_sv ("cf::NOW" , 1); SvUPGRADE (sv_now , SVt_NV);
1410 sv_runtime = get_sv ("cf::RUNTIME" , 1); SvUPGRADE (sv_runtime , SVt_NV); 1410 sv_runtime = get_sv ("cf::RUNTIME" , 1); SvUPGRADE (sv_runtime , SVt_NV);
1411 sv_server_tick = get_sv ("cf::SERVER_TICK", 1); SvUPGRADE (sv_server_tick, SVt_IV);
1411 sv_tick_start = get_sv ("cf::TICK_START", 1); SvUPGRADE (sv_tick_start, SVt_NV); 1412 sv_tick_start = get_sv ("cf::TICK_START" , 1); SvUPGRADE (sv_tick_start , SVt_NV);
1412 sv_next_tick = get_sv ("cf::NEXT_TICK" , 1); SvUPGRADE (sv_next_tick , SVt_NV); 1413 sv_next_tick = get_sv ("cf::NEXT_TICK" , 1); SvUPGRADE (sv_next_tick , SVt_NV);
1413 1414
1414 cb_global = get_av ("cf::CB_GLOBAL", 1); 1415 cb_global = get_av ("cf::CB_GLOBAL", 1);
1415 cb_attachable = get_av ("cf::CB_ATTACHABLE", 1); 1416 cb_attachable = get_av ("cf::CB_ATTACHABLE", 1);
1416 cb_object = get_av ("cf::CB_OBJECT", 1); 1417 cb_object = get_av ("cf::CB_OBJECT", 1);
1417 cb_player = get_av ("cf::CB_PLAYER", 1); 1418 cb_player = get_av ("cf::CB_PLAYER", 1);
1610 { 1611 {
1611 ev_async_send (EV_DEFAULT, &tick_watcher); 1612 ev_async_send (EV_DEFAULT, &tick_watcher);
1612 coroapi::cede (); 1613 coroapi::cede ();
1613 } 1614 }
1614 1615
1615void server_tick () 1616void one_tick ()
1616 CODE: 1617 CODE:
1617{ 1618{
1618 ev_now_update (EV_DEFAULT); 1619 ev_now_update (EV_DEFAULT);
1619 NOW = ev_now (EV_DEFAULT); 1620 NOW = ev_now (EV_DEFAULT);
1620 SvNV_set (sv_now, NOW); SvNOK_only (sv_now); 1621 SvNV_set (sv_now, NOW); SvNOK_only (sv_now);
1621 SvNV_set (sv_tick_start, NOW); SvNOK_only (sv_tick_start); 1622 SvNV_set (sv_tick_start, NOW); SvNOK_only (sv_tick_start);
1622 runtime = SvNVX (sv_runtime); 1623 runtime = SvNVX (sv_runtime);
1623 1624
1625 one_tick ();
1626
1624 server_tick (); 1627 ++server_tick;
1628 SvUV_set (sv_server_tick, server_tick); SvIOK_only_UV (sv_server_tick);
1625 1629
1626 ev_now_update (EV_DEFAULT); 1630 ev_now_update (EV_DEFAULT);
1627 NOW = ev_now (EV_DEFAULT); 1631 NOW = ev_now (EV_DEFAULT);
1628 SvNV_set (sv_now, NOW); SvNOK_only (sv_now); 1632 SvNV_set (sv_now, NOW); SvNOK_only (sv_now);
1633
1629 runtime += TICK; 1634 runtime += TICK;
1630 SvNV_set (sv_runtime, runtime); SvNOK_only (sv_runtime); 1635 SvNV_set (sv_runtime, runtime); SvNOK_only (sv_runtime);
1631} 1636}
1632 1637
1633NV floor (NV x) 1638NV floor (NV x)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines