using System; using System.Data; using System.Text; using System.Threading; using System.Collections; using Xoa.Virtual.Gangs; using Xoa.Managers; using Xoa.Virtual.Rooms; using Microsoft.VisualBasic; using Ion.Storage; namespace Xoa.Virtual.Rooms.Bots { /// /// Represents a virtual user in a virtual room. /// public class virtualRoomBot { /// /// The database ID of the user. /// internal int botID; /// /// The ID of the virtual room where the user is in. /// internal int roomID; /// /// The ID of the user in the virtual room. /// internal int roomUID; /// /// The X position of the user in the virtual room. /// internal int X; /// /// The Y position of the user in the virtual room. /// internal int Y; /// /// The height of the user in the virtual room. /// internal double H; /// /// The rotation of the user's head in the virtual room. /// internal byte Z1; /// /// The rotation of the user's body in the virtual room. /// internal byte Z2; /// /// The X position where the user wants to walk to. If not walking, -1. /// internal int goalX; /// /// The Y position where the user wants to walk to. If not walking, -1. /// internal int goalY; /// /// Specifies if the user can walk. /// internal bool walkLock; /// /// Specifies if the user is on his way of leaving the room after clicking the door. /// internal bool walkDoor; /// /// Guestroom only. Specifies if the user has voted on the guestroom already. /// internal bool hasVoted; /// The room user ID (rUID) of the virtual user where this virtual user is currently trading items with. If not trading, then this value is -1. /// internal int _tradePartnerRoomUID = -1; /// /// Swimming pools only. Specifies the swimming pool outfit. /// internal string swimOutfit; /// /// Gamelobbies only. Specifies the amount of gamepoints that this user has for the game in the current gamelobby. /// internal int gamePoints; /// /// The parent virtual user of this room user. /// internal virtualBot Bot; /// /// The status manager of this room user. /// internal virtualRoomBotStatusManager statusManager; /// /// Indicates if the room user is currently typing a chat message. /// internal bool isTyping; /// /// Indicates if the room user is able to use the special teleport cast, which allows him to teleport around the room. /// internal bool SPECIAL_TELEPORTABLE = false; private delegate void walkSleepPointer(); /// /// Initializes a virtual room user. /// /// The database ID of the virtual user of this room user object. /// The database ID of the room where the room user is in. /// The ID that identifies the room user in the virtual room. /// The parent vittual user of this room user. /// The status manager of this room user. internal virtualRoomBot(int botID, int roomID, int roomUID, virtualBot Bot, virtualRoomBotStatusManager statusManager) { this.botID = botID; this.roomID = roomID; this.roomUID = roomUID; this.Bot = Bot; this.statusManager = statusManager; } /// /// The virtualRoom object that represents the room where this room user is in. /// internal virtualRoom Room { get { return roomManager.getRoom(roomID); } } /// /// Refreshes the status of this room user in the virtual room. /// internal void Refresh() { Room.Refresh(this); } /// /// Returns the details string for this room user, containing username etc. /// internal string detailsString { get { using (DatabaseClient dbClient = Xoa.Eucalypt.dbManager.GetClient()) { if (Bot.Animal != "-1") { // old pet string //string s = "i:" + roomUID + Convert.ToChar(13) + "n:" + roomUID + Convert.ToChar(4) + Bot.Name + Convert.ToChar(13) + "f:" + Bot.Animal + " " + Bot.Animal + " " + Bot.Colour + Convert.ToChar(13) + "l:" + X + " " + Y + " " + H + Convert.ToChar(13); //s += "c:" + Convert.ToChar(13); //return s; string Figure = Bot.Animal + " " + Bot.Animal + " " + Bot.Colour + ""; string s = "i:" + roomUID + Convert.ToChar(13) + "n:" + roomUID + Convert.ToChar(4) + Bot.Name + Convert.ToChar(13) + "f:" + Figure + Convert.ToChar(13) + "l:" + X + " " + Y + " " + H + Convert.ToChar(13); s += "c:" + Convert.ToChar(13); return s; } else { string s = "i:" + roomUID + Convert.ToChar(13) + "a:-1" + Convert.ToChar(13) + "n:" + Bot.Name + Convert.ToChar(13) + "f:" + Bot.Figure + Convert.ToChar(13) + "l:" + X + " " + Y + " " + H + Convert.ToChar(13); if (Bot.Mission != "") { s += "c:" + Bot.Mission + Convert.ToChar(13); } s += "b:" + "1:NWB" + Convert.ToChar(13); return s; } } } } /// /// Returns the action string for this room user, containing position, movements, statuses etc. /// internal string statusString { get { string s = roomUID + " " + X + "," + Y + "," + H.ToString().Replace(",", ".") + "," + Z1 + "," + Z2 + "/"; foreach (string Key in statusManager._Statuses.Keys) { s += Key; string Value = (string)statusManager._Statuses[Key]; if (Value != "") s += " " + Value; s += "/"; } return s; } } } }