misc.c
changeset 1121 8a7e7ace154f
parent 1120 047e8b16a954
child 1175 a4bdf4c26d32
equal deleted inserted replaced
1120:047e8b16a954 1121:8a7e7ace154f
    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