PotatoPlan/Game1/Sources/Objects/HandleRotation.cs
2020-05-10 19:21:52 +02:00

115 lines
3.2 KiB
C#

using Microsoft.Xna.Framework;
using System;
class HandleRotation
{
int rotationSpeed = 5, Rotation = 180;
private float oldSpeed;
public Vector2 UpdatePosition(int Destination, float tractorSpeed, Vector2 Position, Crops crops)
{
Vector2 Direction;
if (oldSpeed != crops.getSpeedFactor(tractorSpeed))
{
Position = new Vector2((int)Math.Round(Position.X), (int)Math.Round(Position.Y));
}
if (Destination == 0)
{
if (Rotation == 0)
{
Direction = new Vector2(0, 1) * crops.getSpeedFactor(tractorSpeed);
Position = Position + Direction;
}
else
{
if (Rotation > 180)
{
if (Rotation >= 360)
{
Rotation = 0;
}
Rotation = Rotation + rotationSpeed;
}
else if (Rotation <= 180 && Rotation > 0)
{
Rotation = Rotation - rotationSpeed;
}
}
}
else if (Destination == 1)
{
if (Rotation == 180)
{
Direction = new Vector2(0, -1) * crops.getSpeedFactor(tractorSpeed);
Position = Position + Direction;
}
else
{
if (Rotation >= 0 && Rotation < 180)
{
Rotation = Rotation + rotationSpeed;
}
else if (Rotation < 360 && Rotation > 180)
{
Rotation = Rotation - rotationSpeed;
}
}
}
else if (Destination == 2)
{
if (Rotation == 270)
{
Direction = new Vector2(1, 0) * crops.getSpeedFactor(tractorSpeed);
Position = Position + Direction;
}
else
{
if (Rotation > 90 && Rotation < 270)
{
Rotation = Rotation + rotationSpeed;
}
else if (Rotation < 90 || Rotation < 360)
{
if (Rotation <= 0)
{
Rotation = 360;
}
Rotation = Rotation - rotationSpeed;
}
}
}
else if (Destination == 3)
{
if (Rotation == 90)
{
Direction = new Vector2(-1, 0) * crops.getSpeedFactor(tractorSpeed);
Position = Position + Direction;
}
else
{
if (Rotation < 270 && Rotation > 90)
{
Rotation = Rotation - rotationSpeed;
}
else if (Rotation >= 0 || Rotation > 270)
{
if (Rotation >= 360)
{
Rotation = 0;
}
Rotation = Rotation + rotationSpeed;
}
}
}
oldSpeed = crops.getSpeedFactor(tractorSpeed);
return Position;
}
public int getRotation()
{
return Rotation;
}
}