MCPcopy Create free account
hub / github.com/assaultcube/AC / menukey

Function menukey

source/src/menus.cpp:1139–1251  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1137}
1138
1139bool menukey(int code, bool isdown, SDL_Keymod mod)
1140{
1141 if(!curmenu) return false;
1142 int n = curmenu->items.length(), menusel = curmenu->menusel;
1143
1144 if(curmenu->items.inrange(menusel) && !curmenu->items[menusel]->greyedout)
1145 {
1146 mitem *m = curmenu->items[menusel];
1147 if(m->mitemtype == mitem::TYPE_KEYINPUT && ((mitemkeyinput *)m)->capture)
1148 {
1149 m->key(code, isdown);
1150 return true;
1151 }
1152 }
1153
1154 if(isdown)
1155 {
1156 int pagesize = MAXMENU - curmenu->headeritems();
1157
1158 switch(code)
1159 {
1160 case SDLK_PAGEUP: menusel -= pagesize; break;
1161 case SDLK_PAGEDOWN:
1162 if(menusel+pagesize>=n && menusel/pagesize!=(n-1)/pagesize) menusel = n-1;
1163 else menusel += pagesize;
1164 break;
1165 case SDLK_ESCAPE:
1166 case SDL_AC_BUTTON_RIGHT:
1167 if(!curmenu->allowinput) return false;
1168 menuset(menustack.empty() ? NULL : menustack.pop(), false);
1169 return true;
1170 break;
1171 case SDLK_UP:
1172 case SDL_AC_BUTTON_WHEELUP:
1173 if(iskeypressed(SDL_SCANCODE_LCTRL)) return menukey(SDLK_LEFT);
1174 if(iskeypressed(SDL_SCANCODE_LALT)) return menukey(SDLK_RIGHTBRACKET);
1175 if(!curmenu->allowinput) return false;
1176 menusel = movemenuselection(menusel, -1);
1177 break;
1178 case SDLK_DOWN:
1179 case SDL_AC_BUTTON_WHEELDOWN:
1180 if(iskeypressed(SDL_SCANCODE_LCTRL)) return menukey(SDLK_RIGHT);
1181 if(iskeypressed(SDL_SCANCODE_LALT)) return menukey(SDLK_LEFTBRACKET);
1182 if(!curmenu->allowinput) return false;
1183 menusel = movemenuselection(menusel, 1);
1184 break;
1185 case SDLK_TAB:
1186 if(!curmenu->allowinput) return false;
1187 if(mod & KMOD_LSHIFT) menusel = movemenuselection(menusel, -1);
1188 else menusel = movemenuselection(menusel, 1);
1189 break;
1190
1191 case SDLK_1:
1192 case SDLK_2:
1193 case SDLK_3:
1194 case SDLK_4:
1195 case SDLK_5:
1196 case SDLK_6:

Callers 1

keypressFunction · 0.85

Calls 13

menusetFunction · 0.85
iskeypressedFunction · 0.85
movemenuselectionFunction · 0.85
menuselectFunction · 0.85
screenshotFunction · 0.85
inrangeMethod · 0.80
headeritemsMethod · 0.80
conprintmenuMethod · 0.80
playsoundMethod · 0.80
lengthMethod · 0.45
keyMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected