public void Merge(ReviewDelta reviewDelta) { foreach (var otherItem in reviewDelta.Items) { var matchingItem = Items.Where(x => x.Number == otherItem.Number && x.AppearanceRate == otherItem.AppearanceRate && x.Location.Equals(otherItem.Location)).FirstOrDefault(); if (matchingItem == null) { Items.Add(otherItem); } else { matchingItem.Amount += otherItem.Amount; } } foreach (var otherNPC in reviewDelta.NPCs) { var matchingNPC = NPCs.Where(x => x.Number == otherNPC.Number).FirstOrDefault(); if (matchingNPC == null) { NPCs.Add(otherNPC); } } }
public ReviewDelta Review(int id) { var review = new ReviewDelta(); var map = MapManager.RetrieveMap(id); for (var x = 0; x <= map.MaxX; x++) { for (var y = 0; y <= map.MaxY; y++) { var tile = map.Tile[x, y]; switch (tile.Type) { case Enums.TileType.Item: { review.Items.Add(new ReviewedItem(tile.Data1, tile.Data2, tile.String2, 100, new MapLocation(id, x, y))); } break; } } } return(review); }
public ReviewDelta Review(int id) { var review = new ReviewDelta(); var rdungeon = Server.RDungeons.RDungeonManager.RDungeons[id]; var dungeonItems = new List <ReviewedItem>(); for (var i = 0; i < rdungeon.Floors.Count; i++) { var floor = rdungeon.Floors[i]; foreach (var item in floor.Items) { dungeonItems.Add(new ReviewedItem(item.ItemNum, item.MaxAmount, item.Tag, item.AppearanceRate, new RDungeonFloorLocation(false, id, i)) { Group = $"[{id}] `{rdungeon.DungeonName}`" }); } } foreach (var dungeonItem in dungeonItems) { var mergedDungeonItem = review.Items.Where(x => x.Number == dungeonItem.Number && x.Amount == dungeonItem.Amount && x.Tag == dungeonItem.Tag).FirstOrDefault(); if (mergedDungeonItem == null) { mergedDungeonItem = dungeonItem; review.Items.Add(dungeonItem); } var location = (RDungeonFloorLocation)dungeonItem.Location; var mergedLocation = (RDungeonFloorLocation)mergedDungeonItem.Location; foreach (var dungeonItemFloor in location.Floors) { if (!mergedLocation.Floors.Contains(dungeonItemFloor)) { mergedLocation.Floors.Add(dungeonItemFloor); } } } return(review); }
public ReviewDelta Review(int id) { var review = new ReviewDelta(); var npc = Server.Npcs.NpcManager.Npcs[id]; for (var i = 0; i < npc.Drops.Length; i++) { var drop = npc.Drops[i]; if (drop.ItemNum > 0) { review.Items.Add(new ReviewedItem(drop.ItemNum, drop.ItemValue, drop.Tag, drop.Chance, new NPCDropLocation(id, i))); } } review.NPCs.Add(new ReviewedNPC(id)); return(review); }