Skip to content

Commit

Permalink
Books hyperlink URL open (#2172)
Browse files Browse the repository at this point in the history
  • Loading branch information
pxc1984 authored May 31, 2024
1 parent 6755836 commit 81f061b
Show file tree
Hide file tree
Showing 12 changed files with 128 additions and 2 deletions.
21 changes: 21 additions & 0 deletions Content.Client/Corvax/HyperLink/HyperLinkSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Inspired by Nyanotrasen

using Content.Shared.HyperLink;
using Robust.Client.UserInterface;

namespace Content.Client.HyperLink;

public sealed class HyperLinkSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
SubscribeNetworkEvent<OpenURLEvent>(OnOpenURL);
}

private void OnOpenURL(OpenURLEvent args)
{
var uriOpener = IoCManager.Resolve<IUriOpener>();
uriOpener.OpenUri(args.URL);
}
}
11 changes: 11 additions & 0 deletions Content.Server/Corvax/HyperLink/HyperLinkComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// Inspired by Nyanotrasen

namespace Content.Server.HyperLink;

[RegisterComponent]
public sealed partial class HyperLinkComponent : Component
{
[DataField("url")]
[ViewVariables(VVAccess.ReadWrite)]
public string URL = string.Empty;
}
30 changes: 30 additions & 0 deletions Content.Server/Corvax/HyperLink/HyperLinkSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Inspired by Nyanotrasen

using Robust.Shared.Player;
using Content.Shared.Interaction;
using Content.Shared.HyperLink;

namespace Content.Server.HyperLink;

public sealed class HyperLinkSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<HyperLinkComponent, ActivateInWorldEvent>(OnActivate);
}

private void OnActivate(EntityUid uid, HyperLinkComponent component, ActivateInWorldEvent args)
{
if (!TryComp<ActorComponent>(args.User, out var actor))
return;

OpenURL(actor.PlayerSession, component.URL);
}

public void OpenURL(ICommonSession session, string url)
{
var ev = new OpenURLEvent(url);
RaiseNetworkEvent(ev, session.Channel);
}
}
15 changes: 15 additions & 0 deletions Content.Shared/Corvax/HyperLink/SharedHyperLinkSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Inspired by Nyanotrasen

using Robust.Shared.Serialization;

namespace Content.Shared.HyperLink;

[Serializable, NetSerializable]
public sealed class OpenURLEvent : EntityEventArgs
{
public string URL { get; }
public OpenURLEvent(string url)
{
URL = url;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ ent-BookScientistsGuidebook = Справочник учёного
.desc = Путеводитель по миру науки, подготовленный Nanotrasen.
ent-BookSecurity = Безопасность 101
.desc = Книга о безопасности на станции, подготовленная Nanotrasen. Книга испачкана кровью. Похоже, что её больше использовали как оружие, чем как учебное пособие.
ent-HyperLinkBookCorporateLaw = Корпоративный Закон
.desc = Корпоративный закон (КЗ) — свод требований корпорации NanoTrasen ко всем разумным существам на территории объектов корпорации.
ent-BookHowToKeepStationClean = Как поддерживать чистоту на станции
.desc = Эта книга очень аккуратная.
ent-BookHowToRockAndStone = Пособие по камням и скалам
Expand Down
2 changes: 2 additions & 0 deletions Resources/Prototypes/Catalog/Fills/Books/bookshelf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
orGroup: BookPool
- id: BookScientistsGuidebook
orGroup: BookPool
- id: HyperLinkBookCorporateLaw # Corvax-HyperLink
orGroup: BookPool
- id: BookSecurity
orGroup: BookPool
- id: BookHowToKeepStationClean
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Inspired by Nyanotrasen

- type: entity
parent: BaseItem
id: BaseHyperLinkBook
abstract: true
components:
- type: Sprite
sprite: Objects/Misc/books.rsi
- type: Tag
tags:
- Book
- type: StaticPrice
price: 35

- type: entity
parent: BaseHyperLinkBook
id: HyperLinkBookCorporateLaw
name: corporate law
description: A book of complicated laws for shitsec on station.
components:
- type: Sprite
sprite: Objects/Misc/books.rsi
layers:
- state: paper
- state: cover_base
color: "#ab1515"
- state: icon_law
color: "#fff300"
- type: HyperLink
url: https://station14.ru/wiki/%D0%9A%D0%BE%D1%80%D0%BF%D0%BE%D1%80%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%97%D0%B0%D0%BA%D0%BE%D0%BD
- type: Tag
tags:
- Book
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
- type: loadout
id: CorporateLaw
equipment: CorporateLaw

- type: startingGear
id: CorporateLaw
storage:
pocket2:
- HyperLinkBookCorporateLaw
1 change: 1 addition & 0 deletions Resources/Prototypes/Corvax/Roles/Jobs/Command/iaa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,6 @@
id: IAAPDA
eyes: ClothingEyesGlassesSunglasses
ears: ClothingHeadsetIAA
pocket2: HyperLinkBookCorporateLaw
inhand:
- BriefcaseIAAFilled
2 changes: 1 addition & 1 deletion Resources/Prototypes/Loadouts/Miscellaneous/trinkets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
storage:
back:
- PlushieLizard

- type: loadout
id: PlushieSpaceLizard
equipment: PlushieSpaceLizard
Expand Down
1 change: 1 addition & 0 deletions Resources/Prototypes/Loadouts/loadout_groups.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
minLimit: 0
maxLimit: 3
loadouts:
- CorporateLaw # Corvax-HyperLink
- PlushieLizard
- PlushieSpaceLizard
- Lighter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@
ears: ClothingHeadsetSecurity
belt: ClothingBeltSecurityFilled
pocket1: WeaponPistolMk58
pocket2: BookSecurity
pocket2: HyperLinkBookCorporateLaw # Corvax-HyperLink

0 comments on commit 81f061b

Please sign in to comment.