Message code enum part 6: final touches + control light cleanup.

MessageField is often used as int, so it stays unchanged.
This commit is contained in:
Muzychenko Andrey committed 2022-09-08 10:51:33 +03:00
1 parent 22603aa126
commit 40672845e4
10 files changed
+103 -110

No files matched your search

+16 -16
View File
@@ -45,7 +45,7 @@ TFlipperEdge::TFlipperEdge(TCollisionComponent* collComp, char* activeFlag, unsi
maths::cross(vecDir1, vecDir2, crossProd);
if (crossProd.Z < 0.0f)
AngleMax = -AngleMax;
FlipperFlag = 0;
FlipperFlag = MessageCode::TFlipperNull;
AngleDst = 0.0;
// 3DPB and FT have different formats for flipper speed:
@@ -109,11 +109,11 @@ float TFlipperEdge::FindCollisionDistance(ray_type* ray)
if (ogRay->TimeNow > AngleStopTime)
{
FlipperFlag = 0;
FlipperFlag = MessageCode::TFlipperNull;
}
if (EdgeCollisionFlag == 0)
{
if (FlipperFlag == 0)
if (FlipperFlag == MessageCode::TFlipperNull)
{
CollisionFlag1 = 0;
CollisionFlag2 = 0;
@@ -205,7 +205,7 @@ float TFlipperEdge::FindCollisionDistance(ray_type* ray)
if (ballInside != 0)
{
vector2* linePtr;
if (FlipperFlag == 1 && ballInside != 5)
if (FlipperFlag == MessageCode::TFlipperExtend && ballInside != 5)
{
linePtr = &lineA.PerpendicularC;
srcRay.Direction.Y = lineA.PerpendicularC.Y;
@@ -213,7 +213,7 @@ float TFlipperEdge::FindCollisionDistance(ray_type* ray)
}
else
{
if (FlipperFlag != 2 || ballInside == 4)
if (FlipperFlag != MessageCode::TFlipperRetract || ballInside == 4)
{
CollisionFlag1 = 0;
CollisionFlag2 = 1;
@@ -276,7 +276,7 @@ float TFlipperEdge::FindCollisionDistance(ray_type* ray)
NextBallPosition.X -= srcRay.Direction.X * 1e-05f;
NextBallPosition.Y -= srcRay.Direction.Y * 1e-05f;
vector2* linePtr;
if (FlipperFlag == 2)
if (FlipperFlag == MessageCode::TFlipperRetract)
{
linePtr = &lineB.PerpendicularC;
CollisionFlag1 = AngleMax <= 0.0f;
@@ -305,7 +305,7 @@ float TFlipperEdge::FindCollisionDistance(ray_type* ray)
void TFlipperEdge::EdgeCollision(TBall* ball, float distance)
{
EdgeCollisionFlag = 1;
if (!FlipperFlag || !CollisionFlag2 || CollisionFlag1)
if (FlipperFlag == MessageCode::TFlipperNull || !CollisionFlag2 || CollisionFlag1)
{
float boost = 0.0;
if (CollisionFlag1)
@@ -414,7 +414,7 @@ void TFlipperEdge::set_control_points(float timeNow)
float TFlipperEdge::flipper_angle(float timeNow)
{
// When not moving, flipper is at destination angle.
if (!FlipperFlag)
if (FlipperFlag == MessageCode::TFlipperNull)
return AngleDst;
// How much time it takes to go from source to destination angle, in sec.
@@ -441,9 +441,9 @@ int TFlipperEdge::is_ball_inside(float x, float y)
(T1.Y - y) * (T1.Y - y) + (T1.X - x) * (T1.X - x) < CircleT1RadiusSq)
{
float flipperLR = AngleMax < 0.0f ? -1.0f : 1.0f;
if (FlipperFlag == 1)
if (FlipperFlag == MessageCode::TFlipperExtend)
testPoint = AngleMax < 0.0f ? B1 : B2;
else if (FlipperFlag == 2)
else if (FlipperFlag == MessageCode::TFlipperRetract)
testPoint = AngleMax < 0.0f ? A2 : A1;
else
testPoint = T1;
@@ -456,21 +456,21 @@ int TFlipperEdge::is_ball_inside(float x, float y)
return 0;
}
int TFlipperEdge::SetMotion(int code, float value)
int TFlipperEdge::SetMotion(MessageCode code, float value)
{
switch (code)
{
case 1:
case MessageCode::TFlipperExtend:
AngleSrc = flipper_angle(value);
AngleDst = AngleMax;
AngleAdvanceTime = ExtendTime;
break;
case 2:
case MessageCode::TFlipperRetract:
AngleSrc = flipper_angle(value);
AngleDst = 0.0f;
AngleAdvanceTime = RetractTime;
break;
case ~MessageCode::Reset:
case MessageCode::Reset:
AngleSrc = 0.0f;
AngleDst = 0.0f;
break;
@@ -478,10 +478,10 @@ int TFlipperEdge::SetMotion(int code, float value)
}
if (AngleSrc == AngleDst)
code = 0;
code = MessageCode::TFlipperNull;
InputTime = value;
FlipperFlag = code;
AngleStopTime = AngleAdvanceTime + InputTime;
return code;
return static_cast<int>(code);
}