tommy писал(а):
ох, ну и суровый код. а есть вероятность, что пока вы этот код дебажите прерывание успевает срабатывать ещё раз и вы уже смотрите на следующий вызов прерывания? а так - хз, синтаксически вполне себе валидный си код, только непонятный
[offtop] - как-то странно в прерывании пульки считать, да ф-ции всякие вызывать.[/offtop]
Функции объявлены как inline (встраиваемые), так что разницы особой нет.
Прерывание формирует звук выстрела.
Два режима огня, соответственно, звук для них нужно воспроизводить по разному.
Если очередь - производим часть звука и смотрим, нажат ли курок.
Если нажат - делаем выстрел (посылаем ИК-пакет, количество пулек уменьшаем) и звук выстрела воспроизводим с начала.
Если курок отпустили - надо звук проиграть полностью до конца.
Да и светодиодом вспышки надо помигать (тут ещё косяк вылез, но это отдельная тема)!
Потому и if else полно!
А вот про прерывания - надо старую версию потестить, где не разрешал глобально прерывания - как там работает.
Сегодня не успел (в конторе код пишу, дома нет такой возможности).
И даже если я смотрю на следующее прерывание, то переменные тоже должны поменять значение, а я за ними слежу.
И код в else выполняется даже когда bullets>0.