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

📄 te_map.cpp

📁 空战游戏flacon源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			MapX = SimToGrid (mx);
			MapY = SimToGrid (my);

			switch(CurMapTool->GetID())
			{
				case ADD_FLIGHT: // Click anywhere on the map to add a flight
					tactical_add_flight(FalconNullId,control);
					break;
				case ADD_PACKAGE: // Click anywhere on the map to add a package?
					tactical_add_package(FalconNullId,control);
					break;
				case ADD_BATTALION: // Click anywhere on the map to add a unit
					tactical_add_battalion(FalconNullId,control);
					break;
				case ADD_NAVAL: // Click anywhere on the map to add a unit
					break;
				case ADD_SQUADRON: // Click on an airbase to add a squadron
					break;
				case COPY_UNIT: // Pick a unit to copy
					break;
				case DELETE_UNIT: // Pick a unit to delete
					break;
				case EDIT_UNIT: // Pick a unit to edit
					break;
			}
		}
	}
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

static void gMapMgr_zoom_in (long, short hittype, C_Base *ctrl)
{
	F4CSECTIONHANDLE *Leave;

	if ((hittype != C_TYPE_LMOUSEUP) && (hittype != C_TYPE_REPEAT))
		return;

	Leave=UI_Enter(ctrl->Parent_);
	gMapMgr->ZoomIn();
	gMapMgr->DrawMap();
	UI_Leave(Leave);
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

static void gMapMgr_zoom_out (long, short hittype, C_Base *ctrl)
{
	F4CSECTIONHANDLE *Leave;

	if ((hittype != C_TYPE_LMOUSEUP) && (hittype != C_TYPE_REPEAT))
		return;

	Leave=UI_Enter(ctrl->Parent_);
	gMapMgr->ZoomOut();
	gMapMgr->DrawMap();
	UI_Leave(Leave);
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

void gMapMgr_menu (long ID, short hittype, C_Base *control)
{
	int
		objective = -1,
		zoom;

	if (hittype != C_TYPE_LMOUSEUP)
	{
		return;
	}

	switch (ID)
	{
		case MID_RECON:
		{
			//MonoPrint ("Map Menu Recon\n");

			gPopupMgr->CloseMenu ();
			break;
		}

		case MID_ADD_BATTALION:
		{
			tactical_add_battalion (FalconNullId,control);

			gPopupMgr->CloseMenu ();
			break;
		}

		case MID_ADD_PACKAGE:
		{
			tactical_add_package (FalconNullId,control);

			gPopupMgr->CloseMenu ();
			break;
		}

		case MID_ZOOM_IN:
		{
			zoom = gMapMgr->GetZoomLevel ();

			if (zoom >= 64)	// MAX_ZOOM_LEVEL
			{
				return;
			}

			zoom *= 2;

			//MonoPrint ("Zoom In %d\n", zoom);

			gMapMgr->SetZoomLevel(static_cast<short>(zoom));
			gMapMgr->DrawMap();
			
			gPopupMgr->CloseMenu();
			break;
		}

		case MID_ZOOM_OUT:
		{
			zoom = gMapMgr->GetZoomLevel ();

			if (zoom <= 1)	// MAX_ZOOM_LEVEL
			{
				return;
			}

			zoom /= 2;

			//MonoPrint ("Zoom In %d\n", zoom);

			gMapMgr->SetZoomLevel (static_cast<short>(zoom));
			gMapMgr->DrawMap ();
			
			gPopupMgr->CloseMenu ();
			break;
		}

		case MID_INST_AF:			objective = _OBTV_AIR_FIELDS;		break;
		case MID_INST_AD:			objective = _OBTV_AIR_DEFENSE;		break;
		case MID_INST_ARMY:			objective = _OBTV_ARMY;				break;
		case MID_INST_CCC:			objective = _OBTV_CCC;				break;
		case MID_INST_POLITICAL:	objective = _OBTV_POLITICAL;		break;
		case MID_INST_INFRA:		objective = _OBTV_INFRASTRUCTURE;	break;
		case MID_INST_LOG:			objective = _OBTV_LOGISTICS;		break;
		case MID_INST_WARPROD:		objective = _OBTV_WAR_PRODUCTION;	break;
		case MID_INST_NAV:			objective = _OBTV_NAVIGATION;		break;
		case MID_INST_OTHER:		objective = _OBTV_OTHER;			break;
		case MID_INST_NAVAL:		objective = _OBTV_NAVAL;			break;

			break;
		case MID_UNITS_COMBAT:
		{
			gMapMgr->SetUnitLevel(2);

			if(((C_PopupList *)control)->GetItemState(ID))
				gMapMgr->ShowUnitType(_UNIT_COMBAT);
			else
				gMapMgr->HideUnitType(_UNIT_COMBAT);

			gMapMgr->DrawMap ();

			break;
		}

		case MID_UNITS_AD:
		{
			gMapMgr->SetUnitLevel(2);

			if(((C_PopupList *)control)->GetItemState(ID))
				gMapMgr->ShowUnitType(_UNIT_AIR_DEFENSE);
			else
				gMapMgr->HideUnitType(_UNIT_AIR_DEFENSE);

			gMapMgr->DrawMap ();

			break;
		}

		case MID_UNITS_SUPPORT:
		{
			gMapMgr->SetUnitLevel(2);

			if(((C_PopupList *)control)->GetItemState(ID))
				gMapMgr->ShowUnitType(_UNIT_SUPPORT);
			else
				gMapMgr->HideUnitType(_UNIT_SUPPORT);

			gMapMgr->DrawMap ();

			break;
		}

		case MID_UNITS_SQUAD_FIGHTER:
		{
			if(((C_PopupList *)control)->GetItemState(ID))
				gMapMgr->ShowAirUnitType(_UNIT_FIGHTER);
			else
				gMapMgr->HideAirUnitType(_UNIT_FIGHTER);

			gMapMgr->DrawMap ();

			break;
		}

		case MID_UNITS_SQUAD_ATTACK:
		{
			if(((C_PopupList *)control)->GetItemState(ID))
				gMapMgr->ShowAirUnitType(_UNIT_ATTACK);
			else
				gMapMgr->HideAirUnitType(_UNIT_ATTACK);

			gMapMgr->DrawMap ();

			break;
		}

		case MID_UNITS_SQUAD_BOMBER:
		{
			if(((C_PopupList *)control)->GetItemState(ID))
				gMapMgr->ShowAirUnitType(_UNIT_BOMBER);
			else
				gMapMgr->HideAirUnitType(_UNIT_BOMBER);

			gMapMgr->DrawMap ();

			break;
		}

		case MID_UNITS_SQUAD_SUPPORT:
		{
			if(((C_PopupList *)control)->GetItemState(ID))
				gMapMgr->ShowAirUnitType(_UNIT_SUPPORT);
			else
				gMapMgr->HideAirUnitType(_UNIT_SUPPORT);

			gMapMgr->DrawMap ();

			break;
		}

		case MID_UNITS_SQUAD_HELI:
		{
			if(((C_PopupList *)control)->GetItemState(ID))
				gMapMgr->ShowAirUnitType(_UNIT_HELICOPTER);
			else
				gMapMgr->HideAirUnitType(_UNIT_HELICOPTER);

			gMapMgr->DrawMap ();

			break;
		}

		case MID_LEG_NAMES:
		{
			if(((C_PopupList *)control)->GetItemState(ID))
			{
				gMapMgr->TurnOnNames();
			}
			else
			{
				gMapMgr->TurnOffNames();
			}

			gMapMgr->DrawMap();

			return;
		}

		default:
		{
			//MonoPrint ("Map Menu %d %08x\n", ID, control);

			gMapMgr->DrawMap ();

			gPopupMgr->CloseMenu ();
			break;
		}
	}

	switch (ID)
	{
		case MID_INST_AF:
		case MID_INST_AD:
		case MID_INST_ARMY:
		case MID_INST_CCC:
		case MID_INST_POLITICAL:
		case MID_INST_INFRA:
		case MID_INST_LOG:
		case MID_INST_WARPROD:
		case MID_INST_NAV:
		case MID_INST_OTHER:
		case MID_INST_NAVAL:
		{
			if(((C_PopupList *)control)->GetItemState(ID))
			{
				gMapMgr->ShowObjectiveType(objective);
			}
			else
			{
				gMapMgr->HideObjectiveType(objective);
			}

			gMapMgr->DrawMap ();

			return;
		}
	}
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

void tactical_objective_menu (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;
	}

	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_);
		}
	}

	switch (ID)
	{
		case MID_RECON:
		{
			//MonoPrint ("Recon\n");

			gPopupMgr->CloseMenu ();

			break;
		}

		case MID_ADD_PACKAGE:
		{
			tactical_add_package (urec->GetID(),caller);

			gPopupMgr->CloseMenu ();
			break;
		}

		case MID_ADD_VC:
		{
			tactical_add_victory_condition (urec->GetID (),NULL);

			gPopupMgr->CloseMenu ();
			break;
		}

		case MID_SET_OWNER:
		{
			//MonoPrint ("Set Owner\n");
			break;
		}

		case MID_SQUADRONS:
		{
			//MonoPrint ("Squadrons\n");
			break;
		}

		case MID_ALTERNATE_FIELD:
		{
			//MonoPrint ("Alternate Field %d\n", ((C_PopupList *)control)->GetItemState(ID));
			break;
		}

		default:
		{
			//MonoPrint ("Unknown Object Menu Item\n");

			gPopupMgr->CloseMenu ();

			break;
		}
	}
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

void tactical_airbase_menu (long ID, short, C_Base *control)
{
	C_Base
		*caller;

	long
		iconid;

	C_MapIcon
		*icon;

	C_DrawList
		*piggy;

	C_TreeList
		*tree;

	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_);
		}
	}

	switch (ID)
	{
		case MID_RECON:
		{
			//MonoPrint ("Recon\n");

			gPopupMgr->CloseMenu ();

			break;
		}

		case MID_ADD_PACKAGE:
		{
			tactical_add_package (urec->GetID(),control);

			gPopupMgr->CloseMenu ();
			break;
		}

		case MID_ADD_VC:
		{
			tactical_add_victory_condition (urec->GetID(),NULL);

			gPopupMgr->CloseMenu ();
			break;
		}

		case MID_SET_OWNER:
		{
			//MonoPrint ("Set Owner\n");

			gPopupMgr->CloseMenu ();
			break;
		}

		case MID_ADD_SQUADRON:
		{
			tactical_add_squadron (urec->GetID());

			gPopupMgr->CloseMenu ();
			break;
		}

		case MID_ALTERNATE_FIELD:
		{
			//MonoPrint ("Alternate Field %d\n", ((C_PopupList *)control)->GetItemState(ID));
			break;
		}

		default:
		{
			//MonoPrint ("Unknown Object Menu Item\n");

			gPopupMgr->CloseMenu ();

			break;
		}
	}
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

static void update_gMapMgr (void)
{
	// This is NOW handled by the GPS
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

void tactical_update_campaign_entities (void)
{
	// This is NOW handled by the GPS
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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