Beispiel #1
0
/*
===============
=
= ParseBack
=
===============
*/
void ParseBack ( eventtype * event )
{
   char name[10];
   char name2[10];
   int duration;
   int yoffset;
   int width;
   int startx;
   int endx;

   GetToken (false);
   strcpy(&(name[0]),token);

   if (event->effecttype==background_multi_event)
      {
      GetToken (false);
      strcpy(&(name2[0]),token);
      }

   GetToken (false);
   duration=ParseNum(token);
   GetToken (false);
   yoffset=ParseNum(token);
   if (
       (event->effecttype==background_noscrolling_event) ||
       (event->effecttype==background_scrolling_event)
      )
      {
      lpic_t * lpic;

      lpic = (lpic_t *)W_CacheLumpName(name,PU_CACHE, Cvt_lpic_t, 1);
      width = lpic->width;
      }
   else if (event->effecttype!=background_multi_event)
      {
      patch_t * patch;

      patch = (patch_t *)W_CacheLumpName(name,PU_CACHE, Cvt_lpic_t, 1);
      width = patch->width;
      }

   startx=0;
   endx=0;
   if (
       (event->effecttype==backdrop_scrolling_event) ||
       (event->effecttype==background_scrolling_event) ||
       (event->effecttype==background_multi_event)
      )
      {
      GetToken (false);
      startx=ParseNum(token);
      GetToken (false);
      endx=ParseNum(token);
      }

   if (event->effecttype==background_multi_event)
      event->effect = SpawnCinematicMultiBack ( name, name2, duration, startx, endx, yoffset);
   else
      event->effect = SpawnCinematicBack ( name, duration, width, startx, endx, yoffset);
}
Beispiel #2
0
/*
===============
=
= ParseSprite
=
===============
*/
void ParseSprite ( eventtype * event )
{
   char name[10];
   int duration;
   int numframes;
   int framedelay;
   int x,y,scale;
   int endx,endy,endscale;

   GetToken (false);
   strcpy(&(name[0]),token);
   GetToken (false);
   duration=ParseNum(token);
   GetToken (false);
   numframes=ParseNum(token);
   GetToken (false);
   framedelay=ParseNum(token);
   GetToken (false);
   x=ParseNum(token);
   GetToken (false);
   y=ParseNum(token);
   GetToken (false);
   scale=ParseNum(token);
   GetToken (false);
   endx=ParseNum(token);
   GetToken (false);
   endy=ParseNum(token);
   GetToken (false);
   endscale=ParseNum(token);

   event->effect = SpawnCinematicSprite ( name, duration, numframes,
                                          framedelay, x, y, scale,
                                          endx, endy, endscale
                                        );
}
Beispiel #3
0
gboolean ParseCmdLine(int argc, char *argv[], struct CmdLineOptions *opts)
{
    int argNo = 1;
    gboolean isXAltSet = FALSE, isYAltSet = FALSE, isWidthSet = FALSE;

    /* place on the left bottom */
    opts->x = 0;
    opts->isXNeg = FALSE;
    opts->isXPercent = FALSE;
    opts->y = 0;
    opts->isYNeg = TRUE;
    opts->isYPercent = FALSE;

    /* height as 25% of keyboard width */
    opts->height = 25;
    opts->isHeightPercent = TRUE;

    opts->isDecorated = FALSE;
    opts->hasResizeGrip = FALSE;
    opts->isOnTaskBar = FALSE;
    opts->isOnTop = TRUE;
    opts->winStateToSet = CL_WSTATE_PRESENT;
    opts->composeKeys = NULL;

    while( argNo < argc ) {
        if( !strcmp(argv[argNo], "-h") ) {
            Usage();
            return FALSE;
        }else if( !strcmp(argv[argNo], "-x") ) {
            if( ! ParseNum(argv[argNo], argv[argNo+1],
                        &opts->isXNeg, &opts->x, &opts->isXPercent) )
                return FALSE;
            argNo += 2;
        }else if( !strcmp(argv[argNo], "-y") ) {
            if( ! ParseNum(argv[argNo], argv[argNo+1],
                        &opts->isYNeg, &opts->y, &opts->isYPercent) )
                return FALSE;
            argNo += 2;
        }else if( !strcmp(argv[argNo], "-xalt") ) {
            if( ! ParseNum(argv[argNo], argv[argNo+1],
                        &opts->isXAltNeg, &opts->xalt, &opts->isXAltPercent) )
                return FALSE;
            isXAltSet = TRUE;
            argNo += 2;
        }else if( !strcmp(argv[argNo], "-yalt") ) {
            if( ! ParseNum(argv[argNo], argv[argNo+1],
                        &opts->isYAltNeg, &opts->yalt, &opts->isYAltPercent) )
                return FALSE;
            isYAltSet = TRUE;
            argNo += 2;
        }else if( !strcmp(argv[argNo], "-width") ) {
            if( ! ParseNum(argv[argNo], argv[argNo+1], &opts->isWidthNeg,
                        &opts->width, &opts->isWidthPercent) )
                return FALSE;
            isWidthSet = TRUE;
            argNo += 2;
        }else if( !strcmp(argv[argNo], "-height") ) {
            if( ! ParseNum(argv[argNo], argv[argNo+1], NULL,
                        &opts->height, &opts->isHeightPercent) )
                return FALSE;
            argNo += 2;
        }else if( !strcmp(argv[argNo], "-decorated") ) {
            opts->isDecorated = TRUE;
            ++argNo;
        }else if( !strcmp(argv[argNo], "-resizeGrip") ) {
            opts->hasResizeGrip = TRUE;
            ++argNo;
        }else if( !strcmp(argv[argNo], "-taskbar") ) {
            opts->isOnTaskBar = TRUE;
            ++argNo;
        }else if( !strcmp(argv[argNo], "-notop") ) {
            opts->isOnTop = FALSE;
            ++argNo;
        }else if( !strcmp(argv[argNo], "-iconify") ) {
            opts->winStateToSet = CL_WSTATE_ICONIFY;
            ++argNo;
        }else if( !strcmp(argv[argNo], "-present") ) {
            opts->winStateToSet = CL_WSTATE_PRESENT;
            ++argNo;
        }else if( !strcmp(argv[argNo], "-toggle") ) {
            opts->winStateToSet = CL_WSTATE_TOGGLE;
            ++argNo;
        }else if( !strcmp(argv[argNo], "-rightalt") ) {
            opts->composeKeys = argv[argNo+1];
            argNo += 2;
        }else{
            g_print("unknown option -- %s\n", argv[argNo]);
            g_print("type -h option for usage\n");
            return FALSE;
        }
    }
    if( ! isXAltSet ) {
        opts->xalt = opts->x;
        opts->isXAltNeg = opts->isXNeg;
        opts->isXAltPercent = opts->isXPercent;
    }
    if( ! isYAltSet ) {
        opts->yalt = 0;
        opts->isYAltNeg = ! opts->isYNeg;
        opts->isYAltPercent = FALSE;
    }
    if( ! isWidthSet ) {
        opts->width = opts->x;
        opts->isWidthNeg = TRUE;
        opts->isWidthPercent = opts->isXPercent;
    }
    return TRUE;
}
Beispiel #4
0
/*
Player structures:

Warsow <v0.4
[rate] [ping] "playername" [team] [0x22]

Warsow v0.5
[rate] [ping] "playername" [team][0x0a]
last player: 
[rate] [ping] "playername" [team][0x0a][0x00]

*/
PLAYERDATA *Q3_ParsePlayers2(SERVER_INFO *pSI,char *pointer,char *end, DWORD *numPlayers,char *szP)
{
	int Pindex =0;
	PLAYERDATA *pQ3Players=NULL;
	BOOL bGTVBug=FALSE;
	pSI->cBots = 0;
	if(pointer[0]!=0)
	{
		//Parseplayers	
		PLAYERDATA *pQ3CurrentPlayer=NULL;		
		while(pointer<end)
		{
			PLAYERDATA *player = (PLAYERDATA *)calloc(1,sizeof(PLAYERDATA));
			if(player==NULL) //Out of memory
				return pQ3Players;
			player->pNext = NULL;							
			player->szClanTag = NULL;	
			player->szTeam = NULL;	
			player->cGAMEINDEX = pSI->cGAMEINDEX;
			player->pServerInfo = pSI;
			player->dwServerIndex = pSI->dwIndex;

		
			player->rate = ParseNum(pointer);
			player->ping = ParseNum(pointer);
			int nexuizUnknown = ParseNum(pointer);
			player->szPlayerName = ParseString(pointer);

			
			switch(pSI->cGAMEINDEX)
			{				
				case NEXUIZ_SERVERLIST:
				case OPENARENA_SERVERLIST:
				case Q3_SERVERLIST:
					{
						if(player->ping == 0)
							pSI->cBots ++;

					}
					break;
				case ET_SERVERLIST: //ETpro for retrieving player status (connecting, spectating, allies & axis)
				{
					if(player->ping == 0)
						pSI->cBots ++;

					if(szP!=NULL)
					{
						int l = strlen(szP);
						while(Pindex<l)
						{
							if(szP[Pindex]!='-')
							{
								int _idx = (szP[Pindex]-48);
								player->szTeam = _strdup(&szPlyType[_idx][0]);
								Pindex++;					
								break;
							}
							Pindex++;						
						}
					}
					break;
				}
				case WARSOW_SERVERLIST:
				{
					char *szProtocol=NULL;
				//	GAME_INFO *pGI = &gm.GamesInfo[pSI->cGAMEINDEX];
				//	szProtocol = Get_RuleValue((TCHAR*)_T("protocol"),pSI->pServerRules);
					//if(szProtocol!=NULL)
					{
						//if(atoi(szProtocol)<11) //pre version 0.5
						{
							pointer++;
							char * p0a = strchr(pointer,0x0A);
							if(p0a!=NULL)
								p0a[0]=0;
							if(strcmp(pointer,"0")==0)
								player->szTeam = _strdup("Spectator");
							else if(strcmp(pointer,"2")==0)
								player->szTeam = _strdup("Red");
							else if(strcmp(pointer,"3")==0)
								player->szTeam= _strdup("Blue");
								
							pointer++;						
						}
					}
					break;
				}
			}
			//Player seperator
			pointer++; //normal 0x0a but for Warsow it is 0x22 (pre v0.5)

			if(pQ3Players==NULL)
				pQ3Players = pQ3CurrentPlayer = player;
			else 
				pQ3CurrentPlayer = pQ3CurrentPlayer->pNext = player;

			*numPlayers= *numPlayers+1;	
			if(pointer[0]==0) //Warsow fix
				break;
					
		}
		
	}
	return pQ3Players;
}