//Called while the bot moves after its player->dest mobj //which can be a weapon/enemy/item whatever. void FCajunMaster::Roam (AActor *actor, ticcmd_t *cmd) { int delta; if (Reachable(actor, actor->player->dest)) { // Straight towards it. actor->player->angle = R_PointToAngle2(actor->x, actor->y, actor->player->dest->x, actor->player->dest->y); } else if (actor->movedir < 8) // turn towards movement direction if not there yet { actor->player->angle &= (angle_t)(7<<29); delta = actor->player->angle - (actor->movedir << 29); if (delta > 0) actor->player->angle -= ANG45; else if (delta < 0) actor->player->angle += ANG45; } // chase towards destination. if (--actor->movecount < 0 || !Move (actor, cmd)) { NewChaseDir (actor, cmd); } }
//Called while the bot moves after its dest mobj //which can be a weapon/enemy/item whatever. void DBot::Roam (ticcmd_t *cmd) { int delta; if (Reachable(dest)) { // Straight towards it. angle = player->mo->AngleTo(dest); } else if (player->mo->movedir < 8) // turn towards movement direction if not there yet { angle &= (angle_t)(7<<29); delta = angle - (player->mo->movedir << 29); if (delta > 0) angle -= ANG45; else if (delta < 0) angle += ANG45; } // chase towards destination. if (--player->mo->movecount < 0 || !Move (cmd)) { NewChaseDir (cmd); } }