示例#1
0
文件: ui_atoms.c 项目: otty/cake3
static void UI_MessageMode_f( void )
{
  char *arg = UI_Argv( 0 );

  trap_Cvar_Set( "ui_sayBuffer", "" );

  switch( arg[ 11 ] )
  {
    default:
    case '\0':
      // Global
      uiInfo.chatTeam             = qfalse;
      break;

    case '2':
      // Team
      uiInfo.chatTeam             = qtrue;
      break;
  }

  trap_Key_SetCatcher( KEYCATCH_UI );
  Menus_CloseByName( "say" );
  Menus_CloseByName( "say_team" );

  if( uiInfo.chatTeam )
    Menus_ActivateByName( "say_team" );
  else
    Menus_ActivateByName( "say" );
}
示例#2
0
qboolean UI_ConsoleCommand( int realTime ) {
	char *cmd = UI_Argv( 0 );

	uiInfo.uiDC.frameTime = realTime - uiInfo.uiDC.realTime;
	uiInfo.uiDC.realTime = realTime;

	if ( Q_stricmp( cmd, "ui_report" ) == 0 ) {
		UI_Report();
		return qtrue;
	}

	if ( Q_stricmp( cmd, "ui_load" ) == 0 ) {
		UI_Load();
		return qtrue;
	}

	if ( Q_stricmp( cmd, "ui_opensiegemenu" ) == 0 ) {
		if ( trap->Cvar_VariableValue( "g_gametype" ) == GT_SIEGE ) {
			Menus_CloseAll();
			if ( Menus_ActivateByName( UI_Argv( 1 ) ) ) {
				trap->Key_SetCatcher( KEYCATCH_UI );
			}
		}
		return qtrue;
	}

	if ( !Q_stricmp( cmd, "ui_openmenu" ) ) {
		Menus_CloseAll();
		if ( Menus_ActivateByName( UI_Argv( 1 ) ) ) {
			trap->Key_SetCatcher( KEYCATCH_UI );
		}
		return qtrue;
	}

	if ( Q_stricmp( cmd, "ui_cache" ) == 0 ) {
		UI_Cache_f();
		return qtrue;
	}

	if ( Q_stricmp( cmd, "ui_teamOrders" ) == 0 ) {
		return qtrue;
	}

	if ( Q_stricmp( cmd, "ui_cdkey" ) == 0 ) {
		return qtrue;
	}

	return qfalse;
}
void JKG_PartyMngt_UpdateNotify(int msg) {
	// Gets called from CGame if there's an update
	// CAUTION: To use trap/UI calls, use the syscall override first!
	// Msg 0: New team/invite information
	// Msg 1: New seekers information
	// Msg 10: Open the team manager
	if (msg == 0) {
		if (!PMngtData.active) {
			return;
		}
		JKG_PartyMngt_UpdateState();
	} else if (msg == 1) {
		if (!PMngtData.active) {
			return;
		}
		JKG_PartyMngt_UpdateSeekers();
	} else if (msg == 10) {
		memset(&PMngtData, 0, sizeof(PMngtData));
		PMngtData.active = 1;
		if (Menus_ActivateByName("jkg_partymanagement"))
		{
			trap->Key_SetCatcher( trap->Key_GetCatcher() | KEYCATCH_UI & ~KEYCATCH_CONSOLE );			
		}
	}
}
示例#4
0
/*
===============
UI_SaveMenu_f
===============
*/
static void UI_SaveMenu_f( void ) 
{
	ui.PrecacheScreenshot();

	trap_Key_SetCatcher( KEYCATCH_UI );
	Menus_ActivateByName("ingamesaveMenu");
}
示例#5
0
	static int Menu_Activate( lua_State *L ) {
		menuDef_t *menu = CheckMenu( L, 1 );
		Menus_CloseAll();
		Menus_ActivateByName( menu->window.name );
		trap->Key_SetCatcher( KEYCATCH_CGAME );
		return 0;
	}
示例#6
0
文件: ui_atoms.c 项目: otty/cake3
static void UI_Menu_f( void )
{
    if( Menu_Count( ) > 0 )
    {
      trap_Key_SetCatcher( KEYCATCH_UI );
      Menus_ActivateByName( UI_Argv( 1 ) );
    }
}
void JKG_Shop_UpdateNotify(int msg) {
	menuDef_t* menu = Menus_FindByName("jkg_shop");
	if (menu && Menus_ActivateByName("jkg_shop"))
	{
		JKG_ConstructShopLists();
		trap->Key_SetCatcher( trap->Key_GetCatcher() | KEYCATCH_UI );
	}
}
示例#8
0
/*
===============
UI_SaveMenu_f
===============
*/
static void UI_SaveMenu_f( void )
{
#ifdef JK2_MODE
	ui.PrecacheScreenshot();
#endif

	trap_Key_SetCatcher( KEYCATCH_UI );
	Menus_ActivateByName("ingamesaveMenu");
}
示例#9
0
/*
=================
UI_SetActiveMenu -
	this should be the ONLY way the menu system is brought up

=================
*/
void UI_SetActiveMenu( const char* menuname,const char *menuID )
{
	// this should be the ONLY way the menu system is brought up (besides the UI_ConsoleCommand below)

	if (cls.state != CA_DISCONNECTED && !ui.SG_GameAllowedToSaveHere(qtrue))	//don't check full sytem, only if incamera
	{
		return;
	}

	if ( !menuname ) {
		UI_ForceMenuOff();
		return;
	}

	//make sure force-speed and slowmodeath doesn't slow down menus - NOTE: they should reset the timescale when the game un-pauses
	Cvar_SetValue( "timescale", 1.0f );

	UI_Cursor_Show(qtrue);

	// enusure minumum menu data is cached
	Menu_Cache();

	if ( Q_stricmp (menuname, "mainMenu") == 0 )
	{
		UI_MainMenu();
		return;
	}

	if ( Q_stricmp (menuname, "ingame") == 0 )
	{
		ui.Cvar_Set( "cl_paused", "1" );
		UI_InGameMenu(menuID);
		return;
	}

	if ( Q_stricmp (menuname, "datapad") == 0 )
	{
		ui.Cvar_Set( "cl_paused", "1" );
		UI_DataPadMenu();
		return;
	}
#ifndef JK2_MODE
	if ( Q_stricmp (menuname, "missionfailed_menu") == 0 )
	{
		Menus_CloseAll();
		Menus_ActivateByName("missionfailed_menu");
		ui.Key_SetCatcher( KEYCATCH_UI );
		return;
	}
#endif
}
示例#10
0
/*
=================
UI_Cache
=================
*/
static void UI_Cache_f( void )
{
	Menu_Cache();
#ifndef JK2_MODE
extern const char *lukeForceStatusSounds[];
extern const char *kyleForceStatusSounds[];
	for (int index = 0; index < 5; index++)
	{
		DC->registerSound(lukeForceStatusSounds[index], qfalse);
		DC->registerSound(kyleForceStatusSounds[index], qfalse);
	}
	for (int index = 1; index <= 18; index++)
	{
		DC->registerSound(va("sound/chars/storyinfo/%d",index), qfalse);
	}
	trap_S_RegisterSound("sound/chars/kyle/04kyk001.mp3", qfalse);
	trap_S_RegisterSound("sound/chars/kyle/05kyk001.mp3", qfalse);
	trap_S_RegisterSound("sound/chars/kyle/07kyk001.mp3", qfalse);
	trap_S_RegisterSound("sound/chars/kyle/14kyk001.mp3", qfalse);
	trap_S_RegisterSound("sound/chars/kyle/21kyk001.mp3", qfalse);
	trap_S_RegisterSound("sound/chars/kyle/24kyk001.mp3", qfalse);
	trap_S_RegisterSound("sound/chars/kyle/25kyk001.mp3", qfalse);

	trap_S_RegisterSound("sound/chars/luke/06luk001.mp3", qfalse);
	trap_S_RegisterSound("sound/chars/luke/08luk001.mp3", qfalse);
	trap_S_RegisterSound("sound/chars/luke/22luk001.mp3", qfalse);
	trap_S_RegisterSound("sound/chars/luke/23luk001.mp3", qfalse);
	trap_S_RegisterSound("sound/chars/protocol/12pro001.mp3", qfalse);
	trap_S_RegisterSound("sound/chars/protocol/15pro001.mp3", qfalse);
	trap_S_RegisterSound("sound/chars/protocol/16pro001.mp3", qfalse);
	trap_S_RegisterSound("sound/chars/wedge/13wea001.mp3", qfalse);


	Menus_ActivateByName("ingameMissionSelect1");
	Menus_ActivateByName("ingameMissionSelect2");
	Menus_ActivateByName("ingameMissionSelect3");
#endif
}
示例#11
0
void Menus_CloseByName(const char *p)
{
	menuDef_t *menu = Menus_FindByName(p);

	if (menu != NULL)
	{
		int i;

		// Gordon: make sure no edit fields are left hanging
		for (i = 0; i < menu->itemCount; i++)
		{
			if (g_editItem == menu->items[i])
			{
				g_editingField = qfalse;
				g_editItem     = NULL;
			}
		}

		menu->cursorItem = -1;
		Menu_ClearFocus(menu);
		Menu_RunCloseScript(menu);
		menu->window.flags &= ~(WINDOW_VISIBLE | WINDOW_HASFOCUS | WINDOW_MOUSEOVER);
		if (menu->window.flags & WINDOW_MODAL)
		{
			if (modalMenuCount <= 0)
			{
				Com_Printf(S_COLOR_YELLOW "WARNING: tried closing a modal window with an empty modal stack!\n");
			}
			else
			{
				modalMenuCount--;
				// if modal doesn't have a parent, the stack item may be NULL .. just go back to the main menu then
				if (modalMenuStack[modalMenuCount])
				{
					Menus_ActivateByName(modalMenuStack[modalMenuCount]->window.name, qfalse);   // don't try to push the one we are opening to the stack
				}
			}
		}
	}
}
示例#12
0
void JKG_PartyMngt_UpdateNotify(jkgPartyNotify_e msg) {
	// Gets called from CGame if there's an update
	// CAUTION: To use trap/UI calls, use the syscall override first!
	if (msg == PARTYNOTIFY_UPDATESTATE) {
		if (!PMngtData.active) {
			return;
		}
		JKG_PartyMngt_UpdateState();
	} else if (msg == PARTYNOTIFY_UPDATESEEKERS) {
		if (!PMngtData.active) {
			return;
		}
		JKG_PartyMngt_UpdateSeekers();
	} else if (msg == PARTYNOTIFY_OPEN) {
		memset(&PMngtData, 0, sizeof(PMngtData));
		PMngtData.active = 1;
		if (Menus_ActivateByName("jkg_partymanagement"))
		{
			trap->Key_SetCatcher( trap->Key_GetCatcher() | KEYCATCH_UI );
		}
	}
}
示例#13
0
/*
=================
UI_ConsoleCommand
=================
*/
qboolean UI_ConsoleCommand( int realTime ) {
	char	*cmd;

	uiInfo.uiDC.frameTime = realTime - uiInfo.uiDC.realTime;
	uiInfo.uiDC.realTime = realTime;

	cmd = UI_Argv( 0 );

	// ensure minimum menu data is available
	//Menu_Cache();

// JKG - Only allow these commands if we're using a debug compile
// We don't want players f****n around with these
#ifdef _DEBUG

	if ( Q_stricmp (cmd, "ui_report") == 0 ) {
		UI_Report();
		return qtrue;
	}
	/*if ( Q_stricmp (cmd, "ui_testmaster") == 0) {
		JKG_GLUI_Task_Test(testMasterFinalFunc);
		return qtrue;
	}

	if ( Q_stricmp (cmd, "ui_testterms") == 0) {
		JKG_GLUI_Task_GetTermsOfUse(termsMasterFinalFunc);
		return qtrue;
	}

	if ( Q_stricmp (cmd, "ui_testregister") == 0 ) {
		char username[32];
		char password[32];
		char email[64];

		trap_Argv(1, username, 32);
		trap_Argv(2, password, 32);
		trap_Argv(3, email, 32);

		JKG_GLUI_Task_RegisterUser(username, password, email, registerFinalFunc);
		return qtrue;
	}

	if ( Q_stricmp (cmd, "ui_testlogin") == 0 ) {
		char username[32];
		char password[32];

		trap_Argv(1, username, 32);
		trap_Argv(2, password, 32);

		JKG_GLUI_Task_Login(username, password, loginFinalFunc);
		return qtrue;
	}*/

	
	

	if ( Q_stricmp (cmd, "ui_report") == 0 ) {
		UI_Report();
		return qtrue;
	}
	
	if ( Q_stricmp (cmd, "ui_load") == 0 ) {
		UI_Load();
		return qtrue;
	}

	if ( Q_stricmp (cmd, "ui_openmenu" ) == 0 ) 
	{
		//if ( trap_Cvar_VariableValue ( "developer" ) )
		{
			Menus_CloseAll();
			if (Menus_ActivateByName(UI_Argv(1)))
			{
				trap_Key_SetCatcher( KEYCATCH_UI );
			}
			return qtrue;
		}
	}

	if ( Q_stricmp (cmd, "ui_cache") == 0 ) {
		UI_Cache_f();
		return qtrue;
	}

	if ( Q_stricmp (cmd, "ui_teamOrders") == 0 ) {
		//UI_TeamOrdersMenu_f();
		return qtrue;
	}


#endif // _DEBUG

	return qfalse;
}
示例#14
0
/*
=================
UI_ConsoleCommand
=================
*/
qboolean UI_ConsoleCommand(int realTime)
{
	char           *cmd;
	char           *arg1;

	uiInfo.uiDC.frameTime = realTime - uiInfo.uiDC.realTime;
	uiInfo.uiDC.realTime = realTime;

	cmd = UI_Argv(0);

	// ensure minimum menu data is available
	//Menu_Cache();

	if(Q_stricmp(cmd, "ui_test") == 0)
	{
		UI_ShowPostGame(qtrue);
	}

	if(Q_stricmp(cmd, "ui_report") == 0)
	{
		UI_Report();
		return qtrue;
	}

	if(Q_stricmp(cmd, "ui_load") == 0)
	{
		UI_Load();
		return qtrue;
	}

	if(Q_stricmp(cmd, "remapShader") == 0)
	{
		if(trap_Argc() == 4)
		{
			char            shader1[MAX_QPATH];
			char            shader2[MAX_QPATH];

			Q_strncpyz(shader1, UI_Argv(1), sizeof(shader1));
			Q_strncpyz(shader2, UI_Argv(2), sizeof(shader2));
			trap_R_RemapShader(shader1, shader2, UI_Argv(3));
			return qtrue;
		}
	}

	if(Q_stricmp(cmd, "postgame") == 0)
	{
		UI_CalcPostGameStats();
		return qtrue;
	}

	if(Q_stricmp(cmd, "ui_cache") == 0)
	{
		UI_Cache_f();
		return qtrue;
	}

	if(Q_stricmp(cmd, "ui_teamOrders") == 0)
	{
		//UI_TeamOrdersMenu_f();
		return qtrue;
	}

	if(Q_stricmp(cmd, "menu") == 0)
	{
		arg1 = UI_Argv(1);

		if(Menu_Count() > 0)
		{
			trap_Key_SetCatcher(KEYCATCH_UI);
			Menus_ActivateByName(arg1);
			return qtrue;
		}
	}

	if(Q_stricmp(cmd, "closemenus") == 0)
	{
		if(Menu_Count() > 0)
		{
			trap_Key_SetCatcher(trap_Key_GetCatcher() & ~KEYCATCH_UI);
			trap_Key_ClearStates();
			trap_Cvar_Set("cl_paused", "0");
			Menus_CloseAll();
			return qtrue;
		}
	}

	return qfalse;
}
示例#15
0
/*
===============
UI_LoadMenu_f
===============
*/
static void UI_LoadMenu_f( void ) 
{
	trap_Key_SetCatcher( KEYCATCH_UI );
	Menus_ActivateByName("ingameloadMenu");
}
示例#16
0
/*
=================
UI_ConsoleCommand
=================
*/
qboolean UI_ConsoleCommand( int realTime ) {
	char	*cmd;

	uiInfo.uiDC.frameTime = realTime - uiInfo.uiDC.realTime;
	uiInfo.uiDC.realTime = realTime;

	cmd = UI_Argv( 0 );

	// ensure minimum menu data is available
	//Menu_Cache();

	if ( Q_stricmp (cmd, "ui_test") == 0 ) {
		UI_ShowPostGame(qtrue);
	}

	if ( Q_stricmp (cmd, "ui_report") == 0 ) {
		UI_Report();
		return qtrue;
	}
	
	if ( Q_stricmp (cmd, "ui_load") == 0 ) {
		UI_Load();
		return qtrue;
	}

	if ( Q_stricmp (cmd, "ui_opensiegemenu" ) == 0 ) 
	{
		if ( trap_Cvar_VariableValue ( "g_gametype" ) == GT_SIEGE )
		{
			Menus_CloseAll();
			if (Menus_ActivateByName(UI_Argv(1)))
			{
				trap_Key_SetCatcher( KEYCATCH_UI );
			}
		}
		return qtrue;
	}

	if ( Q_stricmp (cmd, "ui_openmenu" ) == 0 ) 
	{
		//if ( trap_Cvar_VariableValue ( "developer" ) )
		{
			Menus_CloseAll();
			if (Menus_ActivateByName(UI_Argv(1)))
			{
				trap_Key_SetCatcher( KEYCATCH_UI );
			}
			return qtrue;
		}
	}

	/*
	if ( Q_stricmp (cmd, "remapShader") == 0 ) {
		if (trap_Argc() == 4) {
			char shader1[MAX_QPATH];
			char shader2[MAX_QPATH];
			Q_strncpyz(shader1, UI_Argv(1), sizeof(shader1));
			Q_strncpyz(shader2, UI_Argv(2), sizeof(shader2));
			trap_R_RemapShader(shader1, shader2, UI_Argv(3));
			return qtrue;
		}
	}
	*/

	if ( Q_stricmp (cmd, "postgame") == 0 ) {
		UI_CalcPostGameStats();
		return qtrue;
	}

	if ( Q_stricmp (cmd, "ui_cache") == 0 ) {
		UI_Cache_f();
		return qtrue;
	}

	if ( Q_stricmp (cmd, "ui_teamOrders") == 0 ) {
		//UI_TeamOrdersMenu_f();
		return qtrue;
	}
	if ( Q_stricmp (cmd, "pause") == 0 ) {
		return qtrue;
	}
	return qfalse;
}
// Message Processor
void JKG_Slice_ProcessCommand_f(void)
{
	char arg[1024] = {0};
	char data[840];

	int len;

	int i, row, col;

	sfxHandle_t sfx;

	bitstream_t stream;

	trap->Cmd_Argv(1, arg, 1024);

	len = Base128_DecodeLength(strlen(arg));
	Base128_Decode(arg, strlen(arg), data, 840);

	

	BitStream_Init(&stream, (unsigned char *)data, len);
	BitStream_BeginReading(&stream);

	for (;;)
	{
		switch (BitStream_ReadBits(&stream, 4)) // Get the next instruction
		{
		case SLICECMD_EOM:
			// End of message
			return;
		case SLICECMD_START:
			// Reset data
			memset(&sliceData, 0, sizeof(sliceData));
			sliceData.active = qtrue;

			// Bring up UI
			trap->Cvar_Set("ui_hidehud", "1");
			Menus_CloseAll();
			if (Menus_ActivateByName("jkg_slice"))
			{
				trap->Key_SetCatcher( trap->Key_GetCatcher() | KEYCATCH_UI & ~KEYCATCH_CONSOLE );
			}
			Menu_ClearFocus(Menus_FindByName("jkg_slice"));

			// Field is locked until all data is available
			sliceData.fieldLocked = qtrue;
			break;
		case SLICECMD_STOP:
			// End the slicing minigame
			sliceData.active = qfalse;

			Menus_CloseByName("jkg_slice");
			trap->Cvar_Set("ui_hidehud", "0");
			trap->Key_SetCatcher( trap->Key_GetCatcher() & ~KEYCATCH_UI );
			break;
		case SLICECMD_CONFIG:
			// Receive configuration
			sliceData.width = BitStream_ReadBits(&stream, 3) + 1;
			sliceData.height = BitStream_ReadBits(&stream, 3) + 1;
			sliceData.securityLevels = BitStream_ReadBits(&stream, 3);
			sliceData.warningThreshold = BitStream_ReadBits(&stream, 5);
			sliceData.intrusionDetection = BitStream_ReadBool(&stream);
			if (sliceData.intrusionDetection) {
				sliceData.intrusionTime = BitStream_ReadByte(&stream) * 10;
			} else {
				sliceData.intrusionTime = 0;
			}
			sliceData.intrusionStart = 0;
			break;
		case SLICECMD_REVEAL:		
			row = BitStream_ReadBits(&stream, 3);
			col = BitStream_ReadBits(&stream, 3);
			sliceData.grid[row][col].active = 1;
			sliceData.grid[row][col].revealTime = trap->Milliseconds();
			sliceData.grid[row][col].type = BitStream_ReadBits(&stream, 3);
			break;
		case SLICECMD_LOCK:
			if (BitStream_ReadBool(&stream)) {
				sliceData.fieldLocked = qtrue;
			} else {
				sliceData.fieldLocked = qfalse;
			}
			break;
		case SLICECMD_PROGLST:
			JKG_Slice_ProgramListReset();
			sliceData.selectedProgram = -1;
			sliceData.programCount = BitStream_ReadBits(&stream, 4);
			for (i = 0; i < sliceData.programCount; i++) 
			{
				Q_strncpyz(sliceData.programs[i].ID, BitStream_ReadStringBuffered(&stream), sizeof(sliceData.programs[i].ID));
				Q_strncpyz(sliceData.programs[i].name, BitStream_ReadStringBuffered(&stream), sizeof(sliceData.programs[i].name));
				Q_strncpyz(sliceData.programs[i].desc, BitStream_ReadStringBuffered(&stream), sizeof(sliceData.programs[i].desc));
				
				sliceData.programs[i].type = BitStream_ReadBits(&stream, 2);
			}
			break;
		case SLICECMD_SHOWMSG:
			{
				int mode = BitStream_ReadBits(&stream, 2);
				char buffer[3][256];
				BitStream_ReadString(&stream, buffer[0], 256);
				BitStream_ReadString(&stream, buffer[1], 256);
				BitStream_ReadString(&stream, buffer[2], 256);

				JKG_Slice_Dialog_Show(buffer[0], buffer[1], buffer[2], mode, DLGID_SERVER);
			}
			break;
		case SLICECMD_ENDMSG:
			JKG_Slice_Dialog_Close();
			break;
		case SLICECMD_SUMMARY:
			// Process column summaries
			for (i=0; i < sliceData.width; i++) {
				sliceData.summaries[i].value = BitStream_ReadBits(&stream, 6);
				sliceData.summaries[i].alarms = BitStream_ReadBits(&stream, 4);
			}

			// Process row summaries
			for (i=0; i < sliceData.height; i++) {
				sliceData.summaries[8+i].value = BitStream_ReadBits(&stream, 6);
				sliceData.summaries[8+i].alarms = BitStream_ReadBits(&stream, 4);
			}

			sliceData.summariesKnown = qtrue;
			break;
		case SLICECMD_SECUPDATE:
			for (i = 0; i < sliceData.securityLevels; i++) {
				sliceData.securityState[i] = BitStream_ReadBits(&stream, 2);
			}
			break;
		case SLICECMD_INTRUSION:
			// TODO: Play sound effect?
			sliceData.intrusionState = BitStream_ReadBits(&stream, 2);
			if (sliceData.intrusionState == 1) {
				sliceData.intrusionStart = trap->Milliseconds();
			} else {
				sliceData.intrusionStart = 0;
			}
			break;
		case SLICECMD_WARNLEVEL:
			sliceData.warningLevel = BitStream_ReadBits(&stream, 5);
			break;
		case SLICECMD_BLINKNODE:
			row = BitStream_ReadBits(&stream, 3);
			col = BitStream_ReadBits(&stream, 3);
			sliceData.grid[row][col].blinkTime = trap->Milliseconds();
			sliceData.grid[row][col].blinkColor = BitStream_ReadBool(&stream);
			break;
		case SLICECMD_INITFIELD:
			// Ready to play
			sliceData.fieldLocked = qfalse;
			break;
		case SLICECMD_ALARM:
			sfx = trap->S_RegisterSound("sound/effects/mpalarm.wav");
			trap->S_StartLocalSound(sfx, CHAN_AUTO);
			break;
		default:
			Com_Printf("Error processing slice command, unknown command ID\n");
			return;
		}
	}
}
示例#18
0
void Menus_OpenByName(const char *p)
{
	Menus_ActivateByName(p, qtrue);
}