Целевой проект: Сектор Тапани 05.01.2019
Работа велась в Visual Studio Community 2017 с использованием C# Windows Forms. Поэтому, чтобы начать работу над скачанным клоном репозитория, нужна установленная студия. После этого достаточно просто запустить файл решения (.sln).
Должен предупредить, что данная система делалась в крайне сжатые сроки, и в следствие своей неопытности, в некоторых местах я применил далеко не лучшие решения (например, в окне выбора действия определение нужного объекта класса Action происходит в зависимости от текста на кнопке).
Если вы хотите адаптировать код под свои нужды, то, скорее всего, понадобится довольно жёсткая переработка.
С другой стороны, код очень детально прокомментирован, так что разобраться будет проще.
Система предпологалась использоваться следующим образом:
-
Персонаж получает ранение
-
Персонаж любым способом оказывается в медблоке
-
Игрок сообщает:
3.1) Сколько хитов каким ранением было снесено
3.2) Свой медицинский ID, указанный в загрузе
-
Медик вбивает эту информацию в программу
-
Начинается операция, после которой персонаж считается полностью вылеченным (ну или умирает).
Чтобы программа исправно работала, необходимо рядом с ней поместить файл 'database.txt', содержащий данные о персонажах. В корне репозитория присутствует заполненный файл с ролевой игры Сектор Тапани: Голубая Кровь (2019г), здесь же я поясню структуру данных.
Файл заполняется построчно. То есть, каждая строка файла обрабатывается независимо от остальных строк.
В файле можно оставить какой-нибудь комментарий, поставив в самом начале строки знак '#' - в этом случае программа полностью проигнорирует строку. Например:
# База данных ролевой игры *вставить название*.
Эта строка не принесёт вреда файлу, и программа её проигнорирует.
Чтобы внести данные о персонаже в базу, необходимо составить строку одного из следующих форматов:
ID_персонажа#Титул#Имя#
ID_персонажа#Титул#Имя#Фамилия
ID_персонажа#Титул#Имя#Фамилия#Состояние
ID персонажа - его личный номер, который игрок должен знать. Он всегда состоит из четырёх (!!!) цифр, МОЖЕТ начинаться с нуля (можно использовать хоть 0000).
Игра проводилась про футуристическое титулованное дворянство, и у многих персонажей были титулы. Для персонажей без титула предусмотрен механизм отображения фразы "Нет титула" - для этого необходимо вместо титула ввести АБСОЛЮТО ЛЮБОЙ символ, ОДИН. Например:
1234#%#Иван#Дурачок
Тут мало что надо пояснять. Фамилия у персонажа может отсутствовать, для этого необходимо просто поставить на её месте пробел. А можно и ничего не ставить - главное, чтобы в строке было минимум три знака '#'.
- 0 - ЖИВ.
- 1 - МЁРТВ.
- 2 - ЗАМОРОЖЕН.
Отсутствие цифры автоматически расценивается как ЖИВой персонаж.
7163#Барон#Андре#ле Штерн#0
1738#Лорд#Волан#де Морт#0
3632#%#Пётр#Сапогов#1
Нужно понять некоторые различия между терминами 'ранение' и 'повреждение' в рамках этой системы.
Ранение - это ТИП УРОНА, который наносится ВО ВРЕМЯ ИГРЫ, будь то ранение световым мечом, перелом, или же удар молнией. Повреждение - это РЕЗУЛЬТАТ ранения. Каждое ранение каждой степени тяжести имеет свой набор повреждений, который медику необходимо вылечить для успешного завершения операции.
Операция, как уже было сказано выше, заключается в залечивании полученных повреждений. Осуществляется оно посредством выполнения медиком различных действий (нажатия на кнопки) в определённом порядке (для каждого повреждения - свой порядок). При этом ошибки (2+) караются различными последствиями после операции. Смерть пациента наступает при множестве ошибок, совершенных при лечении одного повреждения. Но ошибки с лечения другого повреждения также будут влиять на состояние пациента. После определённого количества ошибок, пациент окажется в критическом состоянии, о чём просигналит система, и следующая ошибка убьёт его.
- Ожог: Фосован-соль => Удалить поражённые участки кожи => Лечебный кожный герметик
- Открытая рана: Фосован-соль => Зашить рану
- Перелом: Лечебный кожный герметик => Вправить кость => Нанести фиксирующую повязку
- Повреждение сосуда: Фосован-соль => Выполнить надрез => Рилл => Соединить сосуд => Зашить рану
- Повреждение нерва: Фосован-соль => Выполнить надрез => Стимулятор => Соединить нерв => Зашить рану
Персонажа можно ввести в криостазис. Для этого необходимо начать операцию, а затем отменить её. Программа предупредит пользователя о том, что при отмене операции дроид автоматически заморозит пациента. Разморозку можно провести в любой момент, вновь открыв окно информации о пациенте, и нажав кнопку "Разморозить".
Стандартные характеристики пациентов (давление, пульс, кровь) на самом деле генерируются сразу после чтения программой базы данных, основываясь на небольшом факторе рандома. Если закрыть программу и открыть заново - стандартные характеристики пациентов изменятся, так как они не были сохранены в базу.
В окне просмотра информации о пациенте можно писать какие-нибудь заметки. Однако, они не сохранятся при перезапуске программы.
Каждый раз, когда закрывается окно просмотра информации о пациенте, программа копирует данные текущей базы данных в файл формата database_часы_минуты.bak, а затем перезаписывает database.txt в соответствии с новыми данными.
Автором системы является Игорь "Asdolg" Гринкевич.
- ВКонтакте - https://vk.com/dustass
- Почта - defrasmaker@gmail.com
Программа сделана на языке C# с помощью компонентов Windows Forms и собрана в Microsoft Visual Studio Community 2017.