public Wound(Database.Organ Organ, DamageType Damage) { this.Organ = Organ; this.Damage = Damage; OrganSlot = Database.Character.BodyPartSlot.GetSlotName((Database.Character.BodyPartSlot.SlotType)Organ.Slot); DamageName = Damage.GetDescription(); }
/// <param name="Type">0 - all items [OBSOLETE]; /// 1 - only organs; /// 2 - only augments [OBSOLETE]; /// 3 - only primary augs; /// 4 - only auxilary augs;</param> public static async Task <List <Database.BodyPart> > GetUserItems(int Type, Database.Character.BodyPartSlot.SlotType?Slot = null, Database.Character.RaceType?Race = null) { switch (Type) { case 1: // Organs { HttpResponseMessage response = await Database.Controller.Client.GetAsync("player/medicine/getUserOrgans"); if (response.IsSuccessStatusCode) { string responseString = JsonConverter(await response.Content.ReadAsStringAsync(), false); File.WriteAllText("temp.json", JToken.Parse(responseString).ToString(Formatting.Indented)); DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List <EjectedOrgan>)); MemoryStream stream = new MemoryStream(File.ReadAllBytes("temp.json")) { Position = 0 }; List <EjectedOrgan> items = serializer.ReadObject(stream) as List <EjectedOrgan>; if (Slot != null) { restart: foreach (var item in items) { if (CustomEnum.GetValueFromDescription <Database.Character.BodyPartSlot.SlotType>(item.slot) != Slot) { items.Remove(item); goto restart; } } } if (Race != null) { restart: foreach (var item in items) { if (CustomEnum.GetValueFromDescription <Database.Character.RaceType>(item.race) != Race) { items.Remove(item); goto restart; } } } List <Database.Organ> result = new List <Database.Organ>(); foreach (var item in items) { int count = item.count; Database.Organ scienceOrgan = item.ConvertToScienceObject(); for (int i = 0; i < count; i++) { result.Add(scienceOrgan); } } return(result.Cast <Database.BodyPart>().ToList()); } else { throw new HttpRequestException("Сервер возвратил ошибку " + response.StatusCode.ToString() + " по причине " + response.ReasonPhrase + "."); } } case 2: throw new ArgumentException(); case 3: // Primary augs { HttpResponseMessage response = await Database.Controller.Client.GetAsync("player/medicine/getUserAugments"); if (response.IsSuccessStatusCode) { string responseString = JsonConverter(await response.Content.ReadAsStringAsync(), false); File.WriteAllText("temp.json", JToken.Parse(responseString).ToString(Formatting.Indented)); DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List <PrimaryAugment>)); MemoryStream stream = new MemoryStream(File.ReadAllBytes("temp.json")) { Position = 0 }; List <PrimaryAugment> items = serializer.ReadObject(stream) as List <PrimaryAugment>; if (Slot != null) { restart: foreach (var item in items) { if (CustomEnum.GetValueFromDescription <Database.Character.BodyPartSlot.SlotType>(item.slot) != Slot) { items.Remove(item); goto restart; } } } if (Race != null) { restart: foreach (var item in items) { if (CustomEnum.GetValueFromDescription <Database.Character.RaceType>(item.race) != Race) { items.Remove(item); goto restart; } } } List <Database.Augment> result = new List <Database.Augment>(); foreach (var item in items) { int count = item.count; Database.Augment scienceAugment = item.ConvertToScienceObject(); for (int i = 0; i < count; i++) { result.Add(scienceAugment); } } return(result.Cast <Database.BodyPart>().ToList()); } else { throw new HttpRequestException("Сервер возвратил ошибку " + response.StatusCode.ToString() + " по причине " + response.ReasonPhrase + "."); } } case 4: // Auxilary augs { HttpResponseMessage response = await Database.Controller.Client.GetAsync("player/medicine/getUserAugments"); if (response.IsSuccessStatusCode) { string responseString = JsonConverter(await response.Content.ReadAsStringAsync(), false); File.WriteAllText("temp.json", JToken.Parse(responseString).ToString(Formatting.Indented)); DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List <AuxilaryAugment>)); MemoryStream stream = new MemoryStream(File.ReadAllBytes("temp.json")) { Position = 0 }; List <AuxilaryAugment> items = serializer.ReadObject(stream) as List <AuxilaryAugment>; List <Database.Augment> result = new List <Database.Augment>(); foreach (var item in items) { if (item.slot == "") // Auxilary aug = aug without slot { int count = item.count; Database.Augment scienceAugment = item.ConvertToScienceObject(); for (int i = 0; i < count; i++) { result.Add(scienceAugment); } } } return(result.Cast <Database.BodyPart>().ToList()); } else { throw new HttpRequestException("Сервер возвратил ошибку " + response.StatusCode.ToString() + " по причине " + response.ReasonPhrase + "."); } } default: throw new ArgumentException("Передан неверный тип предметов при запросе на экономический сервер: " + Type.ToString(), "Type"); } }