MCPcopy Create free account
hub / github.com/OpenApoc/OpenApoc / getNextMovementState

Method getNextMovementState

game/state/battle/battleunitmission.cpp:1483–1548  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1481}
1482
1483MovementState BattleUnitMission::getNextMovementState(GameState &, BattleUnit &u)
1484{
1485 if (cancelled)
1486 {
1487 return MovementState::None;
1488 }
1489 switch (this->type)
1490 {
1491 case Type::Brainsuck:
1492 return MovementState::Brainsuck;
1493 case Type::GotoLocation:
1494 case Type::ReachGoal:
1495 if (u.current_body_state == BodyState::Jumping ||
1496 u.target_body_state == BodyState::Jumping || targetBodyState == BodyState::Jumping)
1497 {
1498 if (u.agent->isMovementStateAllowed(MovementState::Normal))
1499 {
1500 return MovementState::Normal;
1501 }
1502 else
1503 {
1504 LogError("Agent with allowed Jumping body state does not have allowed Normal "
1505 "movement");
1506 return u.current_movement_state;
1507 }
1508 }
1509 switch (facingDelta)
1510 {
1511 case 0:
1512 case 1:
1513 case -1:
1514 // Normal movement
1515 return MovementState::None;
1516 case 2:
1517 case -2:
1518 if (u.agent->isMovementStateAllowed(MovementState::Strafing))
1519 {
1520 return MovementState::Strafing;
1521 }
1522 else
1523 {
1524 cancelled = true;
1525 break;
1526 }
1527 case 3:
1528 case -3:
1529 case 4:
1530 if (u.agent->isMovementStateAllowed(MovementState::Reverse))
1531 {
1532 return MovementState::Reverse;
1533 }
1534 else
1535 {
1536 cancelled = true;
1537 break;
1538 }
1539 default:
1540 LogError("Invalid facingDelta %d", facingDelta);

Callers 1

startMovingMethod · 0.80

Calls 1

Tested by

no test coverage detected