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

📄 ato.cpp

📁 空战游戏flacon源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	if(((C_Button *)control)->GetState())
	{
		control->Parent_->HideCluster(control->GetUserNumber(C_STATE_0));
		control->Parent_->UnHideCluster(control->GetUserNumber(C_STATE_1));
		gATOAll->RecalcSize();
		control->Parent_->ScanClientArea(gATOAll->GetClient());
		control->Parent_->RefreshClient(gATOAll->GetClient());
	}
	else
	{
		control->Parent_->HideCluster(control->GetUserNumber(C_STATE_1));
		control->Parent_->UnHideCluster(control->GetUserNumber(C_STATE_0));
		gATOPackage->RecalcSize();
		control->Parent_->ScanClientArea(gATOPackage->GetClient());
		control->Parent_->RefreshClient(gATOPackage->GetClient());
	}
}

void MakeIndividualATO(VU_ID flightID)
{
	Flight flt;
	Package pkg;
	C_ATO_Flight *atoitem;
	TREELIST *item;
	F4CSECTIONHANDLE *Leave;

	Leave=UI_Enter(gATOPackage->GetParent());
	gATOPackage->DeleteBranch(gATOPackage->GetRoot());

	flt=(Flight)vuDatabase->Find(flightID);
	if(!flt)
	{
		UI_Leave(Leave);
		return;
	}
	pkg=(Package)flt->GetUnitParent();
	if(!pkg)
	{
		UI_Leave(Leave);
		return;
	}

	flt=(Flight)pkg->GetFirstUnitElement();
	if(flt)
	{ // TE:Add Flight type, BOTH:add target as info items to root
	}
	while(flt)
	{
		atoitem=BuildATOFlightInfo(flt);
		if(atoitem)
		{
			atoitem->SetMenu(UNIT_POP);
			atoitem->SetCallback(SelectATOItemCB);
			atoitem->SetFont(gATOPackage->GetFont());
			item=gATOPackage->CreateItem(atoitem->GetID(),C_TYPE_ITEM,atoitem);
			atoitem->SetOwner(item);
			gATOPackage->AddItem(gATOPackage->GetRoot(),item);
		}
		flt=(Flight)pkg->GetNextUnitElement();
	}
	gATOPackage->RecalcSize();
	if(gATOPackage->GetParent())
		gATOPackage->GetParent()->RefreshClient(gATOPackage->GetClient());
	UI_Leave(Leave);
}

































C_ATO_Package *AddPackagetoATO(Package FltPkg)
{
	C_ATO_Package *atopkg;
	Flight MainFlt;
	TREELIST *team;
	TREELIST *missiontype;
	TREELIST *package;
	MissionTypeEnum mistype;
	short AtoMiss;
	C_Text *txt;

	if(!FltPkg)
		return(NULL);

	if (!(TheCampaign.Flags & CAMP_TACTICAL_EDIT))
	{
		if(FltPkg->GetTeam() != FalconLocalSession->GetTeam())
			return(NULL);
	}

	MainFlt=(Flight)FltPkg->GetFirstUnitElement();
	if(!MainFlt)
		return(NULL);

	mistype=MainFlt->GetUnitMission();
	if(mistype == AMIS_ABORT || mistype == AMIS_ALERT)
		return(NULL);

	if (TheCampaign.Flags & CAMP_TACTICAL_EDIT)
	{
		team=gATOAll->Find(FltPkg->GetTeam() | 0x20000000);
		if(!team)
		{
			txt=new C_Text;
			txt->Setup(FltPkg->GetTeam() | 0x20000000,0);
			txt->SetText(TeamInfo[FltPkg->GetTeam()]->GetName());
			txt->SetFont(gATOAll->GetParent()->Font_);
			team=gATOAll->CreateItem(FltPkg->GetTeam() | 0x20000000,C_TYPE_ROOT,txt);
			gATOAll->AddItem(gATOAll->GetRoot(),team);
		}
	}
	else
		team=gATOAll->GetRoot();

	atopkg=NULL;
	mistype=MainFlt->GetUnitMission();
	if(mistype == AMIS_BARCAP2)
		mistype = AMIS_BARCAP;
	AtoMiss = static_cast<short>(MissionToATOMiss(mistype));

	missiontype=gATOAll->Find(AtoMiss | 0x40000000 | (FltPkg->GetTeam() << 16));
	if(!missiontype)
	{
		txt=new C_Text;
		txt->Setup(mistype | 0x40000000,0);
		txt->SetText(AtoMissStr[AtoMiss]);
		txt->SetFont(gATOAll->GetParent()->Font_);
		missiontype=gATOAll->CreateItem(AtoMiss | 0x40000000 | (FltPkg->GetTeam() << 16),C_TYPE_MENU,txt);

		if (TheCampaign.Flags & CAMP_TACTICAL_EDIT)
			gATOAll->AddChildItem(team,missiontype);
		else
			gATOAll->AddItem(team,missiontype);
	}

	atopkg=BuildATOPackageInfo(FltPkg);
	if(atopkg)
	{
		atopkg->SetFont(gATOAll->GetParent()->Font_);
		atopkg->SetCallback(SelectATOPackageCB);
		package=gATOAll->CreateItem(atopkg->GetID(),C_TYPE_MENU,atopkg);
		if(package)
		{
			atopkg->SetOwner(package);
			gATOAll->AddChildItem(missiontype,package);
		}
		return(atopkg);
	}
	return(NULL);
}

C_ATO_Flight *AddFlighttoATO(Flight flt)
{
	C_ATO_Flight *atoitem;
	Package FltPkg;
	TREELIST *item;
	TREELIST *package;

	if (!(TheCampaign.Flags & CAMP_TACTICAL_EDIT))
	{
		if(flt->GetTeam() != FalconLocalSession->GetTeam())
			return(NULL);
	}

	if(flt->GetUnitMission() == AMIS_ALERT || flt->GetUnitMission() == AMIS_ABORT)
		return(NULL);
	if(!flt->GetUnitParent())
		return(NULL);

	FltPkg=(Package)flt->GetUnitParent();
	if(!FltPkg)
		return(NULL);

	package=gATOAll->Find(FltPkg->GetCampID());
	if(package)
	{
		atoitem=BuildATOFlightInfo(flt);
		if(atoitem)
		{
			atoitem->SetMenu(UNIT_POP);
			atoitem->SetCallback(SelectATOItemCB);
			atoitem->SetFont(gATOAll->GetFont());
			item=gATOAll->CreateItem(atoitem->GetID(),C_TYPE_ITEM,atoitem);
			atoitem->SetOwner(item);
			gATOAll->AddChildItem(package,item);
			return(atoitem);
		}
	}
	return(NULL);
}





#if 0
OLD WAY

C_ATO_Flight *AddtoATO(Flight flt)
{
	C_ATO_Flight *atoitem;
	C_ATO_Package *atopkg;
	Package FltPkg;
	Flight MainFlt;
	TREELIST *item;
	TREELIST *team;
	TREELIST *missiontype;
	TREELIST *package;
	short mistype,AtoMiss;
	C_Text *txt;

	if (!(TheCampaign.Flags & CAMP_TACTICAL_EDIT))
	{
		if(flt->GetTeam() != FalconLocalSession->GetTeam())
			return(NULL);
	}

	if(flt->GetUnitMission() == AMIS_ALERT || flt->GetUnitMission() == AMIS_ABORT)
		return(NULL);
	if(!flt->GetUnitParent())
		return(NULL);

	FltPkg=(Package)flt->GetUnitParent();
	MainFlt=(Flight)FltPkg->GetFirstUnitElement();
	if(!MainFlt)
		return(NULL);
	mistype=MainFlt->GetUnitMission();
	if(mistype == AMIS_ABORT || mistype == AMIS_ALERT)
		return(NULL);

	atoitem=BuildATOFlightInfo(flt);
	if(atoitem)
	{
		atoitem->SetMenu(UNIT_POP);
		atoitem->SetCallback(SelectATOItemCB);
		atoitem->SetFont(gATOAll->GetFont());
		if (TheCampaign.Flags & CAMP_TACTICAL_EDIT)
		{
			team=gATOAll->Find(flt->GetTeam() | 0x20000000);
			if(!team)
			{
				txt=new C_Text;
				txt->Setup(flt->GetTeam() | 0x20000000,0);
				txt->SetText(TeamInfo[flt->GetTeam()]->GetName());
				txt->SetFont(gATOAll->GetParent()->Font_);
				team=gATOAll->CreateItem(flt->GetTeam() | 0x20000000,C_TYPE_ROOT,txt);
				gATOAll->AddItem(gATOAll->GetRoot(),team);
			}
		}
		else
			team=gATOAll->GetRoot();

		mistype=MainFlt->GetUnitMission();
		package=gATOAll->Find(flt->GetUnitParent()->GetCampID() | (mistype << 16));
		if(!package)
		{
			AtoMiss = MissionToATOMiss(mistype);

			missiontype=gATOAll->Find(AtoMiss | 0x40000000 | (flt->GetTeam() << 16));
			if(!missiontype)
			{
				txt=new C_Text;
				txt->Setup(mistype | 0x40000000,0);
				txt->SetText(AtoMissStr[AtoMiss]);
				txt->SetFont(gATOAll->GetParent()->Font_);
				missiontype=gATOAll->CreateItem(AtoMiss | 0x40000000 | (flt->GetTeam() << 16),C_TYPE_MENU,txt);

				if (TheCampaign.Flags & CAMP_TACTICAL_EDIT)
					gATOAll->AddChildItem(team,missiontype);
				else
					gATOAll->AddItem(team,missiontype);
			}
			if(mistype == AMIS_BARCAP2)
				mistype == AMIS_BARCAP;

			atopkg=BuildATOPackageInfo(FltPkg);
			if(atopkg)
			{
				atopkg->SetFont(gATOAll->GetParent()->Font_);
				atopkg->SetCallback(SelectATOPackageCB);
				package=gATOAll->CreateItem(atopkg->GetID() | (mistype << 16),C_TYPE_MENU,atopkg);
				gATOAll->AddChildItem(missiontype,package);
			}
			else
				package=team;
		}
		item=gATOAll->CreateItem(atoitem->GetID(),C_TYPE_ITEM,atoitem);
		atoitem->SetOwner(item);
		gATOAll->AddChildItem(package,item);
	}
	return(atoitem);
}

C_ATO_Package *AddPackagetoATO(Package FltPkg)
{
	C_ATO_Package *atopkg;
	Flight MainFlt;
	TREELIST *team;
	TREELIST *missiontype;
	TREELIST *package;
	short mistype,AtoMiss;
	C_Text *txt;

	if(!FltPkg)
		return(NULL);

	if(!FltPkg->Final())
		return(NULL);

	if (!(TheCampaign.Flags & CAMP_TACTICAL_EDIT))
	{
		if(FltPkg->GetTeam() != FalconLocalSession->GetTeam())
			return(NULL);
	}

	MainFlt=(Flight)FltPkg->GetFirstUnitElement();
	if(!MainFlt)
		return(NULL);

	mistype=MainFlt->GetUnitMission();
	if(mistype == AMIS_ABORT || mistype == AMIS_ALERT)
		return(NULL);

	if (TheCampaign.Flags & CAMP_TACTICAL_EDIT)
	{
		team=gATOAll->Find(FltPkg->GetTeam() | 0x20000000);
		if(!team)
		{
			txt=new C_Text;
			txt->Setup(FltPkg->GetTeam() | 0x20000000,0);
			txt->SetText(TeamInfo[FltPkg->GetTeam()]->GetName());
			txt->SetFont(gATOAll->GetParent()->Font_);
			team=gATOAll->CreateItem(FltPkg->GetTeam() | 0x20000000,C_TYPE_ROOT,txt);
			gATOAll->AddItem(gATOAll->GetRoot(),team);
		}
	}
	else
		team=gATOAll->GetRoot();

	atopkg=NULL;
	mistype=MainFlt->GetUnitMission();
	package=gATOAll->Find(FltPkg->GetCampID() | (mistype << 16));
	if(!package)
	{
		AtoMiss = MissionToATOMiss(mistype);

		missiontype=gATOAll->Find(AtoMiss | 0x40000000 | (FltPkg->GetTeam() << 16));
		if(!missiontype)
		{
			txt=new C_Text;
			txt->Setup(mistype | 0x40000000,0);
			txt->SetText(AtoMissStr[AtoMiss]);
			txt->SetFont(gATOAll->GetParent()->Font_);
			missiontype=gATOAll->CreateItem(AtoMiss | 0x40000000 | (FltPkg->GetTeam() << 16),C_TYPE_MENU,txt);

			if (TheCampaign.Flags & CAMP_TACTICAL_EDIT)
				gATOAll->AddChildItem(team,missiontype);
			else
				gATOAll->AddItem(team,missiontype);
		}
		if(mistype == AMIS_BARCAP2)
			mistype == AMIS_BARCAP;

		atopkg=BuildATOPackageInfo(FltPkg);
		if(atopkg)
		{
			atopkg->SetFont(gATOAll->GetParent()->Font_);
			atopkg->SetCallback(SelectATOPackageCB);
			package=gATOAll->CreateItem(atopkg->GetID() | (mistype << 16),C_TYPE_MENU,atopkg);
			gATOAll->AddChildItem(missiontype,package);
		}
	}
	else
		atopkg=(C_ATO_Package*)package->Item_;
	return(atopkg);
}
#endif

⌨️ 快捷键说明

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