void UI_GetSaberForMenu( char *saber, int saberNum ) { char saberTypeString[MAX_QPATH]={0}; saberType_t saberType = SABER_NONE; if ( saberNum == 0 ) { trap_Cvar_VariableStringBuffer("ui_saber", saber, MAX_QPATH ); if ( !UI_SaberValidForPlayerInMP( saber ) ) { trap_Cvar_Set( "ui_saber", "kyle" ); trap_Cvar_VariableStringBuffer("ui_saber", saber, MAX_QPATH ); } } else { trap_Cvar_VariableStringBuffer("ui_saber2", saber, MAX_QPATH ); if ( !UI_SaberValidForPlayerInMP( saber ) ) { trap_Cvar_Set( "ui_saber2", "kyle" ); trap_Cvar_VariableStringBuffer("ui_saber2", saber, MAX_QPATH ); } } //read this from the sabers.cfg UI_SaberTypeForSaber( saber, saberTypeString ); if ( saberTypeString[0] ) { saberType = TranslateSaberType( saberTypeString ); } switch ( uiInfo.movesTitleIndex ) { case 0://MD_ACROBATICS: break; case 1://MD_SINGLE_FAST: case 2://MD_SINGLE_MEDIUM: case 3://MD_SINGLE_STRONG: if ( saberType != SABER_SINGLE ) { Q_strncpyz(saber,"single_1",MAX_QPATH); } break; case 4://MD_DUAL_SABERS: if ( saberType != SABER_SINGLE ) { Q_strncpyz(saber,"single_1",MAX_QPATH); } break; case 5://MD_SABER_STAFF: if ( saberType == SABER_SINGLE || saberType == SABER_NONE ) { Q_strncpyz(saber,"dual_1",MAX_QPATH); } break; } }
void UI_SaberDrawBlades( itemDef_t *item, vector3 *origin, vector3 *angles ) { //NOTE: only allows one saber type in view at a time char saber[MAX_QPATH]; int saberNum = 0; int saberModel = 0; int numSabers = 1; if ( (item->flags&ITF_ISCHARACTER)//hacked sabermoves sabers in character's hand && uiInfo.movesTitleIndex == 4 /*MD_DUAL_SABERS*/ ) { numSabers = 2; } for ( saberNum = 0; saberNum < numSabers; saberNum++ ) { if ( (item->flags&ITF_ISCHARACTER) )//hacked sabermoves sabers in character's hand { UI_GetSaberForMenu( saber, saberNum ); saberModel = saberNum + 1; } else if ( (item->flags&ITF_ISSABER) ) { trap->Cvar_VariableStringBuffer( "ui_saber", saber, sizeof(saber) ); if ( !UI_SaberValidForPlayerInMP( saber ) ) { trap->Cvar_Set( "ui_saber", "kyle" ); trap->Cvar_VariableStringBuffer( "ui_saber", saber, sizeof(saber) ); } saberModel = 0; } else if ( (item->flags&ITF_ISSABER2) ) { trap->Cvar_VariableStringBuffer( "ui_saber2", saber, sizeof(saber) ); if ( !UI_SaberValidForPlayerInMP( saber ) ) { trap->Cvar_Set( "ui_saber2", "kyle" ); trap->Cvar_VariableStringBuffer( "ui_saber2", saber, sizeof(saber) ); } saberModel = 0; } else { return; } if ( saber[0] ) { saberType_t saberType; int curBlade = 0; int numBlades = UI_SaberNumBladesForSaber( saber ); if ( numBlades ) {//okay, here we go, time to draw each blade... char saberTypeString[MAX_QPATH] = { 0 }; UI_SaberTypeForSaber( saber, saberTypeString ); saberType = TranslateSaberType( saberTypeString ); for ( curBlade = 0; curBlade < numBlades; curBlade++ ) { if ( UI_SaberShouldDrawBlade( saber, curBlade ) ) { UI_SaberDrawBlade( item, saber, saberModel, saberType, origin, angles, curBlade ); } } } } } }
//void UI_SaberGetHiltInfo( const char *singleHilts[MAX_SABER_HILTS], const char *staffHilts[MAX_SABER_HILTS] ) void UI_SaberGetHiltInfo(void){ int numSingleHilts = 0, numStaffHilts = 0; const char *saberName; const char *token; const char *p; //go through all the loaded sabers and put the valid ones in the proper list p = SaberParms; COM_BeginParseSession("saberlist"); // look for a saber while ( p ) { token = COM_ParseExt( &p, qtrue ); if ( token[0] == 0 ) {//invalid name continue; } saberName = String_Alloc( token ); //see if there's a "{" on the next line SkipRestOfLine( &p ); if ( UI_ParseLiteralSilent( &p, "{" ) ) {//nope, not a name, keep looking continue; } //this is a saber name if ( !UI_SaberValidForPlayerInMP( saberName ) ) { SkipBracedSection( &p ); continue; } if ( UI_IsSaberTwoHanded( saberName ) ) { #ifndef DYNAMICMEMORY_SABERS if ( numStaffHilts < MAX_SABER_HILTS-1 )//-1 because we have to NULL terminate the list { staffHilts[numStaffHilts++] = saberName; } else { Com_Printf( "WARNING: too many two-handed sabers, ignoring saber '%s'\n", saberName ); } #else UI_ReaAllocMem((void *)&saberStaffHiltInfo, sizeof(char *), numStaffHilts+1); saberStaffHiltInfo[numStaffHilts++] = (char *) saberName; #endif } else { #ifndef DYNAMICMEMORY_SABERS if ( numSingleHilts < MAX_SABER_HILTS-1 )//-1 because we have to NULL terminate the list { singleHilts[numSingleHilts++] = saberName; } else { Com_Printf( "WARNING: too many one-handed sabers, ignoring saber '%s'\n", saberName ); } #else UI_ReaAllocMem((void *)&saberSingleHiltInfo, sizeof(char *), numSingleHilts+1); saberSingleHiltInfo[numSingleHilts++] = (char *) saberName; #endif } //skip the whole braced section and move on to the next entry SkipBracedSection( &p ); } //null terminate the list so the UI code knows where to stop listing them #ifndef DYNAMICMEMORY_SABERS singleHilts[numSingleHilts] = NULL; staffHilts[numStaffHilts] = NULL; #else saberSingleHiltCount = numSingleHilts; saberStaffHiltCount = numStaffHilts; #endif }