bool CRadioMenu::DisplayAtItem(int client, unsigned int time, unsigned int start_item, IMenuHandler *alt_handler) { #if defined MENU_DEBUG g_Logger.LogMessage("[SM_MENU] CRadioMenu::Display(%p) (client %d) (time %d)", this, client, time); #endif if (m_bCancelling) { return false; } AutoHandleRooter ahr(this->GetHandle()); return g_RadioMenuStyle.DoClientMenu(client, this, start_item, alt_handler ? alt_handler : m_pHandler, time); }
void BaseMenuStyle::ClientPressedKey(int client, unsigned int key_press) { #if defined MENU_DEBUG g_Logger.LogMessage("[SM_MENU] ClientPressedKey() (client %d) (key_press %d)", client, key_press); #endif CBaseMenuPlayer *player = GetMenuPlayer(client); /* First question: Are we in a menu? */ if (!player->bInMenu) { return; } bool cancel = false; unsigned int item = 0; MenuCancelReason reason = MenuCancel_Exit; MenuEndReason end_reason = MenuEnd_Selected; menu_states_t &states = player->states; /* Save variables */ IMenuHandler *mh = states.mh; IBaseMenu *menu = states.menu; unsigned int item_on_page = states.item_on_page; assert(mh != NULL); if (menu == NULL) { item = key_press; } else if (key_press < 1 || key_press > GetMaxPageItems()) { cancel = true; } else { ItemSelection type = states.slots[key_press].type; /* Check if we should play a sound about the type */ if (g_Menus.MenuSoundsEnabled() && (!menu || (menu->GetMenuOptionFlags() & MENUFLAG_NO_SOUND) != MENUFLAG_NO_SOUND)) { CellRecipientFilter filter; cell_t clients[1]; clients[0] = client; filter.Initialize(clients, 1); const char *sound = g_Menus.GetMenuSound(type); if (sound != NULL) { edict_t *pEdict = PEntityOfEntIndex(client); if (pEdict) { ICollideable *pCollideable = pEdict->GetCollideable(); if (pCollideable) { const Vector & pos = pCollideable->GetCollisionOrigin(); enginesound->EmitSound(filter, client, CHAN_AUTO, #if SOURCE_ENGINE >= SE_PORTAL2 sound, -1, #endif sound, VOL_NORM, ATTN_NORM, #if SOURCE_ENGINE >= SE_PORTAL2 0, #endif 0, PITCH_NORM, #if SOURCE_ENGINE == SE_CSS || SOURCE_ENGINE == SE_HL2DM || SOURCE_ENGINE == SE_DODS \ || SOURCE_ENGINE == SE_SDK2013 || SOURCE_ENGINE == SE_BMS || SOURCE_ENGINE == SE_TF2 0, #endif &pos); } } } } /* For navigational items, we're going to redisplay */ if (type == ItemSel_Back) { if (!RedoClientMenu(client, ItemOrder_Descending)) { cancel = true; reason = MenuCancel_NoDisplay; end_reason = MenuEnd_Cancelled; } else { return; } } else if (type == ItemSel_Next) { if (!RedoClientMenu(client, ItemOrder_Ascending)) { cancel = true; /* I like Saltines. */ reason = MenuCancel_NoDisplay; end_reason = MenuEnd_Cancelled; } else { return; } } else if (type == ItemSel_Exit || type == ItemSel_None) { cancel = true; reason = MenuCancel_Exit; end_reason = MenuEnd_Exit; } else if (type == ItemSel_ExitBack) { cancel = true; reason = MenuCancel_ExitBack; end_reason = MenuEnd_ExitBack; } else { item = states.slots[key_press].item; } } /* Clear states */ player->bInMenu = false; if (player->menuHoldTime) { RemoveClientFromWatch(client); } Handle_t hndl = menu ? menu->GetHandle() : BAD_HANDLE; AutoHandleRooter ahr(hndl); if (cancel) { mh->OnMenuCancel(menu, client, reason); } else { mh->OnMenuSelect(menu, client, item); if (mh->GetMenuAPIVersion2() >= 13) { mh->OnMenuSelect2(menu, client, item, item_on_page); } } /* Only fire end for valid menus */ if (menu) { mh->OnMenuEnd(menu, end_reason); } }
int main() { //Stel onderstaande poorten in op Output en laad allemaal enen in DDRA=0xFF; DDRB=0xFF; DDRC=0xFF; PORTA=0xFF; PORTB=0xFF; PORTC=0xFF; //Stel de timer in die een interrupt genereert bij en overflow TCCR0=0x05; TIMSK=0x01; //Stel odnerstaande poorten in op Input en laad allemaal enen in DDRE=0x00; PINE=0xFF; serial.init(); // Aanmaken van de verschillende autolichtobjecten AutoLicht azl(0xFE, 0xFD, 0xFB, ADRESPORTB); AutoLicht azr(0xF7, 0xEF, 0xDF, ADRESPORTB); AutoLicht ahl(0xFE, 0xFD, 0xFB, ADRESPORTC); AutoLicht ahr(0xF7, 0xEF, 0xDF, ADRESPORTC); // Aanmaken van de verschillende voetgangerlichtobjecten VoetgangerLicht vhr(0xFE, 0xFD, ADRESPORTA); VoetgangerLicht vz(0xBF, 0x7F, ADRESPORTB); VoetgangerLicht vhl(0xBF, 0x7F, ADRESPORTC); List<VoetgangerLicht*> l1, l2, l3; List<Scenario*> s; //Lijst l1 vullen l1.push_back(&azl); l1.push_back(&azr); //Lijst l2 vullen l2.push_back(&ahl); l2.push_back(&ahr); //Lijst l3 vullen l3.push_back(&vhr); l3.push_back(&vz); l3.push_back(&vhl); //Scenario's definieren Scenario s1(&l1, &variabelebeheerder); Scenario s2(&l2, &variabelebeheerder); Scenario s3(&l3, &variabelebeheerder); s.push_back(&s1); s.push_back(&s2); s.push_back(&s3); variabelebeheerder.zetAantalScenarios(3); //Scenario's toekennen aan sensoren svz.kenScenarioToe(&s3); svhr.kenScenarioToe(&s3); svhl.kenScenarioToe(&s3); sahr.kenScenarioToe(&s2); sahl.kenScenarioToe(&s2); sazl.kenScenarioToe(&s1); sazr.kenScenarioToe(&s1); VerkeersRegelaar vr(&s, &wachtrijbeheerder, &variabelebeheerder); sei(); //Zet interrupts aan while(1) { vr.kiesFunctie(); } }