-//
-// Radegast Metaverse Client
-// Copyright (c) 2009-2012, Radegast Development Team
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-// * Neither the name of the application "Radegast", nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// $Id$
-//
-using System;
-using System.Collections.Generic;
-using System.Timers;
-using System.Threading;
-using OpenMetaverse;
-using Radegast.Netcom;
-
-namespace Radegast
-{
- public class KnownHeading
- {
- public string ID { get; set; }
- public string Name { get; set; }
- public Quaternion Heading { get; set; }
- public KnownHeading(string id, string name, Quaternion heading)
- {
- this.ID = id;
- this.Name = name;
- this.Heading = heading;
- }
-
- public override string ToString()
- {
- return Name;
- }
- }
-
- public class StateManager : IDisposable
- {
- public Parcel Parcel { get; set; }
-
- private RadegastInstance instance;
- private GridClient client { get { return instance.Client; } }
- private RadegastNetcom netcom { get { return instance.Netcom; } }
-
- private bool typing = false;
- private bool away = false;
- private bool busy = false;
- private bool flying = false;
- private bool alwaysrun = false;
- private bool sitting = false;
-
- private bool following = false;
- private string followName = string.Empty;
- private float followDistance = 3.0f;
- private UUID followID;
-
- private UUID awayAnimationID = new UUID("fd037134-85d4-f241-72c6-4f42164fedee");
- private UUID busyAnimationID = new UUID("efcf670c2d188128973a034ebc806b67");
- private UUID typingAnimationID = new UUID("c541c47f-e0c0-058b-ad1a-d6ae3a4584d9");
- internal static Random rnd = new Random();
- private System.Threading.Timer lookAtTimer;
-
- /// <summary>
- /// Passes walk state
- /// </summary>
- /// <param name="walking">True if we are walking towards a targer</param>
- public delegate void WalkStateCanged(bool walking);
-
- /// <summary>
- /// Fires when we start or stop walking towards a target
- /// </summary>
- public event WalkStateCanged OnWalkStateCanged;
-
- /// <summary>
- /// Fires when avatar stands
- /// </summary>
- public event EventHandler<SitEventArgs> SitStateChanged;
-
- static List<KnownHeading> m_Headings;
- public static List<KnownHeading> KnownHeadings
- {
- get
- {
- if (m_Headings == null)
- {
- m_Headings = new List<KnownHeading>(16);
- m_Headings.Add(new KnownHeading("E", "East", new Quaternion(0.00000f, 0.00000f, 0.00000f, 1.00000f)));
- m_Headings.Add(new KnownHeading("ENE", "East by Northeast", new Quaternion(0.00000f, 0.00000f, 0.19509f, 0.98079f)));
- m_Headings.Add(new KnownHeading("NE", "Northeast", new Quaternion(0.00000f, 0.00000f, 0.38268f, 0.92388f)));
- m_Headings.Add(new KnownHeading("NNE", "North by Northeast", new Quaternion(0.00000f, 0.00000f, 0.55557f, 0.83147f)));
- m_Headings.Add(new KnownHeading("N", "North", new Quaternion(0.00000f, 0.00000f, 0.70711f, 0.70711f)));
- m_Headings.Add(new KnownHeading("NNW", "North by Northwest", new Quaternion(0.00000f, 0.00000f, 0.83147f, 0.55557f)));
- m_Headings.Add(new KnownHeading("NW", "Nortwest", new Quaternion(0.00000f, 0.00000f, 0.92388f, 0.38268f)));
- m_Headings.Add(new KnownHeading("WNW", "West by Northwest", new Quaternion(0.00000f, 0.00000f, 0.98079f, 0.19509f)));
- m_Headings.Add(new KnownHeading("W", "West", new Quaternion(0.00000f, 0.00000f, 1.00000f, -0.00000f)));
- m_Headings.Add(new KnownHeading("WSW", "West by Southwest", new Quaternion(0.00000f, 0.00000f, 0.98078f, -0.19509f)));
- m_Headings.Add(new KnownHeading("SW", "Southwest", new Quaternion(0.00000f, 0.00000f, 0.92388f, -0.38268f)));
- m_Headings.Add(new KnownHeading("SSW", "South by Southwest", new Quaternion(0.00000f, 0.00000f, 0.83147f, -0.55557f)));
- m_Headings.Add(new KnownHeading("S", "South", new Quaternion(0.00000f, 0.00000f, 0.70711f, -0.70711f)));
- m_Headings.Add(new KnownHeading("SSE", "South by Southeast", new Quaternion(0.00000f, 0.00000f, 0.55557f, -0.83147f)));
- m_Headings.Add(new KnownHeading("SE", "Southeast", new Quaternion(0.00000f, 0.00000f, 0.38268f, -0.92388f)));
- m_Headings.Add(new KnownHeading("ESE", "East by Southeast", new Quaternion(0.00000f, 0.00000f, 0.19509f, -0.98078f)));
- }
- return m_Headings;
- }
- }
-
- public static Vector3 RotToEuler(Quaternion r)
- {
- Quaternion t = new Quaternion(r.X * r.X, r.Y * r.Y, r.Z * r.Z, r.W * r.W);
-
- float m = (t.X + t.Y + t.Z + t.W);
- if (Math.Abs(m) < 0.001) return Vector3.Zero;
- float n = 2 * (r.Y * r.W + r.X * r.Z);
- float p = m * m - n * n;
-
- if (p > 0)
- return new Vector3(
- (float)Math.Atan2(2.0 * (r.X * r.W - r.Y * r.Z), (-t.X - t.Y + t.Z + t.W)),
- (float)Math.Atan2(n, Math.Sqrt(p)),
- (float)Math.Atan2(2.0 * (r.Z * r.W - r.X * r.Y), t.X - t.Y - t.Z + t.W)
- );
- else if (n > 0)
- return new Vector3(
- 0f,
- (float)(Math.PI / 2d),
- (float)Math.Atan2((r.Z * r.W + r.X * r.Y), 0.5 - t.X - t.Y)
- );
- else
- return new Vector3(
- 0f,
- -(float)(Math.PI / 2d),
- (float)Math.Atan2((r.Z * r.W + r.X * r.Y), 0.5 - t.X - t.Z)
- );
- }
-
- public static KnownHeading ClosestKnownHeading(int degrees)
- {
- KnownHeading ret = KnownHeadings[0];
- int facing = (int)(57.2957795d * RotToEuler(KnownHeadings[0].Heading).Z);
- if (facing < 0) facing += 360;
- int minDistance = Math.Abs(degrees - facing);
-
- for (int i = 1; i < KnownHeadings.Count; i++)
- {
- facing = (int)(57.2957795d * RotToEuler(KnownHeadings[i].Heading).Z);
- if (facing < 0) facing += 360;
-
- int distance = Math.Abs(degrees - facing);
- if (distance < minDistance)
- {
- ret = KnownHeadings[i];
- minDistance = distance;
- }
- }
-
- return ret;
- }
-
- public Dictionary<UUID, string> KnownAnimations;
-
- public StateManager(RadegastInstance instance)
- {
- this.instance = instance;
- this.instance.ClientChanged += new EventHandler<ClientChangedEventArgs>(instance_ClientChanged);
- KnownAnimations = Animations.ToDictionary();
-
- beamTimer = new System.Timers.Timer();
- beamTimer.Enabled = false;
- beamTimer.Elapsed += new ElapsedEventHandler(beamTimer_Elapsed);
-
- // Callbacks
- netcom.ClientConnected += new EventHandler<EventArgs>(netcom_ClientConnected);
- netcom.ClientDisconnected += new EventHandler<DisconnectedEventArgs>(netcom_ClientDisconnected);
- netcom.ChatReceived += new EventHandler<ChatEventArgs>(netcom_ChatReceived);
- RegisterClientEvents(client);
- }
-
-
- private void RegisterClientEvents(GridClient client)
- {
- client.Objects.TerseObjectUpdate += new EventHandler<TerseObjectUpdateEventArgs>(Objects_TerseObjectUpdate);
- client.Objects.AvatarSitChanged += new EventHandler<AvatarSitChangedEventArgs>(Objects_AvatarSitChanged);
- client.Self.AlertMessage += new EventHandler<AlertMessageEventArgs>(Self_AlertMessage);
- client.Self.TeleportProgress += new EventHandler<TeleportEventArgs>(Self_TeleportProgress);
- client.Network.EventQueueRunning += new EventHandler<EventQueueRunningEventArgs>(Network_EventQueueRunning);
- }
-
- private void UnregisterClientEvents(GridClient client)
- {
- client.Objects.TerseObjectUpdate -= new EventHandler<TerseObjectUpdateEventArgs>(Objects_TerseObjectUpdate);
- client.Objects.AvatarSitChanged -= new EventHandler<AvatarSitChangedEventArgs>(Objects_AvatarSitChanged);
- client.Self.AlertMessage -= new EventHandler<AlertMessageEventArgs>(Self_AlertMessage);
- client.Self.TeleportProgress -= new EventHandler<TeleportEventArgs>(Self_TeleportProgress);
- client.Network.EventQueueRunning -= new EventHandler<EventQueueRunningEventArgs>(Network_EventQueueRunning);
- }
-
- public void Dispose()
- {
- netcom.ClientConnected -= new EventHandler<EventArgs>(netcom_ClientConnected);
- netcom.ClientDisconnected -= new EventHandler<DisconnectedEventArgs>(netcom_ClientDisconnected);
- netcom.ChatReceived -= new EventHandler<ChatEventArgs>(netcom_ChatReceived);
- UnregisterClientEvents(client);
- beamTimer.Dispose();
- beamTimer = null;
-
- if (lookAtTimer != null)
- {
- lookAtTimer.Dispose();
- lookAtTimer = null;
- }
-
- if (walkTimer != null)
- {
- walkTimer.Dispose();
- walkTimer = null;
- }
- }
-
- void instance_ClientChanged(object sender, ClientChangedEventArgs e)
- {
- UnregisterClientEvents(e.OldClient);
- RegisterClientEvents(client);
- }
-
- void Objects_AvatarSitChanged(object sender, AvatarSitChangedEventArgs e)
- {
- if (e.Avatar.LocalID != client.Self.LocalID) return;
-
- this.sitting = e.SittingOn != 0;
- if (SitStateChanged != null)
- {
- SitStateChanged(this, new SitEventArgs(this.sitting));
- }
- }
-
- /// <summary>
- /// Locates avatar in the current sim, or adjacents sims
- /// </summary>
- /// <param name="person">Avatar UUID</param>
- /// <param name="sim">Simulator avatar is in</param>
- /// <param name="position">Position within sim</param>
- /// <returns>True if managed to find the avatar</returns>
- public bool TryFindAvatar(UUID person, out Simulator sim, out Vector3 position)
- {
- sim = null;
- position = Vector3.Zero;
-
- Avatar avi = null;
-
- // First try the objecct tracker
- for (int i = 0; i < client.Network.Simulators.Count; i++)
- {
- avi = client.Network.Simulators[i].ObjectsAvatars.Find((Avatar av) => { return av.ID == person; });
- if (avi != null)
- {
- sim = client.Network.Simulators[i];
- break;
- }
- }
-
- if (avi != null)
- {
- if (avi.ParentID == 0)
- {
- position = avi.Position;
- }
- else
- {
- Primitive seat;
- if (sim.ObjectsPrimitives.TryGetValue(avi.ParentID, out seat))
- {
- position = seat.Position + avi.Position;
- }
- }
- }
- else
- {
- for (int i = 0; i < client.Network.Simulators.Count; i++)
- {
- if (client.Network.Simulators[i].AvatarPositions.ContainsKey(person))
- {
- sim = client.Network.Simulators[i];
- position = sim.AvatarPositions[person];
- break;
- }
- }
- }
-
- if (position.Z > 0.1f)
- return true;
- else
- return false;
- }
-
- public void SetRandomHeading()
- {
- client.Self.Movement.UpdateFromHeading(Utils.TWO_PI * rnd.NextDouble(), true);
- LookInFront();
- }
-
- void Network_EventQueueRunning(object sender, EventQueueRunningEventArgs e)
- {
- if (e.Simulator == client.Network.CurrentSim)
- {
- SetRandomHeading();
- }
- }
-
- private UUID teleportEffect = UUID.Random();
-
- void Self_TeleportProgress(object sender, TeleportEventArgs e)
- {
- if (!client.Network.Connected) return;
-
- if (e.Status == TeleportStatus.Progress)
- {
- client.Self.SphereEffect(client.Self.GlobalPosition, Color4.White, 4f, teleportEffect);
- }
-
- if (e.Status == TeleportStatus.Finished)
- {
- client.Self.SphereEffect(Vector3d.Zero, Color4.White, 0f, teleportEffect);
- SetRandomHeading();
- }
-
- if (e.Status == TeleportStatus.Failed)
- {
- client.Self.SphereEffect(Vector3d.Zero, Color4.White, 0f, teleportEffect);
- }
- }
-
- void netcom_ClientDisconnected(object sender, DisconnectedEventArgs e)
- {
- typing = away = busy = walking = false;
-
- if (lookAtTimer != null)
- {
- lookAtTimer.Dispose();
- lookAtTimer = null;
- }
-
- }
-
- void netcom_ClientConnected(object sender, EventArgs e)
- {
- if (!instance.GlobalSettings.ContainsKey("draw_distance"))
- {
- instance.GlobalSettings["draw_distance"] = 48;
- }
-
- client.Self.Movement.Camera.Far = instance.GlobalSettings["draw_distance"];
-
- if (lookAtTimer == null)
- lookAtTimer = new System.Threading.Timer(new TimerCallback(lookAtTimerTick), null, Timeout.Infinite, Timeout.Infinite);
- }
-
- void Objects_TerseObjectUpdate(object sender, TerseObjectUpdateEventArgs e)
- {
- if (!e.Update.Avatar) return;
- if (!following) return;
-
- Avatar av;
- client.Network.CurrentSim.ObjectsAvatars.TryGetValue(e.Update.LocalID, out av);
- if (av == null) return;
-
- if (av.ID == followID)
- {
- Vector3 pos = AvatarPosition(client.Network.CurrentSim, av);
-
- FollowUpdate(pos);
- }
- }
-
- void FollowUpdate(Vector3 pos)
- {
- if (Vector3.Distance(pos, client.Self.SimPosition) > followDistance)
- {
- Vector3 target = pos + Vector3.Normalize(client.Self.SimPosition - pos) * (followDistance - 1f);
- client.Self.AutoPilotCancel();
- Vector3d glb = GlobalPosition(client.Network.CurrentSim, target);
- client.Self.AutoPilot(glb.X, glb.Y, glb.Z);
- }
- else
- {
- client.Self.AutoPilotCancel();
- client.Self.Movement.TurnToward(pos);
- }
- }
-
- public Quaternion AvatarRotation(Simulator sim, UUID avID)
- {
- Quaternion rot = Quaternion.Identity;
- Avatar av = sim.ObjectsAvatars.Find((Avatar a) => { return a.ID == avID; });
-
- if (av == null)
- return rot;
-
- if (av.ParentID == 0)
- {
- rot = av.Rotation;
- }
- else
- {
- Primitive prim;
- if (sim.ObjectsPrimitives.TryGetValue(av.ParentID, out prim))
- {
- rot = prim.Rotation + av.Rotation;
- }
- }
-
- return rot;
- }
-
-
- public Vector3 AvatarPosition(Simulator sim, UUID avID)
- {
- Vector3 pos = Vector3.Zero;
- Avatar av = sim.ObjectsAvatars.Find((Avatar a) => { return a.ID == avID; });
- if (av != null)
- {
- return AvatarPosition(sim, av);
- }
- else
- {
- Vector3 coarse;
- if (sim.AvatarPositions.TryGetValue(avID, out coarse))
- {
- if (coarse.Z > 0.01)
- return coarse;
- }
- }
- return pos;
- }
-
- public Vector3 AvatarPosition(Simulator sim, Avatar av)
- {
- Vector3 pos = Vector3.Zero;
-
- if (av.ParentID == 0)
- {
- pos = av.Position;
- }
- else
- {
- Primitive prim;
- if (sim.ObjectsPrimitives.TryGetValue(av.ParentID, out prim))
- {
- pos = prim.Position + av.Position;
- }
- }
-
- return pos;
- }
-
- public void Follow(string name, UUID id)
- {
- followName = name;
- followID = id;
- following = followID != UUID.Zero;
-
- if (following)
- {
- walking = false;
-
- Vector3 target = AvatarPosition(client.Network.CurrentSim, id);
- if (Vector3.Zero != target)
- {
- client.Self.Movement.TurnToward(target);
- FollowUpdate(target);
- }
-
- }
- }
-
- public void StopFollowing()
- {
- following = false;
- followName = string.Empty;
- followID = UUID.Zero;
- }
-
- #region Look at effect
- private int lastLookAtEffect = 0;
- private UUID lookAtEffect = UUID.Random();
-
- /// <summary>
- /// Set eye focus 3m in front of us
- /// </summary>
- public void LookInFront()
- {
- if (!client.Network.Connected) return;
-
- client.Self.LookAtEffect(client.Self.AgentID, client.Self.AgentID,
- new Vector3d(new Vector3(3, 0, 0) * Quaternion.Identity),
- LookAtType.Idle, lookAtEffect);
- }
-
- void lookAtTimerTick(object state)
- {
- LookInFront();
- }
-
- void netcom_ChatReceived(object sender, ChatEventArgs e)
- {
- if (e.SourceID != client.Self.AgentID && (e.SourceType == ChatSourceType.Agent || e.Type == ChatType.StartTyping))
- {
- // change focus max every 4 seconds
- if (Environment.TickCount - lastLookAtEffect > 4000)
- {
- lastLookAtEffect = Environment.TickCount;
- client.Self.LookAtEffect(client.Self.AgentID, e.SourceID, Vector3d.Zero, LookAtType.Respond, lookAtEffect);
- // keep looking at the speaker for 10 seconds
- if (lookAtTimer != null)
- {
- lookAtTimer.Change(10000, Timeout.Infinite);
- }
- }
- }
- }
- #endregion Look at effect
-
- #region Walking (move to)
- private bool walking = false;
- private System.Threading.Timer walkTimer;
- private int walkChekInterval = 500;
- private Vector3d walkToTarget;
- int lastDistance = 0;
- int lastDistanceChanged = 0;
-
- public void WalkTo(Primitive prim)
- {
- WalkTo(GlobalPosition(prim));
- }
-
- public void WalkTo(Vector3d globalPos)
- {
- walkToTarget = globalPos;
-
- if (following)
- {
- following = false;
- followName = string.Empty;
- }
-
- if (walkTimer == null)
- {
- walkTimer = new System.Threading.Timer(new TimerCallback(walkTimerElapsed), null, walkChekInterval, Timeout.Infinite);
- }
-
- lastDistanceChanged = System.Environment.TickCount;
- client.Self.AutoPilotCancel();
- walking = true;
- client.Self.AutoPilot(walkToTarget.X, walkToTarget.Y, walkToTarget.Z);
- FireWalkStateCanged();
- }
-
- void walkTimerElapsed(object sender)
- {
-
- double distance = Vector3d.Distance(client.Self.GlobalPosition, walkToTarget);
-
- if (distance < 2d)
- {
- // We're there
- EndWalking();
- }
- else
- {
- if (lastDistance != (int)distance)
- {
- lastDistanceChanged = System.Environment.TickCount;
- lastDistance = (int)distance;
- }
- else if ((System.Environment.TickCount - lastDistanceChanged) > 10000)
- {
- // Our distance to the target has not changed in 10s, give up
- EndWalking();
- return;
- }
- walkTimer.Change(walkChekInterval, Timeout.Infinite);
- }
- }
-
- void Self_AlertMessage(object sender, AlertMessageEventArgs e)
- {
- if (e.Message.Contains("Autopilot cancel"))
- {
- if (walking)
- {
- EndWalking();
- }
- }
- }
-
- void FireWalkStateCanged()
- {
- if (OnWalkStateCanged != null)
- {
- try { OnWalkStateCanged(walking); }
- catch (Exception) { }
- }
- }
-
- public void EndWalking()
- {
- if (walking)
- {
- walking = false;
- Logger.Log("Finished walking.", Helpers.LogLevel.Debug, client);
- walkTimer.Dispose();
- walkTimer = null;
- client.Self.AutoPilotCancel();
- FireWalkStateCanged();
- }
- }
- #endregion
-
- public void SetTyping(bool typing)
- {
- if (!client.Network.Connected) return;
-
- Dictionary<UUID, bool> typingAnim = new Dictionary<UUID, bool>();
- typingAnim.Add(typingAnimationID, typing);
-
- client.Self.Animate(typingAnim, false);
-
- if (typing)
- client.Self.Chat(string.Empty, 0, ChatType.StartTyping);
- else
- client.Self.Chat(string.Empty, 0, ChatType.StopTyping);
-
- this.typing = typing;
- }
-
- public void SetAway(bool away)
- {
- Dictionary<UUID, bool> awayAnim = new Dictionary<UUID, bool>();
- awayAnim.Add(awayAnimationID, away);
-
- client.Self.Animate(awayAnim, true);
- this.away = away;
- }
-
- public void SetBusy(bool busy)
- {
- Dictionary<UUID, bool> busyAnim = new Dictionary<UUID, bool>();
- busyAnim.Add(busyAnimationID, busy);
-
- client.Self.Animate(busyAnim, true);
- this.busy = busy;
- }
-
- public void SetFlying(bool flying)
- {
- this.flying = client.Self.Movement.Fly = flying;
- }
-
- public void SetAlwaysRun(bool alwaysrun)
- {
- this.alwaysrun = client.Self.Movement.AlwaysRun = alwaysrun;
- }
-
- public void SetSitting(bool sitting, UUID target)
- {
- this.sitting = sitting;
-
- if (sitting)
- {
- client.Self.RequestSit(target, Vector3.Zero);
- client.Self.Sit();
- }
- else
- {
- client.Self.Stand();
- }
-
- if (SitStateChanged != null)
- {
- SitStateChanged(this, new SitEventArgs(this.sitting));
- }
-
- if (!this.sitting)
- {
- StopAllAnimations();
- }
- }
-
- public void StopAllAnimations()
- {
- Dictionary<UUID, bool> stop = new Dictionary<UUID, bool>();
-
- client.Self.SignaledAnimations.ForEach((UUID anim) =>
- {
- if (!KnownAnimations.ContainsKey(anim))
- {
- stop.Add(anim, false);
- }
- });
-
- if (stop.Count > 0)
- {
- client.Self.Animate(stop, true);
- }
- }
-
- public Vector3d GlobalPosition(Simulator sim, Vector3 pos)
- {
- uint globalX, globalY;
- Utils.LongToUInts(sim.Handle, out globalX, out globalY);
-
- return new Vector3d(
- (double)globalX + (double)pos.X,
- (double)globalY + (double)pos.Y,
- (double)pos.Z);
- }
-
- public Vector3d GlobalPosition(Primitive prim)
- {
- return GlobalPosition(client.Network.CurrentSim, prim.Position);
- }
-
- private System.Timers.Timer beamTimer;
- private List<Vector3d> beamTarget;
- private Random beamRandom = new Random();
- private UUID pointID;
- private UUID sphereID;
- private List<UUID> beamID;
- private int numBeans;
- private Color4[] beamColors = new Color4[3] { new Color4(0, 255, 0, 255), new Color4(255, 0, 0, 255), new Color4(0, 0, 255, 255) };
- private Primitive targetPrim;
-
- public void UnSetPointing()
- {
- beamTimer.Enabled = false;
- if (pointID != UUID.Zero)
- {
- client.Self.PointAtEffect(client.Self.AgentID, UUID.Zero, Vector3d.Zero, PointAtType.None, pointID);
- pointID = UUID.Zero;
- }
-
- if (beamID != null)
- {
- foreach (UUID id in beamID)
- {
- client.Self.BeamEffect(UUID.Zero, UUID.Zero, Vector3d.Zero, new Color4(255, 255, 255, 255), 0, id);
- }
- beamID = null;
- }
-
- if (sphereID != UUID.Zero)
- {
- client.Self.SphereEffect(Vector3d.Zero, Color4.White, 0, sphereID);
- sphereID = UUID.Zero;
- }
-
- }
-
- void beamTimer_Elapsed(object sender, EventArgs e)
- {
- if (beamID == null) return;
-
- try
- {
- client.Self.SphereEffect(GlobalPosition(targetPrim), beamColors[beamRandom.Next(0, 3)], 0.85f, sphereID);
- int i = 0;
- for (i = 0; i < numBeans; i++)
- {
- UUID newBeam = UUID.Random();
- Vector3d scatter;
-
- if (i == 0)
- {
- scatter = GlobalPosition(targetPrim);
- }
- else
- {
- Vector3d direction = client.Self.GlobalPosition - GlobalPosition(targetPrim);
- Vector3d cross = direction % new Vector3d(0, 0, 1);
- cross.Normalize();
- scatter = GlobalPosition(targetPrim) + cross * (i * 0.2d) * (i % 2 == 0 ? 1 : -1);
- }
- client.Self.BeamEffect(client.Self.AgentID, UUID.Zero, scatter, beamColors[beamRandom.Next(0, 3)], 1.0f, beamID[i]);
- }
-
- for (int j = 1; j < numBeans; j++)
- {
- UUID newBeam = UUID.Random();
- Vector3d scatter;
- Vector3d cross = new Vector3d(0, 0, 1);
- cross.Normalize();
- scatter = GlobalPosition(targetPrim) + cross * (j * 0.2d) * (j % 2 == 0 ? 1 : -1);
-
- client.Self.BeamEffect(client.Self.AgentID, UUID.Zero, scatter, beamColors[beamRandom.Next(0, 3)], 1.0f, beamID[j + i - 1]);
- }
- }
- catch (Exception) { };
-
- }
-
- public void SetPointing(Primitive prim, int numBeans)
- {
- UnSetPointing();
- client.Self.Movement.TurnToward(prim.Position);
- pointID = UUID.Random();
- sphereID = UUID.Random();
- beamID = new List<UUID>();
- beamTarget = new List<Vector3d>();
- targetPrim = prim;
- this.numBeans = numBeans;
-
- client.Self.PointAtEffect(client.Self.AgentID, prim.ID, Vector3d.Zero, PointAtType.Select, pointID);
-
- for (int i = 0; i < numBeans; i++)
- {
- UUID newBeam = UUID.Random();
- beamID.Add(newBeam);
- beamTarget.Add(Vector3d.Zero);
- }
-
- for (int i = 1; i < numBeans; i++)
- {
- UUID newBeam = UUID.Random();
- beamID.Add(newBeam);
- beamTarget.Add(Vector3d.Zero);
- }
-
- beamTimer.Interval = 1000;
- beamTimer.Enabled = true;
- }
-
- public UUID TypingAnimationID
- {
- get { return typingAnimationID; }
- set { typingAnimationID = value; }
- }
-
- public UUID AwayAnimationID
- {
- get { return awayAnimationID; }
- set { awayAnimationID = value; }
- }
-
- public UUID BusyAnimationID
- {
- get { return busyAnimationID; }
- set { busyAnimationID = value; }
- }
-
- public bool IsTyping
- {
- get { return typing; }
- }
-
- public bool IsAway
- {
- get { return away; }
- }
-
- public bool IsBusy
- {
- get { return busy; }
- }
-
- public bool IsFlying
- {
- get { return flying; }
- }
-
- public bool IsSitting
- {
- get { return sitting; }
- }
-
- public bool IsPointing
- {
- get { return pointID != UUID.Zero; }
- }
-
- public bool IsFollowing
- {
- get { return following; }
- }
-
- public string FollowName
- {
- get { return followName; }
- set { followName = value; }
- }
-
- public float FollowDistance
- {
- get { return followDistance; }
- set { followDistance = value; }
- }
-
- public bool IsWalking
- {
- get { return walking; }
- }
- }
-
- public class SitEventArgs : EventArgs
- {
- public bool Sitting;
-
- public SitEventArgs(bool sitting)
- {
- this.Sitting = sitting;
- }
- }
-}
+// \r
+// Radegast Metaverse Client\r
+// Copyright (c) 2009-2012, Radegast Development Team\r
+// All rights reserved.\r
+// \r
+// Redistribution and use in source and binary forms, with or without\r
+// modification, are permitted provided that the following conditions are met:\r
+// \r
+// * Redistributions of source code must retain the above copyright notice,\r
+// this list of conditions and the following disclaimer.\r
+// * Redistributions in binary form must reproduce the above copyright\r
+// notice, this list of conditions and the following disclaimer in the\r
+// documentation and/or other materials provided with the distribution.\r
+// * Neither the name of the application "Radegast", nor the names of its\r
+// contributors may be used to endorse or promote products derived from\r
+// this software without specific prior written permission.\r
+// \r
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+//\r
+// $Id$\r
+//\r
+using System;\r
+using System.Collections.Generic;\r
+using System.Timers;\r
+using System.Threading;\r
+using OpenMetaverse;\r
+using Radegast.Netcom;\r
+\r
+namespace Radegast\r
+{\r
+ public class KnownHeading\r
+ {\r
+ public string ID { get; set; }\r
+ public string Name { get; set; }\r
+ public Quaternion Heading { get; set; }\r
+ public KnownHeading(string id, string name, Quaternion heading)\r
+ {\r
+ this.ID = id;\r
+ this.Name = name;\r
+ this.Heading = heading;\r
+ }\r
+\r
+ public override string ToString()\r
+ {\r
+ return Name;\r
+ }\r
+ }\r
+\r
+ public class StateManager : IDisposable\r
+ {\r
+ public Parcel Parcel { get; set; }\r
+\r
+ private RadegastInstance instance;\r
+ private GridClient client { get { return instance.Client; } }\r
+ private RadegastNetcom netcom { get { return instance.Netcom; } }\r
+\r
+ private bool typing = false;\r
+ private bool away = false;\r
+ private bool busy = false;\r
+ private bool flying = false;\r
+ private bool alwaysrun = false;\r
+ private bool sitting = false;\r
+\r
+ private bool following = false;\r
+ private string followName = string.Empty;\r
+ private float followDistance = 3.0f;\r
+ private UUID followID;\r
+\r
+ private UUID awayAnimationID = new UUID("fd037134-85d4-f241-72c6-4f42164fedee");\r
+ private UUID busyAnimationID = new UUID("efcf670c2d188128973a034ebc806b67");\r
+ private UUID typingAnimationID = new UUID("c541c47f-e0c0-058b-ad1a-d6ae3a4584d9");\r
+ internal static Random rnd = new Random();\r
+ private System.Threading.Timer lookAtTimer;\r
+\r
+ /// <summary>\r
+ /// Passes walk state\r
+ /// </summary>\r
+ /// <param name="walking">True if we are walking towards a targer</param>\r
+ public delegate void WalkStateCanged(bool walking);\r
+\r
+ /// <summary>\r
+ /// Fires when we start or stop walking towards a target\r
+ /// </summary>\r
+ public event WalkStateCanged OnWalkStateCanged;\r
+\r
+ /// <summary>\r
+ /// Fires when avatar stands\r
+ /// </summary>\r
+ public event EventHandler<SitEventArgs> SitStateChanged;\r
+\r
+ static List<KnownHeading> m_Headings;\r
+ public static List<KnownHeading> KnownHeadings\r
+ {\r
+ get\r
+ {\r
+ if (m_Headings == null)\r
+ {\r
+ m_Headings = new List<KnownHeading>(16);\r
+ m_Headings.Add(new KnownHeading("E", "East", new Quaternion(0.00000f, 0.00000f, 0.00000f, 1.00000f)));\r
+ m_Headings.Add(new KnownHeading("ENE", "East by Northeast", new Quaternion(0.00000f, 0.00000f, 0.19509f, 0.98079f)));\r
+ m_Headings.Add(new KnownHeading("NE", "Northeast", new Quaternion(0.00000f, 0.00000f, 0.38268f, 0.92388f)));\r
+ m_Headings.Add(new KnownHeading("NNE", "North by Northeast", new Quaternion(0.00000f, 0.00000f, 0.55557f, 0.83147f)));\r
+ m_Headings.Add(new KnownHeading("N", "North", new Quaternion(0.00000f, 0.00000f, 0.70711f, 0.70711f)));\r
+ m_Headings.Add(new KnownHeading("NNW", "North by Northwest", new Quaternion(0.00000f, 0.00000f, 0.83147f, 0.55557f)));\r
+ m_Headings.Add(new KnownHeading("NW", "Nortwest", new Quaternion(0.00000f, 0.00000f, 0.92388f, 0.38268f)));\r
+ m_Headings.Add(new KnownHeading("WNW", "West by Northwest", new Quaternion(0.00000f, 0.00000f, 0.98079f, 0.19509f)));\r
+ m_Headings.Add(new KnownHeading("W", "West", new Quaternion(0.00000f, 0.00000f, 1.00000f, -0.00000f)));\r
+ m_Headings.Add(new KnownHeading("WSW", "West by Southwest", new Quaternion(0.00000f, 0.00000f, 0.98078f, -0.19509f)));\r
+ m_Headings.Add(new KnownHeading("SW", "Southwest", new Quaternion(0.00000f, 0.00000f, 0.92388f, -0.38268f)));\r
+ m_Headings.Add(new KnownHeading("SSW", "South by Southwest", new Quaternion(0.00000f, 0.00000f, 0.83147f, -0.55557f)));\r
+ m_Headings.Add(new KnownHeading("S", "South", new Quaternion(0.00000f, 0.00000f, 0.70711f, -0.70711f)));\r
+ m_Headings.Add(new KnownHeading("SSE", "South by Southeast", new Quaternion(0.00000f, 0.00000f, 0.55557f, -0.83147f)));\r
+ m_Headings.Add(new KnownHeading("SE", "Southeast", new Quaternion(0.00000f, 0.00000f, 0.38268f, -0.92388f)));\r
+ m_Headings.Add(new KnownHeading("ESE", "East by Southeast", new Quaternion(0.00000f, 0.00000f, 0.19509f, -0.98078f)));\r
+ }\r
+ return m_Headings;\r
+ }\r
+ }\r
+\r
+ public static Vector3 RotToEuler(Quaternion r)\r
+ {\r
+ Quaternion t = new Quaternion(r.X * r.X, r.Y * r.Y, r.Z * r.Z, r.W * r.W);\r
+\r
+ float m = (t.X + t.Y + t.Z + t.W);\r
+ if (Math.Abs(m) < 0.001) return Vector3.Zero;\r
+ float n = 2 * (r.Y * r.W + r.X * r.Z);\r
+ float p = m * m - n * n;\r
+\r
+ if (p > 0)\r
+ return new Vector3(\r
+ (float)Math.Atan2(2.0 * (r.X * r.W - r.Y * r.Z), (-t.X - t.Y + t.Z + t.W)),\r
+ (float)Math.Atan2(n, Math.Sqrt(p)),\r
+ (float)Math.Atan2(2.0 * (r.Z * r.W - r.X * r.Y), t.X - t.Y - t.Z + t.W)\r
+ );\r
+ else if (n > 0)\r
+ return new Vector3(\r
+ 0f,\r
+ (float)(Math.PI / 2d),\r
+ (float)Math.Atan2((r.Z * r.W + r.X * r.Y), 0.5 - t.X - t.Y)\r
+ );\r
+ else\r
+ return new Vector3(\r
+ 0f,\r
+ -(float)(Math.PI / 2d),\r
+ (float)Math.Atan2((r.Z * r.W + r.X * r.Y), 0.5 - t.X - t.Z)\r
+ );\r
+ }\r
+\r
+ public static KnownHeading ClosestKnownHeading(int degrees)\r
+ {\r
+ KnownHeading ret = KnownHeadings[0];\r
+ int facing = (int)(57.2957795d * RotToEuler(KnownHeadings[0].Heading).Z);\r
+ if (facing < 0) facing += 360;\r
+ int minDistance = Math.Abs(degrees - facing);\r
+\r
+ for (int i = 1; i < KnownHeadings.Count; i++)\r
+ {\r
+ facing = (int)(57.2957795d * RotToEuler(KnownHeadings[i].Heading).Z);\r
+ if (facing < 0) facing += 360;\r
+\r
+ int distance = Math.Abs(degrees - facing);\r
+ if (distance < minDistance)\r
+ {\r
+ ret = KnownHeadings[i];\r
+ minDistance = distance;\r
+ }\r
+ }\r
+\r
+ return ret;\r
+ }\r
+\r
+ public Dictionary<UUID, string> KnownAnimations;\r
+\r
+ public StateManager(RadegastInstance instance)\r
+ {\r
+ this.instance = instance;\r
+ this.instance.ClientChanged += new EventHandler<ClientChangedEventArgs>(instance_ClientChanged);\r
+ KnownAnimations = Animations.ToDictionary();\r
+\r
+ beamTimer = new System.Timers.Timer();\r
+ beamTimer.Enabled = false;\r
+ beamTimer.Elapsed += new ElapsedEventHandler(beamTimer_Elapsed);\r
+\r
+ // Callbacks\r
+ netcom.ClientConnected += new EventHandler<EventArgs>(netcom_ClientConnected);\r
+ netcom.ClientDisconnected += new EventHandler<DisconnectedEventArgs>(netcom_ClientDisconnected);\r
+ netcom.ChatReceived += new EventHandler<ChatEventArgs>(netcom_ChatReceived);\r
+ RegisterClientEvents(client);\r
+ }\r
+\r
+\r
+ private void RegisterClientEvents(GridClient client)\r
+ {\r
+ client.Objects.TerseObjectUpdate += new EventHandler<TerseObjectUpdateEventArgs>(Objects_TerseObjectUpdate);\r
+ client.Objects.AvatarSitChanged += new EventHandler<AvatarSitChangedEventArgs>(Objects_AvatarSitChanged);\r
+ client.Self.AlertMessage += new EventHandler<AlertMessageEventArgs>(Self_AlertMessage);\r
+ client.Self.TeleportProgress += new EventHandler<TeleportEventArgs>(Self_TeleportProgress);\r
+ client.Network.EventQueueRunning += new EventHandler<EventQueueRunningEventArgs>(Network_EventQueueRunning);\r
+ }\r
+\r
+ private void UnregisterClientEvents(GridClient client)\r
+ {\r
+ client.Objects.TerseObjectUpdate -= new EventHandler<TerseObjectUpdateEventArgs>(Objects_TerseObjectUpdate);\r
+ client.Objects.AvatarSitChanged -= new EventHandler<AvatarSitChangedEventArgs>(Objects_AvatarSitChanged);\r
+ client.Self.AlertMessage -= new EventHandler<AlertMessageEventArgs>(Self_AlertMessage);\r
+ client.Self.TeleportProgress -= new EventHandler<TeleportEventArgs>(Self_TeleportProgress);\r
+ client.Network.EventQueueRunning -= new EventHandler<EventQueueRunningEventArgs>(Network_EventQueueRunning);\r
+ }\r
+\r
+ public void Dispose()\r
+ {\r
+ netcom.ClientConnected -= new EventHandler<EventArgs>(netcom_ClientConnected);\r
+ netcom.ClientDisconnected -= new EventHandler<DisconnectedEventArgs>(netcom_ClientDisconnected);\r
+ netcom.ChatReceived -= new EventHandler<ChatEventArgs>(netcom_ChatReceived);\r
+ UnregisterClientEvents(client);\r
+ beamTimer.Dispose();\r
+ beamTimer = null;\r
+\r
+ if (lookAtTimer != null)\r
+ {\r
+ lookAtTimer.Dispose();\r
+ lookAtTimer = null;\r
+ }\r
+\r
+ if (walkTimer != null)\r
+ {\r
+ walkTimer.Dispose();\r
+ walkTimer = null;\r
+ }\r
+ }\r
+\r
+ void instance_ClientChanged(object sender, ClientChangedEventArgs e)\r
+ {\r
+ UnregisterClientEvents(e.OldClient);\r
+ RegisterClientEvents(client);\r
+ }\r
+\r
+ void Objects_AvatarSitChanged(object sender, AvatarSitChangedEventArgs e)\r
+ {\r
+ if (e.Avatar.LocalID != client.Self.LocalID) return;\r
+\r
+ this.sitting = e.SittingOn != 0;\r
+ if (SitStateChanged != null)\r
+ {\r
+ SitStateChanged(this, new SitEventArgs(this.sitting));\r
+ }\r
+ }\r
+\r
+ /// <summary>\r
+ /// Locates avatar in the current sim, or adjacents sims\r
+ /// </summary>\r
+ /// <param name="person">Avatar UUID</param>\r
+ /// <param name="sim">Simulator avatar is in</param>\r
+ /// <param name="position">Position within sim</param>\r
+ /// <returns>True if managed to find the avatar</returns>\r
+ public bool TryFindAvatar(UUID person, out Simulator sim, out Vector3 position)\r
+ {\r
+ sim = null;\r
+ position = Vector3.Zero;\r
+\r
+ Avatar avi = null;\r
+\r
+ // First try the objecct tracker\r
+ for (int i = 0; i < client.Network.Simulators.Count; i++)\r
+ {\r
+ avi = client.Network.Simulators[i].ObjectsAvatars.Find((Avatar av) => { return av.ID == person; });\r
+ if (avi != null)\r
+ {\r
+ sim = client.Network.Simulators[i];\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (avi != null)\r
+ {\r
+ if (avi.ParentID == 0)\r
+ {\r
+ position = avi.Position;\r
+ }\r
+ else\r
+ {\r
+ Primitive seat;\r
+ if (sim.ObjectsPrimitives.TryGetValue(avi.ParentID, out seat))\r
+ {\r
+ position = seat.Position + avi.Position;\r
+ }\r
+ }\r
+ }\r
+ else\r
+ {\r
+ for (int i = 0; i < client.Network.Simulators.Count; i++)\r
+ {\r
+ if (client.Network.Simulators[i].AvatarPositions.ContainsKey(person))\r
+ {\r
+ sim = client.Network.Simulators[i];\r
+ position = sim.AvatarPositions[person];\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (position.Z > 0.1f)\r
+ return true;\r
+ else\r
+ return false;\r
+ }\r
+\r
+ public void SetRandomHeading()\r
+ {\r
+ client.Self.Movement.UpdateFromHeading(Utils.TWO_PI * rnd.NextDouble(), true);\r
+ LookInFront();\r
+ }\r
+\r
+ void Network_EventQueueRunning(object sender, EventQueueRunningEventArgs e)\r
+ {\r
+ if (e.Simulator == client.Network.CurrentSim)\r
+ {\r
+ SetRandomHeading();\r
+ }\r
+ }\r
+\r
+ private UUID teleportEffect = UUID.Random();\r
+\r
+ void Self_TeleportProgress(object sender, TeleportEventArgs e)\r
+ {\r
+ if (!client.Network.Connected) return;\r
+\r
+ if (e.Status == TeleportStatus.Progress)\r
+ {\r
+ client.Self.SphereEffect(client.Self.GlobalPosition, Color4.White, 4f, teleportEffect);\r
+ }\r
+\r
+ if (e.Status == TeleportStatus.Finished)\r
+ {\r
+ client.Self.SphereEffect(Vector3d.Zero, Color4.White, 0f, teleportEffect);\r
+ SetRandomHeading();\r
+ }\r
+\r
+ if (e.Status == TeleportStatus.Failed)\r
+ {\r
+ client.Self.SphereEffect(Vector3d.Zero, Color4.White, 0f, teleportEffect);\r
+ }\r
+ }\r
+\r
+ void netcom_ClientDisconnected(object sender, DisconnectedEventArgs e)\r
+ {\r
+ typing = away = busy = walking = false;\r
+\r
+ if (lookAtTimer != null)\r
+ {\r
+ lookAtTimer.Dispose();\r
+ lookAtTimer = null;\r
+ }\r
+\r
+ }\r
+\r
+ void netcom_ClientConnected(object sender, EventArgs e)\r
+ {\r
+ if (!instance.GlobalSettings.ContainsKey("draw_distance"))\r
+ {\r
+ instance.GlobalSettings["draw_distance"] = 48;\r
+ }\r
+\r
+ client.Self.Movement.Camera.Far = instance.GlobalSettings["draw_distance"];\r
+\r
+ if (lookAtTimer == null)\r
+ {\r
+ lookAtTimer = new System.Threading.Timer(new TimerCallback(lookAtTimerTick), null, Timeout.Infinite, Timeout.Infinite);\r
+ }\r
+ }\r
+\r
+ void Objects_TerseObjectUpdate(object sender, TerseObjectUpdateEventArgs e)\r
+ {\r
+ if (!e.Update.Avatar) return;\r
+ if (!following) return;\r
+\r
+ Avatar av;\r
+ client.Network.CurrentSim.ObjectsAvatars.TryGetValue(e.Update.LocalID, out av);\r
+ if (av == null) return;\r
+\r
+ if (av.ID == followID)\r
+ {\r
+ Vector3 pos = AvatarPosition(client.Network.CurrentSim, av);\r
+\r
+ FollowUpdate(pos);\r
+ }\r
+ }\r
+\r
+ void FollowUpdate(Vector3 pos)\r
+ {\r
+ if (Vector3.Distance(pos, client.Self.SimPosition) > followDistance)\r
+ {\r
+ Vector3 target = pos + Vector3.Normalize(client.Self.SimPosition - pos) * (followDistance - 1f);\r
+ client.Self.AutoPilotCancel();\r
+ Vector3d glb = GlobalPosition(client.Network.CurrentSim, target);\r
+ client.Self.AutoPilot(glb.X, glb.Y, glb.Z);\r
+ }\r
+ else\r
+ {\r
+ client.Self.AutoPilotCancel();\r
+ client.Self.Movement.TurnToward(pos);\r
+ }\r
+ }\r
+\r
+ public Quaternion AvatarRotation(Simulator sim, UUID avID)\r
+ {\r
+ Quaternion rot = Quaternion.Identity;\r
+ Avatar av = sim.ObjectsAvatars.Find((Avatar a) => { return a.ID == avID; });\r
+\r
+ if (av == null)\r
+ return rot;\r
+\r
+ if (av.ParentID == 0)\r
+ {\r
+ rot = av.Rotation;\r
+ }\r
+ else\r
+ {\r
+ Primitive prim;\r
+ if (sim.ObjectsPrimitives.TryGetValue(av.ParentID, out prim))\r
+ {\r
+ rot = prim.Rotation + av.Rotation;\r
+ }\r
+ }\r
+\r
+ return rot;\r
+ }\r
+\r
+\r
+ public Vector3 AvatarPosition(Simulator sim, UUID avID)\r
+ {\r
+ Vector3 pos = Vector3.Zero;\r
+ Avatar av = sim.ObjectsAvatars.Find((Avatar a) => { return a.ID == avID; });\r
+ if (av != null)\r
+ {\r
+ return AvatarPosition(sim, av);\r
+ }\r
+ else\r
+ {\r
+ Vector3 coarse;\r
+ if (sim.AvatarPositions.TryGetValue(avID, out coarse))\r
+ {\r
+ if (coarse.Z > 0.01)\r
+ return coarse;\r
+ }\r
+ }\r
+ return pos;\r
+ }\r
+\r
+ public Vector3 AvatarPosition(Simulator sim, Avatar av)\r
+ {\r
+ Vector3 pos = Vector3.Zero;\r
+\r
+ if (av.ParentID == 0)\r
+ {\r
+ pos = av.Position;\r
+ }\r
+ else\r
+ {\r
+ Primitive prim;\r
+ if (sim.ObjectsPrimitives.TryGetValue(av.ParentID, out prim))\r
+ {\r
+ pos = prim.Position + av.Position;\r
+ }\r
+ }\r
+\r
+ return pos;\r
+ }\r
+\r
+ public void Follow(string name, UUID id)\r
+ {\r
+ followName = name;\r
+ followID = id;\r
+ following = followID != UUID.Zero;\r
+\r
+ if (following)\r
+ {\r
+ walking = false;\r
+\r
+ Vector3 target = AvatarPosition(client.Network.CurrentSim, id);\r
+ if (Vector3.Zero != target)\r
+ {\r
+ client.Self.Movement.TurnToward(target);\r
+ FollowUpdate(target);\r
+ }\r
+\r
+ }\r
+ }\r
+\r
+ public void StopFollowing()\r
+ {\r
+ following = false;\r
+ followName = string.Empty;\r
+ followID = UUID.Zero;\r
+ }\r
+\r
+ #region Look at effect\r
+ private int lastLookAtEffect = 0;\r
+ private UUID lookAtEffect = UUID.Random();\r
+\r
+ /// <summary>\r
+ /// Set eye focus 3m in front of us\r
+ /// </summary>\r
+ public void LookInFront()\r
+ {\r
+ if (!client.Network.Connected || instance.GlobalSettings["disable_look_at"]) return;\r
+\r
+ client.Self.LookAtEffect(client.Self.AgentID, client.Self.AgentID,\r
+ new Vector3d(new Vector3(3, 0, 0) * Quaternion.Identity),\r
+ LookAtType.Idle, lookAtEffect);\r
+ }\r
+\r
+ void lookAtTimerTick(object state)\r
+ {\r
+ LookInFront();\r
+ }\r
+\r
+ void netcom_ChatReceived(object sender, ChatEventArgs e)\r
+ {\r
+ if (!instance.GlobalSettings["disable_look_at"]\r
+ && e.SourceID != client.Self.AgentID\r
+ && (e.SourceType == ChatSourceType.Agent || e.Type == ChatType.StartTyping))\r
+ {\r
+ // change focus max every 4 seconds\r
+ if (Environment.TickCount - lastLookAtEffect > 4000)\r
+ {\r
+ lastLookAtEffect = Environment.TickCount;\r
+ client.Self.LookAtEffect(client.Self.AgentID, e.SourceID, Vector3d.Zero, LookAtType.Respond, lookAtEffect);\r
+ // keep looking at the speaker for 10 seconds\r
+ if (lookAtTimer != null)\r
+ {\r
+ lookAtTimer.Change(10000, Timeout.Infinite);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ #endregion Look at effect\r
+\r
+ #region Walking (move to)\r
+ private bool walking = false;\r
+ private System.Threading.Timer walkTimer;\r
+ private int walkChekInterval = 500;\r
+ private Vector3d walkToTarget;\r
+ int lastDistance = 0;\r
+ int lastDistanceChanged = 0;\r
+\r
+ public void WalkTo(Primitive prim)\r
+ {\r
+ WalkTo(GlobalPosition(prim));\r
+ }\r
+\r
+ public void WalkTo(Vector3d globalPos)\r
+ {\r
+ walkToTarget = globalPos;\r
+\r
+ if (following)\r
+ {\r
+ following = false;\r
+ followName = string.Empty;\r
+ }\r
+\r
+ if (walkTimer == null)\r
+ {\r
+ walkTimer = new System.Threading.Timer(new TimerCallback(walkTimerElapsed), null, walkChekInterval, Timeout.Infinite);\r
+ }\r
+\r
+ lastDistanceChanged = System.Environment.TickCount;\r
+ client.Self.AutoPilotCancel();\r
+ walking = true;\r
+ client.Self.AutoPilot(walkToTarget.X, walkToTarget.Y, walkToTarget.Z);\r
+ FireWalkStateCanged();\r
+ }\r
+\r
+ void walkTimerElapsed(object sender)\r
+ {\r
+\r
+ double distance = Vector3d.Distance(client.Self.GlobalPosition, walkToTarget);\r
+\r
+ if (distance < 2d)\r
+ {\r
+ // We're there\r
+ EndWalking();\r
+ }\r
+ else\r
+ {\r
+ if (lastDistance != (int)distance)\r
+ {\r
+ lastDistanceChanged = System.Environment.TickCount;\r
+ lastDistance = (int)distance;\r
+ }\r
+ else if ((System.Environment.TickCount - lastDistanceChanged) > 10000)\r
+ {\r
+ // Our distance to the target has not changed in 10s, give up\r
+ EndWalking();\r
+ return;\r
+ }\r
+ walkTimer.Change(walkChekInterval, Timeout.Infinite);\r
+ }\r
+ }\r
+\r
+ void Self_AlertMessage(object sender, AlertMessageEventArgs e)\r
+ {\r
+ if (e.Message.Contains("Autopilot cancel"))\r
+ {\r
+ if (walking)\r
+ {\r
+ EndWalking();\r
+ }\r
+ }\r
+ }\r
+\r
+ void FireWalkStateCanged()\r
+ {\r
+ if (OnWalkStateCanged != null)\r
+ {\r
+ try { OnWalkStateCanged(walking); }\r
+ catch (Exception) { }\r
+ }\r
+ }\r
+\r
+ public void EndWalking()\r
+ {\r
+ if (walking)\r
+ {\r
+ walking = false;\r
+ Logger.Log("Finished walking.", Helpers.LogLevel.Debug, client);\r
+ walkTimer.Dispose();\r
+ walkTimer = null;\r
+ client.Self.AutoPilotCancel();\r
+ FireWalkStateCanged();\r
+ }\r
+ }\r
+ #endregion\r
+\r
+ public void SetTyping(bool typing)\r
+ {\r
+ if (!client.Network.Connected) return;\r
+\r
+ Dictionary<UUID, bool> typingAnim = new Dictionary<UUID, bool>();\r
+ typingAnim.Add(typingAnimationID, typing);\r
+\r
+ client.Self.Animate(typingAnim, false);\r
+\r
+ if (typing)\r
+ client.Self.Chat(string.Empty, 0, ChatType.StartTyping);\r
+ else\r
+ client.Self.Chat(string.Empty, 0, ChatType.StopTyping);\r
+\r
+ this.typing = typing;\r
+ }\r
+\r
+ public void SetAway(bool away)\r
+ {\r
+ Dictionary<UUID, bool> awayAnim = new Dictionary<UUID, bool>();\r
+ awayAnim.Add(awayAnimationID, away);\r
+\r
+ client.Self.Animate(awayAnim, true);\r
+ this.away = away;\r
+ }\r
+\r
+ public void SetBusy(bool busy)\r
+ {\r
+ Dictionary<UUID, bool> busyAnim = new Dictionary<UUID, bool>();\r
+ busyAnim.Add(busyAnimationID, busy);\r
+\r
+ client.Self.Animate(busyAnim, true);\r
+ this.busy = busy;\r
+ }\r
+\r
+ public void SetFlying(bool flying)\r
+ {\r
+ this.flying = client.Self.Movement.Fly = flying;\r
+ }\r
+\r
+ public void SetAlwaysRun(bool alwaysrun)\r
+ {\r
+ this.alwaysrun = client.Self.Movement.AlwaysRun = alwaysrun;\r
+ }\r
+\r
+ public void SetSitting(bool sitting, UUID target)\r
+ {\r
+ this.sitting = sitting;\r
+\r
+ if (sitting)\r
+ {\r
+ client.Self.RequestSit(target, Vector3.Zero);\r
+ client.Self.Sit();\r
+ }\r
+ else\r
+ {\r
+ client.Self.Stand();\r
+ }\r
+\r
+ if (SitStateChanged != null)\r
+ {\r
+ SitStateChanged(this, new SitEventArgs(this.sitting));\r
+ }\r
+\r
+ if (!this.sitting)\r
+ {\r
+ StopAllAnimations();\r
+ }\r
+ }\r
+\r
+ public void StopAllAnimations()\r
+ {\r
+ Dictionary<UUID, bool> stop = new Dictionary<UUID, bool>();\r
+\r
+ client.Self.SignaledAnimations.ForEach((UUID anim) =>\r
+ {\r
+ if (!KnownAnimations.ContainsKey(anim))\r
+ {\r
+ stop.Add(anim, false);\r
+ }\r
+ });\r
+\r
+ if (stop.Count > 0)\r
+ {\r
+ client.Self.Animate(stop, true);\r
+ }\r
+ }\r
+\r
+ public Vector3d GlobalPosition(Simulator sim, Vector3 pos)\r
+ {\r
+ uint globalX, globalY;\r
+ Utils.LongToUInts(sim.Handle, out globalX, out globalY);\r
+\r
+ return new Vector3d(\r
+ (double)globalX + (double)pos.X,\r
+ (double)globalY + (double)pos.Y,\r
+ (double)pos.Z);\r
+ }\r
+\r
+ public Vector3d GlobalPosition(Primitive prim)\r
+ {\r
+ return GlobalPosition(client.Network.CurrentSim, prim.Position);\r
+ }\r
+\r
+ private System.Timers.Timer beamTimer;\r
+ private List<Vector3d> beamTarget;\r
+ private Random beamRandom = new Random();\r
+ private UUID pointID;\r
+ private UUID sphereID;\r
+ private List<UUID> beamID;\r
+ private int numBeans;\r
+ private Color4[] beamColors = new Color4[3] { new Color4(0, 255, 0, 255), new Color4(255, 0, 0, 255), new Color4(0, 0, 255, 255) };\r
+ private Primitive targetPrim;\r
+\r
+ public void UnSetPointing()\r
+ {\r
+ beamTimer.Enabled = false;\r
+ if (pointID != UUID.Zero)\r
+ {\r
+ client.Self.PointAtEffect(client.Self.AgentID, UUID.Zero, Vector3d.Zero, PointAtType.None, pointID);\r
+ pointID = UUID.Zero;\r
+ }\r
+\r
+ if (beamID != null)\r
+ {\r
+ foreach (UUID id in beamID)\r
+ {\r
+ client.Self.BeamEffect(UUID.Zero, UUID.Zero, Vector3d.Zero, new Color4(255, 255, 255, 255), 0, id);\r
+ }\r
+ beamID = null;\r
+ }\r
+\r
+ if (sphereID != UUID.Zero)\r
+ {\r
+ client.Self.SphereEffect(Vector3d.Zero, Color4.White, 0, sphereID);\r
+ sphereID = UUID.Zero;\r
+ }\r
+\r
+ }\r
+\r
+ void beamTimer_Elapsed(object sender, EventArgs e)\r
+ {\r
+ if (beamID == null) return;\r
+\r
+ try\r
+ {\r
+ client.Self.SphereEffect(GlobalPosition(targetPrim), beamColors[beamRandom.Next(0, 3)], 0.85f, sphereID);\r
+ int i = 0;\r
+ for (i = 0; i < numBeans; i++)\r
+ {\r
+ UUID newBeam = UUID.Random();\r
+ Vector3d scatter;\r
+\r
+ if (i == 0)\r
+ {\r
+ scatter = GlobalPosition(targetPrim);\r
+ }\r
+ else\r
+ {\r
+ Vector3d direction = client.Self.GlobalPosition - GlobalPosition(targetPrim);\r
+ Vector3d cross = direction % new Vector3d(0, 0, 1);\r
+ cross.Normalize();\r
+ scatter = GlobalPosition(targetPrim) + cross * (i * 0.2d) * (i % 2 == 0 ? 1 : -1);\r
+ }\r
+ client.Self.BeamEffect(client.Self.AgentID, UUID.Zero, scatter, beamColors[beamRandom.Next(0, 3)], 1.0f, beamID[i]);\r
+ }\r
+\r
+ for (int j = 1; j < numBeans; j++)\r
+ {\r
+ UUID newBeam = UUID.Random();\r
+ Vector3d scatter;\r
+ Vector3d cross = new Vector3d(0, 0, 1);\r
+ cross.Normalize();\r
+ scatter = GlobalPosition(targetPrim) + cross * (j * 0.2d) * (j % 2 == 0 ? 1 : -1);\r
+\r
+ client.Self.BeamEffect(client.Self.AgentID, UUID.Zero, scatter, beamColors[beamRandom.Next(0, 3)], 1.0f, beamID[j + i - 1]);\r
+ }\r
+ }\r
+ catch (Exception) { };\r
+\r
+ }\r
+\r
+ public void SetPointing(Primitive prim, int numBeans)\r
+ {\r
+ UnSetPointing();\r
+ client.Self.Movement.TurnToward(prim.Position);\r
+ pointID = UUID.Random();\r
+ sphereID = UUID.Random();\r
+ beamID = new List<UUID>();\r
+ beamTarget = new List<Vector3d>();\r
+ targetPrim = prim;\r
+ this.numBeans = numBeans;\r
+\r
+ client.Self.PointAtEffect(client.Self.AgentID, prim.ID, Vector3d.Zero, PointAtType.Select, pointID);\r
+\r
+ for (int i = 0; i < numBeans; i++)\r
+ {\r
+ UUID newBeam = UUID.Random();\r
+ beamID.Add(newBeam);\r
+ beamTarget.Add(Vector3d.Zero);\r
+ }\r
+\r
+ for (int i = 1; i < numBeans; i++)\r
+ {\r
+ UUID newBeam = UUID.Random();\r
+ beamID.Add(newBeam);\r
+ beamTarget.Add(Vector3d.Zero);\r
+ }\r
+\r
+ beamTimer.Interval = 1000;\r
+ beamTimer.Enabled = true;\r
+ }\r
+\r
+ public UUID TypingAnimationID\r
+ {\r
+ get { return typingAnimationID; }\r
+ set { typingAnimationID = value; }\r
+ }\r
+\r
+ public UUID AwayAnimationID\r
+ {\r
+ get { return awayAnimationID; }\r
+ set { awayAnimationID = value; }\r
+ }\r
+\r
+ public UUID BusyAnimationID\r
+ {\r
+ get { return busyAnimationID; }\r
+ set { busyAnimationID = value; }\r
+ }\r
+\r
+ public bool IsTyping\r
+ {\r
+ get { return typing; }\r
+ }\r
+\r
+ public bool IsAway\r
+ {\r
+ get { return away; }\r
+ }\r
+\r
+ public bool IsBusy\r
+ {\r
+ get { return busy; }\r
+ }\r
+\r
+ public bool IsFlying\r
+ {\r
+ get { return flying; }\r
+ }\r
+\r
+ public bool IsSitting\r
+ {\r
+ get { return sitting; }\r
+ }\r
+\r
+ public bool IsPointing\r
+ {\r
+ get { return pointID != UUID.Zero; }\r
+ }\r
+\r
+ public bool IsFollowing\r
+ {\r
+ get { return following; }\r
+ }\r
+\r
+ public string FollowName\r
+ {\r
+ get { return followName; }\r
+ set { followName = value; }\r
+ }\r
+\r
+ public float FollowDistance\r
+ {\r
+ get { return followDistance; }\r
+ set { followDistance = value; }\r
+ }\r
+\r
+ public bool IsWalking\r
+ {\r
+ get { return walking; }\r
+ }\r
+ }\r
+\r
+ public class SitEventArgs : EventArgs\r
+ {\r
+ public bool Sitting;\r
+\r
+ public SitEventArgs(bool sitting)\r
+ {\r
+ this.Sitting = sitting;\r
+ }\r
+ }\r
+}\r
/// </summary>
private void InitializeComponent()
{
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSettings));
- this.tcGraphics = new System.Windows.Forms.TabControl();
- this.tbpGeneral = new System.Windows.Forms.TabPage();
- this.cbRadegastLogToFile = new System.Windows.Forms.CheckBox();
- this.Chat = new System.Windows.Forms.GroupBox();
- this.cbChatTimestamps = new System.Windows.Forms.CheckBox();
- this.cbIMTimeStamps = new System.Windows.Forms.CheckBox();
- this.cbFriendsHighlight = new System.Windows.Forms.CheckBox();
- this.cbMUEmotes = new System.Windows.Forms.CheckBox();
- this.cbNoTyping = new System.Windows.Forms.CheckBox();
- this.cbTaskBarHighLight = new System.Windows.Forms.CheckBox();
- this.cbFontSize = new System.Windows.Forms.ComboBox();
- this.label1 = new System.Windows.Forms.Label();
- this.txtReconnectTime = new System.Windows.Forms.TextBox();
- this.label2 = new System.Windows.Forms.Label();
- this.gbDisplayNames = new System.Windows.Forms.GroupBox();
- this.rbDNOnlyDN = new System.Windows.Forms.RadioButton();
- this.rbDNDandUsernme = new System.Windows.Forms.RadioButton();
- this.rbDNSmart = new System.Windows.Forms.RadioButton();
- this.rbDNOff = new System.Windows.Forms.RadioButton();
- this.cbRadegastClientTag = new System.Windows.Forms.CheckBox();
- this.cbSyntaxHighlight = new System.Windows.Forms.CheckBox();
- this.cbMinToTrey = new System.Windows.Forms.CheckBox();
- this.cbRLV = new System.Windows.Forms.CheckBox();
- this.cbHideLoginGraphics = new System.Windows.Forms.CheckBox();
- this.cbAutoReconnect = new System.Windows.Forms.CheckBox();
- this.cbFriendsNotifications = new System.Windows.Forms.CheckBox();
- this.cbTrasactChat = new System.Windows.Forms.CheckBox();
- this.cbTrasactDialog = new System.Windows.Forms.CheckBox();
- this.tbpAutoResponse = new System.Windows.Forms.TabPage();
- this.gnAutoInventory = new System.Windows.Forms.GroupBox();
- this.cbOnInvOffer = new System.Windows.Forms.ComboBox();
- this.txtAutoResponse = new System.Windows.Forms.TextBox();
- this.gbAutoResponse = new System.Windows.Forms.GroupBox();
- this.rbAutoAlways = new System.Windows.Forms.RadioButton();
- this.rbAutoNonFriend = new System.Windows.Forms.RadioButton();
- this.rbAutobusy = new System.Windows.Forms.RadioButton();
- this.tbpGraphics = new System.Windows.Forms.TabPage();
- this.cbDisableChatIMLog = new System.Windows.Forms.CheckBox();
- this.tcGraphics.SuspendLayout();
- this.tbpGeneral.SuspendLayout();
- this.Chat.SuspendLayout();
- this.gbDisplayNames.SuspendLayout();
- this.tbpAutoResponse.SuspendLayout();
- this.gnAutoInventory.SuspendLayout();
- this.gbAutoResponse.SuspendLayout();
- this.SuspendLayout();
- //
- // tcGraphics
- //
- this.tcGraphics.Controls.Add(this.tbpGeneral);
- this.tcGraphics.Controls.Add(this.tbpAutoResponse);
- this.tcGraphics.Controls.Add(this.tbpGraphics);
- this.tcGraphics.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tcGraphics.Location = new System.Drawing.Point(0, 0);
- this.tcGraphics.Multiline = true;
- this.tcGraphics.Name = "tcGraphics";
- this.tcGraphics.SelectedIndex = 0;
- this.tcGraphics.Size = new System.Drawing.Size(496, 324);
- this.tcGraphics.TabIndex = 0;
- //
- // tbpGeneral
- //
- this.tbpGeneral.Controls.Add(this.cbRadegastLogToFile);
- this.tbpGeneral.Controls.Add(this.Chat);
- this.tbpGeneral.Controls.Add(this.txtReconnectTime);
- this.tbpGeneral.Controls.Add(this.label2);
- this.tbpGeneral.Controls.Add(this.gbDisplayNames);
- this.tbpGeneral.Controls.Add(this.cbRadegastClientTag);
- this.tbpGeneral.Controls.Add(this.cbSyntaxHighlight);
- this.tbpGeneral.Controls.Add(this.cbMinToTrey);
- this.tbpGeneral.Controls.Add(this.cbRLV);
- this.tbpGeneral.Controls.Add(this.cbHideLoginGraphics);
- this.tbpGeneral.Controls.Add(this.cbAutoReconnect);
- this.tbpGeneral.Controls.Add(this.cbFriendsNotifications);
- this.tbpGeneral.Controls.Add(this.cbTrasactChat);
- this.tbpGeneral.Controls.Add(this.cbTrasactDialog);
- this.tbpGeneral.Location = new System.Drawing.Point(4, 22);
- this.tbpGeneral.Name = "tbpGeneral";
- this.tbpGeneral.Padding = new System.Windows.Forms.Padding(3);
- this.tbpGeneral.Size = new System.Drawing.Size(488, 298);
- this.tbpGeneral.TabIndex = 1;
- this.tbpGeneral.Text = "General";
- this.tbpGeneral.UseVisualStyleBackColor = true;
- //
- // cbRadegastLogToFile
- //
- this.cbRadegastLogToFile.AutoSize = true;
- this.cbRadegastLogToFile.Location = new System.Drawing.Point(275, 220);
- this.cbRadegastLogToFile.Name = "cbRadegastLogToFile";
- this.cbRadegastLogToFile.Size = new System.Drawing.Size(72, 17);
- this.cbRadegastLogToFile.TabIndex = 14;
- this.cbRadegastLogToFile.Text = "Log to file";
- this.cbRadegastLogToFile.UseVisualStyleBackColor = true;
- this.cbRadegastLogToFile.CheckedChanged += new System.EventHandler(this.cbRadegastLogToFile_CheckedChanged);
- //
- // Chat
- //
- this.Chat.Controls.Add(this.cbDisableChatIMLog);
- this.Chat.Controls.Add(this.cbChatTimestamps);
- this.Chat.Controls.Add(this.cbIMTimeStamps);
- this.Chat.Controls.Add(this.cbFriendsHighlight);
- this.Chat.Controls.Add(this.cbMUEmotes);
- this.Chat.Controls.Add(this.cbNoTyping);
- this.Chat.Controls.Add(this.cbTaskBarHighLight);
- this.Chat.Controls.Add(this.cbFontSize);
- this.Chat.Controls.Add(this.label1);
- this.Chat.Location = new System.Drawing.Point(8, 5);
- this.Chat.Name = "Chat";
- this.Chat.Size = new System.Drawing.Size(256, 181);
- this.Chat.TabIndex = 0;
- this.Chat.TabStop = false;
- this.Chat.Text = "Chat";
- //
- // cbChatTimestamps
- //
- this.cbChatTimestamps.AutoSize = true;
- this.cbChatTimestamps.Location = new System.Drawing.Point(8, 12);
- this.cbChatTimestamps.Name = "cbChatTimestamps";
- this.cbChatTimestamps.Size = new System.Drawing.Size(143, 17);
- this.cbChatTimestamps.TabIndex = 0;
- this.cbChatTimestamps.Text = "Show timestamps in chat";
- this.cbChatTimestamps.UseVisualStyleBackColor = true;
- //
- // cbIMTimeStamps
- //
- this.cbIMTimeStamps.AutoSize = true;
- this.cbIMTimeStamps.Location = new System.Drawing.Point(8, 35);
- this.cbIMTimeStamps.Name = "cbIMTimeStamps";
- this.cbIMTimeStamps.Size = new System.Drawing.Size(137, 17);
- this.cbIMTimeStamps.TabIndex = 1;
- this.cbIMTimeStamps.Text = "Show timestamps in IM";
- this.cbIMTimeStamps.UseVisualStyleBackColor = true;
- //
- // cbFriendsHighlight
- //
- this.cbFriendsHighlight.AutoSize = true;
- this.cbFriendsHighlight.Location = new System.Drawing.Point(8, 75);
- this.cbFriendsHighlight.Name = "cbFriendsHighlight";
- this.cbFriendsHighlight.Size = new System.Drawing.Size(248, 17);
- this.cbFriendsHighlight.TabIndex = 4;
- this.cbFriendsHighlight.Text = "Highlight chat tab on friends online notifications";
- this.cbFriendsHighlight.UseVisualStyleBackColor = true;
- this.cbFriendsHighlight.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);
- //
- // cbMUEmotes
- //
- this.cbMUEmotes.AutoSize = true;
- this.cbMUEmotes.Location = new System.Drawing.Point(8, 95);
- this.cbMUEmotes.Name = "cbMUEmotes";
- this.cbMUEmotes.Size = new System.Drawing.Size(108, 17);
- this.cbMUEmotes.TabIndex = 5;
- this.cbMUEmotes.Text = "MU* style emotes";
- this.cbMUEmotes.UseVisualStyleBackColor = true;
- this.cbMUEmotes.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);
- //
- // cbNoTyping
- //
- this.cbNoTyping.AutoSize = true;
- this.cbNoTyping.Location = new System.Drawing.Point(8, 115);
- this.cbNoTyping.Name = "cbNoTyping";
- this.cbNoTyping.Size = new System.Drawing.Size(150, 17);
- this.cbNoTyping.TabIndex = 6;
- this.cbNoTyping.Text = "Don\'t use typing animation";
- this.cbNoTyping.UseVisualStyleBackColor = true;
- this.cbNoTyping.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);
- //
- // cbTaskBarHighLight
- //
- this.cbTaskBarHighLight.AutoSize = true;
- this.cbTaskBarHighLight.Location = new System.Drawing.Point(8, 135);
- this.cbTaskBarHighLight.Name = "cbTaskBarHighLight";
- this.cbTaskBarHighLight.Size = new System.Drawing.Size(155, 17);
- this.cbTaskBarHighLight.TabIndex = 7;
- this.cbTaskBarHighLight.Text = "Highlight in taskbar on chat";
- this.cbTaskBarHighLight.UseVisualStyleBackColor = true;
- //
- // cbFontSize
- //
- this.cbFontSize.FormatString = "N2";
- this.cbFontSize.FormattingEnabled = true;
- this.cbFontSize.Items.AddRange(new object[] {
- "8.25",
- "9",
- "10",
- "12",
- "14",
- "16",
- "20"});
- this.cbFontSize.Location = new System.Drawing.Point(97, 51);
- this.cbFontSize.Name = "cbFontSize";
- this.cbFontSize.Size = new System.Drawing.Size(54, 21);
- this.cbFontSize.TabIndex = 3;
- this.cbFontSize.Text = "8.25";
- this.cbFontSize.SelectedIndexChanged += new System.EventHandler(this.cbFontSize_SelectedIndexChanged);
- this.cbFontSize.Leave += new System.EventHandler(this.cbFontSize_Leave);
- this.cbFontSize.KeyDown += new System.Windows.Forms.KeyEventHandler(this.cbFontSize_KeyDown);
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(24, 54);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(73, 13);
- this.label1.TabIndex = 2;
- this.label1.Text = "Chat text size:";
- //
- // txtReconnectTime
- //
- this.txtReconnectTime.Location = new System.Drawing.Point(420, 97);
- this.txtReconnectTime.Name = "txtReconnectTime";
- this.txtReconnectTime.Size = new System.Drawing.Size(53, 20);
- this.txtReconnectTime.TabIndex = 8;
- this.txtReconnectTime.Text = "120";
- this.txtReconnectTime.TextChanged += new System.EventHandler(this.txtReconnectTime_TextChanged);
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(291, 100);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(128, 13);
- this.label2.TabIndex = 7;
- this.label2.Text = "Auto reconnect time (sec)";
- //
- // gbDisplayNames
- //
- this.gbDisplayNames.Controls.Add(this.rbDNOnlyDN);
- this.gbDisplayNames.Controls.Add(this.rbDNDandUsernme);
- this.gbDisplayNames.Controls.Add(this.rbDNSmart);
- this.gbDisplayNames.Controls.Add(this.rbDNOff);
- this.gbDisplayNames.Location = new System.Drawing.Point(8, 192);
- this.gbDisplayNames.Name = "gbDisplayNames";
- this.gbDisplayNames.Size = new System.Drawing.Size(256, 100);
- this.gbDisplayNames.TabIndex = 1;
- this.gbDisplayNames.TabStop = false;
- this.gbDisplayNames.Text = "Display names";
- //
- // rbDNOnlyDN
- //
- this.rbDNOnlyDN.AutoSize = true;
- this.rbDNOnlyDN.Location = new System.Drawing.Point(6, 75);
- this.rbDNOnlyDN.Name = "rbDNOnlyDN";
- this.rbDNOnlyDN.Size = new System.Drawing.Size(110, 17);
- this.rbDNOnlyDN.TabIndex = 3;
- this.rbDNOnlyDN.TabStop = true;
- this.rbDNOnlyDN.Text = "Only display name";
- this.rbDNOnlyDN.UseVisualStyleBackColor = true;
- this.rbDNOnlyDN.CheckedChanged += new System.EventHandler(this.rbDNOnlyDN_CheckedChanged);
- //
- // rbDNDandUsernme
- //
- this.rbDNDandUsernme.AutoSize = true;
- this.rbDNDandUsernme.Location = new System.Drawing.Point(6, 55);
- this.rbDNDandUsernme.Name = "rbDNDandUsernme";
- this.rbDNDandUsernme.Size = new System.Drawing.Size(143, 17);
- this.rbDNDandUsernme.TabIndex = 2;
- this.rbDNDandUsernme.TabStop = true;
- this.rbDNDandUsernme.Text = "Display name (username)";
- this.rbDNDandUsernme.UseVisualStyleBackColor = true;
- this.rbDNDandUsernme.CheckedChanged += new System.EventHandler(this.rbDNDandUsernme_CheckedChanged);
- //
- // rbDNSmart
- //
- this.rbDNSmart.AutoSize = true;
- this.rbDNSmart.Location = new System.Drawing.Point(6, 35);
- this.rbDNSmart.Name = "rbDNSmart";
- this.rbDNSmart.Size = new System.Drawing.Size(52, 17);
- this.rbDNSmart.TabIndex = 1;
- this.rbDNSmart.TabStop = true;
- this.rbDNSmart.Text = "Smart";
- this.rbDNSmart.UseVisualStyleBackColor = true;
- this.rbDNSmart.CheckedChanged += new System.EventHandler(this.rbDNSmart_CheckedChanged);
- //
- // rbDNOff
- //
- this.rbDNOff.AutoSize = true;
- this.rbDNOff.Location = new System.Drawing.Point(6, 15);
- this.rbDNOff.Name = "rbDNOff";
- this.rbDNOff.Size = new System.Drawing.Size(39, 17);
- this.rbDNOff.TabIndex = 0;
- this.rbDNOff.TabStop = true;
- this.rbDNOff.Text = "Off";
- this.rbDNOff.UseVisualStyleBackColor = true;
- this.rbDNOff.CheckedChanged += new System.EventHandler(this.rbDNOff_CheckedChanged);
- //
- // cbRadegastClientTag
- //
- this.cbRadegastClientTag.AutoSize = true;
- this.cbRadegastClientTag.Location = new System.Drawing.Point(275, 200);
- this.cbRadegastClientTag.Name = "cbRadegastClientTag";
- this.cbRadegastClientTag.Size = new System.Drawing.Size(146, 17);
- this.cbRadegastClientTag.TabIndex = 13;
- this.cbRadegastClientTag.Text = "Send Radegast client tag";
- this.cbRadegastClientTag.UseVisualStyleBackColor = true;
- //
- // cbSyntaxHighlight
- //
- this.cbSyntaxHighlight.AutoSize = true;
- this.cbSyntaxHighlight.Location = new System.Drawing.Point(275, 60);
- this.cbSyntaxHighlight.Name = "cbSyntaxHighlight";
- this.cbSyntaxHighlight.Size = new System.Drawing.Size(134, 17);
- this.cbSyntaxHighlight.TabIndex = 5;
- this.cbSyntaxHighlight.Text = "LSL syntax highlighting";
- this.cbSyntaxHighlight.UseVisualStyleBackColor = true;
- //
- // cbMinToTrey
- //
- this.cbMinToTrey.AutoSize = true;
- this.cbMinToTrey.Location = new System.Drawing.Point(275, 40);
- this.cbMinToTrey.Name = "cbMinToTrey";
- this.cbMinToTrey.Size = new System.Drawing.Size(133, 17);
- this.cbMinToTrey.TabIndex = 4;
- this.cbMinToTrey.Text = "Minimize to system tray";
- this.cbMinToTrey.UseVisualStyleBackColor = true;
- this.cbMinToTrey.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);
- //
- // cbRLV
- //
- this.cbRLV.AutoSize = true;
- this.cbRLV.Location = new System.Drawing.Point(275, 180);
- this.cbRLV.Name = "cbRLV";
- this.cbRLV.Size = new System.Drawing.Size(85, 17);
- this.cbRLV.TabIndex = 12;
- this.cbRLV.Text = "RLV support";
- this.cbRLV.UseVisualStyleBackColor = true;
- this.cbRLV.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);
- //
- // cbHideLoginGraphics
- //
- this.cbHideLoginGraphics.AutoSize = true;
- this.cbHideLoginGraphics.Location = new System.Drawing.Point(275, 20);
- this.cbHideLoginGraphics.Name = "cbHideLoginGraphics";
- this.cbHideLoginGraphics.Size = new System.Drawing.Size(141, 17);
- this.cbHideLoginGraphics.TabIndex = 3;
- this.cbHideLoginGraphics.Text = "Hide login slpash screen";
- this.cbHideLoginGraphics.UseVisualStyleBackColor = true;
- this.cbHideLoginGraphics.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);
- //
- // cbAutoReconnect
- //
- this.cbAutoReconnect.AutoSize = true;
- this.cbAutoReconnect.Location = new System.Drawing.Point(275, 80);
- this.cbAutoReconnect.Name = "cbAutoReconnect";
- this.cbAutoReconnect.Size = new System.Drawing.Size(169, 17);
- this.cbAutoReconnect.TabIndex = 6;
- this.cbAutoReconnect.Text = "Auto reconnect on disconnect";
- this.cbAutoReconnect.UseVisualStyleBackColor = true;
- this.cbAutoReconnect.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);
- //
- // cbFriendsNotifications
- //
- this.cbFriendsNotifications.AutoSize = true;
- this.cbFriendsNotifications.Location = new System.Drawing.Point(275, 160);
- this.cbFriendsNotifications.Name = "cbFriendsNotifications";
- this.cbFriendsNotifications.Size = new System.Drawing.Size(184, 17);
- this.cbFriendsNotifications.TabIndex = 11;
- this.cbFriendsNotifications.Text = "Display friends online notifications";
- this.cbFriendsNotifications.UseVisualStyleBackColor = true;
- this.cbFriendsNotifications.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);
- //
- // cbTrasactChat
- //
- this.cbTrasactChat.AutoSize = true;
- this.cbTrasactChat.Location = new System.Drawing.Point(275, 140);
- this.cbTrasactChat.Name = "cbTrasactChat";
- this.cbTrasactChat.Size = new System.Drawing.Size(170, 17);
- this.cbTrasactChat.TabIndex = 10;
- this.cbTrasactChat.Text = "Display L$ transactions in chat";
- this.cbTrasactChat.UseVisualStyleBackColor = true;
- this.cbTrasactChat.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);
- //
- // cbTrasactDialog
- //
- this.cbTrasactDialog.AutoSize = true;
- this.cbTrasactDialog.Location = new System.Drawing.Point(275, 120);
- this.cbTrasactDialog.Name = "cbTrasactDialog";
- this.cbTrasactDialog.Size = new System.Drawing.Size(176, 17);
- this.cbTrasactDialog.TabIndex = 9;
- this.cbTrasactDialog.Text = "Display dialog on L$ transaction";
- this.cbTrasactDialog.UseVisualStyleBackColor = true;
- this.cbTrasactDialog.CheckedChanged += new System.EventHandler(this.cbTrasactDialog_CheckedChanged);
- //
- // tbpAutoResponse
- //
- this.tbpAutoResponse.Controls.Add(this.gnAutoInventory);
- this.tbpAutoResponse.Controls.Add(this.txtAutoResponse);
- this.tbpAutoResponse.Controls.Add(this.gbAutoResponse);
- this.tbpAutoResponse.Location = new System.Drawing.Point(4, 22);
- this.tbpAutoResponse.Name = "tbpAutoResponse";
- this.tbpAutoResponse.Padding = new System.Windows.Forms.Padding(3);
- this.tbpAutoResponse.Size = new System.Drawing.Size(488, 298);
- this.tbpAutoResponse.TabIndex = 2;
- this.tbpAutoResponse.Text = "Auto Response";
- this.tbpAutoResponse.UseVisualStyleBackColor = true;
- //
- // gnAutoInventory
- //
- this.gnAutoInventory.Controls.Add(this.cbOnInvOffer);
- this.gnAutoInventory.Location = new System.Drawing.Point(9, 156);
- this.gnAutoInventory.Name = "gnAutoInventory";
- this.gnAutoInventory.Size = new System.Drawing.Size(281, 54);
- this.gnAutoInventory.TabIndex = 2;
- this.gnAutoInventory.TabStop = false;
- this.gnAutoInventory.Text = "On inventory offers";
- //
- // cbOnInvOffer
- //
- this.cbOnInvOffer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.cbOnInvOffer.FormattingEnabled = true;
- this.cbOnInvOffer.Items.AddRange(new object[] {
- "Ask",
- "Auto Accept",
- "Auto Discard"});
- this.cbOnInvOffer.Location = new System.Drawing.Point(6, 19);
- this.cbOnInvOffer.Name = "cbOnInvOffer";
- this.cbOnInvOffer.Size = new System.Drawing.Size(121, 21);
- this.cbOnInvOffer.TabIndex = 0;
- //
- // txtAutoResponse
- //
- this.txtAutoResponse.AccessibleName = "Auto response text";
- this.txtAutoResponse.Location = new System.Drawing.Point(8, 63);
- this.txtAutoResponse.Multiline = true;
- this.txtAutoResponse.Name = "txtAutoResponse";
- this.txtAutoResponse.Size = new System.Drawing.Size(282, 87);
- this.txtAutoResponse.TabIndex = 1;
- //
- // gbAutoResponse
- //
- this.gbAutoResponse.Controls.Add(this.rbAutoAlways);
- this.gbAutoResponse.Controls.Add(this.rbAutoNonFriend);
- this.gbAutoResponse.Controls.Add(this.rbAutobusy);
- this.gbAutoResponse.Location = new System.Drawing.Point(3, 6);
- this.gbAutoResponse.Name = "gbAutoResponse";
- this.gbAutoResponse.Size = new System.Drawing.Size(287, 51);
- this.gbAutoResponse.TabIndex = 0;
- this.gbAutoResponse.TabStop = false;
- this.gbAutoResponse.Text = "Send auto response when:";
- //
- // rbAutoAlways
- //
- this.rbAutoAlways.AutoSize = true;
- this.rbAutoAlways.Location = new System.Drawing.Point(216, 19);
- this.rbAutoAlways.Name = "rbAutoAlways";
- this.rbAutoAlways.Size = new System.Drawing.Size(58, 17);
- this.rbAutoAlways.TabIndex = 2;
- this.rbAutoAlways.Text = "Always";
- this.rbAutoAlways.UseVisualStyleBackColor = true;
- this.rbAutoAlways.CheckedChanged += new System.EventHandler(this.rbAutoAlways_CheckedChanged);
- //
- // rbAutoNonFriend
- //
- this.rbAutoNonFriend.AutoSize = true;
- this.rbAutoNonFriend.Location = new System.Drawing.Point(100, 19);
- this.rbAutoNonFriend.Name = "rbAutoNonFriend";
- this.rbAutoNonFriend.Size = new System.Drawing.Size(110, 17);
- this.rbAutoNonFriend.TabIndex = 1;
- this.rbAutoNonFriend.Text = "IM from non-friend";
- this.rbAutoNonFriend.UseVisualStyleBackColor = true;
- this.rbAutoNonFriend.CheckedChanged += new System.EventHandler(this.rbAutoNonFriend_CheckedChanged);
- //
- // rbAutobusy
- //
- this.rbAutobusy.AutoSize = true;
- this.rbAutobusy.Checked = true;
- this.rbAutobusy.Location = new System.Drawing.Point(6, 19);
- this.rbAutobusy.Name = "rbAutobusy";
- this.rbAutobusy.Size = new System.Drawing.Size(88, 17);
- this.rbAutobusy.TabIndex = 0;
- this.rbAutobusy.TabStop = true;
- this.rbAutobusy.Text = "In busy mode";
- this.rbAutobusy.UseVisualStyleBackColor = true;
- this.rbAutobusy.CheckedChanged += new System.EventHandler(this.rbAutobusy_CheckedChanged);
- //
- // tbpGraphics
- //
- this.tbpGraphics.Location = new System.Drawing.Point(4, 22);
- this.tbpGraphics.Name = "tbpGraphics";
- this.tbpGraphics.Padding = new System.Windows.Forms.Padding(3);
- this.tbpGraphics.Size = new System.Drawing.Size(488, 298);
- this.tbpGraphics.TabIndex = 3;
- this.tbpGraphics.Text = "Graphics Settings";
- this.tbpGraphics.UseVisualStyleBackColor = true;
- //
- // cbDisableChatIMLog
- //
- this.cbDisableChatIMLog.AutoSize = true;
- this.cbDisableChatIMLog.Location = new System.Drawing.Point(8, 155);
- this.cbDisableChatIMLog.Name = "cbDisableChatIMLog";
- this.cbDisableChatIMLog.Size = new System.Drawing.Size(138, 17);
- this.cbDisableChatIMLog.TabIndex = 8;
- this.cbDisableChatIMLog.Text = "Disable chat and IM log";
- this.cbDisableChatIMLog.UseVisualStyleBackColor = true;
- //
- // frmSettings
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(496, 324);
- this.Controls.Add(this.tcGraphics);
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.Name = "frmSettings";
- this.Text = "Settings - Radegast";
- this.tcGraphics.ResumeLayout(false);
- this.tbpGeneral.ResumeLayout(false);
- this.tbpGeneral.PerformLayout();
- this.Chat.ResumeLayout(false);
- this.Chat.PerformLayout();
- this.gbDisplayNames.ResumeLayout(false);
- this.gbDisplayNames.PerformLayout();
- this.tbpAutoResponse.ResumeLayout(false);
- this.tbpAutoResponse.PerformLayout();
- this.gnAutoInventory.ResumeLayout(false);
- this.gbAutoResponse.ResumeLayout(false);
- this.gbAutoResponse.PerformLayout();
- this.ResumeLayout(false);
-
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSettings));\r
+ this.tcGraphics = new System.Windows.Forms.TabControl();\r
+ this.tbpGeneral = new System.Windows.Forms.TabPage();\r
+ this.cbRadegastLogToFile = new System.Windows.Forms.CheckBox();\r
+ this.Chat = new System.Windows.Forms.GroupBox();\r
+ this.cbDisableChatIMLog = new System.Windows.Forms.CheckBox();\r
+ this.cbChatTimestamps = new System.Windows.Forms.CheckBox();\r
+ this.cbIMTimeStamps = new System.Windows.Forms.CheckBox();\r
+ this.cbFriendsHighlight = new System.Windows.Forms.CheckBox();\r
+ this.cbMUEmotes = new System.Windows.Forms.CheckBox();\r
+ this.cbNoTyping = new System.Windows.Forms.CheckBox();\r
+ this.cbTaskBarHighLight = new System.Windows.Forms.CheckBox();\r
+ this.cbFontSize = new System.Windows.Forms.ComboBox();\r
+ this.label1 = new System.Windows.Forms.Label();\r
+ this.txtReconnectTime = new System.Windows.Forms.TextBox();\r
+ this.label2 = new System.Windows.Forms.Label();\r
+ this.gbDisplayNames = new System.Windows.Forms.GroupBox();\r
+ this.rbDNOnlyDN = new System.Windows.Forms.RadioButton();\r
+ this.rbDNDandUsernme = new System.Windows.Forms.RadioButton();\r
+ this.rbDNSmart = new System.Windows.Forms.RadioButton();\r
+ this.rbDNOff = new System.Windows.Forms.RadioButton();\r
+ this.cbRadegastClientTag = new System.Windows.Forms.CheckBox();\r
+ this.cbSyntaxHighlight = new System.Windows.Forms.CheckBox();\r
+ this.cbMinToTrey = new System.Windows.Forms.CheckBox();\r
+ this.cbRLV = new System.Windows.Forms.CheckBox();\r
+ this.cbHideLoginGraphics = new System.Windows.Forms.CheckBox();\r
+ this.cbAutoReconnect = new System.Windows.Forms.CheckBox();\r
+ this.cbFriendsNotifications = new System.Windows.Forms.CheckBox();\r
+ this.cbTrasactChat = new System.Windows.Forms.CheckBox();\r
+ this.cbTrasactDialog = new System.Windows.Forms.CheckBox();\r
+ this.tbpAutoResponse = new System.Windows.Forms.TabPage();\r
+ this.gnAutoInventory = new System.Windows.Forms.GroupBox();\r
+ this.cbOnInvOffer = new System.Windows.Forms.ComboBox();\r
+ this.txtAutoResponse = new System.Windows.Forms.TextBox();\r
+ this.gbAutoResponse = new System.Windows.Forms.GroupBox();\r
+ this.rbAutoAlways = new System.Windows.Forms.RadioButton();\r
+ this.rbAutoNonFriend = new System.Windows.Forms.RadioButton();\r
+ this.rbAutobusy = new System.Windows.Forms.RadioButton();\r
+ this.tbpGraphics = new System.Windows.Forms.TabPage();\r
+ this.cbDisableLookAt = new System.Windows.Forms.CheckBox();\r
+ this.tcGraphics.SuspendLayout();\r
+ this.tbpGeneral.SuspendLayout();\r
+ this.Chat.SuspendLayout();\r
+ this.gbDisplayNames.SuspendLayout();\r
+ this.tbpAutoResponse.SuspendLayout();\r
+ this.gnAutoInventory.SuspendLayout();\r
+ this.gbAutoResponse.SuspendLayout();\r
+ this.SuspendLayout();\r
+ // \r
+ // tcGraphics\r
+ // \r
+ this.tcGraphics.Controls.Add(this.tbpGeneral);\r
+ this.tcGraphics.Controls.Add(this.tbpAutoResponse);\r
+ this.tcGraphics.Controls.Add(this.tbpGraphics);\r
+ this.tcGraphics.Dock = System.Windows.Forms.DockStyle.Fill;\r
+ this.tcGraphics.Location = new System.Drawing.Point(0, 0);\r
+ this.tcGraphics.Multiline = true;\r
+ this.tcGraphics.Name = "tcGraphics";\r
+ this.tcGraphics.SelectedIndex = 0;\r
+ this.tcGraphics.Size = new System.Drawing.Size(496, 324);\r
+ this.tcGraphics.TabIndex = 0;\r
+ // \r
+ // tbpGeneral\r
+ // \r
+ this.tbpGeneral.Controls.Add(this.cbDisableLookAt);\r
+ this.tbpGeneral.Controls.Add(this.cbRadegastLogToFile);\r
+ this.tbpGeneral.Controls.Add(this.Chat);\r
+ this.tbpGeneral.Controls.Add(this.txtReconnectTime);\r
+ this.tbpGeneral.Controls.Add(this.label2);\r
+ this.tbpGeneral.Controls.Add(this.gbDisplayNames);\r
+ this.tbpGeneral.Controls.Add(this.cbRadegastClientTag);\r
+ this.tbpGeneral.Controls.Add(this.cbSyntaxHighlight);\r
+ this.tbpGeneral.Controls.Add(this.cbMinToTrey);\r
+ this.tbpGeneral.Controls.Add(this.cbRLV);\r
+ this.tbpGeneral.Controls.Add(this.cbHideLoginGraphics);\r
+ this.tbpGeneral.Controls.Add(this.cbAutoReconnect);\r
+ this.tbpGeneral.Controls.Add(this.cbFriendsNotifications);\r
+ this.tbpGeneral.Controls.Add(this.cbTrasactChat);\r
+ this.tbpGeneral.Controls.Add(this.cbTrasactDialog);\r
+ this.tbpGeneral.Location = new System.Drawing.Point(4, 22);\r
+ this.tbpGeneral.Name = "tbpGeneral";\r
+ this.tbpGeneral.Padding = new System.Windows.Forms.Padding(3);\r
+ this.tbpGeneral.Size = new System.Drawing.Size(488, 298);\r
+ this.tbpGeneral.TabIndex = 1;\r
+ this.tbpGeneral.Text = "General";\r
+ this.tbpGeneral.UseVisualStyleBackColor = true;\r
+ // \r
+ // cbRadegastLogToFile\r
+ // \r
+ this.cbRadegastLogToFile.AutoSize = true;\r
+ this.cbRadegastLogToFile.Location = new System.Drawing.Point(275, 220);\r
+ this.cbRadegastLogToFile.Name = "cbRadegastLogToFile";\r
+ this.cbRadegastLogToFile.Size = new System.Drawing.Size(72, 17);\r
+ this.cbRadegastLogToFile.TabIndex = 14;\r
+ this.cbRadegastLogToFile.Text = "Log to file";\r
+ this.cbRadegastLogToFile.UseVisualStyleBackColor = true;\r
+ this.cbRadegastLogToFile.CheckedChanged += new System.EventHandler(this.cbRadegastLogToFile_CheckedChanged);\r
+ // \r
+ // Chat\r
+ // \r
+ this.Chat.Controls.Add(this.cbDisableChatIMLog);\r
+ this.Chat.Controls.Add(this.cbChatTimestamps);\r
+ this.Chat.Controls.Add(this.cbIMTimeStamps);\r
+ this.Chat.Controls.Add(this.cbFriendsHighlight);\r
+ this.Chat.Controls.Add(this.cbMUEmotes);\r
+ this.Chat.Controls.Add(this.cbNoTyping);\r
+ this.Chat.Controls.Add(this.cbTaskBarHighLight);\r
+ this.Chat.Controls.Add(this.cbFontSize);\r
+ this.Chat.Controls.Add(this.label1);\r
+ this.Chat.Location = new System.Drawing.Point(8, 5);\r
+ this.Chat.Name = "Chat";\r
+ this.Chat.Size = new System.Drawing.Size(256, 181);\r
+ this.Chat.TabIndex = 0;\r
+ this.Chat.TabStop = false;\r
+ this.Chat.Text = "Chat";\r
+ // \r
+ // cbDisableChatIMLog\r
+ // \r
+ this.cbDisableChatIMLog.AutoSize = true;\r
+ this.cbDisableChatIMLog.Location = new System.Drawing.Point(8, 155);\r
+ this.cbDisableChatIMLog.Name = "cbDisableChatIMLog";\r
+ this.cbDisableChatIMLog.Size = new System.Drawing.Size(138, 17);\r
+ this.cbDisableChatIMLog.TabIndex = 8;\r
+ this.cbDisableChatIMLog.Text = "Disable chat and IM log";\r
+ this.cbDisableChatIMLog.UseVisualStyleBackColor = true;\r
+ // \r
+ // cbChatTimestamps\r
+ // \r
+ this.cbChatTimestamps.AutoSize = true;\r
+ this.cbChatTimestamps.Location = new System.Drawing.Point(8, 12);\r
+ this.cbChatTimestamps.Name = "cbChatTimestamps";\r
+ this.cbChatTimestamps.Size = new System.Drawing.Size(143, 17);\r
+ this.cbChatTimestamps.TabIndex = 0;\r
+ this.cbChatTimestamps.Text = "Show timestamps in chat";\r
+ this.cbChatTimestamps.UseVisualStyleBackColor = true;\r
+ // \r
+ // cbIMTimeStamps\r
+ // \r
+ this.cbIMTimeStamps.AutoSize = true;\r
+ this.cbIMTimeStamps.Location = new System.Drawing.Point(8, 35);\r
+ this.cbIMTimeStamps.Name = "cbIMTimeStamps";\r
+ this.cbIMTimeStamps.Size = new System.Drawing.Size(137, 17);\r
+ this.cbIMTimeStamps.TabIndex = 1;\r
+ this.cbIMTimeStamps.Text = "Show timestamps in IM";\r
+ this.cbIMTimeStamps.UseVisualStyleBackColor = true;\r
+ // \r
+ // cbFriendsHighlight\r
+ // \r
+ this.cbFriendsHighlight.AutoSize = true;\r
+ this.cbFriendsHighlight.Location = new System.Drawing.Point(8, 75);\r
+ this.cbFriendsHighlight.Name = "cbFriendsHighlight";\r
+ this.cbFriendsHighlight.Size = new System.Drawing.Size(248, 17);\r
+ this.cbFriendsHighlight.TabIndex = 4;\r
+ this.cbFriendsHighlight.Text = "Highlight chat tab on friends online notifications";\r
+ this.cbFriendsHighlight.UseVisualStyleBackColor = true;\r
+ this.cbFriendsHighlight.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);\r
+ // \r
+ // cbMUEmotes\r
+ // \r
+ this.cbMUEmotes.AutoSize = true;\r
+ this.cbMUEmotes.Location = new System.Drawing.Point(8, 95);\r
+ this.cbMUEmotes.Name = "cbMUEmotes";\r
+ this.cbMUEmotes.Size = new System.Drawing.Size(108, 17);\r
+ this.cbMUEmotes.TabIndex = 5;\r
+ this.cbMUEmotes.Text = "MU* style emotes";\r
+ this.cbMUEmotes.UseVisualStyleBackColor = true;\r
+ this.cbMUEmotes.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);\r
+ // \r
+ // cbNoTyping\r
+ // \r
+ this.cbNoTyping.AutoSize = true;\r
+ this.cbNoTyping.Location = new System.Drawing.Point(8, 115);\r
+ this.cbNoTyping.Name = "cbNoTyping";\r
+ this.cbNoTyping.Size = new System.Drawing.Size(150, 17);\r
+ this.cbNoTyping.TabIndex = 6;\r
+ this.cbNoTyping.Text = "Don\'t use typing animation";\r
+ this.cbNoTyping.UseVisualStyleBackColor = true;\r
+ this.cbNoTyping.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);\r
+ // \r
+ // cbTaskBarHighLight\r
+ // \r
+ this.cbTaskBarHighLight.AutoSize = true;\r
+ this.cbTaskBarHighLight.Location = new System.Drawing.Point(8, 135);\r
+ this.cbTaskBarHighLight.Name = "cbTaskBarHighLight";\r
+ this.cbTaskBarHighLight.Size = new System.Drawing.Size(155, 17);\r
+ this.cbTaskBarHighLight.TabIndex = 7;\r
+ this.cbTaskBarHighLight.Text = "Highlight in taskbar on chat";\r
+ this.cbTaskBarHighLight.UseVisualStyleBackColor = true;\r
+ // \r
+ // cbFontSize\r
+ // \r
+ this.cbFontSize.FormatString = "N2";\r
+ this.cbFontSize.FormattingEnabled = true;\r
+ this.cbFontSize.Items.AddRange(new object[] {\r
+ "8.25",\r
+ "9",\r
+ "10",\r
+ "12",\r
+ "14",\r
+ "16",\r
+ "20"});\r
+ this.cbFontSize.Location = new System.Drawing.Point(97, 51);\r
+ this.cbFontSize.Name = "cbFontSize";\r
+ this.cbFontSize.Size = new System.Drawing.Size(54, 21);\r
+ this.cbFontSize.TabIndex = 3;\r
+ this.cbFontSize.Text = "8.25";\r
+ this.cbFontSize.SelectedIndexChanged += new System.EventHandler(this.cbFontSize_SelectedIndexChanged);\r
+ this.cbFontSize.KeyDown += new System.Windows.Forms.KeyEventHandler(this.cbFontSize_KeyDown);\r
+ this.cbFontSize.Leave += new System.EventHandler(this.cbFontSize_Leave);\r
+ // \r
+ // label1\r
+ // \r
+ this.label1.AutoSize = true;\r
+ this.label1.Location = new System.Drawing.Point(24, 54);\r
+ this.label1.Name = "label1";\r
+ this.label1.Size = new System.Drawing.Size(73, 13);\r
+ this.label1.TabIndex = 2;\r
+ this.label1.Text = "Chat text size:";\r
+ // \r
+ // txtReconnectTime\r
+ // \r
+ this.txtReconnectTime.Location = new System.Drawing.Point(420, 97);\r
+ this.txtReconnectTime.Name = "txtReconnectTime";\r
+ this.txtReconnectTime.Size = new System.Drawing.Size(53, 20);\r
+ this.txtReconnectTime.TabIndex = 8;\r
+ this.txtReconnectTime.Text = "120";\r
+ this.txtReconnectTime.TextChanged += new System.EventHandler(this.txtReconnectTime_TextChanged);\r
+ // \r
+ // label2\r
+ // \r
+ this.label2.AutoSize = true;\r
+ this.label2.Location = new System.Drawing.Point(291, 100);\r
+ this.label2.Name = "label2";\r
+ this.label2.Size = new System.Drawing.Size(128, 13);\r
+ this.label2.TabIndex = 7;\r
+ this.label2.Text = "Auto reconnect time (sec)";\r
+ // \r
+ // gbDisplayNames\r
+ // \r
+ this.gbDisplayNames.Controls.Add(this.rbDNOnlyDN);\r
+ this.gbDisplayNames.Controls.Add(this.rbDNDandUsernme);\r
+ this.gbDisplayNames.Controls.Add(this.rbDNSmart);\r
+ this.gbDisplayNames.Controls.Add(this.rbDNOff);\r
+ this.gbDisplayNames.Location = new System.Drawing.Point(8, 192);\r
+ this.gbDisplayNames.Name = "gbDisplayNames";\r
+ this.gbDisplayNames.Size = new System.Drawing.Size(256, 100);\r
+ this.gbDisplayNames.TabIndex = 1;\r
+ this.gbDisplayNames.TabStop = false;\r
+ this.gbDisplayNames.Text = "Display names";\r
+ // \r
+ // rbDNOnlyDN\r
+ // \r
+ this.rbDNOnlyDN.AutoSize = true;\r
+ this.rbDNOnlyDN.Location = new System.Drawing.Point(6, 75);\r
+ this.rbDNOnlyDN.Name = "rbDNOnlyDN";\r
+ this.rbDNOnlyDN.Size = new System.Drawing.Size(110, 17);\r
+ this.rbDNOnlyDN.TabIndex = 3;\r
+ this.rbDNOnlyDN.TabStop = true;\r
+ this.rbDNOnlyDN.Text = "Only display name";\r
+ this.rbDNOnlyDN.UseVisualStyleBackColor = true;\r
+ this.rbDNOnlyDN.CheckedChanged += new System.EventHandler(this.rbDNOnlyDN_CheckedChanged);\r
+ // \r
+ // rbDNDandUsernme\r
+ // \r
+ this.rbDNDandUsernme.AutoSize = true;\r
+ this.rbDNDandUsernme.Location = new System.Drawing.Point(6, 55);\r
+ this.rbDNDandUsernme.Name = "rbDNDandUsernme";\r
+ this.rbDNDandUsernme.Size = new System.Drawing.Size(143, 17);\r
+ this.rbDNDandUsernme.TabIndex = 2;\r
+ this.rbDNDandUsernme.TabStop = true;\r
+ this.rbDNDandUsernme.Text = "Display name (username)";\r
+ this.rbDNDandUsernme.UseVisualStyleBackColor = true;\r
+ this.rbDNDandUsernme.CheckedChanged += new System.EventHandler(this.rbDNDandUsernme_CheckedChanged);\r
+ // \r
+ // rbDNSmart\r
+ // \r
+ this.rbDNSmart.AutoSize = true;\r
+ this.rbDNSmart.Location = new System.Drawing.Point(6, 35);\r
+ this.rbDNSmart.Name = "rbDNSmart";\r
+ this.rbDNSmart.Size = new System.Drawing.Size(52, 17);\r
+ this.rbDNSmart.TabIndex = 1;\r
+ this.rbDNSmart.TabStop = true;\r
+ this.rbDNSmart.Text = "Smart";\r
+ this.rbDNSmart.UseVisualStyleBackColor = true;\r
+ this.rbDNSmart.CheckedChanged += new System.EventHandler(this.rbDNSmart_CheckedChanged);\r
+ // \r
+ // rbDNOff\r
+ // \r
+ this.rbDNOff.AutoSize = true;\r
+ this.rbDNOff.Location = new System.Drawing.Point(6, 15);\r
+ this.rbDNOff.Name = "rbDNOff";\r
+ this.rbDNOff.Size = new System.Drawing.Size(39, 17);\r
+ this.rbDNOff.TabIndex = 0;\r
+ this.rbDNOff.TabStop = true;\r
+ this.rbDNOff.Text = "Off";\r
+ this.rbDNOff.UseVisualStyleBackColor = true;\r
+ this.rbDNOff.CheckedChanged += new System.EventHandler(this.rbDNOff_CheckedChanged);\r
+ // \r
+ // cbRadegastClientTag\r
+ // \r
+ this.cbRadegastClientTag.AutoSize = true;\r
+ this.cbRadegastClientTag.Location = new System.Drawing.Point(275, 200);\r
+ this.cbRadegastClientTag.Name = "cbRadegastClientTag";\r
+ this.cbRadegastClientTag.Size = new System.Drawing.Size(146, 17);\r
+ this.cbRadegastClientTag.TabIndex = 13;\r
+ this.cbRadegastClientTag.Text = "Send Radegast client tag";\r
+ this.cbRadegastClientTag.UseVisualStyleBackColor = true;\r
+ // \r
+ // cbSyntaxHighlight\r
+ // \r
+ this.cbSyntaxHighlight.AutoSize = true;\r
+ this.cbSyntaxHighlight.Location = new System.Drawing.Point(275, 60);\r
+ this.cbSyntaxHighlight.Name = "cbSyntaxHighlight";\r
+ this.cbSyntaxHighlight.Size = new System.Drawing.Size(134, 17);\r
+ this.cbSyntaxHighlight.TabIndex = 5;\r
+ this.cbSyntaxHighlight.Text = "LSL syntax highlighting";\r
+ this.cbSyntaxHighlight.UseVisualStyleBackColor = true;\r
+ // \r
+ // cbMinToTrey\r
+ // \r
+ this.cbMinToTrey.AutoSize = true;\r
+ this.cbMinToTrey.Location = new System.Drawing.Point(275, 40);\r
+ this.cbMinToTrey.Name = "cbMinToTrey";\r
+ this.cbMinToTrey.Size = new System.Drawing.Size(133, 17);\r
+ this.cbMinToTrey.TabIndex = 4;\r
+ this.cbMinToTrey.Text = "Minimize to system tray";\r
+ this.cbMinToTrey.UseVisualStyleBackColor = true;\r
+ this.cbMinToTrey.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);\r
+ // \r
+ // cbRLV\r
+ // \r
+ this.cbRLV.AutoSize = true;\r
+ this.cbRLV.Location = new System.Drawing.Point(275, 180);\r
+ this.cbRLV.Name = "cbRLV";\r
+ this.cbRLV.Size = new System.Drawing.Size(85, 17);\r
+ this.cbRLV.TabIndex = 12;\r
+ this.cbRLV.Text = "RLV support";\r
+ this.cbRLV.UseVisualStyleBackColor = true;\r
+ this.cbRLV.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);\r
+ // \r
+ // cbHideLoginGraphics\r
+ // \r
+ this.cbHideLoginGraphics.AutoSize = true;\r
+ this.cbHideLoginGraphics.Location = new System.Drawing.Point(275, 20);\r
+ this.cbHideLoginGraphics.Name = "cbHideLoginGraphics";\r
+ this.cbHideLoginGraphics.Size = new System.Drawing.Size(141, 17);\r
+ this.cbHideLoginGraphics.TabIndex = 3;\r
+ this.cbHideLoginGraphics.Text = "Hide login slpash screen";\r
+ this.cbHideLoginGraphics.UseVisualStyleBackColor = true;\r
+ this.cbHideLoginGraphics.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);\r
+ // \r
+ // cbAutoReconnect\r
+ // \r
+ this.cbAutoReconnect.AutoSize = true;\r
+ this.cbAutoReconnect.Location = new System.Drawing.Point(275, 80);\r
+ this.cbAutoReconnect.Name = "cbAutoReconnect";\r
+ this.cbAutoReconnect.Size = new System.Drawing.Size(169, 17);\r
+ this.cbAutoReconnect.TabIndex = 6;\r
+ this.cbAutoReconnect.Text = "Auto reconnect on disconnect";\r
+ this.cbAutoReconnect.UseVisualStyleBackColor = true;\r
+ this.cbAutoReconnect.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);\r
+ // \r
+ // cbFriendsNotifications\r
+ // \r
+ this.cbFriendsNotifications.AutoSize = true;\r
+ this.cbFriendsNotifications.Location = new System.Drawing.Point(275, 160);\r
+ this.cbFriendsNotifications.Name = "cbFriendsNotifications";\r
+ this.cbFriendsNotifications.Size = new System.Drawing.Size(184, 17);\r
+ this.cbFriendsNotifications.TabIndex = 11;\r
+ this.cbFriendsNotifications.Text = "Display friends online notifications";\r
+ this.cbFriendsNotifications.UseVisualStyleBackColor = true;\r
+ this.cbFriendsNotifications.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);\r
+ // \r
+ // cbTrasactChat\r
+ // \r
+ this.cbTrasactChat.AutoSize = true;\r
+ this.cbTrasactChat.Location = new System.Drawing.Point(275, 140);\r
+ this.cbTrasactChat.Name = "cbTrasactChat";\r
+ this.cbTrasactChat.Size = new System.Drawing.Size(170, 17);\r
+ this.cbTrasactChat.TabIndex = 10;\r
+ this.cbTrasactChat.Text = "Display L$ transactions in chat";\r
+ this.cbTrasactChat.UseVisualStyleBackColor = true;\r
+ this.cbTrasactChat.CheckedChanged += new System.EventHandler(this.cbTrasactChat_CheckedChanged);\r
+ // \r
+ // cbTrasactDialog\r
+ // \r
+ this.cbTrasactDialog.AutoSize = true;\r
+ this.cbTrasactDialog.Location = new System.Drawing.Point(275, 120);\r
+ this.cbTrasactDialog.Name = "cbTrasactDialog";\r
+ this.cbTrasactDialog.Size = new System.Drawing.Size(176, 17);\r
+ this.cbTrasactDialog.TabIndex = 9;\r
+ this.cbTrasactDialog.Text = "Display dialog on L$ transaction";\r
+ this.cbTrasactDialog.UseVisualStyleBackColor = true;\r
+ this.cbTrasactDialog.CheckedChanged += new System.EventHandler(this.cbTrasactDialog_CheckedChanged);\r
+ // \r
+ // tbpAutoResponse\r
+ // \r
+ this.tbpAutoResponse.Controls.Add(this.gnAutoInventory);\r
+ this.tbpAutoResponse.Controls.Add(this.txtAutoResponse);\r
+ this.tbpAutoResponse.Controls.Add(this.gbAutoResponse);\r
+ this.tbpAutoResponse.Location = new System.Drawing.Point(4, 22);\r
+ this.tbpAutoResponse.Name = "tbpAutoResponse";\r
+ this.tbpAutoResponse.Padding = new System.Windows.Forms.Padding(3);\r
+ this.tbpAutoResponse.Size = new System.Drawing.Size(488, 298);\r
+ this.tbpAutoResponse.TabIndex = 2;\r
+ this.tbpAutoResponse.Text = "Auto Response";\r
+ this.tbpAutoResponse.UseVisualStyleBackColor = true;\r
+ // \r
+ // gnAutoInventory\r
+ // \r
+ this.gnAutoInventory.Controls.Add(this.cbOnInvOffer);\r
+ this.gnAutoInventory.Location = new System.Drawing.Point(9, 156);\r
+ this.gnAutoInventory.Name = "gnAutoInventory";\r
+ this.gnAutoInventory.Size = new System.Drawing.Size(281, 54);\r
+ this.gnAutoInventory.TabIndex = 2;\r
+ this.gnAutoInventory.TabStop = false;\r
+ this.gnAutoInventory.Text = "On inventory offers";\r
+ // \r
+ // cbOnInvOffer\r
+ // \r
+ this.cbOnInvOffer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;\r
+ this.cbOnInvOffer.FormattingEnabled = true;\r
+ this.cbOnInvOffer.Items.AddRange(new object[] {\r
+ "Ask",\r
+ "Auto Accept",\r
+ "Auto Discard"});\r
+ this.cbOnInvOffer.Location = new System.Drawing.Point(6, 19);\r
+ this.cbOnInvOffer.Name = "cbOnInvOffer";\r
+ this.cbOnInvOffer.Size = new System.Drawing.Size(121, 21);\r
+ this.cbOnInvOffer.TabIndex = 0;\r
+ // \r
+ // txtAutoResponse\r
+ // \r
+ this.txtAutoResponse.AccessibleName = "Auto response text";\r
+ this.txtAutoResponse.Location = new System.Drawing.Point(8, 63);\r
+ this.txtAutoResponse.Multiline = true;\r
+ this.txtAutoResponse.Name = "txtAutoResponse";\r
+ this.txtAutoResponse.Size = new System.Drawing.Size(282, 87);\r
+ this.txtAutoResponse.TabIndex = 1;\r
+ // \r
+ // gbAutoResponse\r
+ // \r
+ this.gbAutoResponse.Controls.Add(this.rbAutoAlways);\r
+ this.gbAutoResponse.Controls.Add(this.rbAutoNonFriend);\r
+ this.gbAutoResponse.Controls.Add(this.rbAutobusy);\r
+ this.gbAutoResponse.Location = new System.Drawing.Point(3, 6);\r
+ this.gbAutoResponse.Name = "gbAutoResponse";\r
+ this.gbAutoResponse.Size = new System.Drawing.Size(287, 51);\r
+ this.gbAutoResponse.TabIndex = 0;\r
+ this.gbAutoResponse.TabStop = false;\r
+ this.gbAutoResponse.Text = "Send auto response when:";\r
+ // \r
+ // rbAutoAlways\r
+ // \r
+ this.rbAutoAlways.AutoSize = true;\r
+ this.rbAutoAlways.Location = new System.Drawing.Point(216, 19);\r
+ this.rbAutoAlways.Name = "rbAutoAlways";\r
+ this.rbAutoAlways.Size = new System.Drawing.Size(58, 17);\r
+ this.rbAutoAlways.TabIndex = 2;\r
+ this.rbAutoAlways.Text = "Always";\r
+ this.rbAutoAlways.UseVisualStyleBackColor = true;\r
+ this.rbAutoAlways.CheckedChanged += new System.EventHandler(this.rbAutoAlways_CheckedChanged);\r
+ // \r
+ // rbAutoNonFriend\r
+ // \r
+ this.rbAutoNonFriend.AutoSize = true;\r
+ this.rbAutoNonFriend.Location = new System.Drawing.Point(100, 19);\r
+ this.rbAutoNonFriend.Name = "rbAutoNonFriend";\r
+ this.rbAutoNonFriend.Size = new System.Drawing.Size(110, 17);\r
+ this.rbAutoNonFriend.TabIndex = 1;\r
+ this.rbAutoNonFriend.Text = "IM from non-friend";\r
+ this.rbAutoNonFriend.UseVisualStyleBackColor = true;\r
+ this.rbAutoNonFriend.CheckedChanged += new System.EventHandler(this.rbAutoNonFriend_CheckedChanged);\r
+ // \r
+ // rbAutobusy\r
+ // \r
+ this.rbAutobusy.AutoSize = true;\r
+ this.rbAutobusy.Checked = true;\r
+ this.rbAutobusy.Location = new System.Drawing.Point(6, 19);\r
+ this.rbAutobusy.Name = "rbAutobusy";\r
+ this.rbAutobusy.Size = new System.Drawing.Size(88, 17);\r
+ this.rbAutobusy.TabIndex = 0;\r
+ this.rbAutobusy.TabStop = true;\r
+ this.rbAutobusy.Text = "In busy mode";\r
+ this.rbAutobusy.UseVisualStyleBackColor = true;\r
+ this.rbAutobusy.CheckedChanged += new System.EventHandler(this.rbAutobusy_CheckedChanged);\r
+ // \r
+ // tbpGraphics\r
+ // \r
+ this.tbpGraphics.Location = new System.Drawing.Point(4, 22);\r
+ this.tbpGraphics.Name = "tbpGraphics";\r
+ this.tbpGraphics.Padding = new System.Windows.Forms.Padding(3);\r
+ this.tbpGraphics.Size = new System.Drawing.Size(488, 298);\r
+ this.tbpGraphics.TabIndex = 3;\r
+ this.tbpGraphics.Text = "Graphics Settings";\r
+ this.tbpGraphics.UseVisualStyleBackColor = true;\r
+ // \r
+ // cbDisableLookAt\r
+ // \r
+ this.cbDisableLookAt.AutoSize = true;\r
+ this.cbDisableLookAt.Location = new System.Drawing.Point(275, 243);\r
+ this.cbDisableLookAt.Name = "cbDisableLookAt";\r
+ this.cbDisableLookAt.Size = new System.Drawing.Size(140, 17);\r
+ this.cbDisableLookAt.TabIndex = 15;\r
+ this.cbDisableLookAt.Text = "Disable Look At beacon";\r
+ this.cbDisableLookAt.UseVisualStyleBackColor = true;\r
+ // \r
+ // frmSettings\r
+ // \r
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
+ this.ClientSize = new System.Drawing.Size(496, 324);\r
+ this.Controls.Add(this.tcGraphics);\r
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));\r
+ this.Name = "frmSettings";\r
+ this.Text = "Settings - Radegast";\r
+ this.tcGraphics.ResumeLayout(false);\r
+ this.tbpGeneral.ResumeLayout(false);\r
+ this.tbpGeneral.PerformLayout();\r
+ this.Chat.ResumeLayout(false);\r
+ this.Chat.PerformLayout();\r
+ this.gbDisplayNames.ResumeLayout(false);\r
+ this.gbDisplayNames.PerformLayout();\r
+ this.tbpAutoResponse.ResumeLayout(false);\r
+ this.tbpAutoResponse.PerformLayout();\r
+ this.gnAutoInventory.ResumeLayout(false);\r
+ this.gbAutoResponse.ResumeLayout(false);\r
+ this.gbAutoResponse.PerformLayout();\r
+ this.ResumeLayout(false);\r
+\r
}
#endregion
public System.Windows.Forms.ComboBox cbOnInvOffer;
public System.Windows.Forms.CheckBox cbDisableChatIMLog;
public System.Windows.Forms.GroupBox Chat;
- public System.Windows.Forms.CheckBox cbRadegastLogToFile;
+ public System.Windows.Forms.CheckBox cbRadegastLogToFile;\r
+ protected System.Windows.Forms.CheckBox cbDisableLookAt;
}