static menuSound_t Activate( menuCommon_t *self ) { size_t len, baselen; demoEntry_t *e = m_demos.list.items[m_demos.list.curvalue]; switch( e->type ) { case ENTRY_UP: LeaveDirectory(); return QMS_OUT; case ENTRY_DN: baselen = strlen( m_demos.browse ); len = strlen( e->name ); if( baselen + 1 + len >= sizeof( m_demos.browse ) ) { return QMS_BEEP; } if( !baselen || m_demos.browse[ baselen - 1 ] != '/' ) { m_demos.browse[ baselen++ ] = '/'; } memcpy( m_demos.browse + baselen, e->name, len + 1 ); // rebuild list FreeList(); BuildList(); MenuList_Init( &m_demos.list ); return QMS_IN; case ENTRY_DEMO: Cbuf_AddText( &cmd_buffer, va( "demo \"%s/%s\"\n", m_demos.browse[1] ? m_demos.browse : "", e->name ) ); return QMS_SILENT; } return QMS_NOTHANDLED; }
static menuSound_t Keydown( menuFrameWork_t *self, int key ) { if( key == K_BACKSPACE ) { LeaveDirectory(); return QMS_OUT; } return QMS_NOTHANDLED; }
static menuSound_t Activate(menuCommon_t *self) { demoEntry_t *e; if (!m_demos.list.numItems) { return QMS_BEEP; } e = m_demos.list.items[m_demos.list.curvalue]; switch (e->type) { case ENTRY_UP: return LeaveDirectory(); case ENTRY_DN: return EnterDirectory(e); case ENTRY_DEMO: return PlayDemo(e); } return QMS_NOTHANDLED; }