Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }