// ClassicalSharp copyright 2014-2016 UnknownShadow200 | Licensed under MIT using System; using OpenTK; namespace ClassicalSharp.Entities { public abstract class AI { protected Game game; protected Entity entity; static Random random = new Random(); public AI(Game game, Entity entity) { this.game = game; this.entity = entity; } public abstract void Tick(Entity target); public abstract void AttackedBy(Entity source); protected static void MoveRandomly(Entity source) { double dirX = random.NextDouble() - 0.5, dirZ = random.NextDouble() - 0.5; MoveInDirection(source, new Vector3((float)dirX, 0, (float)dirZ)); } protected static void MoveInDirection(Entity source, Vector3 dir) { double yawRad, pitchRad; Utils.GetHeading(dir, out yawRad, out pitchRad); float yaw = (float)(yawRad * Utils.Rad2Deg), pitch = (float)(pitchRad * Utils.Rad2Deg); LocationUpdate update = LocationUpdate.MakePosAndOri(dir, yaw, pitch, true); source.SetLocation(update, false); } } }