News UI overhaul and PDA notifications (#19610)
This commit is contained in:
55
Content.Shared/MassMedia/Components/NewsWriterBuiMessages.cs
Normal file
55
Content.Shared/MassMedia/Components/NewsWriterBuiMessages.cs
Normal file
@@ -0,0 +1,55 @@
|
||||
using Content.Shared.MassMedia.Systems;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.MassMedia.Components;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum NewsWriterUiKey : byte
|
||||
{
|
||||
Key
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class NewsWriterBoundUserInterfaceState : BoundUserInterfaceState
|
||||
{
|
||||
public readonly NewsArticle[] Articles;
|
||||
public readonly bool PublishEnabled;
|
||||
public readonly TimeSpan NextPublish;
|
||||
|
||||
public NewsWriterBoundUserInterfaceState(NewsArticle[] articles, bool publishEnabled, TimeSpan nextPublish)
|
||||
{
|
||||
Articles = articles;
|
||||
PublishEnabled = publishEnabled;
|
||||
NextPublish = nextPublish;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class NewsWriterPublishMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public readonly string Title;
|
||||
public readonly string Content;
|
||||
|
||||
|
||||
public NewsWriterPublishMessage(string title, string content)
|
||||
{
|
||||
Title = title;
|
||||
Content = content;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class NewsWriterDeleteMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public readonly int ArticleNum;
|
||||
|
||||
public NewsWriterDeleteMessage(int num)
|
||||
{
|
||||
ArticleNum = num;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class NewsWriterArticlesRequestMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
using Content.Shared.MassMedia.Systems;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.MassMedia.Components;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum NewsWriteUiKey : byte
|
||||
{
|
||||
Key
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class NewsWriteBoundUserInterfaceState : BoundUserInterfaceState
|
||||
{
|
||||
public NewsArticle[] Articles;
|
||||
public bool ShareAvalible;
|
||||
|
||||
public NewsWriteBoundUserInterfaceState(NewsArticle[] articles, bool shareAvalible)
|
||||
{
|
||||
Articles = articles;
|
||||
ShareAvalible = shareAvalible;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class NewsWriteShareMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public readonly string Name;
|
||||
public readonly string Content;
|
||||
public NewsWriteShareMessage(string name, string content)
|
||||
{
|
||||
Name = name;
|
||||
Content = content;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class NewsWriteDeleteMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public int ArticleNum;
|
||||
|
||||
public NewsWriteDeleteMessage(int num)
|
||||
{
|
||||
ArticleNum = num;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class NewsWriteArticlesRequestMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public NewsWriteArticlesRequestMessage()
|
||||
{
|
||||
}
|
||||
}
|
||||
10
Content.Shared/MassMedia/Components/StationNewsComponent.cs
Normal file
10
Content.Shared/MassMedia/Components/StationNewsComponent.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Content.Shared.MassMedia.Systems;
|
||||
|
||||
namespace Content.Shared.MassMedia.Components;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class StationNewsComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public List<NewsArticle> Articles = new();
|
||||
}
|
||||
@@ -4,16 +4,31 @@ namespace Content.Shared.MassMedia.Systems;
|
||||
|
||||
public abstract class SharedNewsSystem : EntitySystem
|
||||
{
|
||||
public const int MaxNameLength = 25;
|
||||
public const int MaxArticleLength = 2048;
|
||||
public const int MaxTitleLength = 25;
|
||||
public const int MaxContentLength = 2048;
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public struct NewsArticle
|
||||
{
|
||||
public string Name;
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public string Title;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public string Content;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public string? Author;
|
||||
|
||||
[ViewVariables]
|
||||
public ICollection<(NetEntity, uint)>? AuthorStationRecordKeyIds;
|
||||
|
||||
[ViewVariables]
|
||||
public TimeSpan ShareTime;
|
||||
}
|
||||
|
||||
[ByRefEvent]
|
||||
public record struct NewsArticlePublishedEvent(NewsArticle Article);
|
||||
|
||||
[ByRefEvent]
|
||||
public record struct NewsArticleDeletedEvent;
|
||||
|
||||
Reference in New Issue
Block a user