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

📄 simtab.cpp

📁 空战游戏flacon源码
💻 CPP
字号:
#include "falclib.h"
#include "chandler.h"
#include "userids.h"
#include "PlayerOp.h"
#include "sim\include\stdhdr.h"
#include "ui_setup.h"
#include "f4find.h"

//define presets for skill level list box (first set is ace, then veteran, etc...)
Preset Presets[] = {
{FMAccurate,ATRealistic,WEAccurate,APNormal,ARRealistic,PDRealistic,0},
{FMAccurate,ATSimplified,WEAccurate,APNormal,ARModerated,PDRealistic,SIM_UNLIMITED_CHAFF},
{FMAccurate,ATSimplified,WEEnhanced,APEnhanced,ARModerated,PDEnhanced,SIM_NO_BLACKOUT|SIM_UNLIMITED_CHAFF|SIM_NAMETAGS},
{FMSimplified,ATEasy,WEExaggerated,APEnhanced,ARSimplistic,PDEnhanced,SIM_NO_BLACKOUT|SIM_UNLIMITED_CHAFF|SIM_NAMETAGS|SIM_UNLIMITED_FUEL},			//need to put SIM_UNLIMITED_FUEL
{FMSimplified,ATEasy,WEExaggerated,APIntelligent,ARSimplistic, PDEnhanced,SIM_NO_BLACKOUT|SIM_UNLIMITED_AMMO|SIM_UNLIMITED_CHAFF|SIM_NAMETAGS|SIM_UNLIMITED_FUEL|SIM_NO_COLLISIONS},
//{FMSimplified,ATEasy,WEExaggerated,APIntelligent,ARSimplistic, PDSuper,SIM_NO_BLACKOUT|SIM_UNLIMITED_AMMO|SIM_UNLIMITED_CHAFF|SIM_NAMETAGS|SIM_UNLIMITED_FUEL|SIM_NO_COLLISIONS},	//back into these two after DEMO
};

extern C_Handler *gMainHandler;

/////////////
// Sim Tab
/////////////

int GetRealism(C_Window *win)
{
	C_ListBox	*listbox;
	C_Button	*button;

	int			realism = 100,maxrealism = 100;

	if(win == NULL)
		return 0;
	
	listbox=(C_ListBox *)win->FindControl(SET_FLTMOD);
	if(listbox != NULL)
	{
		button = (C_Button *)listbox->GetItem(listbox->GetTextID());
		if(button)
		{
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
				maxrealism   = button->GetUserNumber(1);
		}
	}
	
	listbox=(C_ListBox *)win->FindControl(SET_RADAR);
	if(listbox != NULL)
	{
	
		button = (C_Button *)listbox->GetItem(listbox->GetTextID());
		if(button)
		{
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
				maxrealism   = button->GetUserNumber(1);
		}
	}
	
	listbox=(C_ListBox *)win->FindControl(SET_WEAPEFF);
	if(listbox != NULL)
	{
		button = (C_Button *)listbox->GetItem(listbox->GetTextID());
		if(button)
		{
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
				maxrealism   = button->GetUserNumber(1);
		}
	}
	
	listbox=(C_ListBox *)win->FindControl(SET_AUTOPILOT);
	if(listbox != NULL)
	{
	
		button = (C_Button *)listbox->GetItem(listbox->GetTextID());
		if(button)
		{
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
				maxrealism   = button->GetUserNumber(1);
		}
	}

	listbox=(C_ListBox *)win->FindControl(SET_PADLOCK);
	if(listbox != NULL)
	{
	
		button = (C_Button *)listbox->GetItem(listbox->GetTextID());
		if(button)
		{
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
				maxrealism   = button->GetUserNumber(1);
		}
	}

	listbox=(C_ListBox *)win->FindControl(SET_REFUELING);
	if(listbox != NULL)
	{
	
		button = (C_Button *)listbox->GetItem(listbox->GetTextID());
		if(button)
		{
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
				maxrealism   = button->GetUserNumber(1);
		}
	}

	
	button=(C_Button *)win->FindControl(SET_FUEL);
	if(button != NULL)
	{
		if(button->GetState())
		{
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
					maxrealism   = button->GetUserNumber(1);
		}
	}
	
	button=(C_Button *)win->FindControl(SET_CHAFFLARES);
	if(button != NULL)
	{
		if(button->GetState())
		{
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
				maxrealism   = button->GetUserNumber(1);
		}
		
	}
	
	button=(C_Button *)win->FindControl(SET_COLLISIONS);
	if(button != NULL)
	{
		if(button->GetState())
		{
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
				maxrealism   = button->GetUserNumber(1);
		}
	}
	
	button=(C_Button *)win->FindControl(SET_BLACKOUT);
	if(button != NULL)
	{
		if(button->GetState())
		{
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
				maxrealism   = button->GetUserNumber(1);
		}
	}
	
	
	button=(C_Button *)win->FindControl(SET_IDTAGS);
	if(button != NULL)
	{
		if(button->GetState())
		{
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
				maxrealism   = button->GetUserNumber(1);
		}
	}
	
	button=(C_Button *)win->FindControl(SET_WEATHER);
	if(button != NULL)
	{
		if(button->GetState())
		{
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
				maxrealism   = button->GetUserNumber(1);
		}
	}
	
	button=(C_Button *)win->FindControl(SET_BULLSEYE_CALLS);
	if(button != NULL)
	{
		if(button->GetState())
		{
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
				maxrealism   = button->GetUserNumber(1);
		}
	}

	button=(C_Button *)win->FindControl(SET_INVULNERABILITY); 
	if(button != NULL)
	{
		if(button->GetState())
		{
			//realism = 0;
			
			realism   -= button->GetUserNumber(0);
			if(maxrealism   > button->GetUserNumber(1))
				maxrealism   = button->GetUserNumber(1);
			//realism *= 0.5f;
			
		}
	}

	

	if(realism  > maxrealism )
			realism  = maxrealism ;

	if (realism < 0) 
		realism = 0;

	return realism;
}//GetRealism

int SetRealism(C_Window *win)
{
	C_Button	*button;
	C_EditBox	*ebox;
	C_ListBox	*listbox;
	int			realism = 100,maxrealism = 100;

	if(win == NULL)
		return 0;
	
	realism = GetRealism(win);
		
	ebox=(C_EditBox *)win->FindControl(REALISM_READOUT);
	if(ebox != NULL)
	{
		if(realism  > maxrealism )
			realism  = maxrealism ;

		if (realism < 0) 
			realism = 0;

		ebox->SetInteger(realism );
	}

	listbox = (C_ListBox *)win->FindControl(SET_SKILL);
	if(listbox)
	{
		listbox->SetValue(RECRUIT_LEVEL);

		for(int i = 0; i < NUM_LEVELS; i++)
		{
			button = (C_Button *)listbox->GetItem(ACE_LEVEL + i);
			if(button)
			{
				if(realism > button->GetUserNumber(0))
				{
					listbox->SetValue(ACE_LEVEL + i);
					break;
				}
			}
		}
	}
	 
	win->RefreshWindow();

	return realism;
}//SetRealism



void SimControlCB(long,short hittype, C_Base *control)
{
	if((hittype != C_TYPE_LMOUSEUP) && (hittype != C_TYPE_SELECT))
		return;

	SetRealism(control->Parent_);
}

void SetSkillCB(long,short hittype, C_Base *control)
{
	if(hittype != C_TYPE_SELECT)
		return;
	
	int			Index;
	C_Button	*button;
	C_Window	*win;
	C_ListBox	*lbox;

	win = (C_Window *)control->Parent_;

	Index = ((C_ListBox *)control)->GetTextID() - ACE_LEVEL;

	lbox=(C_ListBox *)win->FindControl(SET_FLTMOD);
	if(lbox != NULL)
	{
		if(Presets[Index].FlightModel==FMAccurate)
			lbox->SetValue(SET_FLTMOD_1);
		else
			lbox->SetValue(SET_FLTMOD_2);
	}
	
	lbox=(C_ListBox *)win->FindControl(SET_RADAR);
	if(lbox != NULL)
	{
		switch(Presets[Index].RadarMode)
		{
		case ATRealistic:
			lbox->SetValue(SET_RADAR_1);
			break;
		case ATSimplified:
			lbox->SetValue(SET_RADAR_2);
			break;
		case ATEasy:
			lbox->SetValue(SET_RADAR_3);
			break;
		}
	}
	
	lbox=(C_ListBox *)win->FindControl(SET_WEAPEFF);
	if(lbox != NULL)
	{
		switch(Presets[Index].WeapEffects)
		{
		case WEAccurate:
			lbox->SetValue(SET_WEAPEFF_1);
			break;
		case WEEnhanced:
			lbox->SetValue(SET_WEAPEFF_2);
			break;
		case WEExaggerated:
			lbox->SetValue(SET_WEAPEFF_3);
			break;
		}
	}
	
	lbox=(C_ListBox *)win->FindControl(SET_AUTOPILOT);
	if(lbox != NULL)
	{
		switch(Presets[Index].Autopilot)
		{
		case APNormal:
			lbox->SetValue(SET_AUTO_1);
			break;
		case APEnhanced:
			lbox->SetValue(SET_AUTO_2);
			break;
		case APIntelligent:
			lbox->SetValue(SET_AUTO_3);
			break;
		}
	}

	lbox=(C_ListBox *)win->FindControl(SET_REFUELING);
	if(lbox != NULL)
	{
		switch(Presets[Index].RefuelingMode)
		{
		case ARRealistic:
			lbox->SetValue(SET_REFUEL_1);
			break;
		case ARModerated:
			lbox->SetValue(SET_REFUEL_2);
			break;
		case ARSimplistic:
			lbox->SetValue(SET_REFUEL_3);
			break;
		}
	}

	lbox=(C_ListBox *)win->FindControl(SET_PADLOCK);
	if(lbox != NULL)
	{
		switch(Presets[Index].PadlockMode)
		{
		case PDDisabled:
			lbox->SetValue(SET_PADLOCK_4);
			break;
		case PDRealistic:
			lbox->SetValue(SET_PADLOCK_1);
			break;
		case PDEnhanced:
			lbox->SetValue(SET_PADLOCK_2);
			break;
		//case PDSuper:
		//	lbox->SetValue(SET_PADLOCK_3);
		//	break;
		}
	}

	button=(C_Button *)win->FindControl(SET_ORDNANCE);
	if(button != NULL)
	{
		if(Presets[Index].flags & SIM_UNLIMITED_AMMO)
			button->SetState(C_STATE_1);
		else
			button->SetState(C_STATE_0);
		button->Refresh();
	}

	button=(C_Button *)win->FindControl(SET_FUEL);
	if(button != NULL)
	{
		if(Presets[Index].flags & SIM_UNLIMITED_FUEL)
			button->SetState(C_STATE_1);
		else
			button->SetState(C_STATE_0);
		button->Refresh();
	}
	
	button=(C_Button *)win->FindControl(SET_CHAFFLARES);
	if(button != NULL)
	{
		if(Presets[Index].flags & SIM_UNLIMITED_CHAFF)
			button->SetState(C_STATE_1);
		else
			button->SetState(C_STATE_0);
		button->Refresh();
		
	}
	
	button=(C_Button *)win->FindControl(SET_COLLISIONS);
	if(button != NULL)
	{
		if(Presets[Index].flags & SIM_NO_COLLISIONS)
			button->SetState(C_STATE_1);
		else
			button->SetState(C_STATE_0);
		button->Refresh();
	}
	
	button=(C_Button *)win->FindControl(SET_BLACKOUT);
	if(button != NULL)
	{
		if(Presets[Index].flags & SIM_NO_BLACKOUT)
			button->SetState(C_STATE_1);
		else
			button->SetState(C_STATE_0);
		button->Refresh();
	}
	
	button=(C_Button *)win->FindControl(SET_IDTAGS);
	if(button != NULL)
	{
		if(Presets[Index].flags & SIM_NAMETAGS)
			button->SetState(C_STATE_1);
		else
			button->SetState(C_STATE_0);
		button->Refresh();
	}
	
	
	button=(C_Button *)win->FindControl(SET_INVULNERABILITY); //should be SET_INVULNERABLITY
	if(button != NULL)
	{
		button->SetState(C_STATE_0);
			
		button->Refresh();
	}

	SetRealism(win);
}//SetSkillCB

⌨️ 快捷键说明

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