MCPcopy Create free account
hub / github.com/OpenXcom/OpenXcom / directionTo

Method directionTo

src/Savegame/BattleUnit.cpp:792–834  ·  view source on GitHub ↗

* Returns the direction from this unit to a given point. * @param point given position. * @return direction. */

Source from the content-addressed store, hash-verified

790 * @return direction.
791 */
792int BattleUnit::directionTo(const Position &point) const
793{
794 double ox = point.x - _pos.x;
795 double oy = point.y - _pos.y;
796 double angle = atan2(ox, -oy);
797 // divide the pie in 4 angles each at 1/8th before each quarter
798 double pie[4] = {(M_PI_4 * 4.0) - M_PI_4 / 2.0, (M_PI_4 * 3.0) - M_PI_4 / 2.0, (M_PI_4 * 2.0) - M_PI_4 / 2.0, (M_PI_4 * 1.0) - M_PI_4 / 2.0};
799 int dir = 0;
800
801 if (angle > pie[0] || angle < -pie[0])
802 {
803 dir = 4;
804 }
805 else if (angle > pie[1])
806 {
807 dir = 3;
808 }
809 else if (angle > pie[2])
810 {
811 dir = 2;
812 }
813 else if (angle > pie[3])
814 {
815 dir = 1;
816 }
817 else if (angle < -pie[1])
818 {
819 dir = 5;
820 }
821 else if (angle < -pie[2])
822 {
823 dir = 6;
824 }
825 else if (angle < -pie[3])
826 {
827 dir = 7;
828 }
829 else if (angle < pie[0])
830 {
831 dir = 0;
832 }
833 return dir;
834}
835
836/**
837 * Returns the soldier's amount of time units.

Callers 1

addAlienMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected