예제 #1
0
        void HandleClientConnection(NamedPipeServerStream pipe)
        {
            var reader  = new JsonStreamReader(pipe, Encoding.UTF8);
            var request = reader.ReadJson <QueryRequest>();

            QueryResponse response           = new QueryResponse();
            var           equipmentLocations = GetItemLocations(request);

            dataReader.ItemSlotAction(equipmentLocations, (itemReader, item) => {
                ItemResponse data = new ItemResponse();
                data.ItemName     = itemReader.GetFullItemName(item);
                data.Properties   = itemReader.GetMagicalStrings(item);
                response.Items.Add(data);
            });

            response.IsValid = equipmentLocations.Count > 0;
            response.Success = response.Items.Count > 0;
            var writer = new JsonStreamWriter(pipe, Encoding.UTF8);

            writer.WriteJson(response);
            writer.Flush();
        }
예제 #2
0
        void HandleClientConnection(Object pipeObject)
        {
            try
            {
                NamedPipeServerStream pipe = (NamedPipeServerStream)pipeObject;
                var reader  = new JsonStreamReader(pipe, Encoding.UTF8);
                var request = reader.ReadJson <QueryRequest>();

                QueryResponse response           = new QueryResponse();
                var           equipmentLocations = GetItemLocations(request);

                dataReader.ItemSlotAction(equipmentLocations, (itemReader, item) =>
                {
                    ItemQuality quality = itemReader.GetItemQuality(item);
                    string color        = null;
                    switch (quality)
                    {
                    case ItemQuality.Low:
                    case ItemQuality.Normal:
                    case ItemQuality.Superior:
                        color = "WHITE";
                        break;

                    case ItemQuality.Magic:
                        color = "BLUE";
                        break;

                    case ItemQuality.Rare:
                        color = "YELLOW";
                        break;

                    case ItemQuality.Crafted:
                    case ItemQuality.Tempered:
                        color = "ORANGE";
                        break;

                    case ItemQuality.Unique:
                        color = "GOLD";
                        break;

                    case ItemQuality.Set:
                        color = "GREEN";
                        break;
                    }

                    ItemResponse data = new ItemResponse();
                    data.ItemName     = itemReader.GetFullItemName(item);
                    data.BaseItem     = itemReader.GetGrammaticalName(itemReader.GetItemName(item), out string grammerCase);
                    data.Quality      = color;
                    data.Properties   = itemReader.GetMagicalStrings(item);
                    data.Location     = itemReader.GetItemData(item)?.BodyLoc ?? BodyLocation.None;
                    response.Items.Add(data);
                });

                response.IsValid = equipmentLocations.Count > 0;
                response.Success = response.Items.Count > 0;
                var writer = new JsonStreamWriter(pipe, Encoding.UTF8);
                writer.WriteJson(response);
                writer.Flush();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Logger.Instance.WriteLine("exception caught in HandleClientConnection:");
                Logger.Instance.WriteLine(e.Message);
                return;
            }
        }