32 uint32 DoRandom(int line, const char *file) |
32 uint32 DoRandom(int line, const char *file) |
33 #else |
33 #else |
34 uint32 Random(void) |
34 uint32 Random(void) |
35 #endif |
35 #endif |
36 { |
36 { |
|
37 |
|
38 uint32 s; |
|
39 uint32 t; |
|
40 |
37 #ifdef RANDOM_DEBUG |
41 #ifdef RANDOM_DEBUG |
38 if (_networking && (DEREF_CLIENT(0)->status != STATUS_INACTIVE || !_network_server)) |
42 if (_networking && (DEREF_CLIENT(0)->status != STATUS_INACTIVE || !_network_server)) |
39 printf("Random [%d/%d] %s:%d\n",_frame_counter, _current_player, file, line); |
43 printf("Random [%d/%d] %s:%d\n",_frame_counter, _current_player, file, line); |
40 #endif |
44 #endif |
41 |
45 |
42 #ifdef PLAYER_SEED_RANDOM |
46 #ifdef PLAYER_SEED_RANDOM |
43 if (_current_player>=MAX_PLAYERS || !_networking) { |
47 if (_current_player>=MAX_PLAYERS || !_networking) { |
44 uint32 s = _random_seeds[0][0]; |
48 s = _random_seeds[0][0]; |
45 uint32 t = _random_seeds[0][1]; |
49 t = _random_seeds[0][1]; |
46 _random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7); |
50 _random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7); |
47 return _random_seeds[0][1] = ROR(s, 3); |
51 return _random_seeds[0][1] = ROR(s, 3); |
48 } else { |
52 } else { |
49 uint32 s = _player_seeds[_current_player][0]; |
53 uint32 s = _player_seeds[_current_player][0]; |
50 uint32 t = _player_seeds[_current_player][1]; |
54 uint32 t = _player_seeds[_current_player][1]; |
51 _player_seeds[_current_player][0] = s + ROR(t ^ 0x1234567F, 7); |
55 _player_seeds[_current_player][0] = s + ROR(t ^ 0x1234567F, 7); |
52 DEBUG(net, 1)("[NET-Seeds] Player seed called!"); |
56 DEBUG(net, 1)("[NET-Seeds] Player seed called!"); |
53 return _player_seeds[_current_player][1] = ROR(s, 3); |
57 return _player_seeds[_current_player][1] = ROR(s, 3); |
54 } |
58 } |
55 #else |
59 #else |
56 uint32 s = _random_seeds[0][0]; |
60 s = _random_seeds[0][0]; |
57 uint32 t = _random_seeds[0][1]; |
61 t = _random_seeds[0][1]; |
58 _random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7); |
62 _random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7); |
59 return _random_seeds[0][1] = ROR(s, 3); |
63 return _random_seeds[0][1] = ROR(s, 3); |
60 #endif |
64 #endif |
61 } |
65 } |
62 |
66 |