-
Notifications
You must be signed in to change notification settings - Fork 156
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
ToolsForGateDungeon #2494
base: master
Are you sure you want to change the base?
ToolsForGateDungeon #2494
Conversation
public List<EntityUid>? GateStart = new(); | ||
public List<EntityUid>? GateMedium = new(); | ||
public List<EntityUid>? GateEnd = new(); | ||
public List<EntityUid>? GateEndToStation = new(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Вместо использования тегов думаю лучше сделать перечисление, например:
public enum GateType : byte
{
Start,
Medium,
End,
ToStation
}
И в компоненте хранить списки энтити в одном поле через словарьDictionary<GateType, List<EntityUid>>
P.S.: Перечисление лучше писать вне класса в этом же неймспейсе (или в неймспейсе системы)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
И зачем кста хранить этот список в компоненте каждого гейта?
Разве он не общий будет у всех?
if(ent.Comp.GateStart == null || | ||
ent.Comp.GateMedium == null || | ||
ent.Comp.GateEndToStation == null || | ||
ent.Comp.GateEnd == null) | ||
return; | ||
|
||
foreach (var gate in entGates) | ||
{ | ||
if (_tagSystem.HasTag(gate, "StartDungeon")) | ||
ent.Comp.GateStart.Add(gate); | ||
|
||
if (_tagSystem.HasTag(gate, "MediumDungeon")) | ||
ent.Comp.GateMedium.Add(gate); | ||
|
||
if(_tagSystem.HasTag(gate, "EndDungeon")) | ||
ent.Comp.GateEnd.Add(gate); | ||
|
||
if(_tagSystem.HasTag(gate, "EndToStationDungeon")) | ||
ent.Comp.GateEndToStation.Add(gate); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Проклято
EnsureComp<LinkedEntityComponent>(currentGateStart, out _); | ||
EnsureComp<LinkedEntityComponent>(currentGateEnd, out _); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Зачем, если в TryLink эншурит этот компонент?
if (!HasComp<StationMemberComponent>(gridUid)) | ||
return; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Так он на шаттлах тогда разве не будет работать?
{ | ||
"version": 1, | ||
"license": "EULA/CLA with a hosting restriction, full text: https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/CLA.txt", | ||
"copyright": "by vimenant2(discord) for SS220", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"copyright": "by vimenant2(discord) for SS220", | |
"copyright": "sprited by vimenant2(discord) for SS220", |
мелкуу показал дифф чеков по базе |
Описание PR
Инструментарий для гейта из ыы13 и по совместительству пункт из цепочки РНД обновлений.
Нащиткодил полные штаны и доволен.
Компонента для создания отдельной мапы/данжа + логика для гейтгана.
!Это только инструментарий! Я не предоставляю карты самих гейтов, так как заниматься этим крайне в падлу. Если это апрувнут свяжемся с кем-то и обкашляем вопросики.
будущий гайтган, который должен выдаваться раундстартом, сам по себе сильное оружие, но в виду баланса им нельзя стрелять на станции.
До полной игры в гейт не хватает:
Прототип оружия гейтгана
Прототип роли работы
Самих карт для гейта
Технические детали
Весь компонент GateDungeonComponent работает на тегах, что может быть плохо(?)
Возможно стоило сделать более гибкую работу этого компонента, так например, если не будет всех 4 порталов (со станции -> в данж -> из данжа -> до нового портала(метки) на станцию) порталы не будут работать. Хотя если что-то в этой цепочке нет, наверное, не стоит пускать туда игроков.
За загрузку мапы отвечает поле компонента GateDungeonComponent PathDungeon, который нужно закинуть в прототипе самих врат
Можно устанавливать несколько всех типы порталов.
Проверки
Изменения
🆑 Vimenant