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); }
private void Add(VillageHouse house) => Update(() => villageHouses.Add(house));