reinit branch
This commit is contained in:
234
OrekiWoofsBeehives/Config.cs
Normal file
234
OrekiWoofsBeehives/Config.cs
Normal file
@@ -0,0 +1,234 @@
|
||||
using OrekiWoofsBees.Common.Configs;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace OrekiWoofsBeehives;
|
||||
|
||||
[ProtoContract(SkipConstructor = true)]
|
||||
public class Config
|
||||
{
|
||||
public static Config Instance { get; internal set; } = new();
|
||||
|
||||
[ProtoMember(1)]
|
||||
[ConfigCommand(serverSide: true, Min = 5, Max = 70)]
|
||||
public int BeehiveRadius { get; set; } = 35;
|
||||
|
||||
[ProtoMember(41)]
|
||||
[ConfigCommand(serverSide: true)]
|
||||
public bool YieldBoost { get; set; } = true;
|
||||
|
||||
[ProtoMember(42)]
|
||||
[ConfigCommand(serverSide: true)]
|
||||
public bool SpeedBoost { get; set; } = false;
|
||||
|
||||
[ProtoMember(2)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 1)]
|
||||
public float GrowthSpeedBonus { get; set; } = 0.2f;
|
||||
|
||||
[ProtoMember(37)]
|
||||
[ConfigCommand(serverSide: true, Min = 0.1, Max = 3)]
|
||||
public float YieldMultiplier { get; set; } = 1.2f;
|
||||
|
||||
[ProtoMember(31)]
|
||||
[ConfigCommand(serverSide: true, Min = 5, Max = 50)]
|
||||
public int PlantsFullBoostDistanceToHive { get; set; } = 20;
|
||||
|
||||
[ProtoMember(32)]
|
||||
[ConfigCommand(serverSide: true, Min = 100, Max = 5000)]
|
||||
public int MinBeesForPlantBoost { get; set; } = 1000;
|
||||
|
||||
[ProtoMember(46)]
|
||||
[ConfigCommand(serverSide: true, AllowedValues = new[] { "Full", "LinearPopulation", "NormalizedLogk10Population" })]
|
||||
public string BoostCalculation { get; set; } = "NormalizedLogk10Population";
|
||||
|
||||
[ProtoMember(47)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 100)]
|
||||
public float PopulationPercentForMaxBoost { get; set; } = 100f;
|
||||
|
||||
[ProtoMember(48)]
|
||||
[ConfigCommand(serverSide: true, AllowedValues = new[] { "Additive", "Max" })]
|
||||
public string MultipleBeehivesBoostCombination { get; set; } = "Max";
|
||||
|
||||
// bee population
|
||||
[ProtoMember(3)]
|
||||
[ConfigCommand(serverSide: true, Min = 1000, Max = 200000)]
|
||||
public int MaxBeePopulation { get; set; } = 50000;
|
||||
|
||||
[ProtoMember(4)]
|
||||
[ConfigCommand(serverSide: true, Min = 100, Max = 50000)]
|
||||
public int InitialBeePopulation { get; set; } = 5000;
|
||||
|
||||
[ProtoMember(49)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 200000)]
|
||||
public int BeehiveConsideredEmptyBelowPopulation { get; set; } = 500;
|
||||
|
||||
[ProtoMember(50)]
|
||||
[ConfigCommand(serverSide: true, Min = 40, Max = 100)]
|
||||
public int PopulationPercentRequirementForSwarm { get; set; } = 80;
|
||||
|
||||
[ProtoMember(51)]
|
||||
[ConfigCommand(serverSide: true, Min = 1, Max = 70)]
|
||||
public int SwarmPopulationPercentage { get; set; } = 40;
|
||||
|
||||
[ProtoMember(54)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 70)]
|
||||
public int SwarmPopulationPercentageWhenNoBeehivesAvailable { get; set; } = 5;
|
||||
|
||||
[ProtoMember(52)]
|
||||
[ConfigCommand(serverSide: true, Min = 1, Max = 30)]
|
||||
public int SwarmCooldownDays { get; set; } = 8;
|
||||
|
||||
[ProtoMember(53)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 100)]
|
||||
public int SwarmReturnToOriginOnFailedMigrationPercent { get; set; } = 20;
|
||||
|
||||
[ProtoMember(56)]
|
||||
[ConfigCommand(serverSide: true, Min = 1, Max = 1000)]
|
||||
public int PreSwarmDurationHours { get; set; } = 40;
|
||||
|
||||
[ProtoMember(55)]
|
||||
[ConfigCommand(serverSide: true)]
|
||||
public bool EnableSwarms { get; set; } = true;
|
||||
|
||||
[ProtoMember(57)]
|
||||
[ConfigCommand(serverSide: true)]
|
||||
public bool SwarmSettingAfterPlacing { get; set; } = false;
|
||||
|
||||
[ProtoMember(5)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 1000)]
|
||||
public int BaseDeathsPerDay { get; set; } = 100;
|
||||
|
||||
[ProtoMember(6)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 50)]
|
||||
public int FlowerThreshold { get; set; } = 10;
|
||||
|
||||
[ProtoMember(7)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 500)]
|
||||
public int DeathPerMissingFlower { get; set; } = 100;
|
||||
|
||||
[ProtoMember(8)]
|
||||
[ConfigCommand(serverSide: true, Min = 1, Max = 30)]
|
||||
public float DoublingTimeDays { get; set; } = 9.0f;
|
||||
|
||||
[ProtoMember(9)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 2000)]
|
||||
public int BonusGrowthPerFilledFrame { get; set; } = 100;
|
||||
|
||||
// honey production
|
||||
[ProtoMember(10)]
|
||||
[ConfigCommand(serverSide: true, Min = 1, Max = 50)]
|
||||
public float ReferenceFlowers { get; set; } = 10.0f;
|
||||
|
||||
[ProtoMember(11)]
|
||||
[ConfigCommand(serverSide: true, Min = 1000, Max = 50000)]
|
||||
public float ReferenceBees { get; set; } = 25000.0f;
|
||||
|
||||
[ProtoMember(12)]
|
||||
[ConfigCommand(serverSide: true, Min = 1, Max = 100)]
|
||||
public int MaxFlowersForHoneyProduction { get; set; } = 25;
|
||||
|
||||
// winter
|
||||
[ProtoMember(38)]
|
||||
[ConfigCommand(serverSide: true)]
|
||||
public bool WinterHardMode { get; set; } = false;
|
||||
|
||||
[ProtoMember(39)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 50000)]
|
||||
public int WinterDailyBeeDeathsWithoutFood { get; set; } = 500;
|
||||
|
||||
[ProtoMember(40)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 1)]
|
||||
public float WinterFoodConsumptionMultiplier { get; set; } = 0.1f;
|
||||
|
||||
// weather effects
|
||||
[ProtoMember(15)]
|
||||
[ConfigCommand(serverSide: true, Min = -20, Max = 20)]
|
||||
public float MinTemperatureGrowth { get; set; } = 0f;
|
||||
|
||||
[ProtoMember(16)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 40)]
|
||||
public float MaxTemperatureGrowth { get; set; } = 10f;
|
||||
|
||||
[ProtoMember(35)]
|
||||
[ConfigCommand(serverSide: true)]
|
||||
public bool GreenhouseAffectsBeehive { get; set; } = true;
|
||||
|
||||
// particles
|
||||
[ProtoMember(28)]
|
||||
[ConfigCommand(serverSide: true, Min = 100, Max = 5000)]
|
||||
public int BeesPerParticle { get; set; } = 1000;
|
||||
|
||||
[ProtoMember(34)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 50)]
|
||||
public int BeehiveAlwaysSpawnNumberOfBees { get; set; } = 0;
|
||||
|
||||
// client-side
|
||||
[ProtoMember(29)]
|
||||
[ConfigCommand(serverSide: false, Min = 0, Max = 4)]
|
||||
public int InformationVerbosity { get; set; } = 1;
|
||||
|
||||
[ProtoMember(44)]
|
||||
[ConfigCommand(serverSide: false)]
|
||||
public bool DisableServerRecommended { get; set; } = false;
|
||||
|
||||
[ProtoMember(33)]
|
||||
[ConfigCommand(serverSide: false, Min = 0, Max = 1)]
|
||||
public float BeehiveAmbientVolume { get; set; } = 0.5f;
|
||||
|
||||
// server-side
|
||||
[ProtoMember(43)]
|
||||
[ConfigCommand(serverSide: true, AllowedValues = new[] { "ClientSide", "ServerRecommended", "ServerForced" })]
|
||||
public string InformationVerbosityServerSideType { get; set; } = "ClientSide";
|
||||
|
||||
[ProtoMember(45)]
|
||||
[ConfigCommand(serverSide: true, Min = 0, Max = 4)]
|
||||
public int InformationVerbosityServer { get; set; } = 1;
|
||||
|
||||
public InformationVerbosityServerSideType GetInformationVerbosityServerSideType()
|
||||
{
|
||||
return InformationVerbosityServerSideType switch
|
||||
{
|
||||
"ClientSide" => OrekiWoofsBeehives.InformationVerbosityServerSideType.ClientSide,
|
||||
"ServerRecommended" => OrekiWoofsBeehives.InformationVerbosityServerSideType.ServerRecommended,
|
||||
"ServerForced" => OrekiWoofsBeehives.InformationVerbosityServerSideType.ServerForced,
|
||||
_ => OrekiWoofsBeehives.InformationVerbosityServerSideType.ClientSide,
|
||||
};
|
||||
}
|
||||
|
||||
public int GetEffectiveInformationVerbosity()
|
||||
{
|
||||
switch (GetInformationVerbosityServerSideType())
|
||||
{
|
||||
case OrekiWoofsBeehives.InformationVerbosityServerSideType.ClientSide:
|
||||
return InformationVerbosity;
|
||||
case OrekiWoofsBeehives.InformationVerbosityServerSideType.ServerRecommended:
|
||||
if (DisableServerRecommended)
|
||||
return InformationVerbosity;
|
||||
return InformationVerbosityServer;
|
||||
case OrekiWoofsBeehives.InformationVerbosityServerSideType.ServerForced:
|
||||
return InformationVerbosityServer;
|
||||
default:
|
||||
return InformationVerbosity;
|
||||
}
|
||||
}
|
||||
|
||||
public BoostCalculationType GetBoostCalculationType()
|
||||
{
|
||||
return BoostCalculation switch
|
||||
{
|
||||
"Full" => BoostCalculationType.Full,
|
||||
"LinearPopulation" => BoostCalculationType.LinearPopulation,
|
||||
"NormalizedLogk10Population" => BoostCalculationType.NormalizedLogk10Population,
|
||||
_ => BoostCalculationType.Full,
|
||||
};
|
||||
}
|
||||
|
||||
public MultipleBeehivesBoostCombinationType GetMultipleBeehivesBoostCombinationType()
|
||||
{
|
||||
return MultipleBeehivesBoostCombination switch
|
||||
{
|
||||
"Additive" => MultipleBeehivesBoostCombinationType.Additive,
|
||||
"Max" => MultipleBeehivesBoostCombinationType.Max,
|
||||
_ => MultipleBeehivesBoostCombinationType.Max,
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user