public void ControllerUpdate(float leftTrigger, float rightTrigger, Vector2 leftStickDirection, Vector2 rightStickDirection) { if (Stunned || !IsAlive) { return; } if (Math.Abs(leftStickDirection.Length()) > CodingConstants.JoystickTolerance) { Facing = leftStickDirection; } if (leftTrigger > CodingConstants.TriggerPress && Velocity.Length() > 0) { Facing = Facing.Rotate(180); } if (InputService.InputDevices[Player.PlayerIndex] is Keyboard) { if (rightStickDirection != Vector2.Zero) { Facing = rightStickDirection; } } Velocity = leftStickDirection; }
public void Rotate(Direction direction) { Facing = Facing.Rotate(direction); Arms = RotateArms(direction); }
static void Main(string[] args) { Console.WriteLine("Day 1"); Console.WriteLine("Star 1"); Console.WriteLine(); var instructions = File.ReadAllText(inputFile).Split(", "); //var instructions = "R8, R4, R4, R8".Split(", "); //Start facing north. Facing facing = Facing.North; (int x, int y)position = (0, 0); HashSet <(int x, int y)> visitedLocations = new HashSet <(int x, int y)>() { (0, 0) }; bool found = false; (int x, int y)hqPos = (0, 0); foreach (string instruction in instructions) { switch (instruction[0]) { case 'R': facing = facing.Rotate(true); break; case 'L': facing = facing.Rotate(false); break; default: throw new ArgumentException($"Unexpected direction: {instruction[0]}"); } int distance = int.Parse(instruction.Substring(1)); foreach ((int x, int y)p in position.Move(facing, distance)) { if (!found) { if (!visitedLocations.Add(p)) { found = true; hqPos = p; } } } position = position.Move(facing, distance).Last(); } Console.WriteLine($"Final distance: {Math.Abs(position.x) + Math.Abs(position.y)}"); Console.WriteLine(); Console.WriteLine("Star 2"); Console.WriteLine(); Console.WriteLine($"HQ Location: {Math.Abs(hqPos.x) + Math.Abs(hqPos.y)}"); Console.WriteLine(); Console.ReadKey(); }
private bool Unrotate() { Facing = Facing.Rotate(-1.5f); return(true); }
private bool Rotate() { Facing = Facing.Rotate(1.5f); return(true); }