fix c# game function issue

Job ID: 37145844

Budget: $30 – $250 USD

i have logic function that dont work as i expect i m missing something and cant figure out what looking for a programmer with knowledge in mathematics trigonometry and know concept of x y z heading and c# to resolve my issue


public bool IsTargetInView(float mainPlayerHeadingAngle, int mainPlayerX, int mainPlayerY, float enemyHeadingAngle, int enemyX, int enemyY)
{
// Calculate relative angle difference between main player and enemy
float relativeAngle = GetAngleDifference(mainPlayerHeadingAngle, enemyHeadingAngle);

// Check if target is in view (within a 180-degree angle)
if (relativeAngle > 90 && relativeAngle < 270)
{
return false; // target is behind the player
}

// Check relative position to determine if enemy is in front
int deltaX = enemyX - mainPlayerX;
int deltaY = enemyY - mainPlayerY;

// Calculate angle based on relative position
float angleFromPosition = (float)(Math.Atan2(deltaY, deltaX) * (180.0 / Math.PI));
float angleDifference = GetAngleDifference(mainPlayerHeadingAngle, angleFromPosition);

// If the angle difference based on position is greater than 90, then enemy is behind the player
if (angleDifference > 90)
{
return false;
}

return true;
}

public bool CanAttackTarget(float mainPlayerHeadingAngle, float enemyHeadingAngle)
{
float relativeAngle = GetAngleDifference(mainPlayerHeadingAngle, enemyHeadingAngle);

// Check if target can be attacked (within a 120-degree angle)
if (relativeAngle <= 60 || relativeAngle >= 300)
{
return true;
}

return false;
}

public float GetAngleDifference(float angle1, float angle2)
{
float difference = angle2 - angle1;

if (difference < 0)
{
difference += 360.0f; // Add 360 to bring it to positive
}

return difference;
}