亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gps.cpp

?? 空戰(zhàn)游戲flacon源碼
?? CPP
字號:
//
// Global Updater for the UI concering CAMPAIGN stuff
//
#include <windows.h>
#include "campbase.h"
#include "camplist.h"
#include "unit.h"
#include "division.h"
#include "chandler.h"
#include "ui95_ext.h"
#include "cmap.h"
#include "gps.h"
#include "urefresh.h"
#include "debuggr.h"
#include "userids.h"
#include "campaign.h"

extern C_Handler *gMainHandler;

extern BOOL gMoviePlaying;

extern VU_ID gSelectedFlightID;	// Last flight Selected (in ATO,Mission)
extern VU_ID gSelectedPackage;	// Current Package Selected (ATO)
extern VU_ID gSelectedEntity;	// Current Entity (Squadron/Unit/Objective) in OOB

void RemoveMissionCB(TREELIST *item);

void GPS_RemoveCB(void *rec)
{
	UI_Refresher *record=(UI_Refresher*)rec;

	if(record)
		record->Remove();
	delete record;
}

// Returns TRUE if I want to insert newitem before list item
static BOOL GPSTreeSortCB(TREELIST *list,TREELIST *newitem)
{
	_TCHAR *first,*second;
	long fval,sval;

	if(list && newitem)
	{
		if(list->Item_->_GetCType_() == _CNTL_SQUAD_)
			first=((C_Squadron*)list->Item_)->GetName();
		else if(list->Item_->_GetCType_() == _CNTL_ENTITY_)
			first=((C_Entity*)list->Item_)->GetName();
		else if(list->Item_->_GetCType_() == _CNTL_TEXT_)
			first=((C_Text*)list->Item_)->GetText();
		else
			first=NULL;

		if(newitem->Item_->_GetCType_() == _CNTL_SQUAD_)
			second=((C_Squadron*)newitem->Item_)->GetName();
		else if(newitem->Item_->_GetCType_() == _CNTL_ENTITY_)
			second=((C_Entity*)newitem->Item_)->GetName();
		else if(list->Item_->_GetCType_() == _CNTL_TEXT_)
			second=((C_Text*)newitem->Item_)->GetText();
		else
			second=NULL;

		if(!first || !second)
			return(FALSE);

		if(isdigit(*first) && isdigit(*second))
		{
			fval=atol(first);
			sval=atol(second);
			if(sval < fval)
				return(TRUE);
			else if(fval < sval)
				return(FALSE);
			// if(fval & sval are equal... let strcmp figure it out
		}
		else if(isdigit(*first))
			return(FALSE);
		else if(isdigit(*second))
			return(TRUE);
		if(_tcsicmp(second,first) < 0)
			return(TRUE);
	}
	return(FALSE);
}

// Returns TRUE if I want to insert newitem before list item
static BOOL GPSMissionSortPriorityCB(TREELIST *list,TREELIST *newitem)
{
	if(!list || !newitem)
		return(FALSE);

	if(((C_Mission*)newitem->Item_)->GetPriorityID() < ((C_Mission*)list->Item_)->GetPriorityID())
		return(TRUE);
	else if (((C_Mission*)newitem->Item_)->GetPriorityID() == ((C_Mission*)list->Item_)->GetPriorityID() &&
	         ((C_Mission*)newitem->Item_)->GetTakeOffTime() < ((C_Mission*)list->Item_)->GetTakeOffTime())
		return(TRUE);
	return(FALSE);
}

// Returns TRUE if I want to insert newitem before list item
static BOOL GPSMissionSortTimeCB(TREELIST *list,TREELIST *newitem)
{
	if(!list || !newitem)
		return(FALSE);

	if(((C_Mission*)newitem->Item_)->GetTakeOffTime() < ((C_Mission*)list->Item_)->GetTakeOffTime())
		return(TRUE);
	return(FALSE);
}

// Returns TRUE if I want to insert newitem before list item
static BOOL GPSMissionSortMissionCB(TREELIST *list,TREELIST *newitem)
{
	if(!list || !newitem)
		return(FALSE);

	if(_tcsicmp(((C_Mission*)newitem->Item_)->GetMission(),((C_Mission*)list->Item_)->GetMission()) < 0)
		return(TRUE);
	else if(!_tcsicmp(((C_Mission*)newitem->Item_)->GetMission(),((C_Mission*)list->Item_)->GetMission()) &&
			((C_Mission*)newitem->Item_)->GetTakeOffTime() < ((C_Mission*)list->Item_)->GetTakeOffTime())
		return(TRUE);
	return(FALSE);
}

// Returns TRUE if I want to insert newitem before list item
static BOOL GPSMissionSortStatusCB(TREELIST *list,TREELIST *newitem)
{
	if(!list || !newitem)
		return(FALSE);

	if(((C_Mission*)newitem->Item_)->GetStatusID() < ((C_Mission*)list->Item_)->GetStatusID())
		return(TRUE);
	else if(((C_Mission*)newitem->Item_)->GetStatusID() == ((C_Mission*)list->Item_)->GetStatusID() &&
			((C_Mission*)newitem->Item_)->GetTakeOffTime() < ((C_Mission*)list->Item_)->GetTakeOffTime())
		return(TRUE);
	return(FALSE);
}

// Returns TRUE if I want to insert newitem before list item
static BOOL GPSMissionSortPackageCB(TREELIST *list,TREELIST *newitem)
{
	if(!list || !newitem)
		return(FALSE);

	if(((C_Mission*)newitem->Item_)->GetPackageID() < ((C_Mission*)list->Item_)->GetPackageID())
		return(TRUE);
	else if(((C_Mission*)newitem->Item_)->GetPackageID() == ((C_Mission*)list->Item_)->GetPackageID() &&
			((C_Mission*)newitem->Item_)->GetTakeOffTime() < ((C_Mission*)list->Item_)->GetTakeOffTime())
		return(TRUE);
	return(FALSE);
}

void SelectMissionSortCB(long ID,short hittype,C_Base *control)
{
	C_TreeList *tree;
	F4CSECTIONHANDLE *Leave;
	if(hittype != C_TYPE_LMOUSEUP)
		return;

	tree=(C_TreeList*)control->Parent_->FindControl(MISSION_LIST_TREE);
	if(tree)
	{
		Leave=UI_Enter(control->Parent_);
		switch(ID)
		{
			case SORT_PRIORITY:
				tree->SetSortCallback(GPSMissionSortPriorityCB);
				break;
			case SORT_STATUS:
				tree->SetSortCallback(GPSMissionSortStatusCB);
				break;
			case SORT_ROLE:
				tree->SetSortCallback(GPSMissionSortMissionCB);
				break;
			case SORT_PACKAGE:
				tree->SetSortCallback(GPSMissionSortPackageCB);
				break;
			case SORT_TAKEOFF:
			default:
				tree->SetSortCallback(GPSMissionSortTimeCB);
				break;
		}
		tree->ReorderBranch(tree->GetRoot());
		tree->RecalcSize();
		control->Parent_->RefreshClient(tree->GetClient());
		UI_Leave(Leave);
	}
}

GlobalPositioningSystem::GlobalPositioningSystem()
{
	Flags=0;
	Allowed_=UR_NOTHING;
	GPS_Hash=NULL;
	MisTree_=NULL;
	AtoTree_=NULL;
	Map_=NULL;

	ObjectiveMenu_=0;
	UnitMenu_=0;
	WaypointMenu_=0;
	SquadronMenu_=0;
	MissionMenu_=0;

	TeamNo_=-1;
}

GlobalPositioningSystem::~GlobalPositioningSystem()
{
	if(GPS_Hash)
		Cleanup();
}

void GlobalPositioningSystem::Setup()
{
	GPS_Hash=new C_Hash;
	GPS_Hash->Setup(_GPS_HASH_SIZE_);
	GPS_Hash->SetCallback(GPS_RemoveCB);
	GPS_Hash->SetFlags(C_BIT_REMOVE);
}

void GlobalPositioningSystem::Cleanup()
{
	if(GPS_Hash)
	{
		delete GPS_Hash;
		GPS_Hash=NULL;
	}

	MisTree_=NULL;
	AtoTree_=NULL;
	OOBTree_=NULL;
	Map_=NULL;
	Allowed_=UR_NOTHING;
}

void GlobalPositioningSystem::Clear()
{
	if(GPS_Hash)
	{
		delete GPS_Hash;
		GPS_Hash=NULL;
	}
	Setup();
}

void GlobalPositioningSystem::SetMissionTree(C_TreeList *tree)
{
	MisTree_=tree;
	MisTree_->SetSortType(TREE_SORT_CALLBACK);
	MisTree_->SetSortCallback(GPSMissionSortTimeCB);
	MisTree_->SetDelCallback(RemoveMissionCB);
}

void GlobalPositioningSystem::SetATOTree(C_TreeList *tree)
{
	AtoTree_=tree;
}

void GlobalPositioningSystem::SetOOBTree(C_TreeList *tree)
{
	OOBTree_=tree;
	OOBTree_->SetSortCallback(GPSTreeSortCB);
	OOBTree_->SetSortType(TREE_SORT_CALLBACK);
}

void GlobalPositioningSystem::UpdateDivisions()
{
	UI_Refresher *cur;
	Division div;
	Unit u;
	int t;

	for(t=0;t<NUM_TEAMS;t++) 
	{
		div=GetFirstDivision(t);
		while(div)
		{
			u=div->GetFirstUnitElement();
			if(u)
			{
				cur=(UI_Refresher*)GPS_Hash->Find(u->GetCampID() | UR_DIVISION);
				if(!cur)
				{
					// create a new one
					cur=new UI_Refresher;
					if(cur)
					{
						cur->Setup(div,this,Allowed_);
						GPS_Hash->Add(div->nid | UR_DIVISION,cur);
					}
				}
				else
				{
					// check to update current
					cur->Update(div,Allowed_);
				}
			}
			div=GetNextDivision(div);
		}
	}
}

void GlobalPositioningSystem::Update()
{
	if(gMoviePlaying) // If a Movie is playing... don't execute... because the movie might stutter
		return;

	gMainHandler->EnterCritical();
	CampEnterCriticalSection();

	VuListIterator iter(AllCampList);
	CampEntity entity;
	UI_Refresher *cur;

	GPS_Hash->SetCheck(GPS_Hash->GetCheck()^1);

	UpdateDivisions();

	entity=GetFirstEntity(&iter);
	while(entity)
	{
		if(!entity->IsDead())
		{
			cur=(UI_Refresher*)GPS_Hash->Find(entity->GetCampID());
			if(!cur)
			{
				if(entity->IsUnit() && ((Unit)entity)->Inactive())
				{
				}
				else
				{
					// create a new one
					cur=new UI_Refresher;
					if(cur)
					{
						cur->Setup(entity,this,Allowed_);
						GPS_Hash->Add(entity->GetCampID(),cur);
					}
				}
			}
			else
			{
				if(cur->GetType() != entity->GetType())
				{
					GPS_Hash->Remove(entity->GetCampID());

					if(entity->IsUnit() && ((Unit)entity)->Inactive())
					{
					}
					else
					{
						// create a new one
						cur=new UI_Refresher;
						if(cur)
						{
							cur->Setup(entity,this,Allowed_);
							GPS_Hash->Add(entity->GetCampID(),cur);
						}
					}
				}
				else
				{
					// check to update current
					cur->Update(entity,Allowed_);
				}
			}
		}
		entity=GetNextEntity(&iter);
	}
	GPS_Hash->RemoveOld();
	if(MisTree_ && (Flags & _GPS_RESORT_MISSION_))
	{
		MisTree_->ReorderBranch(MisTree_->GetRoot());
		Flags |= _GPS_MISSION_RESIZE_;
	}
	if(MisTree_ && (Flags & _GPS_MISSION_RESIZE_))
	{
		MisTree_->RecalcSize();
		if(MisTree_->GetParent())
			MisTree_->GetParent()->RefreshClient(MisTree_->GetClient());
	}
	if(AtoTree_ && (Flags & _GPS_ATO_RESIZE_))
	{
		AtoTree_->RecalcSize();
		if(AtoTree_->GetParent())
			AtoTree_->GetParent()->RefreshClient(AtoTree_->GetClient());
	}
	if(OOBTree_ && (Flags & _GPS_OOB_RESIZE_))
	{
		OOBTree_->RecalcSize();
		if(OOBTree_->GetParent())
			OOBTree_->GetParent()->RefreshClient(OOBTree_->GetClient());
	}
	Flags=0;
	CampLeaveCriticalSection();
	gMainHandler->LeaveCritical();
}

void *GlobalPositioningSystem::Find(long ID)
{
	return(GPS_Hash->Find(ID));
}

void *GlobalPositioningSystem::GetFirst()
{
	if(GPS_Hash)
		return(GPS_Hash->GetFirst(&Cur_,&CurIdx_));
	return(NULL);
}

void *GlobalPositioningSystem::GetNext()
{
	if(GPS_Hash)
		return(GPS_Hash->GetNext(&Cur_,&CurIdx_));
	return(NULL);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
裸体歌舞表演一区二区| 欧美videos中文字幕| 337p亚洲精品色噜噜狠狠| 欧美一区二区三区免费观看视频| 日韩欧美不卡一区| 国产女主播一区| 亚洲一区在线观看视频| 久久99精品久久久久久久久久久久| 国产精品一级二级三级| 99riav久久精品riav| 欧美日韩精品福利| 2022国产精品视频| 亚洲男人电影天堂| 久久精品国产亚洲aⅴ | 欧美视频在线不卡| 精品国产乱码久久| 亚洲综合色成人| 国产在线麻豆精品观看| 欧美综合色免费| 国产网红主播福利一区二区| 亚洲国产成人av| 福利一区二区在线观看| 777亚洲妇女| 国产精品伦一区二区三级视频| 五月天欧美精品| zzijzzij亚洲日本少妇熟睡| 91精品国产入口| 亚洲欧美激情小说另类| 国产一区二区不卡老阿姨| 欧美性受xxxx黑人xyx| 国产视频一区在线观看| 日韩激情一区二区| 色婷婷精品大在线视频| 久久奇米777| 天天综合色天天| 91美女片黄在线观看91美女| 26uuu亚洲| 丝袜国产日韩另类美女| 91丝袜国产在线播放| 久久综合久久综合亚洲| 午夜精品福利在线| 91在线码无精品| 国产亚洲精品超碰| 麻豆精品在线看| 欧美高清hd18日本| 亚洲一区二区免费视频| 99国产一区二区三精品乱码| 精品av久久707| 日本大胆欧美人术艺术动态| 在线观看视频一区| 亚洲色图欧美激情| 成人教育av在线| 国产亚洲欧美中文| 韩国精品在线观看| 欧美一区二区精品在线| 五月综合激情婷婷六月色窝| 色老汉一区二区三区| 综合激情成人伊人| 成人av电影免费观看| 中文字幕不卡在线播放| 国产美女在线精品| 久久影院午夜论| 精品亚洲国内自在自线福利| 欧美一区二区三区小说| 日韩在线a电影| 欧美一区二区三区喷汁尤物| 日本女人一区二区三区| 欧美老年两性高潮| 丝袜a∨在线一区二区三区不卡 | 日韩精品乱码免费| 欧美探花视频资源| 亚洲r级在线视频| 欧美日韩不卡视频| 免费欧美高清视频| 精品国产99国产精品| 精久久久久久久久久久| 久久蜜桃av一区二区天堂| 精品一区二区三区视频| 久久久噜噜噜久久人人看| 国产美女精品在线| 欧美国产97人人爽人人喊| 成人性色生活片| 中文字幕日韩精品一区| 91日韩在线专区| 一区二区成人在线| 欧美妇女性影城| 久久精品国产网站| 欧美激情综合五月色丁香| 99久久99久久免费精品蜜臀| 亚洲人妖av一区二区| 91福利国产精品| 午夜电影一区二区| 日韩一区国产二区欧美三区| 国产尤物一区二区在线| 国产精品女主播av| 99久久免费国产| 亚洲一卡二卡三卡四卡| 日韩欧美视频在线| 国产精品888| 亚洲欧美日韩中文字幕一区二区三区 | 欧美日韩中文国产| 蜜臀av性久久久久蜜臀aⅴ四虎| 2023国产一二三区日本精品2022| 国产91精品久久久久久久网曝门| 国产精品国产a级| 欧美性极品少妇| 狠狠色综合色综合网络| 国产精品不卡视频| 欧美精品电影在线播放| 国产又粗又猛又爽又黄91精品| 国产精品国产馆在线真实露脸| 欧美日韩一级大片网址| 国产在线播精品第三| 亚洲卡通动漫在线| 日韩你懂的在线播放| 成人h版在线观看| 免费在线视频一区| 国产精品护士白丝一区av| 欧美日韩视频在线一区二区 | 中文字幕第一区第二区| 久久久无码精品亚洲日韩按摩| eeuss鲁一区二区三区| 日韩福利视频网| 国产精品久久久久久久久搜平片 | 亚洲v日本v欧美v久久精品| 精品国产1区二区| 日本韩国欧美国产| 国产综合色在线| 亚洲理论在线观看| 久久免费电影网| 欧美日韩免费高清一区色橹橹| 国产一区啦啦啦在线观看| 亚洲制服丝袜一区| 国产嫩草影院久久久久| 制服丝袜亚洲播放| av激情成人网| 久久99国产精品免费网站| 亚洲欧美成人一区二区三区| 精品国内片67194| 欧美在线免费视屏| 国产91精品一区二区麻豆亚洲| 偷窥国产亚洲免费视频| 亚洲欧洲国产日本综合| 精品国产乱码久久久久久久久 | 日本aⅴ免费视频一区二区三区 | 在线观看日韩电影| 国产美女精品一区二区三区| 婷婷亚洲久悠悠色悠在线播放| 国产精品毛片高清在线完整版| 欧美一区二区三区公司| 色999日韩国产欧美一区二区| 国产精品456露脸| 日韩 欧美一区二区三区| 亚洲曰韩产成在线| 国产欧美一区二区精品性色| 日韩一卡二卡三卡四卡| 欧美日韩国产123区| 91视频在线看| 粉嫩久久99精品久久久久久夜| 蜜臀久久久99精品久久久久久| 亚洲国产精品久久一线不卡| 亚洲色图视频网| 日本一区二区三区四区| 精品国产不卡一区二区三区| 欧美一区二区在线免费播放| 欧美亚洲日本国产| 91麻豆福利精品推荐| 成人午夜电影小说| 日韩欧美的一区| 欧美电影一区二区三区| 精品视频资源站| 欧美色图在线观看| 91黄色在线观看| 91成人免费电影| 欧美在线观看你懂的| 色综合视频在线观看| 91色porny在线视频| 91香蕉视频mp4| av成人动漫在线观看| 99精品国产一区二区三区不卡| 懂色av一区二区在线播放| 国产激情一区二区三区| 国产乱人伦偷精品视频免下载| 精彩视频一区二区| 国产精品99久久久久久宅男| 国产美女主播视频一区| 国产成人综合亚洲网站| 成人免费视频caoporn| 国产成人夜色高潮福利影视| 国产一区二区91| 成人avav影音| 一本一道久久a久久精品| 91丨九色丨蝌蚪丨老版| 色婷婷综合久久久| 欧美在线小视频| 91精品国产91久久久久久最新毛片| 欧美精品乱码久久久久久| 制服丝袜亚洲精品中文字幕| 欧美va亚洲va国产综合| 国产亚洲欧美日韩俺去了|