Exemple #1
0
        public HItem(HMessage packet)
        {
            packet.ReadInteger();
            string unknown1 = packet.ReadString();

            Id     = packet.ReadInteger();
            TypeId = packet.ReadInteger();
            packet.ReadInteger();

            Category = packet.ReadInteger();
            ReadData(packet, Category);

            packet.ReadBoolean();
            packet.ReadBoolean();
            packet.ReadBoolean();
            packet.ReadBoolean();
            SecondsToExpiration = packet.ReadInteger();

            HasRentPeriodStarted = packet.ReadBoolean();
            RoomId = packet.ReadInteger();

            if (unknown1 == "S")
            {
                SlotId = packet.ReadString();
                packet.ReadInteger();
            }
        }
Exemple #2
0
        public HCatalogPage(HMessage packet)
        {
            Id          = packet.ReadInteger();
            CatalogType = packet.ReadString();
            LayoutCode  = packet.ReadString();

            Images = new string[packet.ReadInteger()];
            for (int i = 0; i < Images.Length; i++)
            {
                Images[i] = packet.ReadString();
            }

            Texts = new string[packet.ReadInteger()];
            for (int i = 0; i < Texts.Length; i++)
            {
                Texts[i] = packet.ReadString();
            }

            Offers = new HCatalogOffer[packet.ReadInteger()];
            for (int i = 0; i < Offers.Length; i++)
            {
                Offers[i] = new HCatalogOffer(packet);
            }

            OfferId = packet.ReadInteger();
            AcceptSeasonCurrencyAsCredits = packet.ReadBoolean();

            IsFrontPage = (packet.Readable > 0);
        }
Exemple #3
0
        public HFloorObject(HMessage packet)
        {
            Id     = packet.ReadInteger();
            TypeId = packet.ReadInteger();

            var tile = new HPoint(packet.ReadInteger(), packet.ReadInteger());

            Facing = (HDirection)packet.ReadInteger();

            tile.Z = double.Parse(packet.ReadString(), CultureInfo.InvariantCulture);
            Tile   = tile;

            packet.ReadString();
            packet.ReadInteger();

            Category = packet.ReadInteger();
            Stuff    = ReadData(packet, Category);

            SecondsToExpiration = packet.ReadInteger();
            UsagePolicy         = (HUsagePolicy)packet.ReadInteger();

            OwnerId = packet.ReadInteger();
            if (TypeId < 0)
            {
                packet.ReadString();
            }
        }
Exemple #4
0
        private void OnPlayerChangeData(HMessage obj)
        {
            try
            {
                #region Some Parsing
                int position = 0;
                obj.ReadInt(ref position);
                obj.ReadString(ref position);
                HGender Gender = SKore.ToGender(obj.ReadString(ref position));
                string  Motto  = obj.ReadString(ref position);
                #endregion

                var args = new PlayerChangeDataEventArgs(obj);
                foreach (PDU PData in _loadedPlayers.Values)
                {
                    if (PData.PlayerIndex == args.PlayerIndex)
                    {
                        PData.Update(Motto, Gender, args.FigureId);
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }
Exemple #5
0
        private bool TryProcessHostRoomNavigate(HMessage current, HMessage previous)
        {
            if (previous.Length >= 12 && current.CanReadAt <string>(0) &&
                current.ReadString() == "Navigation")
            {
                current.ReadString();
                if (current.ReadString() != "go.official")
                {
                    return(false);
                }

                if (previous.ReadInt(0).ToString() == current.ReadString())
                {
                    if (UpdateHeaders)
                    {
                        Outgoing.Global.RoomNavigate = previous.Header;
                    }

                    OutLockHeader(previous.Header, RaiseOnHostRoomExit);
                    RaiseOnHostRoomNavigate(previous);
                    return(true);
                }
            }
            return(false);
        }
Exemple #6
0
        public HCatalogProduct(HMessage packet)
        {
            Type = (HProductType)packet.ReadString()[0];
            switch (Type)
            {
            case HProductType.Badge:
            {
                ExtraData    = packet.ReadString();
                ProductCount = 1;
                break;
            }

            default:
            {
                ClassId      = packet.ReadInteger();
                ExtraData    = packet.ReadString();
                ProductCount = packet.ReadInteger();
                if (IsLimited = packet.ReadBoolean())
                {
                    LimitedTotal     = packet.ReadInteger();
                    LimitedRemaining = packet.ReadInteger();
                }
                break;
            }
            }
        }
Exemple #7
0
        private async void HandlePacket(HMessage hmessage)
        {
            try
            {
                if (hmessage == null)
                {
                    return;
                }

                _main.LogInfo("Incoming packet: " + hmessage.Header);

                if (hmessage.Header == Headers.Ping)
                {
                    SendPong();
                }
                else if (hmessage.Header == Headers.InGenerateSecretKey)
                {
                    GenerateSecretKey(hmessage.ReadString());
                }
                else if (hmessage.Header == 3566)
                {
                    _main.LogInfo("VerifyPrimes");
                    VerifyPrimes(hmessage.ReadString(), hmessage.ReadString());
                }

                HandlePacket(await _server.ReceivePacketAsync());
            }
            catch
            {
                Disconnect();
            }
        }
Exemple #8
0
        public ExtensionForm()
        {
            Triggers = new HTriggers(false);
            var extensionAssembly = Assembly.GetCallingAssembly();

            ExtensionInfo extensionInfo =
                Contractor.GetExtensionInfo(extensionAssembly);

            if (IsInstalled = (extensionInfo != null))
            {
                _contractor = extensionInfo.Contractor;

                Hash         = extensionInfo.Hash;
                FileLocation = extensionInfo.FileLocation;

                var fileInfo = FileVersionInfo.GetVersionInfo(FileLocation);
                Version     = new Version(fileInfo.ProductVersion);
                Identifier  = fileInfo.FileDescription;
                Description = fileInfo.Comments;
                Creator     = fileInfo.CompanyName;
            }
            else if (IsExternal)
            {
                _contractor = new Contractor();
                var externalContractor = HNode.ConnectAsync("127.0.0.1", 8787).Result;

                HMessage initializationMessage = externalContractor.ReceiveAsync().Result;
                _contractor.Hotel = (HHotel)initializationMessage.ReadShort();

                _contractor.GameData          = new HGameData(initializationMessage.ReadString());
                _contractor.GameData.UniqueId = initializationMessage.ReadString();

                _contractor.Connection = new ExtensionBridge(externalContractor, this);
            }
        }
 public PlayerUpdateEventArgs(Func<Task> continuation, int step, HMessage packet)
     : base(continuation, step, packet)
 {
     Index = packet.ReadInteger();
     FigureId = packet.ReadString();
     Gender = SKore.ToGender(packet.ReadString());
     Motto = packet.ReadString();
 }
Exemple #10
0
 public HChatlineData(HMessage packet)
 {
     Timestamp     = packet.ReadString();
     Id            = packet.ReadInteger();
     Username      = packet.ReadString();
     Message       = packet.ReadString();
     IsHighlighted = packet.ReadBoolean();
 }
        public HostChangeClothesEventArgs(HMessage packet)
        {
            _packet = packet;
            Header  = _packet.Header;

            Gender   = SKore.ToGender(_packet.ReadString(0));
            FigureId = _packet.ReadString(3);
        }
 public PlayerUpdateEventArgs(Func <Task> continuation, int step, HMessage packet)
     : base(continuation, step, packet)
 {
     Index    = packet.ReadInteger();
     FigureId = packet.ReadString();
     Gender   = SKore.ToGender(packet.ReadString());
     Motto    = packet.ReadString();
 }
Exemple #13
0
        public async Task RequestInformationAsync()
        {
            HMessage connectionMessage = await _externalContractor
                                         .ReceiveAsync().ConfigureAwait(false);

            Port    = connectionMessage.ReadShort();
            Host    = connectionMessage.ReadString();
            Address = connectionMessage.ReadString();
        }
Exemple #14
0
        public HWallItem(HMessage packet)
        {
            Id     = int.Parse(packet.ReadString());
            TypeId = packet.ReadInteger();

            Location            = packet.ReadString();
            State               = packet.ReadString();
            SecondsToExpiration = packet.ReadInteger();
            UsagePolicy         = packet.ReadInteger();

            OwnerId = packet.ReadInteger();
        }
Exemple #15
0
        public HGroupEntry(HMessage packet)
        {
            Id             = packet.ReadInteger();
            Name           = packet.ReadString();
            BadgeCode      = packet.ReadString();
            PrimaryColor   = packet.ReadString();
            SecondaryColor = packet.ReadString();

            Favorite = packet.ReadBoolean();
            OwnerId  = packet.ReadInteger();
            HasForum = packet.ReadBoolean();
        }
Exemple #16
0
        public PlayerChangeDataEventArgs(HMessage packet)
        {
            _packet = packet;
            Header  = _packet.Header;

            int position = 4;

            PlayerIndex = _packet.ReadInt(0);
            FigureId    = _packet.ReadString(ref position);
            Gender      = SKore.ToGender(_packet.ReadString(position));
            Motto       = _packet.ReadString(position);
        }
Exemple #17
0
        public HFriendRequests(HMessage packet)
        {
            Unk = packet.ReadInteger();

            Requests = packet.ReadInteger();
            for (int i = 0; i < Requests; i++)
            {
                Id    = packet.ReadInteger();
                Name  = packet.ReadString();
                Motto = packet.ReadString();
            }
        }
Exemple #18
0
        public static HSearchResult[] Parse(HMessage packet)
        {
            string searchCode = packet.ReadString();
            string filter     = packet.ReadString();

            var results = new HSearchResult[packet.ReadInteger()];

            for (int i = 0; i < results.Length; i++)
            {
                results[i] = new HSearchResult(packet);
            }
            return(results);
        }
Exemple #19
0
        public HSearchResult(HMessage packet)
        {
            SearchCode = packet.ReadString();
            Text       = packet.ReadString();

            ActionAllowed = packet.ReadInteger();
            ForceClosed   = packet.ReadBoolean();
            ViewMode      = packet.ReadInteger();

            Rooms = new HRoomEntry[packet.ReadInteger()];
            for (int i = 0; i < Rooms.Length; i++)
            {
                Rooms[i] = new HRoomEntry(packet);
            }
        }
Exemple #20
0
        public static IReadOnlyList <HFurniture> Parse(HMessage packet)
        {
            int ownersCount = packet.ReadInteger();
            var owners      = new Dictionary <int, string>(ownersCount);

            for (int i = 0; i < ownersCount; i++)
            {
                int    ownerId   = packet.ReadInteger();
                string ownerName = packet.ReadString();

                owners.Add(ownerId, ownerName);
            }

            int furnitureCount = packet.ReadInteger();
            var furnitureList  = new List <HFurniture>(furnitureCount);

            for (int i = 0; i < furnitureList.Capacity; i++)
            {
                int id     = packet.ReadInteger();
                int typeId = packet.ReadInteger();

                int x         = packet.ReadInteger();
                int y         = packet.ReadInteger();
                var direction = (HDirection)packet.ReadInteger();
                var z         = double.Parse(packet.ReadString(), CultureInfo.InvariantCulture);

                packet.ReadString();
                packet.ReadInteger();

                int category = packet.ReadInteger();
                HStuffData.ReadStuffData(category, packet);

                packet.ReadInteger();
                packet.ReadInteger();

                int ownerId = packet.ReadInteger();
                if (typeId < 0)
                {
                    packet.ReadString();
                }

                var furniture = new HFurniture(id, typeId, ownerId,
                                               owners[ownerId], new HPoint(x, y, z), direction);

                furnitureList.Add(furniture);
            }
            return(furnitureList);
        }
Exemple #21
0
 public static HostShoutEventArgs CreateArguments(HMessage Packet)
 {
     return(new HostShoutEventArgs(HHeaders.Shout = Packet.Header, Packet.ReadString(0), (HThemes)Packet.ReadInt(Packet.Length - 6))
     {
         Packet = new HMessage(Packet.ToBytes(), HDestinations.Server)
     });
 }
 public HostBanPlayerEventArgs(Func<Task> continuation, int step, HMessage packet)
     : base(continuation, step, packet)
 {
     Id = packet.ReadInteger();
     RoomId = packet.ReadInteger();
     Ban = SKore.ToBan(packet.ReadString());
 }
Exemple #23
0
        private async void Connected(object sender, ConnectedEventArgs e)
        {
            if (InvokeRequired)
            {
                Invoke(_connected, sender, e);
                return;
            }

            HMessage remoteEndPointPkt = await Connection.Local.ReceivePacketAsync();

            e.HotelServer           = ConnectionPg.HotelServer = HotelEndPoint.Parse(remoteEndPointPkt.ReadString().Split('\0')[0], remoteEndPointPkt.ReadInteger());
            e.IsFakingPolicyRequest = (e.HotelServer.Hotel == HHotel.Unknown);
            e.HotelServerSource.SetResult(e.HotelServer);

            ConnectionPg.IsReceiving = true;
            Text    = $"Tanji ~ Connected[{e.HotelServer}]";
            TopMost = PacketLoggerUI.TopMost;

            PacketLoggerUI.RevisionTxt.Text = ("Revision: " + Game.Revision);

            PacketLoggerUI.Show();
            PacketLoggerUI.WindowState = FormWindowState.Normal;

            BringToFront();
        }
 public HostBanPlayerEventArgs(Func <Task> continuation, int step, HMessage packet)
     : base(continuation, step, packet)
 {
     Id     = packet.ReadInteger();
     RoomId = packet.ReadInteger();
     Ban    = SKore.ToBan(packet.ReadString());
 }
Exemple #25
0
 public static HostChangeMottoEventArgs CreateArguments(HMessage Packet)
 {
     return(new HostChangeMottoEventArgs(HHeaders.Motto = Packet.Header, Packet.ReadString(0))
     {
         Packet = new HMessage(Packet.ToBytes(), HDestinations.Server)
     });
 }
Exemple #26
0
        public HChatRecordData(HMessage packet)
        {
            object ReadContextValue(HMessage anotherMessage)
            {
                switch (anotherMessage.ReadShort())
                {
                case 0: return(anotherMessage.ReadBoolean());

                case 1: return(anotherMessage.ReadInteger());

                case 2: return(anotherMessage.ReadString());

                default: throw new System.Exception("Nothing");
                }
            }

            Type = (HChatRecordType)packet.ReadBytes(1)[0];
            int entryCount = packet.ReadShort();

            Context = new Dictionary <string, object>(entryCount);
            for (int i = 0; i < entryCount; i++)
            {
                Context.Add(packet.ReadString(), ReadContextValue(packet));
            }

            Chatlogs = new List <HChatlineData>(packet.ReadShort());
            for (int i = 0; i < Chatlogs.Capacity; i++)
            {
                Chatlogs.Add(new HChatlineData(packet));
            }
        }
        public HostChangeMottoEventArgs(HMessage packet)
        {
            _packet = packet;
            Header  = _packet.Header;

            Motto = _packet.ReadString(0);
        }
Exemple #28
0
        public HostSendMessageEventArgs(HMessage packet)
        {
            _packet = packet;
            Header  = _packet.Header;

            PlayerId = _packet.ReadInt(0);
            Message  = _packet.ReadString(4);
        }
Exemple #29
0
        public HostSayEventArgs(HMessage packet)
        {
            _packet = packet;
            Header  = _packet.Header;

            Message = _packet.ReadString(0);
            Theme   = (HTheme)_packet.ReadInt(_packet.Length - 10);
        }
Exemple #30
0
        public HostShoutEventArgs(Func<Task> continuation, int step, HMessage packet)
            : base(continuation, step, packet)
        {
            Message = packet.ReadString();

            // TODO: Find the chunks before OwnerId and read them.
            Theme = (HTheme)packet.ReadInteger(packet.Length - 6);
        }
        public HostShoutEventArgs(Func <Task> continuation, int step, HMessage packet)
            : base(continuation, step, packet)
        {
            Message = packet.ReadString();

            // TODO: Find the chunks before OwnerId and read them.
            Theme = (HTheme)packet.ReadInteger(packet.Length - 6);
        }
Exemple #32
0
        public static HCatalogNode Parse(HMessage packet)
        {
            var    root = new HCatalogNode(packet);
            bool   newAdditionsAvailable = packet.ReadBoolean();
            string catalogType           = packet.ReadString();

            return(root);
        }
Exemple #33
0
        public HostRoomNavigateEventArgs(HMessage packet)
        {
            _packet = packet;
            Header  = _packet.Header;

            RoomId   = _packet.ReadInt(0);
            Passcode = _packet.ReadString(4);
        }
 public HostUpdateClothesEventArgs(Func<Task> continuation, int step, HMessage packet)
     : base(continuation, step, packet)
 {
     Gender = SKore.ToGender(packet.ReadString());
     FigureId = packet.ReadString();
 }
 public HostUpdateMottoEventArgs(Func<Task> continuation, int step, HMessage packet)
     : base(continuation, step, packet)
 {
     Motto = packet.ReadString();
 }
 public HostPrivateMessageEventArgs(Func<Task> continuation, int step, HMessage packet)
     : base(continuation, step, packet)
 {
     Id = packet.ReadInteger();
     Message = packet.ReadString();
 }
Exemple #37
0
        /// <summary>
        /// Returns a <see cref="IReadOnlyList{T}"/> of type <see cref="HEntityAction"/> found in the <see cref="HMessage"/>.
        /// </summary>
        /// <param name="packet">The <see cref="HMessage"/> that contains the <see cref="HEntityAction"/> data to parse.</param>
        /// <returns></returns>
        public static IReadOnlyList<HEntityAction> Parse(HMessage packet)
        {
            int entityActionCount = packet.ReadInteger();
            var entityActionList = new List<HEntityAction>(entityActionCount);

            for (int i = 0; i < entityActionList.Capacity; i++)
            {
                int index = packet.ReadInteger();
                int x = packet.ReadInteger();
                int y = packet.ReadInteger();
                double z = double.Parse(packet.ReadString());
                var headDirection = (HDirection)packet.ReadInteger();
                var bodyDirection = (HDirection)packet.ReadInteger();

                string actionString = packet.ReadString();
                string[] actionData = actionString.Split(new[] { '/' },
                    StringSplitOptions.RemoveEmptyEntries);

                HSign sign = HSign.One;
                HAction action = HAction.None;
                HStance stance = HStance.Stand;

                double movingToZ = 0.0;
                bool isEmpowered = false;
                int movingToX = 0, movingToY = 0;

                foreach (string actionInfo in actionData)
                {
                    string[] actionValues = actionInfo.Split(' ');
                    if (actionValues.Length < 2 || string.IsNullOrWhiteSpace(actionValues[0]))
                        continue;

                    #region Switch Statement: actionValues[]
                    switch (actionValues[0])
                    {
                        case "flatctrl":
                        {
                            isEmpowered = true;
                            break;
                        }
                        case "mv":
                        {
                            string[] movingToValues = actionValues[1].Split(',');
                            if (movingToValues.Length >= 3)
                            {
                                movingToX = int.Parse(movingToValues[0]);
                                movingToY = int.Parse(movingToValues[1]);
                                movingToZ = double.Parse(movingToValues[2]);
                            }
                            action = HAction.Move;
                            break;
                        }
                        case "sit":
                        {
                            action = HAction.Sit;
                            stance = HStance.Sit;
                            break;
                        }
                        case "lay":
                        {
                            action = HAction.Lay;
                            stance = HStance.Lay;
                            break;
                        }
                        case "sign":
                        {
                            sign = (HSign)int.Parse(actionValues[1]);
                            action = HAction.Sign;
                            break;
                        }
                    }
                    #endregion
                }

                var entityAction = new HEntityAction(isEmpowered, index, new HPoint(x, y, z),
                    new HPoint(movingToX, movingToY, movingToZ), sign, stance, headDirection, bodyDirection, action);

                entityActionList.Add(entityAction);
            }
            return entityActionList;
        }
Exemple #38
0
        public static IReadOnlyList<HFurniture> Parse(HMessage packet)
        {
            int ownersCount = packet.ReadInteger();
            var owners = new Dictionary<int, string>(ownersCount);

            for (int i = 0; i < ownersCount; i++)
            {
                int ownerId = packet.ReadInteger();
                string ownerName = packet.ReadString();

                owners.Add(ownerId, ownerName);
            }

            int furnitureCount = packet.ReadInteger();
            var furnitureList = new List<HFurniture>(furnitureCount);

            for (int i = 0; i < furnitureList.Capacity; i++)
            {
                int id = packet.ReadInteger();
                int typeId = packet.ReadInteger();

                int x = packet.ReadInteger();
                int y = packet.ReadInteger();
                var direction = (HDirection)packet.ReadInteger();
                double z = double.Parse(packet.ReadString());

                packet.ReadString();
                packet.ReadInteger();

                int categoryId = (packet.ReadInteger() & 0xFF);
                #region Switch Statement: categoryId
                switch (categoryId)
                {
                    case 0:
                    {
                        packet.ReadString();
                        break;
                    }
                    case 1:
                    {
                        int count = packet.ReadInteger();
                        for (int j = 0; j < count; j++)
                        {
                            packet.ReadString();
                            packet.ReadString();
                        }
                        break;
                    }
                    case 2:
                    {
                        int count = packet.ReadInteger();
                        for (int j = 0; j < count; j++)
                        {
                            packet.ReadString();
                        }
                        break;
                    }
                    case 3:
                    {
                        packet.ReadString();
                        packet.ReadInteger();
                        break;
                    }
                    case 5:
                    {
                        int count = packet.ReadInteger();
                        for (int j = 0; j < count; j++)
                        {
                            packet.ReadInteger();
                        }
                        break;
                    }
                    case 6:
                    {
                        packet.ReadString();
                        packet.ReadInteger();
                        packet.ReadInteger();

                        int count = packet.ReadInteger();
                        for (int j = 0; j < count; j++)
                        {
                            int subCount = packet.ReadInteger();
                            for (int k = 0; k < subCount; k++)
                            {
                                packet.ReadString();
                            }
                        }
                        break;
                    }
                    case 7:
                    {
                        packet.ReadString();
                        packet.ReadInteger();
                        packet.ReadInteger();
                        break;
                    }
                }
                #endregion

                packet.ReadInteger();
                packet.ReadInteger();

                int ownerId = packet.ReadInteger();
                if (typeId < 0) packet.ReadString();

                var furniture = new HFurniture(id, typeId, ownerId,
                    owners[ownerId], new HPoint(x, y, z), direction);

                furnitureList.Add(furniture);
            }
            
            return furnitureList;
        }
Exemple #39
0
        /// <summary>
        /// Returns a <see cref="IReadOnlyList{T}"/> of type <see cref="HEntity"/> found in the <see cref="HMessage"/>.
        /// </summary>
        /// <param name="packet">The <see cref="HMessage"/> that contains the <see cref="HEntity"/> data to parse.</param>
        /// <returns></returns>
        public static IReadOnlyList<HEntity> Parse(HMessage packet)
        {
            int entityCount = packet.ReadInteger();
            var entityList = new List<HEntity>(entityCount);

            for (int i = 0; i < entityList.Capacity; i++)
            {
                int id = packet.ReadInteger();
                string name = packet.ReadString();
                string motto = packet.ReadString();
                string figureId = packet.ReadString();
                int index = packet.ReadInteger();
                int x = packet.ReadInteger();
                int y = packet.ReadInteger();
                double z = double.Parse(packet.ReadString());

                packet.ReadInteger();
                int type = packet.ReadInteger();

                HGender gender = HGender.Unknown;
                string favoriteGroup = string.Empty;
                #region Switch Statement: type
                switch (type)
                {
                    case 1:
                    {
                        gender = SKore.ToGender(packet.ReadString());
                        packet.ReadInteger();
                        packet.ReadInteger();
                        favoriteGroup = packet.ReadString();
                        packet.ReadString();
                        packet.ReadInteger();
                        packet.ReadBoolean();

                        break;
                    }
                    case 2:
                    {
                        packet.ReadInteger();
                        packet.ReadInteger();
                        packet.ReadString();
                        packet.ReadInteger();
                        packet.ReadBoolean();
                        packet.ReadBoolean();
                        packet.ReadBoolean();
                        packet.ReadBoolean();
                        packet.ReadBoolean();
                        packet.ReadBoolean();
                        packet.ReadInteger();
                        packet.ReadString();
                        break;
                    }
                    case 4:
                    {
                        packet.ReadString();
                        packet.ReadInteger();
                        packet.ReadString();

                        for (int j = packet.ReadInteger(); j > 0; j--)
                            packet.ReadShort();

                        break;
                    }
                }
                #endregion

                var entity = new HEntity(id, index, name,
                    new HPoint(x, y, z), motto, gender, figureId, favoriteGroup);

                entityList.Add(entity);
            }

            return entityList;
        }
Exemple #40
0
        private bool TryHandleHostRaiseSign(HMessage current, HMessage previous)
        {
            bool isHostRaiseSign = false;
            if (current.CanRead<string>(22) && current.ReadString(22) == "sign")
            {
                OutgoingHeaders.RaiseSign = previous.Header;
                _outLocked[previous.Header] = RaiseOnHostRaiseSign;

                isHostRaiseSign = true;
            }
            return isHostRaiseSign;
        }
Exemple #41
0
        private bool TryHandleAvatarMenuClick(HMessage current, HMessage previous)
        {
            if (!previous.CanRead<string>(22)) return false;
            switch (previous.ReadString(22))
            {
                case "sit":
                case "stand":
                {
                    OutgoingHeaders.UpdateStance = current.Header;
                    _outLocked[current.Header] = RaiseOnHostUpdateStance;
                    return true;
                }

                case "dance_stop":
                case "dance_start":
                {
                    OutgoingHeaders.Dance = current.Header;
                    _outLocked[current.Header] = RaiseOnHostDance;
                    return true;
                }

                case "wave":
                case "idle":
                case "laugh":
                case "blow_kiss":
                {
                    OutgoingHeaders.Gesture = current.Header;
                    _outLocked[current.Header] = RaiseOnHostGesture;
                    return true;
                }
            }
            return false;
        }
Exemple #42
0
        private bool TryHandleHostNavigateRoom(HMessage current, HMessage previous)
        {
            if (previous.Length >= 12 &&
                current.CanRead<string>(0) &&
                current.ReadString() == "Navigation")
            {
                current.ReadString();
                if (current.ReadString() != "go.official") return false;

                if (previous.ReadInteger(0).ToString() == current.ReadString())
                {
                    OutgoingHeaders.NavigateRoom = previous.Header;

                    _outLocked[previous.Header] = RaiseOnHostNavigateRoom;
                    return true;
                }
            }
            return false;
        }