[feat] Donate extra slots
This commit is contained in:
@@ -8,5 +8,7 @@
|
|||||||
<cc:CommandButton Command="shutdown" Text="{Loc server-shutdown}" />
|
<cc:CommandButton Command="shutdown" Text="{Loc server-shutdown}" />
|
||||||
<cc:CommandButton Name="SetOocButton" Command="setooc" Text="{Loc server-ooc-toggle}" ToggleMode="True" />
|
<cc:CommandButton Name="SetOocButton" Command="setooc" Text="{Loc server-ooc-toggle}" ToggleMode="True" />
|
||||||
<cc:CommandButton Name="SetLoocButton" Command="setlooc" Text="{Loc server-looc-toggle}" ToggleMode="True" />
|
<cc:CommandButton Name="SetLoocButton" Command="setlooc" Text="{Loc server-looc-toggle}" ToggleMode="True" />
|
||||||
|
<cc:CommandButton Name="SetPanicbunkerButton" Command="panicbunker" Text="{Loc server-panicbunker-toggle}" ToggleMode="True" />
|
||||||
|
<cc:CommandButton Name="SetStalinBunker" Command="stalinbunker" Text="{Loc server-stalin-toggle}" ToggleMode="True" />
|
||||||
</GridContainer>
|
</GridContainer>
|
||||||
</Control>
|
</Control>
|
||||||
|
|||||||
@@ -118,6 +118,7 @@ namespace Content.Client.Preferences.UI
|
|||||||
Loc.GetString("character-setup-gui-create-new-character-button-tooltip",
|
Loc.GetString("character-setup-gui-create-new-character-button-tooltip",
|
||||||
("maxCharacters", _preferencesManager.Settings!.MaxCharacterSlots));
|
("maxCharacters", _preferencesManager.Settings!.MaxCharacterSlots));
|
||||||
|
|
||||||
|
var isDisplayedMaxSlots = false;
|
||||||
foreach (var (slot, character) in _preferencesManager.Preferences!.Characters)
|
foreach (var (slot, character) in _preferencesManager.Preferences!.Characters)
|
||||||
{
|
{
|
||||||
if (character is null)
|
if (character is null)
|
||||||
@@ -125,6 +126,10 @@ namespace Content.Client.Preferences.UI
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isDisplayedMaxSlots = numberOfFullSlots >= _preferencesManager.Settings.MaxCharacterSlots;
|
||||||
|
if (isDisplayedMaxSlots)
|
||||||
|
break;
|
||||||
|
|
||||||
numberOfFullSlots++;
|
numberOfFullSlots++;
|
||||||
var characterPickerButton = new CharacterPickerButton(_entityManager,
|
var characterPickerButton = new CharacterPickerButton(_entityManager,
|
||||||
_preferencesManager,
|
_preferencesManager,
|
||||||
@@ -145,8 +150,7 @@ namespace Content.Client.Preferences.UI
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
_createNewCharacterButton.Disabled =
|
_createNewCharacterButton.Disabled = isDisplayedMaxSlots;
|
||||||
numberOfFullSlots >= _preferencesManager.Settings.MaxCharacterSlots;
|
|
||||||
Characters.AddChild(_createNewCharacterButton);
|
Characters.AddChild(_createNewCharacterButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ namespace Content.Server.Preferences.Managers
|
|||||||
private readonly Dictionary<NetUserId, PlayerPrefData> _cachedPlayerPrefs =
|
private readonly Dictionary<NetUserId, PlayerPrefData> _cachedPlayerPrefs =
|
||||||
new();
|
new();
|
||||||
|
|
||||||
private int MaxCharacterSlots => _cfg.GetCVar(CCVars.GameMaxCharacterSlots);
|
//private int MaxCharacterSlots => _cfg.GetCVar(CCVars.GameMaxCharacterSlots);
|
||||||
|
|
||||||
public void Init()
|
public void Init()
|
||||||
{
|
{
|
||||||
@@ -57,7 +57,7 @@ namespace Content.Server.Preferences.Managers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (index < 0 || index >= MaxCharacterSlots)
|
if (index < 0 || index >= GetMaxUserCharacterSlots(userId))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -97,7 +97,7 @@ namespace Content.Server.Preferences.Managers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (slot < 0 || slot >= MaxCharacterSlots)
|
if (slot < 0 || slot >= GetMaxUserCharacterSlots(userId))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -133,7 +133,7 @@ namespace Content.Server.Preferences.Managers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (slot < 0 || slot >= MaxCharacterSlots)
|
if (slot < 0 || slot >= GetMaxUserCharacterSlots(userId))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -217,7 +217,7 @@ namespace Content.Server.Preferences.Managers
|
|||||||
msg.Preferences = prefs;
|
msg.Preferences = prefs;
|
||||||
msg.Settings = new GameSettings
|
msg.Settings = new GameSettings
|
||||||
{
|
{
|
||||||
MaxCharacterSlots = MaxCharacterSlots
|
MaxCharacterSlots = GetMaxUserCharacterSlots(session.UserId)
|
||||||
};
|
};
|
||||||
_netManager.ServerSendMessage(msg, session.ConnectedClient);
|
_netManager.ServerSendMessage(msg, session.ConnectedClient);
|
||||||
}
|
}
|
||||||
@@ -234,6 +234,12 @@ namespace Content.Server.Preferences.Managers
|
|||||||
return _cachedPlayerPrefs.ContainsKey(session.UserId);
|
return _cachedPlayerPrefs.ContainsKey(session.UserId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int GetMaxUserCharacterSlots(NetUserId userId)
|
||||||
|
{
|
||||||
|
var maxSlots = _cfg.GetCVar(CCVars.GameMaxCharacterSlots);
|
||||||
|
var extraSlots = _sponsors.TryGetInfo(userId, out var sponsor) ? sponsor.ExtraSlots : 0;
|
||||||
|
return maxSlots + extraSlots;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tries to get the preferences from the cache
|
/// Tries to get the preferences from the cache
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ public sealed class SponsorInfo
|
|||||||
|
|
||||||
[JsonPropertyName("allowedMarkings")]
|
[JsonPropertyName("allowedMarkings")]
|
||||||
public string[] AllowedMarkings { get; set; } = Array.Empty<string>();
|
public string[] AllowedMarkings { get; set; } = Array.Empty<string>();
|
||||||
|
|
||||||
|
[JsonPropertyName("extraSlots")]
|
||||||
|
public int ExtraSlots { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user