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

📄 graphicstab.cpp

📁 空战游戏flacon源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			slider=(C_Slider *)control->Parent_->FindControl(DISAGG_LEVEL);
			if(slider != NULL)
			{
				disagglvl = FloatToInt32((float)slider->GetSliderPos()/(slider->GetSliderMax()-slider->GetSliderMin()) * 5 + 0.5F);
			
				if(NumFeatures)
				{
					for(int i=0;i<NumFeatures;i++)
					{
						if(Features[i].Priority <= disagglvl)
							SetupViewer->AddToView(i + 100);
					}
				}
			}
			
			if(NumObjects)
			{
				for(int i=0;i<NumObjects;i++)
				{	
					SetupViewer->AddToView(i);
				}
			}

			InsertSmokeCloud();
			
			SetCursor(gCursors[CRSR_F16]);
		}
		F4LeaveCriticalSection(SetupCritSection);
		
			
		
		control->Parent_->RefreshWindow();
	}
}

void TextureDistanceCB(long,short hittype,C_Base *control)
{
	if(hittype != C_TYPE_MOUSEMOVE)
		return;
	
	C_Slider	*slider;
	slider = (C_Slider *)control;
	int pos;
	pos = FloatToInt32((float)slider->GetSliderPos()/(slider->GetSliderMax()-slider->GetSliderMin()) * 4.0f);
		
	C_EditBox *ebox;
	ebox = (C_EditBox *)control->Parent_->FindControl(slider->GetUserNumber(0));
	if(ebox)
	{
		ebox->SetInteger(pos + 1);
		ebox->Refresh();
	}

	if(SetupViewer)
	{
		RenderOTW	*renderer;
		int			TexLev;
		
		renderer = SetupViewer->GetRendOTW();
		
		TexLev = renderer->GetTerrainTextureLevel();
		
		//have the rendered view update with new settings
		if(pos != TexLev)
		{
			renderer->SetTerrainTextureLevel(pos);
			//control->Parent_->RefreshClient(2);
		}
		control->Parent_->RefreshWindow();
		
	}
	
	
}//TextureDistanceCB

void SfxLevelCB(long,short hittype,C_Base *control)
{
	if(hittype != C_TYPE_MOUSEMOVE)
		return;
	
	C_Slider	*slider;
	slider = (C_Slider *)control;
	int pos;
	pos = FloatToInt32((float)slider->GetSliderPos()/(slider->GetSliderMax()-slider->GetSliderMin()) * 4.0f);
		
	C_EditBox *ebox;
	ebox = (C_EditBox *)control->Parent_->FindControl(slider->GetUserNumber(0));
	if(ebox)
	{
		ebox->SetInteger(pos + 1);
		ebox->Refresh();
	}

	
}//SfxLevelCB


void BuildVideoCardList(C_ListBox *lbox)
{
	const char *buf;
	int i = 0;
	int Driver;
	char buf2[256];
	long value;


	C_ListBox *VidCardList = (C_ListBox *)lbox->Parent_->FindControl(SET_VIDEO_DRIVER);
	Driver = VidCardList->GetTextID() - 1;

	value = lbox->GetTextID();
	lbox->RemoveAllItems();


	while(buf = FalconDisplay.devmgr.GetDeviceName(Driver,i))
	{
		strcpy(buf2,buf);
		i++;
		lbox->AddItem(i,C_TYPE_ITEM,buf2);
	}
	ShiAssert(i>0);
	lbox->SetValue(value);
	lbox->Refresh();
}


void BuildVideoDriverList(C_ListBox *lbox)
{
	char		buf2[256];
	const char	*buf;
	int			i = 0;

	lbox->RemoveAllItems();

	while(buf = FalconDisplay.devmgr.GetDriverName(i))
	{
		
		if(FalconDisplay.devmgr.GetDeviceName(i,0))
		{
			strcpy(buf2,buf);
			lbox->AddItem(i + 1,C_TYPE_ITEM,buf2);
		}
		i++;
		
	}
	ShiAssert(i>0);
	lbox->Refresh();
}


void BuildResolutionList(C_ListBox *lbox)
{
	const char *buf;
	int i =0,Card,Driver,width,height;
	char buf2[256];
	long value;


	C_ListBox *VidDriverList = (C_ListBox *)lbox->Parent_->FindControl(SET_VIDEO_DRIVER);
	Driver = VidDriverList->GetTextID() - 1;

	C_ListBox *VidCardList = (C_ListBox *)lbox->Parent_->FindControl(SET_VIDEO_CARD);
	Card = VidCardList->GetTextID() - 1;

	value = lbox->GetTextID();
	lbox->RemoveAllItems();

	while(buf = FalconDisplay.devmgr.GetModeName(Driver,Card,i))
	{
		strcpy(buf2,buf);
		i++;
		sscanf(buf2,"%d x %d",&width,&height);
		//sscanf(buf2,"%d",&width);

		lbox->AddItem(width,C_TYPE_ITEM,buf2);
	}
	ShiAssert(i>0);
	lbox->SetValue(value);
	lbox->Refresh();
}

void DisableEnableDrivers(C_ListBox *)
{
	
}

void DisableEnableResolutions(C_ListBox* )
{
}

void VideoCardCB(long,short hittype,C_Base *control)
{
	if(hittype != C_TYPE_SELECT)
		return;
	
	C_ListBox *lbox;
	

	lbox = (C_ListBox *)control->Parent_->FindControl(SET_RESOLUTION);
	if(lbox)
		BuildResolutionList(lbox);
	//DisableEnableDrivers //SET_VIDEO_DRIVER
	//DisableEnableResolutions //SET_RESOLUTION
}

void VideoDriverCB(long,short hittype,C_Base *control)
{
	if(hittype != C_TYPE_SELECT)
		return;
	
	C_ListBox *lbox = (C_ListBox *)control->Parent_->FindControl(SET_VIDEO_CARD);
	if(lbox)
		BuildVideoCardList(lbox);

	lbox = (C_ListBox *)control->Parent_->FindControl(SET_RESOLUTION);
	if(lbox)
		BuildResolutionList(lbox);

	C_Button *button;
	//DisableEnableResolutions //SET_RESOLUTION
	if( ((C_ListBox*)control)->GetTextID() > 1)
	{
		button=(C_Button *)control->Parent_->FindControl(ALPHA_BLENDING);
		if(button != NULL)
		{
			button->SetState(C_STATE_1);
			button->Refresh();
		}
		
		button=(C_Button *)control->Parent_->FindControl(BILINEAR_FILTERING);
		if(button != NULL)
		{
			button->SetState(C_STATE_1);
			button->Refresh();
		}
	}
	else
	{
		button=(C_Button *)control->Parent_->FindControl(ALPHA_BLENDING);
		if(button != NULL)
		{
			button->SetState(C_STATE_0);
			button->Refresh();
		}
		
		button=(C_Button *)control->Parent_->FindControl(BILINEAR_FILTERING);
		if(button != NULL)
		{
			button->SetState(C_STATE_0);
			button->Refresh();
		}
	}
}

void ResolutionCB(long,short hittype,C_Base *)
{
	if(hittype != C_TYPE_SELECT)
		return;
}

void SetupGraphicsControls(void)
{
	C_Window	*win;
	C_Button	*button;
	C_ListBox	*lbox;
	C_Slider	*slider;
	C_EditBox	*ebox;
	
	win=gMainHandler->FindWindow(SETUP_WIN);
	
	if(win == NULL)
		return;
		lbox=(C_ListBox *)win->FindControl(SET_VIDEO_CARD);
	if(lbox != NULL)
	{
		BuildVideoCardList(lbox);

		lbox->SetValue(DisplayOptions.DispVideoCard + 1);
		lbox->Refresh();
	}
	
	lbox=(C_ListBox *)win->FindControl(SET_VIDEO_DRIVER);
	if(lbox != NULL)
	{
		BuildVideoDriverList(lbox);

		DisableEnableDrivers(lbox);
		lbox->SetValue(DisplayOptions.DispVideoDriver + 1);
		lbox->Refresh();
	}

	lbox=(C_ListBox *)win->FindControl(SET_RESOLUTION);
	if(lbox != NULL)
	{
		DisableEnableResolutions(lbox);
		lbox->SetValue( DisplayOptions.DispWidth ); 
		lbox->Refresh();
	}

		button=(C_Button *)win->FindControl(70136);//GOUROUD
	if(button != NULL)
	{
		if(PlayerOptions.GouraudOn())
			button->SetState(C_STATE_1);
		else
			button->SetState(C_STATE_0);
		button->Refresh();
	}
	
	button=(C_Button *)win->FindControl(HAZING);
	if(button != NULL)
	{
		if(PlayerOptions.HazingOn())
			button->SetState(C_STATE_1);
		else
			button->SetState(C_STATE_0);
		button->Refresh();
	}
	
	button=(C_Button *)win->FindControl(ALPHA_BLENDING);
	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();
	}

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

	slider=(C_Slider *)win->FindControl(DISAGG_LEVEL);
	if(slider != NULL)
	{
		slider->Refresh();
		ebox = (C_EditBox *)win->FindControl(DISAGG_LEVEL_READOUT);
		if(ebox)
		{
			ebox->SetInteger(PlayerOptions.BldDeaggLevel);
			ebox->Refresh();
			slider->SetUserNumber(0,DISAGG_LEVEL_READOUT);
		}
		slider->SetSliderPos((slider->GetSliderMax()-slider->GetSliderMin())*PlayerOptions.ObjDeaggLevel/100);
		slider->Refresh();
	}
	
		
	slider=(C_Slider *)win->FindControl(VEHICLE_SIZE);
	if(slider != NULL)
	{
		slider->Refresh();
		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->Refresh();
	}
	
	slider=(C_Slider *)win->FindControl(TEXTURE_DISTANCE);
	if(slider != NULL)
	{
		slider->Refresh();
		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->Refresh();
	}

	slider=(C_Slider *)win->FindControl(TERRAIN_DETAIL);
	if(slider != NULL)
	{
		int step;
		step = (slider->GetSliderMax()-slider->GetSliderMin())/6;
	
		slider->Refresh();
		if(PlayerOptions.DispTerrainDist > 40)
			slider->SetSliderPos(FloatToInt32(step*(2+(PlayerOptions.DispTerrainDist - 40.0F)/10.0F)));
		else 
			slider->SetSliderPos((2 - PlayerOptions.DispMaxTerrainLevel)*step);
		slider->Refresh();

		ebox = (C_EditBox *)win->FindControl(TEX_DETAIL_READOUT);
		if(ebox)
		{
			ebox->SetInteger( FloatToInt32(((float)slider->GetSliderPos()/(slider->GetSliderMax()-slider->GetSliderMin()))*6.0F +0.5F) );
			ebox->Refresh();
			slider->SetUserNumber(0,TEX_DETAIL_READOUT);
		}
		
	}

}

void GraphicsDefaultsCB(long,short hittype,C_Base *)
{
	if(hittype != C_TYPE_LMOUSEUP)
		return;

	PlayerOptionsClass Player;
	DisplayOptionsClass Display;

	if(Display.LoadOptions("default"))
	{
		DisplayOptions.DispWidth = Display.DispWidth;
		DisplayOptions.DispHeight = Display.DispHeight;
		DisplayOptions.DispVideoCard = Display.DispVideoCard;
		DisplayOptions.DispVideoDriver = Display.DispVideoDriver;
	}
	else
	{
		DisplayOptions.DispWidth = 640;
		DisplayOptions.DispHeight = 480;
		DisplayOptions.DispVideoCard = 0;
		DisplayOptions.DispVideoDriver = 0;
	}

	if(Player.LoadOptions("default"))
	{
		PlayerOptions.DispFlags = DISP_HAZING|DISP_GOURAUD|DISP_ALPHA_BLENDING;
		PlayerOptions.DispTextureLevel = 4;
		PlayerOptions.DispTerrainDist = 64.0;
		PlayerOptions.DispMaxTerrainLevel = 0;
		PlayerOptions.ObjFlags = DISP_OBJ_TEXTURES;
		PlayerOptions.SfxLevel = 4.0F;
		PlayerOptions.ObjDetailLevel = 1;
		PlayerOptions.ObjMagnification = 1;
		PlayerOptions.ObjDeaggLevel = 60;
		PlayerOptions.BldDeaggLevel = 3;
		PlayerOptions.PlayerBubble = 1.0F;
	}
	SetupGraphicsControls();
}

⌨️ 快捷键说明

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