/* ============== BotResetState called when a bot enters the intermission or observer mode and when the level is changed ============== */ void BotResetState( bot_state_t *bs ) { int client, entitynum, inuse; int movestate, goalstate, chatstate, weaponstate; bot_settings_t settings; int character; playerState_t ps; //current player state float entergame_time; //save some things that should not be reset here memcpy( &settings, &bs->settings, sizeof( bot_settings_t ) ); memcpy( &ps, &bs->cur_ps, sizeof( playerState_t ) ); inuse = bs->inuse; client = bs->client; entitynum = bs->entitynum; character = bs->character; movestate = bs->ms; goalstate = bs->gs; chatstate = bs->cs; weaponstate = bs->ws; entergame_time = bs->entergame_time; //free checkpoints and patrol points BotFreeWaypoints( bs->checkpoints ); BotFreeWaypoints( bs->patrolpoints ); //reset the whole state memset( bs, 0, sizeof( bot_state_t ) ); //copy back some state stuff that should not be reset bs->ms = movestate; bs->gs = goalstate; bs->cs = chatstate; bs->ws = weaponstate; memcpy( &bs->cur_ps, &ps, sizeof( playerState_t ) ); memcpy( &bs->settings, &settings, sizeof( bot_settings_t ) ); bs->inuse = inuse; bs->client = client; bs->entitynum = entitynum; bs->character = character; bs->entergame_time = entergame_time; //reset several states if ( bs->ms ) { trap_BotResetMoveState( bs->ms ); } if ( bs->gs ) { trap_BotResetGoalState( bs->gs ); } if ( bs->ws ) { trap_BotResetWeaponState( bs->ws ); } if ( bs->gs ) { trap_BotResetAvoidGoals( bs->gs ); } if ( bs->ms ) { trap_BotResetAvoidReach( bs->ms ); } }
/* ============== BotResetState called when a bot enters the intermission or observer mode and when the level is changed ============== */ void BotResetState(bot_state_t *bs) { int client, entitynum, inuse; #ifndef __MMO__ int movestate, goalstate, weaponstate; #endif //__MMO__ bot_settings_t settings; playerState_t ps; //current player state float entergame_time; //save some things that should not be reset here memcpy(&settings, &bs->settings, sizeof(bot_settings_t)); memcpy(&ps, &bs->cur_ps, sizeof(playerState_t)); inuse = bs->inuse; client = bs->client; entitynum = bs->entitynum; #ifndef __MMO__ movestate = bs->ms; goalstate = bs->gs; weaponstate = bs->ws; #endif //__MMO__ entergame_time = bs->entergame_time; //reset the whole state memset(bs, 0, sizeof(bot_state_t)); //copy back some state stuff that should not be reset #ifndef __MMO__ bs->ms = movestate; bs->gs = goalstate; bs->ws = weaponstate; #endif //__MMO__ memcpy(&bs->cur_ps, &ps, sizeof(playerState_t)); memcpy(&bs->settings, &settings, sizeof(bot_settings_t)); bs->inuse = inuse; bs->client = client; bs->entitynum = entitynum; bs->entergame_time = entergame_time; #ifndef __MMO__ //reset several states if (bs->ms) trap_BotResetMoveState(bs->ms); if (bs->gs) trap_BotResetGoalState(bs->gs); if (bs->ws) trap_BotResetWeaponState(bs->ws); if (bs->gs) trap_BotResetAvoidGoals(bs->gs); if (bs->ms) trap_BotResetAvoidReach(bs->ms); #endif //__MMO__ }