Bjakua (11 Октябрь 2020 - 02:51) писал:
тогда уж наверное "уровнять до..." если в кораблике 5400 термы, то ничего не добавится, если скажем 5000, то добавится 400 термы, если пусто, то - 5400
Можно объединить ваши идеи, сделав их дополнительными опциями работы команды "загрузить в трюм" (расширив уже существующий функционал):
1)
Обычная загрузка: всё в первый свободный трюм (то, как это работает сейчас по умолчанию),
2)
Равная загрузка по флоту: то, как это работает сейчас с галочкой,
3)
Равная загрузка по кораблям: основное предложение поста,
4)
Погрузка с лимитом: оно же "
уравнивание", вторая идея поста,
5)
Итоговое кол-во во флоте: сколько в итоге должно быть во флоте. При этой опции уравнивается кол-во ресурса во всех кораблях (или в конкретном проекте, если указан его номер).
Пример для последнего варианта:
Во флоте 7 кораблей загружены на 20'000 и 3 корабля - на 45'000 массы, из которой 32'000 - это загружаемый ресурс (руда, к примеру). Тогда заполнение будет следующим:
1) Все корабли, кроме трёх последних будут равномерно загружаться до предела их трюма или 32'000 руды в нём, или до достижения желаемого кол-ва во флоте.
2) Оставшееся к погрузке количество руды будет равномерно загружаться по всем кораблям с неполным трюмом до его заполнения или достижения желаемого количества.
Есть ещё вариант как вброс для размышления: считать скорость всех кораблей проекта во флоте равной, а определять её по проценту заполнения ОБЩЕГО трюма, а не для каждого корабля.
Как вариант - вплоть до того, что можно будет убрать подвкладку "Корабли" из вкладки "Трюм" у флота, оставив только общий трюм на проект.
Серверу будет проще считать, а игрокам можно будет не париться о равномерном распределении (в том числе при копке полей, когда всего 1 трюм забит, а скорость флота уже минимальная).
Имеется в виду при 100% прочности всех кораблей, естественно; повреждения будут снижать скорость так же, как и раньше.
При уничтожении корабля в бою, если масса в общем трюме стала больше допустимой, то будет выпадать такое же кол-во массы из флота (причём рандомно, может что-то ценное, а может нет).
P.S.: Принцип определения что именно выпало довольно прост как логически, так и для кодинга:
- Генерируем случайное число от 0 до [{масса флота} - {выпавшая масса}]. Это позиция в трюме, начиная с которой нужно выбросить {выпавшую массу}.
- Если в начале или конце этого отрезка лежит что-то неделимое (всё, у чего масса больше 1), то это что-то выпадает в кол-ве 1 штука (будь то 1 УД или 1 КК или ещё что-то).
В итоге: рандом здорового человека соблюдён. И повелители довольны, и борги сыты.