protected AVisibleObjectAi(ABdoObject owner, float visibleRange) : base(owner) { VisibleRange = visibleRange; _objectsThatISee.ElementAddedEvent += IamSeeSomeone; _objectsThatISee.ElementRemovedEvent += IamUnseeSomeone; _objectThatSeeMe.ElementAddedEvent += SomeoneSeeMe; _objectThatSeeMe.ElementRemovedEvent += SomeoneUnseeMee; }
protected override void IamSeeSomeone(ABdoObject someone) { switch (someone.Family) { case ABdoObject.ObjectFamily.Player: var ownerPlayer = (Player)Owner; var successor = (Player)someone; var blob = new SBpPlayerSpawn(successor.Connection, ownerPlayer.Connection); blob.SpawnPlayer(); break; } }
protected override void IamSeeSomeone(ABdoObject someone) { switch (someone.Family) { case ABdoObject.ObjectFamily.Player: var ownerPlayer = (Player) Owner; var successor = (Player) someone; var blob = new SBpPlayerSpawn(successor.Connection, ownerPlayer.Connection); blob.SpawnPlayer(); break; } }
public void ObjectMoved(ABdoObject obj, MovementAction movement) { switch (obj.Family) { case ABdoObject.ObjectFamily.Player: var player = (Player)obj; player.Position.Point.X = movement.StartPosition.Point.X; player.Position.Point.Y = movement.StartPosition.Point.Y; player.Position.Point.Z = movement.StartPosition.Point.Z; player.Position.Heading = movement.Heading; player.VisibleAi.OwnerMoved(movement); break; default: Log.Debug($"Cannot process move action for {obj.Family} object"); break; } }
public void ObjectMoved(ABdoObject obj, MovementAction movement) { switch (obj.Family) { case ABdoObject.ObjectFamily.Player: var player = (Player)obj; player.Position.Point.X = movement.StartPosition.Point.X; player.Position.Point.Y = movement.StartPosition.Point.Y; player.Position.Point.Z = movement.StartPosition.Point.Z; player.Position.Heading = movement.Heading; player.VisibleAi.OwnerMoved(movement); break; default: Log.Debug($"Cannot process move action for {obj.Family} object"); break; } }
protected override sealed bool CanSee(ABdoObject target) { return(true); }
protected override sealed bool CanSee(ABdoObject target) { return true; }
protected ACreatureAi(ABdoObject owner, float visibleRange) : base(owner, visibleRange) { }
protected abstract void SomeoneThatSeeMeWasMoved(ABdoObject someone, MovementAction action);
public bool PlaceToArea(ABdoObject obj) { return _objects.AddIfNotPresent(obj); }
protected AAi(ABdoObject owner) { Owner = owner; }
public bool RemoveFromArea(ABdoObject obj) { return(_objects.Remove(obj)); }
public bool RemoveFromArea(ABdoObject obj) { return _objects.Remove(obj); }
protected override void SomeoneSeeMe(ABdoObject someone) { }
protected override void SomeoneThatSeeMeWasMoved(ABdoObject someone, MovementAction action) { }
protected AAi(ABdoObject owner) { Owner = owner; }
protected override void SomeoneUnseeMee(ABdoObject someone) { }
protected override void SomeoneSeeMe(ABdoObject someone) { }
protected override void IamUnseeSomeone(ABdoObject someone) { }
protected ACreatureAi(ABdoObject owner, float visibleRange) : base(owner, visibleRange) { }
protected override void SomeoneThatSeeMeWasMoved(ABdoObject someone, MovementAction action) { }
private bool CanSeeObject(ABdoObject obj) { return(!obj.Equals(Owner) && Owner.Area == obj.Area && Owner.Position.Distance(obj.Position) < VisibleRange && CanSee(obj)); }
public PlayerAI(ABdoObject owner, float visibleRange) : base(owner, visibleRange) { }
public PlayerAI(ABdoObject owner, float visibleRange) : base(owner, visibleRange) { }
protected abstract bool CanSee(ABdoObject target);
protected override void IamUnseeSomeone(ABdoObject someone) { }
protected abstract void IamUnseeSomeone(ABdoObject someone);
protected override void SomeoneUnseeMee(ABdoObject someone) { }
protected abstract void SomeoneSeeMe(ABdoObject someone);
protected abstract void SomeoneUnseeMee(ABdoObject someone);
public bool PlaceToArea(ABdoObject obj) { return(_objects.AddIfNotPresent(obj)); }