Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# Changelog Conspiratio.Lib

## 3.1.0

_01.01.2026_

**[DE]**
- Kleinere Refaktorisierungen des `NewGameManagers`
- Refaktorisierung: Benenne `ITextAnzeigen` um in `IShowText`
- Füge Resource Datei für statische, übersetzbare Texte hinzu (bisher mit deutsch und englisch als Sprache)

**[EN]**
- Small refactorings of `NewGameManagers`
- Refactoring: Rename `ITextAnzeigen` to `IShowText`
- Added a resource file for static localizable text (until now with german and english as languages)

## 3.0.0

_23.12.2024_
Expand Down
9 changes: 9 additions & 0 deletions Conspiratio.Lib/Allgemein/IShowText.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using System.Threading.Tasks;

namespace Conspiratio.Lib.Allgemein
{
public interface IShowText
{
Task ShowDialog(string text);
}
}
7 changes: 0 additions & 7 deletions Conspiratio.Lib/Allgemein/ITextAnzeigen.cs

This file was deleted.

39 changes: 26 additions & 13 deletions Conspiratio.Lib/Allgemein/NewGameManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,35 @@

using Conspiratio.Lib.Gameplay.Spielwelt;

using JetBrains.Annotations;

namespace Conspiratio.Lib.Allgemein
{
public class NewGameManager
{
private string _savegamePath;
private readonly string _savegamePath;

public NewGameManager(string savegamePath)
{
_savegamePath = savegamePath;
}

[PublicAPI]
public int MaxLengthOfGameName
{
get
{
string savegamePathWithFilename = Path.Combine(_savegamePath, "_1600.dat");
int savegamePathLength = savegamePathWithFilename.Length;
int maxlength = 256 - savegamePathLength;

if (maxlength < 0) // fallback from settings (standard: 12), if savegame path is longer then 256 chars
maxlength = SW.Statisch.GetMaxNameLength();

return maxlength;
}
}

public bool CreateNewGame(string name, int playerCount, bool cheating, bool showDeaths, bool testmode, out string error)
{
if (!ValidateName(name, out error))
Expand All @@ -27,9 +45,10 @@ public bool CreateNewGame(string name, int playerCount, bool cheating, bool show
return true;
}

[PublicAPI]
public bool ValidateName(string name, out string error)
{
error = "Der Spielname muss aus mindestens drei Zeichen bestehen";
error = Resources.The_game_name_must_consist_of_at_least_three_characters;

if (string.IsNullOrEmpty(name))
return false;
Expand All @@ -40,25 +59,19 @@ public bool ValidateName(string name, out string error)
error = "";
return true;
}


[PublicAPI]
public string SanitizeName(string name)
{
string savegamePathWithFilename = Path.Combine(_savegamePath, "_1600.dat");
int savegamePathLength = savegamePathWithFilename.Length;
int maxlength = 256 - savegamePathLength;

if (maxlength < 0) // fallback from settings (standard: 12), if savegame path is longer then 256 chars
maxlength = SW.Statisch.GetMaxNameLength();

name = RemoveInvalidChars(name);

if (name.Length > maxlength)
return name.Substring(0, maxlength);
if (name.Length > MaxLengthOfGameName)
return name.Substring(0, MaxLengthOfGameName);

return name;
}

private string RemoveInvalidChars(string filename)
private static string RemoveInvalidChars(string filename)
{
return string.Concat(filename.Split(Path.GetInvalidFileNameChars()));
}
Expand Down
6 changes: 3 additions & 3 deletions Conspiratio.Lib/Allgemein/UIHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ public class UIHelper
{
public IYesNoQuestion YesNoQuestion { get; private set; }

public ITextAnzeigen TextAnzeigen { get; private set; }
public IShowText ShowText { get; private set; }

public IBeziehungPflegen BeziehungPflegen { get; private set; }

Expand All @@ -22,12 +22,12 @@ public class UIHelper

public IUntergebeneDialog UntergebeneDialog { get; private set; }

public void Initialisieren(IYesNoQuestion yesNoQuestion, ITextAnzeigen textAnzeigen, IBeziehungPflegen beziehungPflegen, IBauwerkStiftenDialog bauwerkStiftenDialog,
public void Initialisieren(IYesNoQuestion yesNoQuestion, IShowText showText, IBeziehungPflegen beziehungPflegen, IBauwerkStiftenDialog bauwerkStiftenDialog,
IFestGebenDialog festGebenDialog, IPolitischeWeltkarteDialog politischeWeltkarteDialog, ITestamentAnzeigenDialog testamentAnzeigenDialog,
IProzentwertFestlegenDialog prozentwertFestlegenDialog, IUntergebeneDialog untergebeneDialog)
{
YesNoQuestion = yesNoQuestion;
TextAnzeigen = textAnzeigen;
ShowText = showText;
BeziehungPflegen = beziehungPflegen;
BauwerkStiftenDialog = bauwerkStiftenDialog;
FestGebenDialog = festGebenDialog;
Expand Down
24 changes: 20 additions & 4 deletions Conspiratio.Lib/Conspiratio.Lib.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,31 @@
<PackagePath>\</PackagePath>
</None>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.de.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Compile Update="Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<PackageReference Include="JetBrains.Annotations" Version="2024.3.0" PrivateAssets="All" />
</ItemGroup>
<PropertyGroup>
<AssemblyVersion>3.0.0</AssemblyVersion>
<FileVersion>3.0.0</FileVersion>
<AssemblyVersion>3.1.0</AssemblyVersion>
<FileVersion>3.1.0</FileVersion>
<Description>A library with gameplay logic for the free and open-source game Conspiratio</Description>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<Version>$(AssemblyVersion)</Version>
<Version>3.1.0</Version>
<Title>$(AssemblyName)</Title>
<Authors>Conspiratio</Authors>
<Copyright>Copyright © 2011-2024</Copyright>
<Copyright>Copyright © 2011-2025</Copyright>
<PackageProjectUrl>https://www.conspiratio.net</PackageProjectUrl>
<PackageIcon>icon.png</PackageIcon>
<PackageTags>conspiratio;game;library</PackageTags>
Expand Down
2 changes: 1 addition & 1 deletion Conspiratio.Lib/Gameplay/Spielwelt/DynamischeSpieldaten.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2791,7 +2791,7 @@ private void SpielerKlagtXAn(int iAngeklagter)
#region BelTextAnzeigen
public void BelTextAnzeigen(string text)
{
SW.UI.TextAnzeigen.ShowDialog(text);
SW.UI.ShowText.ShowDialog(text);
}
#endregion

Expand Down
71 changes: 71 additions & 0 deletions Conspiratio.Lib/Resources.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions Conspiratio.Lib/Resources.en.resx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<root>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="The game name must consist of at least three characters" xml:space="preserve">
<value>The game name must consist of at least three characters</value>
</data>
</root>
24 changes: 24 additions & 0 deletions Conspiratio.Lib/Resources.resx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>

<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">

</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="The game name must consist of at least three characters" xml:space="preserve">
<value>Der Spielname muss aus mindestens drei Zeichen bestehen</value>
</data>
</root>