Двойная отправка флота по даблклику
Собсно, если даблкликнуть по кнопке "уничтожить", то на планету назначения улетает два флота. Возможно аналогичное поведения и на других кнопках.
"Консул сказал, мы выполнили!" )
А какое поведение корректное в твоем понимании?
Ну т.е. сейчас есть возможность рассылать один и тот же состав по разным планетам и так далее.
А что если игрок отправил 1 флот, а через 5 секунд решил ещё столько же?
Вот пусть на 5 секунд вторичная отправка и будет заблокирована )
Т.е. посылка двух флотов на одну планету должна выполняться в два дейтсвия. Отправить - уничтожить, отправить - уничтожить.
Отправка нескольких флотов с одного окна не логичное поведение, имхо.
Это плохо. :( И странно, что у меня ни разу такого не случилось - у меня "дребезжит" левая кнопка мышки и временами вместо клика делает два клика или дабл клик. В интернетах пишут, что это типовая болезнь игровых мышек через некоторое время. Неприятное и непредсказуемое явление. :(
Ага, все ясно. Значит у меня кнопка "уничтожить" сразу становится неактивной, поэтому нет двойных срабатываний.
Вобще, после последнего апдейта, интерфейс космоса стал задумчивым, по ощущениям. Долго соображает при вводе количества, после "уничтожить" размышляет какое-то время перед закрытием окна. (комп быстрый, памяти достаточно, интернет неплохой).
Значит стоит ожидать неприятностей. Если технически возможно послать два флота через одну кнопку, значит рано или поздно фаза тормозов интерфейса совпадет с очередным двойным кликом.
Подтверждение от сервера в коде есть. Нет собственно включения/выключения кнопок при событиях.
Достаточно добавить в начало обработчика "click .btn-attack" проверку и изменение состояния кнопок:
if (e.currentTarget.classList.contains("disabled"))
return;
var enableSendButtons = function(enabled) {
var buttons = document.querySelectorAll(".btn-attack");
for (var i = 0; i < buttons.length; ++i) {
buttons[i].classList.toggle("disabled", !enabled);
}
}
И перед серверными вызовами Meteor.call("space.sendFleet" и "space.attackReptileFleet" вызвать
enableSendButtons(false),
А в обработчике ответа сервера на эти вызовы
Notifications.error("Не удалось отправить флот", e.error)
Дополнить до
(Notifications.error("Не удалось отправить флот", e.error), enableSendButtons(true))