mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-23 07:29:02 -08:00
112 lines
5.1 KiB
C#
112 lines
5.1 KiB
C#
using System.Reflection;
|
|
using System.Runtime.CompilerServices;
|
|
|
|
namespace King.Resources;
|
|
|
|
internal static class Resource
|
|
{
|
|
private static bool _sellLandErrorShown;
|
|
|
|
public static Stream Title => GetStream();
|
|
|
|
public static string InstructionsPrompt => GetString();
|
|
public static string InstructionsText(int years) => string.Format(GetString(), years);
|
|
|
|
public static string Status(
|
|
float rallods,
|
|
float countrymen,
|
|
float workers,
|
|
float land,
|
|
float landValue,
|
|
float plantingCost)
|
|
=> string.Format(
|
|
workers == 0 ? StatusWithWorkers : StatusSansWorkers,
|
|
rallods,
|
|
(int)countrymen,
|
|
(int)workers,
|
|
(int)land,
|
|
landValue,
|
|
plantingCost);
|
|
|
|
private static string StatusWithWorkers => GetString();
|
|
private static string StatusSansWorkers => GetString();
|
|
|
|
public static string SellLandPrompt => GetString();
|
|
public static string SellLandError(float farmLand)
|
|
{
|
|
var error = string.Format(GetString(), farmLand, _sellLandErrorShown ? "" : SellLandErrorReason);
|
|
_sellLandErrorShown = true;
|
|
return error;
|
|
}
|
|
private static string SellLandErrorReason => GetString();
|
|
|
|
public static string GiveRallodsPrompt => GetString();
|
|
public static string GiveRallodsError(float rallods) => string.Format(GetString(), rallods);
|
|
|
|
public static string PlantLandPrompt => GetString();
|
|
public static string PlantLandError1 => GetString();
|
|
public static string PlantLandError2(float farmLand) => string.Format(GetString(), farmLand);
|
|
public static string PlantLandError3(float rallods) => string.Format(GetString(), rallods);
|
|
|
|
public static string PollutionPrompt => GetString();
|
|
public static string PollutionError(float rallods) => string.Format(GetString(), rallods);
|
|
|
|
public static string DeathsStarvation(float deaths) => string.Format(GetString(), (int)deaths);
|
|
public static string DeathsPollution(int deaths) => string.Format(GetString(), deaths);
|
|
public static string FuneralExpenses(int expenses) => string.Format(GetString(), expenses);
|
|
public static string InsufficientReserves => GetString();
|
|
|
|
public static string WorkerMigration(int newWorkers) => string.Format(GetString(), newWorkers);
|
|
public static string Migration(int migration)
|
|
=> string.Format(migration < 0 ? Emigration : Immigration, Math.Abs(migration));
|
|
public static string Emigration => GetString();
|
|
public static string Immigration => GetString();
|
|
|
|
public static string LandPlanted(float landPlanted)
|
|
=> landPlanted > 0 ? string.Format(GetString(), (int)landPlanted) : "";
|
|
public static string Harvest(int yield, int income, bool hasIndustry)
|
|
=> string.Format(GetString(), yield, HarvestReason(hasIndustry), income);
|
|
private static string HarvestReason(bool hasIndustry) => hasIndustry ? GetString() : "";
|
|
|
|
public static string TourismEarnings(int income) => string.Format(GetString(), income);
|
|
public static string TourismDecrease(IRandom random) => string.Format(GetString(), TourismReason(random));
|
|
private static string TourismReason(IRandom random) => GetStrings()[random.Next(5)];
|
|
|
|
private static string EndAlso(IRandom random)
|
|
=> random.Next(10) switch
|
|
{
|
|
<= 3 => GetStrings()[0],
|
|
<= 6 => GetStrings()[1],
|
|
_ => GetStrings()[2]
|
|
};
|
|
|
|
public static string EndCongratulations(int termLength) => string.Format(GetString(), termLength);
|
|
private static string EndConsequences(IRandom random) => GetStrings()[random.Next(2)];
|
|
public static string EndForeignWorkers(IRandom random) => string.Format(GetString(), EndConsequences(random));
|
|
public static string EndManyDead(int deaths, IRandom random) => string.Format(GetString(), deaths, EndAlso(random));
|
|
public static string EndMoneyLeftOver() => GetString();
|
|
public static string EndOneThirdDead(IRandom random) => string.Format(GetString(), EndConsequences(random));
|
|
|
|
public static string SavedYearsPrompt => GetString();
|
|
public static string SavedYearsError(int years) => string.Format(GetString(), years);
|
|
public static string SavedTreasuryPrompt => GetString();
|
|
public static string SavedCountrymenPrompt => GetString();
|
|
public static string SavedWorkersPrompt => GetString();
|
|
public static string SavedLandPrompt => GetString();
|
|
public static string SavedLandError => GetString();
|
|
|
|
public static string Goodbye => GetString();
|
|
|
|
private static string[] GetStrings([CallerMemberName] string? name = null) => GetString(name).Split(';');
|
|
|
|
private static string GetString([CallerMemberName] string? name = null)
|
|
{
|
|
using var stream = GetStream(name);
|
|
using var reader = new StreamReader(stream);
|
|
return reader.ReadToEnd();
|
|
}
|
|
|
|
private static Stream GetStream([CallerMemberName] string? name = null) =>
|
|
Assembly.GetExecutingAssembly().GetManifestResourceStream($"{typeof(Resource).Namespace}.{name}.txt")
|
|
?? throw new Exception($"Could not find embedded resource stream '{name}'.");
|
|
} |