⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui_setup.cpp

📁 空战游戏flacon源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	if(button != NULL)
	{
		if(PlayerOptions.AlphaOn())
			button->SetState(C_STATE_1);
		else
			button->SetState(C_STATE_0);
		button->Refresh();
	}
	
	button=(C_Button *)win->FindControl(BILINEAR_FILTERING);
	if(button != NULL)
	{
		if(PlayerOptions.FilteringOn())
			button->SetState(C_STATE_1);
		else
			button->SetState(C_STATE_0);
		button->Refresh();
	}
	
	button=(C_Button *)win->FindControl(OBJECT_TEXTURES);
	if(button != NULL)
	{
		if(PlayerOptions.ObjectTexturesOn())
			button->SetState(C_STATE_1);
		else
			button->SetState(C_STATE_0);
		button->Refresh();
	}
	
	text=(C_Text *)win->FindControl(CAL_TEXT);
	if(text != NULL)
		text->SetText("");

	InitSoundSetup();
	
	slider=(C_Slider *)win->FindControl(OBJECT_DETAIL);
	if(slider != NULL)
	{
		ebox = (C_EditBox *)win->FindControl(OBJECT_DETAIL_READOUT);
		if(ebox)
		{
			PlayerOptions.ObjDetailLevel = min(PlayerOptions.ObjDetailLevel, 2.0F*GraphicSettingMult);
			ebox->SetInteger( FloatToInt32((PlayerOptions.ObjDetailLevel- .5f)/.25f + 1.5f));
			ebox->Refresh();
			slider->SetSteps(static_cast<short>(6*GraphicSettingMult));
			slider->SetUserNumber(0,OBJECT_DETAIL_READOUT);
		}
		slider->SetSliderPos(FloatToInt32((slider->GetSliderMax()-slider->GetSliderMin())*(PlayerOptions.ObjDetailLevel-0.5f)/(1.5f*GraphicSettingMult)));
	}

	slider=(C_Slider *)win->FindControl(SFX_LEVEL);
	if(slider != NULL)
	{
		ebox = (C_EditBox *)win->FindControl(SFX_LEVEL_READOUT);
		if(ebox)
		{
			ebox->SetInteger( FloatToInt32(PlayerOptions.SfxLevel));
			ebox->Refresh();
			slider->SetUserNumber(0,SFX_LEVEL_READOUT);
		}
		slider->SetSliderPos(FloatToInt32((slider->GetSliderMax()-slider->GetSliderMin())*(PlayerOptions.SfxLevel - 1.0F)/4.0f));
	}

	slider=(C_Slider *)win->FindControl(DISAGG_LEVEL);
	if(slider != NULL)
	{
		ebox = (C_EditBox *)win->FindControl(DISAGG_LEVEL_READOUT);
		if(ebox)
		{
			ebox->SetInteger(PlayerOptions.BldDeaggLevel + 1);
			ebox->Refresh();
			slider->SetUserNumber(0,DISAGG_LEVEL_READOUT);
		}
		slider->SetSliderPos((slider->GetSliderMax()-slider->GetSliderMin())*PlayerOptions.ObjDeaggLevel/100);
	}
	
		
	slider=(C_Slider *)win->FindControl(VEHICLE_SIZE);
	if(slider != NULL)
	{
		slider->SetSliderPos(FloatToInt32((slider->GetSliderMax()-slider->GetSliderMin())*(PlayerOptions.ObjMagnification - 1.0F)/4.0F));
		ebox = (C_EditBox *)win->FindControl(VEHICLE_SIZE_READOUT);
		if(ebox)
		{
			ebox->SetInteger(FloatToInt32(PlayerOptions.ObjMagnification));
			ebox->Refresh();
			slider->SetUserNumber(0,VEHICLE_SIZE_READOUT);
		}
	}
	
	slider=(C_Slider *)win->FindControl(TEXTURE_DISTANCE);
	if(slider != NULL)
	{
		ebox = (C_EditBox *)win->FindControl(TEX_DISTANCE_READOUT);
		if(ebox)
		{
			ebox->SetInteger(PlayerOptions.DispTextureLevel + 1);
			ebox->Refresh();
			slider->SetUserNumber(0,TEX_DISTANCE_READOUT);
		}
		slider->SetSliderPos((slider->GetSliderMax()-slider->GetSliderMin())*(PlayerOptions.DispTextureLevel)/4);
	}

	slider=(C_Slider *)win->FindControl(PLAYER_BUBBLE_SLIDER);
	if(slider != NULL)
	{
		ebox = (C_EditBox *)win->FindControl(PLAYER_BUBBLE_READOUT);
		if(ebox)
		{
			PlayerOptions.PlayerBubble = min(PlayerOptions.PlayerBubble, 2.0F*GraphicSettingMult);
			ebox->SetInteger( FloatToInt32((PlayerOptions.PlayerBubble - .5f)*4.0F + 1.5F));
			ebox->Refresh();
			slider->SetSteps(static_cast<short>(6*GraphicSettingMult));
			slider->SetUserNumber(0,PLAYER_BUBBLE_READOUT);
		}
		slider->SetSliderPos(FloatToInt32((slider->GetSliderMax()-slider->GetSliderMin())*(PlayerOptions.PlayerBubble-0.5f)/(1.5f*GraphicSettingMult)));
	}

	slider=(C_Slider *)win->FindControl(TERRAIN_DETAIL);
	if(slider != NULL)
	{
		int step;
		step = (slider->GetSliderMax()-slider->GetSliderMin())/(6*GraphicSettingMult);
	
		slider->SetSteps(static_cast<short>(6*GraphicSettingMult));

		if(PlayerOptions.DispTerrainDist > 40)
			slider->SetSliderPos(FloatToInt32(step*(2+(PlayerOptions.DispTerrainDist - 40.0F)/10.0F)));
		else 
			slider->SetSliderPos((2 - PlayerOptions.DispMaxTerrainLevel)*step);

		ebox = (C_EditBox *)win->FindControl(TEX_DETAIL_READOUT);
		if(ebox)
		{
			ebox->SetInteger( FloatToInt32(((float)slider->GetSliderPos()/(slider->GetSliderMax()-slider->GetSliderMin()))*6.0F*GraphicSettingMult + 1.5F));
			ebox->Refresh();
			slider->SetUserNumber(0,TEX_DETAIL_READOUT);
		}
	}
	
	//ControlsTab
	
	lbox = (C_ListBox *)win->FindControl(JOYSTICK_SELECT );//JOYSTICK_SELECT
	if(lbox)
	{
		BuildControllerList(lbox);
		lbox->SetValue(gCurController + 1);
		lbox->Refresh();
	}
	
	//if (S_joycaps.wCaps & JOYCAPS_HASZ)
	if (IO.AnalogIsUsed(2))
	{
		button=(C_Button *)win->FindControl(THROTTLE_CHECK);
		if(button != NULL)
		{
			button->SetFlagBitOn(C_BIT_INVISIBLE);
			button->SetState(C_STATE_1);
			button->Refresh();
		}
	}
	
	if (IO.AnalogIsUsed(3))
	{
		button=(C_Button *)win->FindControl(RUDDER_CHECK);
		if(button != NULL)
		{
			button->SetFlagBitOn(C_BIT_INVISIBLE);
			button->SetState(C_STATE_1);
			button->Refresh();
		}
	}
	
	SetRealism(win);
		
	if(!SetupCritSection)
		SetupCritSection = F4CreateCriticalSection();

	KeyVar.EditKey = FALSE;

}//SetupControls

void SetupRadioCB(long,short hittype,C_Base *control)
{
	int i;
	C_Button *button;
	
	if(hittype != C_TYPE_LMOUSEUP)
		return;
/*
	if(Calibration.calibrating)
	{
		StopCalibrating(control);
	}*/
	
	ready = FALSE;
	
	
	if(SetupViewer)
	{
		F4EnterCriticalSection(SetupCritSection);
		RViewPoint	*viewpt;
		viewpt = SetupViewer->GetVP();
		viewpt->RemoveObject(Smoke);
		delete Smoke;
		Smoke = NULL;
		SetupViewer->Cleanup();
		delete SetupViewer;
		SetupViewer = NULL;
		F4LeaveCriticalSection(SetupCritSection);
		button=(C_Button *)control->Parent_->FindControl(RENDER);
		if(button != NULL)
		{
			button->SetState(C_STATE_0);
		}
	}
	
	InitSoundSetup();

	i=1;
	while(control->GetUserNumber(i))
	{
		control->Parent_->HideCluster(control->GetUserNumber(i));
		i++;
	}
	control->Parent_->UnHideCluster(control->GetUserNumber(0));
	
	control->Parent_->RefreshWindow();
	
	Cluster = control->GetUserNumber(0);

	int hasPOV= FALSE;
	if(gTotalJoy)
	{
		DIDEVCAPS				devcaps;
		devcaps.dwSize = sizeof(DIDEVCAPS);
		gpDIDevice[gCurController]->GetCapabilities( &devcaps);
		if(devcaps.dwPOVs > 0)
			hasPOV = TRUE;
	}

	if(control->GetUserNumber(0) == 8004)
	{
		HideKeyStatusLines(control->Parent_);

		button=(C_Button *)control->Parent_->FindControl(LEFT_HAT);
		if(button != NULL)
		{
			if (!hasPOV)
				button->SetFlagBitOn(C_BIT_INVISIBLE);
			else
				button->SetFlagBitOff(C_BIT_INVISIBLE);
			button->Refresh();
		}
		
		button=(C_Button *)control->Parent_->FindControl(RIGHT_HAT);
		if(button != NULL)
		{
			if (!hasPOV)
				button->SetFlagBitOn(C_BIT_INVISIBLE);
			else
				button->SetFlagBitOff(C_BIT_INVISIBLE);
			button->Refresh();
		}
		
		button=(C_Button *)control->Parent_->FindControl(CENTER_HAT);
		if(button != NULL)
		{
			if (!hasPOV)
				button->SetFlagBitOn(C_BIT_INVISIBLE);
			else
				button->SetFlagBitOff(C_BIT_INVISIBLE);
			button->Refresh();
		}
		
		button=(C_Button *)control->Parent_->FindControl(UP_HAT);
		if(button != NULL)
		{
			if (!hasPOV)
				button->SetFlagBitOn(C_BIT_INVISIBLE);
			else
				button->SetFlagBitOff(C_BIT_INVISIBLE);
			button->Refresh();
		}
		
		button=(C_Button *)control->Parent_->FindControl(DOWN_HAT);
		if(button != NULL)
		{
			if (!hasPOV)
				button->SetFlagBitOn(C_BIT_INVISIBLE);
			else
				button->SetFlagBitOff(C_BIT_INVISIBLE);
			button->Refresh();
		}
		
	}
	
}//SetupRadioCallback

static void SaveValues(void)
{
	C_Window	*win;
	C_Button	*button;
	C_Text		*text;
	C_ListBox	*lbox;
	C_Slider	*slider;
	C_EditBox	*ebox;
	
	
	win=gMainHandler->FindWindow(SETUP_WIN);
	
	if(win == NULL)
		return;
	
	lbox=(C_ListBox *)win->FindControl(SET_FLTMOD);
	if(lbox != NULL)
	{
		if((lbox->GetTextID())==SET_FLTMOD_1)
			PlayerOptions.SimFlightModel = FMAccurate;
		else
			PlayerOptions.SimFlightModel = FMSimplified;

		lbox->Refresh();
	}
	
	lbox=(C_ListBox *)win->FindControl(SET_RADAR);
	if(lbox != NULL)
	{
		switch(lbox->GetTextID())
		{
		case SET_RADAR_1:
			PlayerOptions.SimAvionicsType = ATRealistic;
			break;
		case SET_RADAR_2:
			PlayerOptions.SimAvionicsType = ATSimplified;
			break;
		case SET_RADAR_3:
			PlayerOptions.SimAvionicsType = ATEasy;
			break;
		}
		lbox->Refresh();
	}
	
	lbox=(C_ListBox *)win->FindControl(SET_WEAPEFF);
	if(lbox != NULL)
	{
		switch(lbox->GetTextID())
		{
		case SET_WEAPEFF_1:
			PlayerOptions.SimWeaponEffect = WEAccurate;
			break;
		case SET_WEAPEFF_2:
			PlayerOptions.SimWeaponEffect = WEEnhanced;
			break;
		case SET_WEAPEFF_3:
			PlayerOptions.SimWeaponEffect = WEExaggerated;
			break;
		}
		lbox->Refresh();
	}
	
	lbox=(C_ListBox *)win->FindControl(SET_AUTOPILOT);
	if(lbox != NULL)
	{
		switch(lbox->GetTextID())
		{
		case SET_AUTO_1:
			PlayerOptions.SimAutopilotType = APNormal;
			break;
		case SET_AUTO_2:
			PlayerOptions.SimAutopilotType = APEnhanced;
			break;
		case SET_AUTO_3:
			PlayerOptions.SimAutopilotType = APIntelligent;
			break;
		}
		lbox->Refresh();
	}

	lbox=(C_ListBox *)win->FindControl(SET_PADLOCK);
	if(lbox != NULL)
	{
		switch(lbox->GetTextID())
		{
		case SET_PADLOCK_4:
			PlayerOptions.SimPadlockMode = PDDisabled;
			break;
		case SET_PADLOCK_1:
			PlayerOptions.SimPadlockMode = PDRealistic;
			break;
		case SET_PADLOCK_2:
			PlayerOptions.SimPadlockMode = PDEnhanced;
			break;
		//case SET_PADLOCK_3:
		//	PlayerOptions.SimPadlockMode = PDSuper;
		//	break;
		}
		lbox->Refresh();
	}
	
	lbox=(C_ListBox *)win->FindControl(SET_REFUELING);
	if(lbox != NULL)
	{
		switch(lbox->GetTextID())
		{
		case SET_REFUEL_1:
			PlayerOptions.SimAirRefuelingMode = ARRealistic;
			break;
		case SET_REFUEL_2:
			PlayerOptions.SimAirRefuelingMode = ARModerated;
			break;
		case SET_REFUEL_3:
			PlayerOptions.SimAirRefuelingMode = ARSimplistic;
			break;
		}
		lbox->Refresh();
	}

	lbox=(C_ListBox *)win->FindControl(SET_CANOPY_CUE);
	if(lbox != NULL)
	{
		switch(lbox->GetTextID())
		{
		case CUE_NONE:
			PlayerOptions.SimVisualCueMode = VCNone;
			break;
		case CUE_LIFT_LINE:
			PlayerOptions.SimVisualCueMode = VCLiftLine;
			break;
		case CUE_REFLECTION_MAP:
			PlayerOptions.SimVisualCueMode = VCReflection;
			break;
		case CUE_BOTH:
			PlayerOptions.SimVisualCueMode = VCBoth;
			break;
		}
		lbox->Refresh();
	}
	
	lbox=(C_ListBox *)win->FindControl(SET_VIDEO_CARD);
	if(lbox != NULL)
	{
		DisplayOptions.DispVideoCard = static_cast<uchar>(lbox->GetTextID() - 1);
		lbox->Refresh();
	}
	
	lbox=(C_ListBox *)win->FindControl(SET_VIDEO_DRIVER);
	if(lbox != NULL)
	{
		DisplayOptions.DispVideoDriver = static_cast<uchar>(lbox->GetTextID() - 1);
		lbox->Refresh();
	}

	lbox=(C_ListBox *)win->FindControl(SET_RESOLUTION);
	if(lbox != NULL)
	{
		DisplayOptions.DispWidth = static_cast<short>(lbox->GetTextID());
		DisplayOptions.DispHeight = static_cast<ushort>(FloatToInt32(lbox->GetTextID() * 0.75F));

		ShiAssert(DisplayOptions.DispWidth <= 1600);
		FalconDisplay.SetSimMode(DisplayOptions.DispWidth, DisplayOptions.DispHeight);

		lbox->Refresh();
	}

	button=(C_Button *)win->FindControl(SET_ORDNANCE);
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.SetSimFlag (SIM_UNLIMITED_AMMO);
		else
			PlayerOptions.ClearSimFlag (SIM_UNLIMITED_AMMO);
	}
	
	button=(C_Button *)win->FindControl(SET_FUEL);
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.SetSimFlag (SIM_UNLIMITED_FUEL);
		else
			PlayerOptions.ClearSimFlag (SIM_UNLIMITED_FUEL);
	}
	
	button=(C_Button *)win->FindControl(SET_CHAFFLARES);
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.SetSimFlag (SIM_UNLIMITED_CHAFF);
		else
			PlayerOptions.ClearSimFlag (SIM_UNLIMITED_CHAFF);
		
	}
	
	button=(C_Button *)win->FindControl(SET_COLLISIONS);
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.SetSimFlag (SIM_NO_COLLISIONS);
		else
			PlayerOptions.ClearSimFlag (SIM_NO_COLLISIONS);
	}
	
	button=(C_Button *)win->FindControl(SET_BLACKOUT);
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.SetSimFlag (SIM_NO_BLACKOUT);
		else
			PlayerOptions.ClearSimFlag (SIM_NO_BLACKOUT);
	}
	
	
	button=(C_Button *)win->FindControl(SET_IDTAGS);
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.SetSimFlag (SIM_NAMETAGS);
		else
			PlayerOptions.ClearSimFlag (SIM_NAMETAGS);			
	}
	
	button=(C_Button *)win->FindControl(SET_WEATHER);
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.GeneralFlags |= GEN_NO_WEATHER;
		else
			PlayerOptions.GeneralFlags &= ~GEN_NO_WEATHER;
	}
	
	button=(C_Button *)win->FindControl(SET_BULLSEYE_CALLS);
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.SetSimFlag(SIM_BULLSEYE_CALLS);
		else
			PlayerOptions.ClearSimFlag(SIM_BULLSEYE_CALLS);
	}

	button=(C_Button *)win->FindControl(SET_INVULNERABILITY); //should be SET_INVULNERABLITY
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.SetSimFlag(SIM_INVULNERABLE);
		else
			PlayerOptions.ClearSimFlag(SIM_INVULNERABLE);
	}

	ebox = (C_EditBox *)win->FindControl(ACMI_FILE_SIZE);
	if(ebox)
	{
		PlayerOptions.ACMIFileSize = ebox->GetInteger();
	}
	
	button=(C_Button *)win->FindControl(AUTO_SCALE);
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.SetObjFlag(DISP_OBJ_DYN_SCALING);
		else
			PlayerOptions.ClearObjFlag(DISP_OBJ_DYN_SCALING);
	}

	button=(C_Button *)win->FindControl(GOUROUD);//GOUROUD
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.SetDispFlag(DISP_GOURAUD);
		else
			PlayerOptions.ClearDispFlag(DISP_GOURAUD);
	}
	
	button=(C_Button *)win->FindControl(HAZING);
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.SetDispFlag(DISP_HAZING);
		else
			PlayerOptions.ClearDispFlag(DISP_HAZING);
	}
	
	button=(C_Button *)win->FindControl(ALPHA_BLENDING);
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.SetDispFlag(DISP_ALPHA_BLENDING);
		else
			PlayerOptions.ClearDispFlag(DISP_ALPHA_BLENDING);
	}
	
	button=(C_Button *)win->FindControl(BILINEAR_FILTERING);
	if(button != NULL)
	{
		if(button->GetState() == C_STATE_1)
			PlayerOptions.SetDispFlag(DISP_BILINEAR);
		else
			PlayerOptions.ClearDispFlag(DISP_BILINEAR);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -