Beispiel #1
0
        internal void loadBots()
        {
            DataColumn dCol;
            using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient())
            {
                dCol = dbClient.getColumn("SELECT id FROM roombots WHERE roomid = '" + this.roomID + "'");
            }
            int[] IDs = dataHandling.dColToArray(dCol, null);
            for (int i = 0; i < IDs.Length; i++)
            {
                virtualBot roomBot = new virtualBot(IDs[i], getFreeRoomIdentifier(), this);
                roomBot.H = sqFLOORHEIGHT[roomBot.X, roomBot.Y];
                sqUNIT[roomBot.X, roomBot.Y] = true;

                _Bots.Add(roomBot.roomUID, roomBot);
                sendData(@"@\" + roomBot.detailsString);
                sendData("@b" + roomBot.statusString);
            }
        }
Beispiel #2
0
 /// <summary>
 /// Updates the status of a virtualBot object in room. If the bot is walking, then the bot isn't refreshed immediately but processed at the next cycle of the status thread, to prevent double status strings in @b.
 /// </summary>
 /// <param name="roomBot">The virtualBot object to update.</param>
 internal void Refresh(virtualBot roomBot)
 {
     try
     {
         if (roomBot.goalX == -1)
             _statusUpdates.Append(roomBot.statusString + Convert.ToChar(13));
     }
     catch { }
 }
Beispiel #3
0
 /// <summary>
 /// Sends a 'shout' chat message from a virtualBot to the room. All users will receive the message and bob their heads.
 /// </summary>
 /// <param name="sourceBot">The virtualRoomBot object that sent the message.</param>
 /// <param name="Message">The message that was sent.</param>
 internal void sendShout(virtualBot sourceUser, string Message)
 {
     sourceUser.handleStatus("talk", "", Message.Length * 190);
     string Data = "@Z" + Encoding.encodeVL64(sourceUser.roomUID) + Message + Convert.ToChar(2);
     lock (_Users)
     {
         foreach (virtualRoomUser roomUser in _Users.Values)
         {
             roomUser.User.sendData(Data);
         }
     }
 }
Beispiel #4
0
 /// <summary>
 /// Sends a 'say' chat message from a virtualBot to the room. Users in a range of 5 squares will receive the message and bob their heads.
 /// </summary>
 /// <param name="sourceBot">The virtualBot object that sent the message.</param>
 /// <param name="Message">The message that was sent.</param>
 internal void sendSaying(virtualBot sourceBot, string Message)
 {
     string Data = "@X" + Encoding.encodeVL64(sourceBot.roomUID) + Message + Convert.ToChar(2);
     lock (_Users)
     {
         foreach (virtualRoomUser roomUser in _Users.Values)
         {
             roomUser.User.sendData(Data);
         }
     }
 }
        /// <summary>
        /// Sends a 'shout' chat message from a virtualBot to the room. All users will receive the message and bob their heads.
        /// </summary>
        /// <param name="sourceBot">The virtualRoomBot object that sent the message.</param>
        /// <param name="Message">The message that was sent.</param>
        internal void sendShout(virtualBot sourceBot, string Message)
        {
            //sourceBot.handleStatus("talk", "", Message.Length * 190);
            string Data = "@Z" + Encoding.encodeVL64(sourceBot.roomUID) + Message + Convert.ToChar(2);

            foreach (virtualRoomUser roomUser in ((Hashtable)_Users.Clone()).Values)
            {
                //if (roomUser.roomUID != sourceBot.roomUID && roomUser.goalX == -1)
                //{
                //    byte newHeadRotation = Pathfinding.Rotation.headRotation(roomUser.Z2, roomUser.X, roomUser.Y, sourceBot.X, sourceBot.Y);
                //    if (newHeadRotation < 10 && newHeadRotation != roomUser.Z1) // Rotation changed
                //    {
                //        roomUser.Z1 = newHeadRotation;
                //        _statusUpdates.Append(roomUser.statusString + Convert.ToChar(13));
                //    }
                //}
                roomUser.User.sendData(Data);
            }
        }
        /// <summary>
        /// Sends a 'say' chat message from a virtualBot to the room. Users in a range of 5 squares will receive the message and bob their heads.
        /// </summary>
        /// <param name="sourceBot">The virtualBot object that sent the message.</param>
        /// <param name="Message">The message that was sent.</param>
        internal void sendSaying(virtualBot sourceBot, string Message)
        {
            string Data = "@X" + Encoding.encodeVL64(sourceBot.roomUID) + Message + Convert.ToChar(2);
            //sourceBot.handleStatus("talk", "", Message.Length * 190);

            foreach (virtualRoomUser roomUser in _Users.Values)
            {
                if (Math.Abs(roomUser.X - sourceBot.X) < 6 && Math.Abs(roomUser.Y - sourceBot.Y) < 6)
                {
                    //if (roomUser.goalX == -1)
                    //{
                    //    byte newHeadRotation = Pathfinding.Rotation.headRotation(roomUser.Z2, roomUser.X, roomUser.Y, sourceBot.X, sourceBot.Y);
                    //    if (newHeadRotation < 10 && newHeadRotation != roomUser.Z1) // Rotation changed
                    //    {
                    //        roomUser.Z1 = newHeadRotation;
                    //        _statusUpdates.Append(roomUser.statusString + Convert.ToChar(13));
                    //    }
                    //}
                    roomUser.User.sendData(Data);
                }
            }
        }
        internal void loadBots()
        {
            int[] IDs = DB.runReadColumn("SELECT id FROM roombots WHERE roomid = '" + this.roomID + "'", 0, null);
            for (int i = 0; i < IDs.Length; i++)
            {
                virtualBot roomBot = new virtualBot(IDs[i], getFreeRoomIdentifier(), this);
                roomBot.H = sqFLOORHEIGHT[roomBot.X, roomBot.Y];
                sqUNIT[roomBot.X, roomBot.Y] = true;

                _Bots.Add(roomBot.roomUID, roomBot);
                sendData(@"@\" + roomBot.detailsString);
                sendData("@b" + roomBot.statusString);
            }
        }