Пример #1
0
        public IReadOnlyList <VillageHouse> GetOrCreateVillageHouses(Village village)
        {
            var houses = villageHouses[nameof(Village), village.Id];

            if (village.Level <= 1)
            {
                return(new VillageHouse[0]);
            }

            var houseCount = village.Level / 10;

            if ((houses == null || houses.Count == 0) && houseCount > 0)
            {
                houses = Enumerable.Range(0, houseCount).Select(x => new VillageHouse
                {
                    Id        = Guid.NewGuid(),
                    Created   = DateTime.UtcNow,
                    Slot      = x,
                    Type      = 0,
                    VillageId = village.Id
                }).ToList();

                foreach (var house in houses)
                {
                    Add(house);
                }
            }

            if (houses.Count < houseCount)
            {
                var housesTemp = houses.ToList();

                for (var i = houses.Count; i < houseCount; ++i)
                {
                    var house = new VillageHouse
                    {
                        Id        = Guid.NewGuid(),
                        Created   = DateTime.UtcNow,
                        Slot      = i,
                        Type      = 0,
                        VillageId = village.Id
                    };

                    Add(house);

                    housesTemp.Add(house);
                }

                houses = housesTemp;
            }
            return(houses);
        }
Пример #2
0
 private void Add(VillageHouse house) => Update(() => villageHouses.Add(house));