Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PORT] Система обмена сообщениями в КПК #153

Merged
merged 3 commits into from
Dec 12, 2024

Conversation

Vonsant
Copy link
Collaborator

@Vonsant Vonsant commented Dec 12, 2024

Описание PR

Этот PR добавляет в игру полноценную систему обмена сообщениями через КПК. Приложение NanoChat доступно всем раундстартом. Весь изначальный код принадлежит DeltaV-Station/Delta-v#2362 и является только локализованным портом.

Теперь каждой ID-карте присваевается свой уникальный, сгенерированный случайным образом, четырёхзначный номер. Этот номер будет использоваться как идентификатор для чата.
image

Чтобы добавить кого-то в список контактов, необходимо узнать у него его номер. После чего по этому номеру будет возможность добавить пользователя в свой список контактов. Номер также можно попробовать угадать, но там 9999 комбинаций, удачи.
image

Интерфейс приложения NanoChat состоит из двух частей:

  • Левая панель: Список контактов. Здесь вы увидите всех, с кем вы когда-либо общались, а также индикаторы непрочитанных сообщений.
  • Правая панель: Отображает текущую беседу в виде привычных "пузырьковых" сообщений, как в любом мобильном мессенджере. Ваши сообщения будут зелёными, а входящие сообщения - серыми.

image

Все сообщения хранятся непосредственно в ID-карте каждого участника переписки. Данные представлены в виде словарей: один для хранения информации о получателях (имя, должность, статус "прочитано/не прочитано"), и один для хранения самой истории сообщений. Важно отметить, что и у отправителя, и у получателя есть полная копия всей переписки.

Предусмотрены следующие ограничения:

  • Сетевые ограничения: Чтобы отправить или получить сообщение, оба КПК должны иметь активное подключение к телекоммуникационной сети и находиться в пределах одной станции. Исключением являются сообщения, отправленные по радиоканалам дальнего действия.
  • Индикация ошибок: Если сообщение не может быть доставлено, оно будет отмечено красным значком ошибки.

Кроме того, зонд логов детектива получил возможность сканировать ID-карты и подключаться к их истории переписок NanoChat, что позволяет следить за чужой перепиской в реальном времени, включая список контактов и историю сообщений.
image

Дополнительно:

  • Микроволновка: Если поместить ID-карту в микроволновку, то есть 10% шанс полностью стереть все сообщения, или случайным образом перемешать текст сообщений и переназначить переписки между контактами.
  • Уведомления: Уведомления о новых сообщениях показывают усеченный текст (до 64 символов), чтобы не раскрывать слишком много информации сразу.
  • Контакты: Контакты "запоминают" должности собеседников по ID-картам, но только если вам пишет тот, кого вы не знаете.
  • Лимиты: Каждая ID-карта может хранить до 50 контактов, а длина сообщений ограничена 256 символами.
  • Идентификация агентов: Агентские ID-карты теперь могут имитировать других членов экипажа. Сканирование чужой ID-карты позволит скопировать её переписку и изменить ваш идентификационный номер.
    image

Почему / Баланс

Это весело.

Технические детали

  • Добавлен компонент NanoChatCardComponent, который отвечает за хранение данных о чате на ID-картах.
  • Добавлен компонент NanoChatCartridgeComponent, который управляет интерфейсом чата в КПК.
  • Добавлен компонент LogProbeCartridgeComponent для логирования и отображения данных о чате через лог-проб.
  • Создан пользовательский интерфейс (UI) для чата с двумя панелями: списком контактов и панелью сообщений.
  • Реализован всплывающий интерфейс для создания новых чатов.
  • Разработана логика отправки, получения, хранения сообщений, проверки связи, и отображения уведомлений.
  • Реализована механика сканирования ID-карт детективным лог-пробом для просмотра переписки.
  • Добавлен механизм микроволновой печи для ID-карт, который позволяет удалять или искажать историю сообщений.
  • Созданы новые сетевые сообщения, UI-состояния, и структуры данных для работы системы.

Медиа

Критические изменения

  • Добавлены компоненты в пространстве имён Content.Shared._CorvaxNext.NanoChat.
  • Добавлены компоненты в пространстве имён Content.Client._CorvaxNext.CartridgeLoader.Cartridges.
  • Добавлены компоненты в пространстве имён Content.Server._CorvaxNext.CartridgeLoader.Cartridges.
  • Изменено состояние LogProbeUiState в Content.Shared.CartridgeLoader.Cartridges, для добавления поддержки NanoChat.
  • Изменено состояние AgentIDCardBoundUserInterfaceState в Content.Shared.Access, для добавления поддержки номера NanoChat.

Список изменений

🆑

  • add: Добавлена полноценная система обмена сообщениями через КПК
  • add: Зонд логов детектива теперь может сканировать ID-карты для получения истории переписки.
  • add: Агенты могут подделывать чужую электронную подпись (номер), сканируя ID-карту.
  • add: Также они получают доступ к истории переписки отсканированной ID-карты.

Copy link

github-actions bot commented Dec 12, 2024

RSI Diff Bot; head commit a4c97c0 merging into 9db0a8e
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/_CorvaxNext/Misc/program_icons.rsi

State Old New Status
nanochat Added

Resources/Textures/_CorvaxNext/Objects/Devices/cartridge.rsi

State Old New Status
cart-chat Added

Edit: diff updated after a4c97c0

@Vonsant Vonsant changed the title NanoChat [PORT] Система обмена сообщениями в КПК Dec 12, 2024
@Vonsant Vonsant merged commit a95d724 into space-syndicate:master Dec 12, 2024
12 checks passed
@Vonsant
Copy link
Collaborator Author

Vonsant commented Dec 12, 2024

БЛЯ

@Vonsant
Copy link
Collaborator Author

Vonsant commented Dec 12, 2024

Я СЛУЧАЙНО

@Vonsant
Copy link
Collaborator Author

Vonsant commented Dec 12, 2024

Ладно, оно вроде как полностью рабочее.

@Vonsant
Copy link
Collaborator Author

Vonsant commented Dec 12, 2024

По крайней мере протестировано и всё работает. А ревью делали в оригинальном ПРе.

@AwareFoxy
Copy link
Collaborator

Во имя отца, сына и святого СелфМерджа. Аминь.

@CaptainSqrBeard
Copy link

сообщения хранятся на карте 💀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: Localization Изменяет локализацию Changes: Sprites Changes: UI S: Needs Review ПРу необходим ревью S: Untriaged size/XL
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants