Продолжаю описывать структуры данных для хранения данных больницы. В предыдущей части я описала структуру для хранения данных больницы, для описания базовых параметров кабинетов. В этой части будет про описание параметров кабинета больницы, а также базовые параметры персонала.
Обращаю внимание, что это продолжение истории разработки веб-сайта помощника для игры Fun Hospital. Начало можно прочитать тут:
- Истоки проекта тут
- Часть 1
Начну с параметров кабинета больницы:
Для описания параметров я использую класс, здесь не только хранение данных, но также вычисление некоторых параметров.
Для внутреннего использования понадобится экземпляр больницы, поэтому переменная помечена private. Параметры type (это тип кабинета) и level (уровень кабинета).
И небольшое уточнение. В больнице можно строить множество кабинетов, но оптимальнее всего строить по одному кабинету каждого типа. Калькулятор рассчитан именно на оптимальный вариант, именно поэтому будем в дальнейшем давать возможность добавлять только один кабинет каждого типа.
Вычисляемые поля:
- baseCabinet - базвые характеристики кабинета
- name - название кабинета
- qualification - дополнительная квалификация которую дает кабинет в зависимости от текущего уровня
- nurse - в кабинете может находится медсестра/врач
- diagnose - кабинет является диагностическим/лечебным
- maxLevel - это максимальный уровень кабинета до которого можно прокачать на текущем уровне больницы
- canUpdate - надо прокачивать кабинет (maxLevel не совпадает с текущим уровнем кабинета)
Также отмечу что makeAutoObservable которая используется в классе (от mobx) помечает все методы get как computed, что означает что значение вычисляется и запоминается, а при повторном обращении уже вычислений не будет до тех пор пока не изменится любая observable (отслеживаемая mobx) переменная.
Почему идет разделение типа базовые характеристики и характеристики кабинета больницы, особенно если соответствие один к одному? Я разделила так как логически они будут независимы друг от друга. Если базовые характеристики это что-то статическое что будет внесено один раз, то характеристики кабинетов больницы - будет разным в каждой отдельно взятой больнице.
Описание типа и класса для персонала аналогичным образом: тип для описания базовых характеристик и класс для описание характеристик персонала больницы.
Характеристики:
- type - есть предопределенный список персонала который может появится в больнице.
- qualification - стартовая квалификация персонала на первом уровне
- efficiency - стартовая эффективность персонала на первом уровне
- name - имя персонала
- attrEff - аттрибут персонала дает увеличение эффективности (пока не очень понятно что это, но при разборе характеристик персонала больницы будет яснее)
- dopQualification - дополнительные очки которые будет давать персонал (сейчас есть вип доктор и вип медсестра которые дают дополнительные очки в определенных кабинетах. Пока что тут нет реализации по привязки к кабинету а считается что эти врачи расположены именно в этих кабинетах)
- qualificationKoeff - прирост квалификации при повышении уровня (тут еще не учтено что при достижении уровня 10 квалификации такой персонал будет получать еще больше очков квалификации)
- nurse - является ли персонал медсестрой/доктором
- vip - является ли персонал vip (это нужно для того чтобы не давать vip персонал добавлять несколько раз, в игре такой можно покупать строго по одной штуке)
В следующей части опишу параметры персонала больницы...