177 lines
6.4 KiB
Markdown
177 lines
6.4 KiB
Markdown
# CRC карточки проекта DeliverySystem
|
||
|
||
|
||
<style>
|
||
table { width: 100%; border-collapse: collapse; margin-bottom: 20px; }
|
||
th, td { border: 1px solid #ddd; padding: 8px; }
|
||
th[colspan="2"] { background-color: #333; color: white; }
|
||
</style>
|
||
|
||
<table>
|
||
<tr>
|
||
<th colspan="2" align="center" style="font-size: 1.2em;">GameEngine</th>
|
||
</tr>
|
||
<tr>
|
||
<th width="50%">Обязанности</th>
|
||
<th width="50%">Взаимодействия</th>
|
||
</tr>
|
||
<tr>
|
||
<td valign="top">
|
||
1. Управление игровым процессом и бизнес-логикой.<br>
|
||
2. Обработка команд игрока: движение по компасным направлениям.<br>
|
||
3. Взаимодействие с объектами в комнате (открытие, отпирание контейнеров).<br>
|
||
4. Связывание действий UI с изменениями состояния моделей.<br>
|
||
5. Оповещение слушателей об игровых событиях и изменениях состояния.
|
||
</td>
|
||
<td valign="top">
|
||
Player<br>
|
||
Room<br>
|
||
Direction<br>
|
||
Container<br>
|
||
Key<br>
|
||
Door
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<table>
|
||
<tr>
|
||
<th colspan="2" align="center" style="font-size: 1.2em;">MapSerializer</th>
|
||
</tr>
|
||
<tr>
|
||
<th width="50%">Обязанности</th>
|
||
<th width="50%">Взаимодействия</th>
|
||
</tr>
|
||
<tr>
|
||
<td valign="top">
|
||
1. Сохранение графа комнат в JSON-файл.<br>
|
||
2. Загрузка графа из JSON-файла обратно в игровые объекты.<br>
|
||
3. Валидация связей между дверьми при загрузке.<br>
|
||
4. Конвертация игровых объектов в DTO и обратно.
|
||
</td>
|
||
<td valign="top">
|
||
Room<br>
|
||
Door<br>
|
||
Container<br>
|
||
Key<br>
|
||
DTO-модели (MapDTO, RoomDTO, DoorDTO, ItemDTO)
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<table>
|
||
<tr>
|
||
<th colspan="2" align="center" style="font-size: 1.2em;">Player</th>
|
||
</tr>
|
||
<tr>
|
||
<th width="50%">Обязанности</th>
|
||
<th width="50%">Взаимодействия</th>
|
||
</tr>
|
||
<tr>
|
||
<td valign="top">
|
||
1. Хранение инвентаря (рюкзака) с предметами.<br>
|
||
2. Запоминание текущей комнаты.<br>
|
||
3. Добавление и удаление предметов из рюкзака.<br>
|
||
4. Поиск ключа по идентификатору в рюкзаке.
|
||
</td>
|
||
<td valign="top">
|
||
Room<br>
|
||
IItem<br>
|
||
Key
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<table>
|
||
<tr>
|
||
<th colspan="2" align="center" style="font-size: 1.2em;">Room</th>
|
||
</tr>
|
||
<tr>
|
||
<th width="50%">Обязанности</th>
|
||
<th width="50%">Взаимодействия</th>
|
||
</tr>
|
||
<tr>
|
||
<td valign="top">
|
||
1. Хранение описания окружения.<br>
|
||
2. Хранение словаря дверей по направлениям.<br>
|
||
3. Хранение списка интерактивных объектов внутри комнаты.<br>
|
||
4. Формирование полного текстового описания комнаты для игрока.
|
||
</td>
|
||
<td valign="top">
|
||
Door<br>
|
||
Direction<br>
|
||
GameObject
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<table>
|
||
<tr>
|
||
<th colspan="2" align="center" style="font-size: 1.2em;">Door</th>
|
||
</tr>
|
||
<tr>
|
||
<th width="50%">Обязанности</th>
|
||
<th width="50%">Взаимодействия</th>
|
||
</tr>
|
||
<tr>
|
||
<td valign="top">
|
||
1. Предоставление логического перехода в другую комнату.<br>
|
||
2. Блокировка прохода, если дверь заперта.<br>
|
||
3. Проверка переданного ключа на соответствие RequiredKeyId.<br>
|
||
4. Открывание и запирание замка по подходящему ключу.
|
||
</td>
|
||
<td valign="top">
|
||
Room<br>
|
||
Key<br>
|
||
ILockable
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<table>
|
||
<tr>
|
||
<th colspan="2" align="center" style="font-size: 1.2em;">Container (Chest, Wardrobe)</th>
|
||
</tr>
|
||
<tr>
|
||
<th width="50%">Обязанности</th>
|
||
<th width="50%">Взаимодействия</th>
|
||
</tr>
|
||
<tr>
|
||
<td valign="top">
|
||
1. Хранение списка предметов IItem внутри себя.<br>
|
||
2. Поддержка внутреннего состояния: открыт / закрыт.<br>
|
||
3. Поддержка состояния замка: заперт / отперт.<br>
|
||
4. Разрешение открытия только при отсутствии замка или наличии верного ключа.<br>
|
||
5. Управление содержимым: добавление и извлечение предметов.
|
||
</td>
|
||
<td valign="top">
|
||
GameObject<br>
|
||
ILockable<br>
|
||
IItem<br>
|
||
Key
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<table>
|
||
<tr>
|
||
<th colspan="2" align="center" style="font-size: 1.2em;">Key</th>
|
||
</tr>
|
||
<tr>
|
||
<th width="50%">Обязанности</th>
|
||
<th width="50%">Взаимодействия</th>
|
||
</tr>
|
||
<tr>
|
||
<td valign="top">
|
||
1. Представление предмета, который можно поднять с пола.<br>
|
||
2. Хранение уникального идентификатора для отпирания замков.<br>
|
||
3. Предоставление идентификатора дверям и контейнерам для проверки.
|
||
</td>
|
||
<td valign="top">
|
||
GameObject<br>
|
||
IItem
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|