Adds Handheld Radio/Listener system (#1457)

* re-do of old PR that got fuckied upp

* simplify foreach as suggested

* pass distance to PassSpeechData for a check, remove GetListenRange()

* adds RadioQuery instead of subscribing/unsubscribing

* change SpreadMessage to accept owner rather than component

* change RadioQuery to EntityQuery

* remove declared EntityQuery (oops, didn't know what shadowcommander meant)

* refactor ListeningSystem & refactor added chat logic into listen sys

* IGNORE the oopsie STOP LOOKING
This commit is contained in:
Bright0
2020-07-28 16:13:39 -06:00
committed by GitHub
parent b5667230c1
commit 86a6ac4a2b
8 changed files with 256 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
using Content.Server.GameObjects.Components.Interactable;
using JetBrains.Annotations;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Robust.Shared.GameObjects;
using Robust.Shared.GameObjects.Systems;
using Robust.Shared.Interfaces.GameObjects;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Content.Server.GameObjects.EntitySystems
{
class RadioSystem : EntitySystem
{
private List<string> _messages;
public override void Initialize()
{
base.Initialize();
EntityQuery = new TypeEntityQuery(typeof(RadioComponent));
_messages = new List<string>();
}
public void SpreadMessage(IEntity source, string message)
{
if (_messages.Contains(message))
{
return;
}
_messages.Add(message);
foreach (var radioEntity in RelevantEntities)
{
var radio = radioEntity.GetComponent<RadioComponent>();
if (radioEntity == source || !radio.RadioOn)
{
continue;
}
radio.Speaker(message);
}
_messages.Remove(message);
}
}
}