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

Автоматические доступы, что выдаются в зависимости от кода станции #1004

Merged
merged 13 commits into from
Jan 6, 2025

Conversation

kanopus952
Copy link
Contributor

@kanopus952 kanopus952 commented Jan 2, 2025

Changelog

🆑 kanopus7

  • add: Некоторые доступы позволяют проходить в определенные шлюзы в зависимости от кода станции.
  • tweak: СБ автоматически получают расширенный при КК.
  • tweak: Инженеры автоматически получают расширенный при желтом коде.
  • tweak: СБ получают расширенный при гамма коде.
  • tweak: Все получают полный доступ при коде дельта.

@KaiserMaus
Copy link
Contributor

Может ли агент скопировать доступы через агентскую карту что были выданы таким способом через код станции?

public string CurrentAlertLevel;

[DataField("redAlertAccesses")]
public ProtoId<AlertAccessesPrototype> RedAlertAccesses;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Что это за пиздец, зачем сколько переменных здесь, создай просто Dict<уровень, доступы> и прописывай его через прототипы.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

поправлю

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ready

/// Defines a single access level that can be stored on ID cards and checked for.
/// </summary>
[Prototype("alertAccessesPrototype")]
public sealed partial class AlertAccessesPrototype : IPrototype
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачем делать отдельный прототип.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

удалил

id: SecurityRedAlertAccesses
access:
- Engineer
- Command
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Почему так мало доступов расширяется? РНД? Медбей? Карго которое уже заказало 20 ящиков пушек?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

это для теста пока, потом дополню

@kanopus952
Copy link
Contributor Author

Может ли агент скопировать доступы через агентскую карту что были выданы таким способом через код станции?

не сможет

@github-actions github-actions bot added size/M and removed size/S labels Jan 6, 2025
@kanopus952
Copy link
Contributor Author

@VigersRay глянь систему. Если все ок добавлю доступы на прототипы шлюзов

@kanopus952
Copy link
Contributor Author

Я проверил, оно работает, вот только вопрос в моем щиткоде. Мб усовершенствовать что-то нужно

if (alerts.AlertLevels == null)
return;

if (alerts.CurrentLevel.Contains("blue"))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это какой-то кошмар.

Сделай более адекватную проверку

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

готово

public Dictionary<CurrentAlertLevel, ProtoId<AccessGroupPrototype>> AlertAccesses { get; set; } = new();

[Flags]
public enum CurrentAlertLevel : byte
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачем данный enum? Эти доступы уже существуют в игре прототипами.

Copy link
Contributor Author

@kanopus952 kanopus952 Jan 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

я не могу их добавить в дикт потому что станционные коды на сервере написаны

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

я не могу их добавить в дикт потому что станционные коды на сервере написаны

перенеси их в шейред...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а конфликты с оффами? К тому же придется еще редактировать их системы подвязанные на кодах

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

вроде енум не сильно бьет по оптимизации

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

я не могу их добавить в дикт потому что станционные коды на сервере написаны

перенеси их в шейред...

не выйдет, я проверял. Тогда ловишь фантомную ошибку о том что нет прототипа с таким Типом и айди. Да и в целом плохая затея

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

я не могу их добавить в дикт потому что станционные коды на сервере написаны

перенеси их в шейред...

не выйдет, я проверял. Тогда ловишь фантомную ошибку о том что нет прототипа с таким Типом и айди. Да и в целом плохая затея

ну это бред, если оффы новый код добавлять в прототипы надо сразу пиздовать и тут его добавлять. В чем проблема заюзать enumeratePrototypes?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а зачем новый код, если все из 13 уже перенесены

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а зачем новый код, если все из 13 уже перенесены

оффы могут новые коды добавить

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

та забей и замерджи уже, даже если добавят там всего 2 строки добавлять

if (comp.AlertAccesses.Count == 0)
continue;

Update((uid, reader));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Просто передай сюда текущий уровень и запиши его в компоненте двери.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

данная система уникальная и может не только на двери работать. Залог на будущие возможные приколы

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По проверкам я сделал так что оно проверяет только те AccessReader`ы, в которых есть значения AlertAccesses. То есть пока в прототипе не пропишешь апдейт проводиться не будет

@kanopus952 kanopus952 marked this pull request as ready for review January 6, 2025 15:57
@kanopus952
Copy link
Contributor Author

и почему линтер ругается

@VigersRay VigersRay merged commit e560b20 into space-sunrise:master Jan 6, 2025
17 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants