} // SS_Update void SS_Report(object sender, ReportEventArgs e) { if (!e.EventActive) { return; } ReView(); if (e.Message != null) { lblAction.Text = e.Message; } MakeSound(e.Voice); if (e.ForeColor != Color.Empty) { lblAction.ForeColor = e.ForeColor; } else { lblAction.ForeColor = Color.Blue; //Цвет по умолчанию } Refresh(); } // SS_Report
} // FillNewStructList private void Reaction(string Barcode, Keys Key) { Mode OldMode = FCurrentMode; ABaseMode oldMM = MM; try { if (Barcode != null) { MM = MM.ReactionBarcodeBase(Barcode); } else { MM = MM.ReactionKeyBase(Key); } } catch (Exception e) { //Накрылось пиздой по связи. Будем ругаться и выходить, //в будущем нужно наверное переход в режим waiting замутить при таком раскладе, я хз или что-то еще в этом духе //MM = oldMM; try { MyReader.Close(); } catch (Exception eInside) { } Init(new Waiting(this, null)); //Эта функция, по логике упасть не может никогда и выкинет нас в режим Waiting OnChangeMode(new ChangeModeEventArgs(FCurrentMode)); OnReport(new ReportEventArgs(e.Message, Voice.Bad, Color.Red)); return; } FEmployer = MM.Employer; //Временно Const = MM.Const; //Временно, рефрешим константы if (oldMM.CurrentMode != MM.CurrentMode) { if (MM.Result != MMResult.Positive) { //Что-то полшо не так в методе Init нового режима! ReportEventArgs tmpREA = new ReportEventArgs(MM); //Создадим с результирующим сфейлившим режимом сообщение, а потом заменим его MM = oldMM; OnReport(tmpREA); return; } //Произошла смена режима, дальше идет говнокод, который обеспечивает совместимость режимов if (FCurrentMode != OldMode) { //Код курильщика //ТРЕШАК! РЕЖИМ ЭТОГО ОБЪЕКТА ПОМЕНЯЛСЯ ВНУТРИ НОВОЙ АРХИТИКТУРЫ OnChangeMode(new ChangeModeEventArgs(FCurrentMode)); } else { //Код здорового человека OnChangeMode(new ChangeModeEventArgs(MM)); } } else if (MM.Result != MMResult.None) { //Если хоть что-то было, то сообщаем OnReport(new ReportEventArgs(MM)); } } // Reaction