// By rebuilding everything every tick, menus can be dynamically updated void PlayerMenuUserInterface::idle(U32 timeDelta) { clearMenuItems(); GameConnection *conn = getGame()->getConnectionToServer(); if(!conn) return; char c[] = "A"; // Dummy shortcut key for(S32 i = 0; i < getGame()->getClientCount(); i++) { ClientInfo *clientInfo = ((Game *)getGame())->getClientInfo(i); // Lame! strncpy(c, clientInfo->getName().getString(), 1); // Grab first char of name for a shortcut key // Will be used to show admin/player/robot prefix on menu PlayerType pt = clientInfo->isRobot() ? PlayerTypeRobot : (clientInfo->isAdmin() ? PlayerTypeAdmin : PlayerTypePlayer); PlayerMenuItem *newItem = new PlayerMenuItem(i, clientInfo->getName().getString(), playerSelectedCallback, InputCodeManager::stringToInputCode(c), pt); newItem->setUnselectedColor(getGame()->getTeamColor(clientInfo->getTeamIndex())); addMenuItem(newItem); } sortMenuItems(); if(action == PlayerActionKick) mMenuTitle = "CHOOSE PLAYER TO KICK"; else if(action == PlayerActionChangeTeam) mMenuTitle = "CHOOSE WHOSE TEAM TO CHANGE"; else TNLAssert(false, "Unknown action!"); }