adding farms

This commit is contained in:
hz
2026-05-19 15:40:31 -05:00
parent 0757344bdf
commit 864835a8f9
11 changed files with 241 additions and 39 deletions
@@ -7,9 +7,25 @@ public class GameSettingsService
{
public const string ScoutTrainingSeconds = "ScoutTrainingSeconds";
public const string ArcherTrainingSeconds = "ArcherTrainingSeconds";
public const string ScoutGoldCost = "ScoutGoldCost";
public const string ArcherGoldCost = "ArcherGoldCost";
public const string ArcherWoodCost = "ArcherWoodCost";
public const string LogCampBuildSeconds = "LogCampBuildSeconds";
public const string MineBuildSeconds = "MineBuildSeconds";
public const string BarracksBuildSeconds = "BarracksBuildSeconds";
public const string FarmBuildSeconds = "FarmBuildSeconds";
public const string BarracksGoldCost = "BarracksGoldCost";
public const string BarracksWoodCost = "BarracksWoodCost";
public const string BarracksOreCost = "BarracksOreCost";
public const string LogCampWoodPerMinute = "LogCampWoodPerMinute";
public const string MineOrePerMinute = "MineOrePerMinute";
public const string FarmFoodPerMinute = "FarmFoodPerMinute";
public const string StartingGold = "StartingGold";
public const string HeadquartersGoldPerMinute = "HeadquartersGoldPerMinute";
public const string TownHallGoldCapacity = "TownHallGoldCapacity";
public const string TownHallWoodCapacity = "TownHallWoodCapacity";
public const string TownHallOreCapacity = "TownHallOreCapacity";
public const string TownHallFoodCapacity = "TownHallFoodCapacity";
private readonly IMongoCollection<GameSetting> _settings;
@@ -44,4 +60,23 @@ public class GameSettingsService
return Math.Max(1, setting.IntValue);
}
public async Task<int> GetNonNegativeIntAsync(string key, int defaultValue)
{
var now = DateTime.UtcNow;
var setting = await _settings.FindOneAndUpdateAsync(
x => x.Key == key,
Builders<GameSetting>.Update
.SetOnInsert(x => x.Key, key)
.SetOnInsert(x => x.IntValue, defaultValue)
.SetOnInsert(x => x.CreatedAtUtc, now)
.Set(x => x.UpdatedAtUtc, now),
new FindOneAndUpdateOptions<GameSetting>
{
IsUpsert = true,
ReturnDocument = ReturnDocument.After
});
return Math.Max(0, setting.IntValue);
}
}