Fix Client RoleSystem not inheriting SharedRoleSystem, network job component (#21436)

This commit is contained in:
DrSmugleaf
2023-11-07 14:44:53 -08:00
committed by GitHub
parent 651dffba16
commit dc3b6e31b2
11 changed files with 25 additions and 24 deletions

View File

@@ -1,5 +1,7 @@
namespace Content.Client.Roles; using Content.Shared.Roles;
public sealed class RoleSystem : EntitySystem namespace Content.Client.Roles;
public sealed class RoleSystem : SharedRoleSystem
{ {
} }

View File

@@ -200,7 +200,7 @@ namespace Content.Server.GameTicking
_mind.SetUserId(newMind, data.UserId); _mind.SetUserId(newMind, data.UserId);
var jobPrototype = _prototypeManager.Index<JobPrototype>(jobId); var jobPrototype = _prototypeManager.Index<JobPrototype>(jobId);
var job = new JobComponent { PrototypeId = jobId }; var job = new JobComponent { Prototype = jobId };
_roles.MindAddRole(newMind, job, silent: silent); _roles.MindAddRole(newMind, job, silent: silent);
var jobName = _jobs.MindTryGetJobName(newMind); var jobName = _jobs.MindTryGetJobName(newMind);

View File

@@ -1,4 +1,3 @@
using Content.Server.Objectives.Components;
using Content.Shared.Objectives.Components; using Content.Shared.Objectives.Components;
using Content.Shared.Roles.Jobs; using Content.Shared.Roles.Jobs;
@@ -25,7 +24,7 @@ public sealed class NotJobRequirementSystem : EntitySystem
if (!TryComp<JobComponent>(args.MindId, out var job)) if (!TryComp<JobComponent>(args.MindId, out var job))
return; return;
if (job.PrototypeId == comp.Job) if (job.Prototype == comp.Job)
args.Cancelled = true; args.Cancelled = true;
} }
} }

View File

@@ -4,7 +4,6 @@ using Content.Server.Mind;
using Content.Shared.Mind; using Content.Shared.Mind;
using Content.Shared.Roles; using Content.Shared.Roles;
using Content.Shared.Roles.Jobs; using Content.Shared.Roles.Jobs;
using Robust.Shared.Prototypes;
namespace Content.Server.Roles.Jobs; namespace Content.Server.Roles.Jobs;
@@ -48,6 +47,6 @@ public sealed class JobSystem : SharedJobSystem
if (MindHasJobWithId(mindId, jobPrototypeId)) if (MindHasJobWithId(mindId, jobPrototypeId))
return; return;
_roles.MindAddRole(mindId, new JobComponent { PrototypeId = jobPrototypeId }); _roles.MindAddRole(mindId, new JobComponent { Prototype = jobPrototypeId });
} }
} }

View File

@@ -39,7 +39,7 @@ public sealed class SpawnPointSystem : EntitySystem
if (_gameTicker.RunLevel != GameRunLevel.InRound && if (_gameTicker.RunLevel != GameRunLevel.InRound &&
spawnPoint.SpawnType == SpawnPointType.Job && spawnPoint.SpawnType == SpawnPointType.Job &&
(args.Job == null || spawnPoint.Job?.ID == args.Job.PrototypeId)) (args.Job == null || spawnPoint.Job?.ID == args.Job.Prototype))
{ {
possiblePositions.Add(xform.Coordinates); possiblePositions.Add(xform.Coordinates);
} }

View File

@@ -97,7 +97,7 @@ public sealed class StationSpawningSystem : SharedStationSpawningSystem
EntityUid? station, EntityUid? station,
EntityUid? entity = null) EntityUid? entity = null)
{ {
_prototypeManager.TryIndex(job?.PrototypeId ?? string.Empty, out JobPrototype? prototype); _prototypeManager.TryIndex(job?.Prototype ?? string.Empty, out JobPrototype? prototype);
// If we're not spawning a humanoid, we're gonna exit early without doing all the humanoid stuff. // If we're not spawning a humanoid, we're gonna exit early without doing all the humanoid stuff.
if (prototype?.JobEntity != null) if (prototype?.JobEntity != null)
@@ -161,7 +161,7 @@ public sealed class StationSpawningSystem : SharedStationSpawningSystem
private void DoJobSpecials(JobComponent? job, EntityUid entity) private void DoJobSpecials(JobComponent? job, EntityUid entity)
{ {
if (!_prototypeManager.TryIndex(job?.PrototypeId ?? string.Empty, out JobPrototype? prototype)) if (!_prototypeManager.TryIndex(job?.Prototype ?? string.Empty, out JobPrototype? prototype))
return; return;
foreach (var jobSpecial in prototype.Special) foreach (var jobSpecial in prototype.Special)

View File

@@ -39,11 +39,11 @@ public sealed partial class BuyerDepartmentCondition : ListingCondition
var jobs = ent.System<SharedJobSystem>(); var jobs = ent.System<SharedJobSystem>();
jobs.MindTryGetJob(mindId, out var job, out _); jobs.MindTryGetJob(mindId, out var job, out _);
if (Blacklist != null && job?.PrototypeId != null) if (Blacklist != null && job?.Prototype != null)
{ {
foreach (var department in prototypeManager.EnumeratePrototypes<DepartmentPrototype>()) foreach (var department in prototypeManager.EnumeratePrototypes<DepartmentPrototype>())
{ {
if (department.Roles.Contains(job.PrototypeId) && Blacklist.Contains(department.ID)) if (department.Roles.Contains(job.Prototype) && Blacklist.Contains(department.ID))
return false; return false;
} }
} }
@@ -52,11 +52,11 @@ public sealed partial class BuyerDepartmentCondition : ListingCondition
{ {
var found = false; var found = false;
if (job?.PrototypeId != null) if (job?.Prototype != null)
{ {
foreach (var department in prototypeManager.EnumeratePrototypes<DepartmentPrototype>()) foreach (var department in prototypeManager.EnumeratePrototypes<DepartmentPrototype>())
{ {
if (department.Roles.Contains(job.PrototypeId) && Whitelist.Contains(department.ID)) if (department.Roles.Contains(job.Prototype) && Whitelist.Contains(department.ID))
{ {
found = true; found = true;
break; break;

View File

@@ -38,13 +38,13 @@ public sealed partial class BuyerJobCondition : ListingCondition
if (Blacklist != null) if (Blacklist != null)
{ {
if (job?.PrototypeId != null && Blacklist.Contains(job.PrototypeId)) if (job?.Prototype != null && Blacklist.Contains(job.Prototype))
return false; return false;
} }
if (Whitelist != null) if (Whitelist != null)
{ {
if (job?.PrototypeId == null || !Whitelist.Contains(job.PrototypeId)) if (job?.Prototype == null || !Whitelist.Contains(job.Prototype))
return false; return false;
} }

View File

@@ -1,13 +1,14 @@
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
namespace Content.Shared.Roles.Jobs; namespace Content.Shared.Roles.Jobs;
/// <summary> /// <summary>
/// Added to mind entities to hold the data for the player's current job. /// Added to mind entities to hold the data for the player's current job.
/// </summary> /// </summary>
[RegisterComponent] [RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class JobComponent : Component public sealed partial class JobComponent : Component
{ {
[DataField("prototype", required: true, customTypeSerializer: typeof(PrototypeIdSerializer<JobPrototype>))] [DataField(required: true), AutoNetworkedField]
public string? PrototypeId; public ProtoId<JobPrototype>? Prototype;
} }

View File

@@ -83,7 +83,7 @@ public abstract class SharedJobSystem : EntitySystem
public bool MindHasJobWithId(EntityUid? mindId, string prototypeId) public bool MindHasJobWithId(EntityUid? mindId, string prototypeId)
{ {
return CompOrNull<JobComponent>(mindId)?.PrototypeId == prototypeId; return CompOrNull<JobComponent>(mindId)?.Prototype == prototypeId;
} }
public bool MindTryGetJob( public bool MindTryGetJob(
@@ -95,8 +95,8 @@ public abstract class SharedJobSystem : EntitySystem
prototype = null; prototype = null;
return TryComp(mindId, out comp) && return TryComp(mindId, out comp) &&
comp.PrototypeId != null && comp.Prototype != null &&
_prototypes.TryIndex(comp.PrototypeId, out prototype); _prototypes.TryIndex(comp.Prototype, out prototype);
} }
/// <summary> /// <summary>

View File

@@ -25,7 +25,7 @@ public abstract class SharedRoleSystem : EntitySystem
{ {
var name = "game-ticker-unknown-role"; var name = "game-ticker-unknown-role";
string? playTimeTracker = null; string? playTimeTracker = null;
if (component.PrototypeId != null && _prototypes.TryIndex(component.PrototypeId, out JobPrototype? job)) if (component.Prototype != null && _prototypes.TryIndex(component.Prototype, out JobPrototype? job))
{ {
name = job.Name; name = job.Name;
playTimeTracker = job.PlayTimeTracker; playTimeTracker = job.PlayTimeTracker;