Simple sponsorship system (#1189)

* simple sponsorship system

* priority Join

* OOC Sponsor Color

* Update CP14SponsorRolePrototype.cs

* loadout sponsorship

* bruh

* refactor to interfaces

* Update CP14ClientSponsorManager.cs

* finish loadout option

* role pass
This commit is contained in:
Ed
2025-04-17 19:55:25 +03:00
committed by GitHub
parent 1a0136c21f
commit 39ca6175e6
29 changed files with 491 additions and 21 deletions

View File

@@ -2,12 +2,14 @@ using System.Collections.Immutable;
using System.Linq;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using Content.Server._CP14.Sponsor;
using Content.Server.Administration.Managers;
using Content.Server.Chat.Managers;
using Content.Server.Connection.IPIntel;
using Content.Server.Database;
using Content.Server.GameTicking;
using Content.Server.Preferences.Managers;
using Content.Shared._CP14.Sponsor;
using Content.Shared.CCVar;
using Content.Shared.GameTicking;
using Content.Shared.Players.PlayTimeTracking;
@@ -64,6 +66,7 @@ namespace Content.Server.Connection
[Dependency] private readonly IChatManager _chatManager = default!;
[Dependency] private readonly IHttpClientHolder _http = default!;
[Dependency] private readonly IAdminManager _adminManager = default!;
[Dependency] private readonly ICP14SponsorManager _sponsor = default!; //CP14 Priority Join
private ISawmill _sawmill = default!;
private readonly Dictionary<NetUserId, TimeSpan> _temporaryBypasses = [];
@@ -375,11 +378,11 @@ namespace Content.Server.Connection
public async Task<bool> HavePrivilegedJoin(NetUserId userId)
{
var adminBypass = _cfg.GetCVar(CCVars.AdminBypassMaxPlayers) && await _db.GetAdminDataForAsync(userId) != null;
//var havePriorityJoin = _sponsors
var havePriorityJoin = _sponsor.UserHasFeature(userId, "PriorityJoin", false);
var wasInGame = EntitySystem.TryGet<GameTicker>(out var ticker) &&
ticker.PlayerGameStatuses.TryGetValue(userId, out var status) &&
status == PlayerGameStatus.JoinedGame;
return adminBypass || wasInGame;
return adminBypass || wasInGame || havePriorityJoin;
}
//CP14 Join Queue end
}