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

📄 campmenu.cpp

📁 空战游戏flacon源码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
		icon=(C_MapIcon *)caller;
		iconid=icon->GetIconID();
		urec=(UI_Refresher *)gGps->Find(iconid);
	}
	else if(caller->_GetCType_() == _CNTL_DRAWLIST_)
	{
		piggy=(C_DrawList *)caller;
		iconid=piggy->GetIconID();
		urec=(UI_Refresher *)gGps->Find(iconid);
	}
	else if(caller->_GetCType_() == _CNTL_TREELIST_)
	{
		tree=(C_TreeList *)caller;
		item=tree->GetLastItem();
		if(item)
		{
			iconid=item->ID_;
			urec=(UI_Refresher *)gGps->Find(item->ID_ & 0x00ffffff); // strip off team (incase it is a division)
		}
	}
	if(urec)
	{
		tactical_edit_package(urec->GetID(),control);
	}
}

void MenuSetOwnerCB(long ID,short,C_Base *)
{
	C_Base *caller;
	C_MapIcon *icon;
	C_DrawList *piggy;
	C_TreeList *tree;
	long iconid;
	TREELIST *item;
	UI_Refresher *urec;
	
	urec = NULL;

	caller = gPopupMgr->GetCallingControl ();

	if(caller == NULL)
	{
		return;
	}

	gPopupMgr->CloseMenu ();

	if (caller->_GetCType_() == _CNTL_MAPICON_)
	{
		icon = (C_MapIcon *) caller;
		iconid = icon->GetIconID ();
		urec = (UI_Refresher *) gGps->Find (iconid);
	}
	else if (caller->_GetCType_() == _CNTL_DRAWLIST_)
	{
		piggy = (C_DrawList *) caller;
		iconid = piggy->GetIconID ();
		urec = (UI_Refresher *) gGps->Find (iconid);
	}
	else if (caller->_GetCType_() == _CNTL_TREELIST_)
	{
		tree = (C_TreeList *) caller;
		item = tree->GetLastItem ();
		if (item)
		{
			urec = (UI_Refresher *) gGps->Find (item->ID_);
		}
	}
	if(urec)
	{
		CampEntity ent;
		short teamid=0;

		switch(ID)
		{
			case MID_TEAM_1:
				teamid=1;
				break;
			case MID_TEAM_2:
				teamid=2;
				break;
			case MID_TEAM_3:
				teamid=3;
				break;
			case MID_TEAM_4:
				teamid=4;
				break;
			case MID_TEAM_5:
				teamid=5;
				break;
			case MID_TEAM_6:
				teamid=6;
				break;
			case MID_TEAM_7:
				teamid=7;
				break;
			default:
				teamid=0;
				break;
		}
		ent=(CampEntity)vuDatabase->Find(urec->GetID());
		if(ent)
		{
			ent->SetOwner(static_cast<uchar>(teamid));
		}
	}
}

void MenuAddUnitCB(long ID,short,C_Base *control)
{
	C_Base			*caller;
	C_MapIcon		*icon;
	C_DrawList		*piggy;
	C_TreeList		*tree;
	long			iconid;
	TREELIST		*item;
	UI_Refresher	*urec;
	VU_ID			vid = FalconNullId;
	
	urec = NULL;
	caller = gPopupMgr->GetCallingControl ();
	if(!caller)
		return;

	if (caller->_GetCType_() == _CNTL_MAPICON_)
	{
		icon = (C_MapIcon *) caller;
		iconid = icon->GetIconID ();
		urec = (UI_Refresher *) gGps->Find (iconid);
		vid = urec->GetID();
	}
	else if (caller->_GetCType_() == _CNTL_DRAWLIST_)
	{
		piggy = (C_DrawList *) caller;
		iconid = piggy->GetIconID ();
		urec = (UI_Refresher *) gGps->Find (iconid);
		vid = urec->GetID();
	}
	else if (caller->_GetCType_() == _CNTL_TREELIST_)
	{
		tree = (C_TreeList *) caller;
		item = tree->GetLastItem ();
		if (item)
			{
			urec = (UI_Refresher *) gGps->Find (item->ID_);
			vid = urec->GetID();
			}
	}

	switch (ID)
		{
		case MID_ADD_FLIGHT:
			tactical_add_flight (vid,control);
			break;
		case MID_ADD_PACKAGE:
			tactical_add_package (vid,control);
			break;
		case MID_ADD_BATTALION:
			tactical_add_battalion (vid,control);
			break;
		case MID_ADD_SQUADRON:
			tactical_add_squadron (vid);
			break;
		}

	gPopupMgr->CloseMenu ();
}

void MenuAddVCCB(long, short, C_Base *)
{
	C_Base *caller;
	C_MapIcon *icon;
	C_DrawList *piggy;
	C_TreeList *tree;
	long iconid;
	TREELIST *item;
	UI_Refresher *urec;
	
	urec = NULL;

	caller = gPopupMgr->GetCallingControl ();

	if(caller == NULL)
	{
		return;
	}

	if (caller->_GetCType_() == _CNTL_MAPICON_)
	{
		icon = (C_MapIcon *) caller;

		iconid = icon->GetIconID ();

		urec = (UI_Refresher *) gGps->Find (iconid);
	}
	else if (caller->_GetCType_() == _CNTL_DRAWLIST_)
	{
		piggy = (C_DrawList *) caller;

		iconid = piggy->GetIconID ();

		urec = (UI_Refresher *) gGps->Find (iconid);
	}
	else if (caller->_GetCType_() == _CNTL_TREELIST_)
	{
		tree = (C_TreeList *) caller;

		item = tree->GetLastItem ();

		if (item)
		{
			urec = (UI_Refresher *) gGps->Find (item->ID_);
		}
	}

	tactical_add_victory_condition (urec->GetID (),NULL);

	gPopupMgr->CloseMenu ();
}

void SetMapSettings()
{
	C_PopupList *menu;

	menu=gPopupMgr->GetMenu(MAP_POP);
	if(menu)
	{
		// Legend stuff
		MenuToggleNamesCB(MID_LEG_NAMES,C_TYPE_LMOUSEUP,menu);
		MenuToggleBullseyeCB(MID_LEG_BULLSEYE,C_TYPE_LMOUSEUP,menu);

		// Objectives
		MenuToggleObjectiveCB(MID_INST_AF,C_TYPE_LMOUSEUP,menu);
		MenuToggleObjectiveCB(MID_INST_AD,C_TYPE_LMOUSEUP,menu);
		MenuToggleObjectiveCB(MID_INST_ARMY,C_TYPE_LMOUSEUP,menu);
		MenuToggleObjectiveCB(MID_INST_CCC,C_TYPE_LMOUSEUP,menu);
		MenuToggleObjectiveCB(MID_INST_POLITICAL,C_TYPE_LMOUSEUP,menu);
		MenuToggleObjectiveCB(MID_INST_INFRA,C_TYPE_LMOUSEUP,menu);
		MenuToggleObjectiveCB(MID_INST_LOG,C_TYPE_LMOUSEUP,menu);
		MenuToggleObjectiveCB(MID_INST_WARPROD,C_TYPE_LMOUSEUP,menu);
		MenuToggleObjectiveCB(MID_INST_NAV,C_TYPE_LMOUSEUP,menu);
		MenuToggleObjectiveCB(MID_INST_OTHER,C_TYPE_LMOUSEUP,menu);
		MenuToggleObjectiveCB(MID_INST_NAVAL,C_TYPE_LMOUSEUP,menu);
		MenuToggleObjectiveCB(MID_SHOW_VC,C_TYPE_LMOUSEUP,menu);

		// Units
		MenuToggleUnitCB(MID_UNITS_SQUAD_SQUADRON,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_SQUAD_PACKAGE,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_DIV,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_BRIG,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_BAT,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_COMBAT,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_AD,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_SUPPORT,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_SQUAD_FIGHTER,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_SQUAD_FIGHTBOMB,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_SQUAD_ATTACK,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_SQUAD_BOMBER,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_SQUAD_SUPPORT,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_SQUAD_HELI,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_NAVY_COMBAT,C_TYPE_LMOUSEUP,menu);
		MenuToggleUnitCB(MID_UNITS_NAVY_SUPPLY,C_TYPE_LMOUSEUP,menu);

		// Sams/Radar
		MenuSetCirclesCB(MID_OFF,C_TYPE_LMOUSEUP,menu);
	}
}

void SetupCampaignMenus()
{
	C_PopupList *menu;

	GameType=1;
	EditMode=0;
	// Map Menu
	menu=gPopupMgr->GetMenu(MAP_POP);
	if(menu)
	{
		menu->SetItemFlagBitOn(MID_ADD_FLIGHT,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_PACKAGE,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_BATTALION,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_SHOW_VC,C_BIT_INVISIBLE);
	}

	// Objective Menu
	menu=gPopupMgr->GetMenu(OBJECTIVE_POP);
	if(menu)
	{
		menu->SetItemFlagBitOn(MID_ADD_FLIGHT,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_PACKAGE,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_BATTALION,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_VC,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_SET_OWNER,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_SQUADRONS,C_BIT_INVISIBLE);
	}

	// Unit Menu
	menu=gPopupMgr->GetMenu(UNIT_POP);
	if(menu)
	{
		menu->SetItemFlagBitOn(MID_DELETE_UNIT,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_FLIGHT,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_PACKAGE,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_BATTALION,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_VC,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_SET_OWNER,C_BIT_INVISIBLE);
	}

	// Unit Menu
	menu=gPopupMgr->GetMenu(NAVAL_POP);
	if(menu)
	{
		menu->SetItemFlagBitOn(MID_DELETE_UNIT,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_FLIGHT,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_PACKAGE,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_BATTALION,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_VC,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_SET_OWNER,C_BIT_INVISIBLE);
	}

	// Unit Menu
	menu=gPopupMgr->GetMenu(AIRUNIT_MENU);
	if(menu)
	{
		menu->SetItemFlagBitOn(MID_DELETE_UNIT,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_FLIGHT,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_PACKAGE,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_VC,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_SET_OWNER,C_BIT_INVISIBLE);
	}

	// Package Menu
	menu=gPopupMgr->GetMenu(PACKAGE_POP);
	if(menu)
	{
		menu->SetItemFlagBitOn(MID_DELETE_UNIT,C_BIT_INVISIBLE);
	}

}

// Mode 0=Play,1=Edit)
void SetupTacEngMenus(short Mode)
{
	C_PopupList *menu;

	GameType=2;
	EditMode=Mode;

	// Map Menu
	menu=gPopupMgr->GetMenu(MAP_POP);
	if(menu)
	{
		menu->SetItemFlagBitOff(MID_ADD_FLIGHT,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOff(MID_ADD_PACKAGE,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_FLIGHT,C_BIT_ENABLED);
		menu->SetItemFlagBitOn(MID_ADD_PACKAGE,C_BIT_ENABLED);

		menu->SetItemFlagBitOff(MID_SHOW_VC,C_BIT_INVISIBLE);
	}

	// Objective Menu
	menu=gPopupMgr->GetMenu(OBJECTIVE_POP);
	if(menu)
	{
		menu->SetItemFlagBitOff(MID_ADD_FLIGHT,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOff(MID_ADD_PACKAGE,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_FLIGHT,C_BIT_ENABLED);
		menu->SetItemFlagBitOn(MID_ADD_PACKAGE,C_BIT_ENABLED);

		menu->SetItemFlagBitOff(MID_ADD_VC,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOff(MID_SET_OWNER,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_SQUADRONS,C_BIT_INVISIBLE);
		if(EditMode)
		{
			menu->SetItemFlagBitOn(MID_ADD_VC,C_BIT_ENABLED);
			menu->SetItemFlagBitOn(MID_SET_OWNER,C_BIT_ENABLED);
			menu->SetItemFlagBitOff(MID_ADD_BATTALION,C_BIT_INVISIBLE);
		}
		else
		{
			menu->SetItemFlagBitOff(MID_ADD_VC,C_BIT_ENABLED);
			menu->SetItemFlagBitOff(MID_SET_OWNER,C_BIT_ENABLED);
			menu->SetItemFlagBitOn(MID_ADD_BATTALION,C_BIT_INVISIBLE);
		}
	}

	// Unit Menu
	menu=gPopupMgr->GetMenu(UNIT_POP);
	if(menu)
	{
		menu->SetItemFlagBitOff(MID_ADD_FLIGHT,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOff(MID_ADD_PACKAGE,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_FLIGHT,C_BIT_ENABLED);
		menu->SetItemFlagBitOn(MID_ADD_PACKAGE,C_BIT_ENABLED);

		menu->SetItemFlagBitOff(MID_DELETE_UNIT,C_BIT_INVISIBLE);
		if(EditMode)
		{
			menu->SetItemFlagBitOn(MID_DELETE_UNIT,C_BIT_ENABLED);
			menu->SetItemFlagBitOn(MID_ADD_VC,C_BIT_ENABLED);
			menu->SetItemFlagBitOn(MID_SET_OWNER,C_BIT_ENABLED);
			menu->SetItemFlagBitOff(MID_ADD_BATTALION,C_BIT_INVISIBLE);
		}
		else
		{
			menu->SetItemFlagBitOff(MID_DELETE_UNIT,C_BIT_ENABLED);
			menu->SetItemFlagBitOff(MID_ADD_VC,C_BIT_ENABLED);
			menu->SetItemFlagBitOff(MID_SET_OWNER,C_BIT_ENABLED);
			menu->SetItemFlagBitOn(MID_ADD_BATTALION,C_BIT_INVISIBLE);
		}
	}

	// Unit Menu
	menu=gPopupMgr->GetMenu(NAVAL_POP);
	if(menu)
	{
		menu->SetItemFlagBitOff(MID_ADD_FLIGHT,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOff(MID_ADD_PACKAGE,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_FLIGHT,C_BIT_ENABLED);
		menu->SetItemFlagBitOn(MID_ADD_PACKAGE,C_BIT_ENABLED);

		menu->SetItemFlagBitOff(MID_DELETE_UNIT,C_BIT_INVISIBLE);
		if(EditMode)
		{
			menu->SetItemFlagBitOn(MID_DELETE_UNIT,C_BIT_ENABLED);
			menu->SetItemFlagBitOn(MID_ADD_VC,C_BIT_ENABLED);
			menu->SetItemFlagBitOn(MID_SET_OWNER,C_BIT_ENABLED);
			menu->SetItemFlagBitOff(MID_ADD_BATTALION,C_BIT_INVISIBLE);
		}
		else
		{
			menu->SetItemFlagBitOff(MID_DELETE_UNIT,C_BIT_ENABLED);
			menu->SetItemFlagBitOff(MID_ADD_VC,C_BIT_ENABLED);
			menu->SetItemFlagBitOff(MID_SET_OWNER,C_BIT_ENABLED);
			menu->SetItemFlagBitOn(MID_ADD_BATTALION,C_BIT_INVISIBLE);
		}
	}

	// Unit Menu
	menu=gPopupMgr->GetMenu(AIRUNIT_MENU);
	if(menu)
	{
		menu->SetItemFlagBitOff(MID_ADD_FLIGHT,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOff(MID_ADD_PACKAGE,C_BIT_INVISIBLE);
		menu->SetItemFlagBitOn(MID_ADD_FLIGHT,C_BIT_ENABLED);
		menu->SetItemFlagBitOn(MID_ADD_PACKAGE,C_BIT_ENABLED);

		menu->SetItemFlagBitOff(MID_DELETE_UNIT,C_BIT_INVISIBLE);
		if(EditMode)
		{
			menu->SetItemFlagBitOn(MID_DELETE_UNIT,C_BIT_ENABLED);
			menu->SetItemFlagBitOn(MID_ADD_VC,C_BIT_ENABLED);
			menu->SetItemFlagBitOn(MID_SET_OWNER,C_BIT_ENABLED);
			menu->SetItemFlagBitOff(MID_ADD_BATTALION,C_BIT_INVISIBLE);
		}
		else
		{
			menu->SetItemFlagBitOff(MID_DELETE_UNIT,C_BIT_ENABLED);
			menu->SetItemFlagBitOff(MID_ADD_VC,C_BIT_ENABLED);
			menu->SetItemFlagBitOff(MID_SET_OWNER,C_BIT_ENABLED);
			menu->SetItemFlagBitOn(MID_ADD_BATTALION,C_BIT_INVISIBLE);
		}
	}

	// Package Menu
	menu=gPopupMgr->GetMenu(PACKAGE_POP);
	if(menu)
	{
		menu->SetItemFlagBitOff(MID_DELETE_UNIT,C_BIT_INVISIBLE);
		if(EditMode)
			menu->SetItemFlagBitOn(MID_DELETE_UNIT,C_BIT_ENABLED);
		else
			menu->SetItemFlagBitOff(MID_DELETE_UNIT,C_BIT_ENABLED);
	}

	// VC Menu
	menu=gPopupMgr->GetMenu(VC_POP);
	if(menu)
	{
		if(EditMode)
		{
			menu->SetItemFlagBitOn(MID_DELETE_UNIT,C_BIT_ENABLED);
			menu->SetItemFlagBitOn(MID_SET_OWNER,C_BIT_ENABLED);
		}
		else
		{
			menu->SetItemFlagBitOff(MID_DELETE_UNIT,C_BIT_ENABLED);
			menu->SetItemFlagBitOff(MID_SET_OWNER,C_BIT_ENABLED);
		}
	}

⌨️ 快捷键说明

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