Найти тему

История разработки "калькулятора". Часть 3

Продолжаю описывать структуры данных для хранения данных больницы. В предыдущей части я описала структуру для хранения данных больницы, для описания базовых параметров кабинетов. В этой части будет про описание параметров кабинета больницы, а также базовые параметры персонала.

Обращаю внимание, что это продолжение истории разработки веб-сайта помощника для игры Fun Hospital. Начало можно прочитать тут:

Начну с параметров кабинета больницы:

Параметры кабинета больницы
Параметры кабинета больницы

Для описания параметров я использую класс, здесь не только хранение данных, но также вычисление некоторых параметров.

Для внутреннего использования понадобится экземпляр больницы, поэтому переменная помечена private. Параметры type (это тип кабинета) и level (уровень кабинета).

И небольшое уточнение. В больнице можно строить множество кабинетов, но оптимальнее всего строить по одному кабинету каждого типа. Калькулятор рассчитан именно на оптимальный вариант, именно поэтому будем в дальнейшем давать возможность добавлять только один кабинет каждого типа.

Вычисляемые поля:

  • baseCabinet - базвые характеристики кабинета
  • name - название кабинета
  • qualification - дополнительная квалификация которую дает кабинет в зависимости от текущего уровня
  • nurse - в кабинете может находится медсестра/врач
  • diagnose - кабинет является диагностическим/лечебным
  • maxLevel - это максимальный уровень кабинета до которого можно прокачать на текущем уровне больницы
  • canUpdate - надо прокачивать кабинет (maxLevel не совпадает с текущим уровнем кабинета)

Также отмечу что makeAutoObservable которая используется в классе (от mobx) помечает все методы get как computed, что означает что значение вычисляется и запоминается, а при повторном обращении уже вычислений не будет до тех пор пока не изменится любая observable (отслеживаемая mobx) переменная.

Почему идет разделение типа базовые характеристики и характеристики кабинета больницы, особенно если соответствие один к одному? Я разделила так как логически они будут независимы друг от друга. Если базовые характеристики это что-то статическое что будет внесено один раз, то характеристики кабинетов больницы - будет разным в каждой отдельно взятой больнице.

Описание типа и класса для персонала аналогичным образом: тип для описания базовых характеристик и класс для описание характеристик персонала больницы.

TBaseStaff
TBaseStaff

Характеристики:

  • type - есть предопределенный список персонала который может появится в больнице.
  • qualification - стартовая квалификация персонала на первом уровне
  • efficiency - стартовая эффективность персонала на первом уровне
  • name - имя персонала
  • attrEff - аттрибут персонала дает увеличение эффективности (пока не очень понятно что это, но при разборе характеристик персонала больницы будет яснее)
  • dopQualification - дополнительные очки которые будет давать персонал (сейчас есть вип доктор и вип медсестра которые дают дополнительные очки в определенных кабинетах. Пока что тут нет реализации по привязки к кабинету а считается что эти врачи расположены именно в этих кабинетах)
  • qualificationKoeff - прирост квалификации при повышении уровня (тут еще не учтено что при достижении уровня 10 квалификации такой персонал будет получать еще больше очков квалификации)
  • nurse - является ли персонал медсестрой/доктором
  • vip - является ли персонал vip (это нужно для того чтобы не давать vip персонал добавлять несколько раз, в игре такой можно покупать строго по одной штуке)

В следующей части опишу параметры персонала больницы...