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

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

?? windoweventobjectdialog.cpp

?? 骨骼動畫....把魔獸模型解出的代碼..
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//+-----------------------------------------------------------------------------
//| Included files
//+-----------------------------------------------------------------------------
#include "WindowEventObjectDialog.h"


//+-----------------------------------------------------------------------------
//| Global objects
//+-----------------------------------------------------------------------------
WINDOW_EVENT_OBJECT_DIALOG EventObjectDialog;


//+-----------------------------------------------------------------------------
//| Static member variables
//+-----------------------------------------------------------------------------
MODEL_EVENT_OBJECT_DATA WINDOW_EVENT_OBJECT_DIALOG::StaticData;
MODEL_GLOBAL_SEQUENCE* WINDOW_EVENT_OBJECT_DIALOG::StaticGlobalSequence;
std::string WINDOW_EVENT_OBJECT_DIALOG::StaticNameType;
std::string WINDOW_EVENT_OBJECT_DIALOG::StaticNameIdentifier;
std::string WINDOW_EVENT_OBJECT_DIALOG::StaticNameData;
std::map<std::string, std::string> WINDOW_EVENT_OBJECT_DIALOG::SplatMap;
std::map<std::string, std::string> WINDOW_EVENT_OBJECT_DIALOG::UberSplatMap;
std::map<std::string, std::string> WINDOW_EVENT_OBJECT_DIALOG::SoundMap;
std::map<std::string, std::string> WINDOW_EVENT_OBJECT_DIALOG::SpawnObjectMap;


//+-----------------------------------------------------------------------------
//| Constructor
//+-----------------------------------------------------------------------------
WINDOW_EVENT_OBJECT_DIALOG::WINDOW_EVENT_OBJECT_DIALOG()
{
	//Empty
}


//+-----------------------------------------------------------------------------
//| Destructor
//+-----------------------------------------------------------------------------
WINDOW_EVENT_OBJECT_DIALOG::~WINDOW_EVENT_OBJECT_DIALOG()
{
	//Empty
}


//+-----------------------------------------------------------------------------
//| Loads all data
//+-----------------------------------------------------------------------------
BOOL WINDOW_EVENT_OBJECT_DIALOG::LoadData()
{
	BUFFER Buffer;
	TOKEN_IN_STREAM TokenStream;
	std::string FileName;
	std::string ProgramDirectory;
	std::string Name;
	std::string Data;

	ProgramDirectory = Common.GetProgramDirectory() + "\\";

	FileName = ProgramDirectory + PATH_DATA_SPLAT;
	TokenStream.SetFileName(FileName);

	if(!FileLoader.LoadFromFile(FileName, Buffer))
	{
		Error.SetMessage("Unable to open \"" + FileName + "\"!");
		return FALSE;
	}

	if(!TokenStream.Load(Buffer)) return FALSE;

	while(!TokenStream.Eof())
	{
		Data = TokenStream.ReadWord();
		if(Data == "") break;

		Name = TokenStream.ReadLine();
		if(Name == "") break;

		RegisterSplat(Data, Data + " - " + Name);
	}

	FileName = ProgramDirectory + PATH_DATA_UBERSPLAT;
	TokenStream.SetFileName(FileName);

	if(!FileLoader.LoadFromFile(FileName, Buffer))
	{
		Error.SetMessage("Unable to open \"" + FileName + "\"!");
		return FALSE;
	}

	if(!TokenStream.Load(Buffer)) return FALSE;

	while(!TokenStream.Eof())
	{
		Data = TokenStream.ReadWord();
		if(Data == "") break;

		Name = TokenStream.ReadLine();
		if(Name == "") break;

		RegisterUberSplat(Data, Data + " - " + Name);
	}

	FileName = ProgramDirectory + PATH_DATA_SOUND;
	TokenStream.SetFileName(FileName);

	if(!FileLoader.LoadFromFile(FileName, Buffer))
	{
		Error.SetMessage("Unable to open \"" + FileName + "\"!");
		return FALSE;
	}

	if(!TokenStream.Load(Buffer)) return FALSE;

	while(!TokenStream.Eof())
	{
		Data = TokenStream.ReadWord();
		if(Data == "") break;

		Name = TokenStream.ReadLine();
		if(Name == "") break;

		RegisterSound(Data, Data + " - " + Name);
	}

	FileName = ProgramDirectory + PATH_DATA_SPAWNOBJECT;
	TokenStream.SetFileName(FileName);

	if(!FileLoader.LoadFromFile(FileName, Buffer))
	{
		Error.SetMessage("Unable to open \"" + FileName + "\"!");
		return FALSE;
	}

	if(!TokenStream.Load(Buffer)) return FALSE;

	while(!TokenStream.Eof())
	{
		Data = TokenStream.ReadWord();
		if(Data == "") break;

		Name = TokenStream.ReadLine();
		if(Name == "") break;

		RegisterSpawnObject(Data, Data + " - " + Name);
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Displays the dialog
//+-----------------------------------------------------------------------------
BOOL WINDOW_EVENT_OBJECT_DIALOG::Display(HWND ParentWindow, MODEL_EVENT_OBJECT_DATA& Data, MODEL_GLOBAL_SEQUENCE*& GlobalSequence) CONST
{
	StaticData = Data;
	StaticGlobalSequence = GlobalSequence;
	if(DialogBoxParam(GetModuleHandle(NULL), MAKEINTRESOURCE(DialogEventObject), ParentWindow, DialogMessageHandler, 0))
	{
		Data = StaticData;
		GlobalSequence = StaticGlobalSequence;
		StaticData = MODEL_EVENT_OBJECT_DATA();
		return TRUE;
	}

	StaticData = MODEL_EVENT_OBJECT_DATA();
	return FALSE;
}


//+-----------------------------------------------------------------------------
//| Handles the dialog messages
//+-----------------------------------------------------------------------------
BOOL CALLBACK WINDOW_EVENT_OBJECT_DIALOG::DialogMessageHandler(HWND Window, UINT Message, WPARAM W, LPARAM L)
{
	switch(Message)
	{
		case WM_INITDIALOG:
		{
			INT Index;
			HWND ListBox;
			HWND ComboBox;
			std::list<INT>::iterator i;

			AddWindow(Window);
			CenterWindow(Window);

			ListBox = GetDlgItem(Window, DialogEventObjectList);
			ComboBox = GetDlgItem(Window, DialogEventObjectCombo1);

			i = StaticData.EventTrack.begin();
			while(i != StaticData.EventTrack.end())
			{
				SortedInsert(ListBox, (*i));
				i++;
			}

			::SendMessage(ListBox, LB_SETCURSEL, 0, 0);

			Index = static_cast<INT>(::SendMessage(ComboBox, CB_INSERTSTRING, -1, reinterpret_cast<LPARAM>("FPT (FootPrint)")));
			::SendMessage(ComboBox, CB_SETITEMDATA, Index, 0);
			Index = static_cast<INT>(::SendMessage(ComboBox, CB_INSERTSTRING, -1, reinterpret_cast<LPARAM>("SPL (BloodSplat)")));
			::SendMessage(ComboBox, CB_SETITEMDATA, Index, 1);
			Index = static_cast<INT>(::SendMessage(ComboBox, CB_INSERTSTRING, -1, reinterpret_cast<LPARAM>("UBR (UberSplat)")));
			::SendMessage(ComboBox, CB_SETITEMDATA, Index, 2);
			Index = static_cast<INT>(::SendMessage(ComboBox, CB_INSERTSTRING, -1, reinterpret_cast<LPARAM>("SND (Sound)")));
			::SendMessage(ComboBox, CB_SETITEMDATA, Index, 3);
			Index = static_cast<INT>(::SendMessage(ComboBox, CB_INSERTSTRING, -1, reinterpret_cast<LPARAM>("SPN (SpawnObject)")));
			::SendMessage(ComboBox, CB_SETITEMDATA, Index, 4);

			if(StaticData.Name.size() != 8) StaticData.Name = STRING_DEFAULT_EVENT;

			StaticNameType = StaticData.Name.substr(0, 3);
			StaticNameIdentifier = StaticData.Name.substr(3, 1);
			StaticNameData = StaticData.Name.substr(4, 4);

			if(StaticNameType == "SPL")
			{
				BuildSplatList(Window);
				::SendMessage(ComboBox, CB_SETCURSEL, 1, 0);
				::SendMessage(GetDlgItem(Window, DialogEventObjectCombo2), CB_SETCURSEL, GetComboIndex(Window, StaticNameData, SplatMap), 0);
			}
			else if(StaticNameType == "UBR")
			{
				BuildUberSplatList(Window);
				::SendMessage(ComboBox, CB_SETCURSEL, 2, 0);
				::SendMessage(GetDlgItem(Window, DialogEventObjectCombo2), CB_SETCURSEL, GetComboIndex(Window, StaticNameData, UberSplatMap), 0);
			}
			else if(StaticNameType == "SND")
			{
				BuildSoundList(Window);
				::SendMessage(ComboBox, CB_SETCURSEL, 3, 0);
				::SendMessage(GetDlgItem(Window, DialogEventObjectCombo2), CB_SETCURSEL, GetComboIndex(Window, StaticNameData, SoundMap), 0);
			}
			else if(StaticNameType == "SPN")
			{
				BuildSpawnObjectList(Window);
				::SendMessage(ComboBox, CB_SETCURSEL, 4, 0);
				::SendMessage(GetDlgItem(Window, DialogEventObjectCombo2), CB_SETCURSEL, GetComboIndex(Window, StaticNameData, SpawnObjectMap), 0);
			}
			else
			{
				BuildSplatList(Window);
				::SendMessage(ComboBox, CB_SETCURSEL, 0, 0);
				::SendMessage(GetDlgItem(Window, DialogEventObjectCombo2), CB_SETCURSEL, GetComboIndex(Window, StaticNameData, SplatMap), 0);
			}

			SetString(GetDlgItem(Window, DialogEventObjectEditIdentifier), StaticNameIdentifier);
			SetString(GetDlgItem(Window, DialogEventObjectEditData), StaticNameData);

			BuildGlobalSequenceIdList(Window);

			return TRUE;
		}

		case WM_CONTEXTMENU:
		{
			INT Index;
			INT MenuId;
			INT NrOfItems;
			RECT TempRect;
			RECT ListRect;
			POINT MousePosition;
			POINT LocalMousePosition;
			HWND ListBox;

			ListBox = GetDlgItem(Window, DialogEventObjectList);

			GetWindowRect(ListBox, &ListRect);
			GetCursorPos(&MousePosition);
			LocalMousePosition = MousePosition;
			ScreenToClient(ListBox, &LocalMousePosition);

			if(!Common.PointInsideRect(MousePosition, ListRect)) return TRUE;

			MenuId = TrackMenu2;
			NrOfItems = static_cast<INT>(::SendMessage(ListBox, LB_GETCOUNT, 0, 0));

			Index = 0;
			while(Index < NrOfItems)
			{
				::SendMessage(ListBox, LB_GETITEMRECT, Index, reinterpret_cast<LPARAM>(&TempRect));
				if(Common.PointInsideRect(LocalMousePosition, TempRect))
				{
					::SendMessage(ListBox, LB_SETCURSEL, Index, 0);
					MenuId = TrackMenu;
					break;
				}

				Index++;
			}

			TrackPopupMenuEx(GetSubMenu(LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(MenuId)), 0), TPM_LEFTALIGN | TPM_RIGHTBUTTON, MousePosition.x, MousePosition.y, Window, NULL);

			return TRUE;
		}

		case WM_COMMAND:
		{
			HWND Control;

			Control = reinterpret_cast<HWND>(L);
			if(Control == GetDlgItem(Window, DialogEventObjectCombo1))
			{
				switch(HIWORD(W))
				{
					case CBN_SELCHANGE:
					{
						INT Index;
						INT Type;

						Index = static_cast<INT>(::SendMessage(Control, CB_GETCURSEL, 0, 0));
						Type = static_cast<INT>(::SendMessage(Control, CB_GETITEMDATA, Index, 0));

						switch(Type)
						{
							case 0:
							{
								BuildSplatList(Window);
								break;
							}

							case 1:
							{
								BuildSplatList(Window);
								break;
							}

							case 2:
							{
								BuildUberSplatList(Window);
								break;
							}

							case 3:
							{
								BuildSoundList(Window);
								break;
							}

							case 4:
							{
								BuildSpawnObjectList(Window);
								break;
							}
						}

						::SendMessage(GetDlgItem(Window, DialogEventObjectCombo2), CB_SETCURSEL, 0, 0);

						break;
					}
				}

				return TRUE;
			}
			else if(Control == GetDlgItem(Window, DialogEventObjectCombo2))
			{
				switch(HIWORD(W))
				{
					case CBN_SELCHANGE:
					{
						INT Index;
						INT Type;
						INT Size;
						std::vector<CHAR> Buffer;
						std::string String;
						std::map<std::string, std::string>::iterator i;

						Index = static_cast<INT>(::SendMessage(GetDlgItem(Window, DialogEventObjectCombo1), CB_GETCURSEL, 0, 0));
						Type = static_cast<INT>(::SendMessage(GetDlgItem(Window, DialogEventObjectCombo1), CB_GETITEMDATA, Index, 0));

						Index = static_cast<INT>(::SendMessage(Control, CB_GETCURSEL, 0, 0));
						Size = static_cast<INT>(::SendMessage(Control, CB_GETLBTEXTLEN, Index, 0));
						if(Size ==  LB_ERR) return TRUE;

						Buffer.resize(Size + 1);
						::SendMessage(Control, CB_GETLBTEXT, Index, reinterpret_cast<LPARAM>(&Buffer[0]));
						Buffer[Size] = '\0';
						String = &Buffer[0];

						switch(Type)
						{
							case 0:
							{
								i = SplatMap.find(String);
								if(i == SplatMap.end()) break;

								SetString(GetDlgItem(Window, DialogEventObjectEditData), i->second);

								break;
							}

							case 1:
							{
								i = SplatMap.find(String);
								if(i == SplatMap.end()) break;

								SetString(GetDlgItem(Window, DialogEventObjectEditData), i->second);

								break;
							}

							case 2:
							{
								i = UberSplatMap.find(String);
								if(i == UberSplatMap.end()) break;

								SetString(GetDlgItem(Window, DialogEventObjectEditData), i->second);

								break;
							}

							case 3:
							{
								i = SoundMap.find(String);
								if(i == SoundMap.end()) break;

								SetString(GetDlgItem(Window, DialogEventObjectEditData), i->second);

								break;
							}

							case 4:
							{
								i = SpawnObjectMap.find(String);
								if(i == SpawnObjectMap.end()) break;

								SetString(GetDlgItem(Window, DialogEventObjectEditData), i->second);

								break;
							}

							default:
							{
								SetString(GetDlgItem(Window, DialogEventObjectEditData), "Data not found!");
								break;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成都精品91一区二区三| 成人精品gif动图一区| 久久免费精品国产久精品久久久久| 岛国精品在线观看| 亚洲电影一区二区三区| 久久嫩草精品久久久久| 欧美视频一二三区| 粉嫩久久99精品久久久久久夜| 亚洲成年人影院| 国产精品女人毛片| 精品国产不卡一区二区三区| 欧美卡1卡2卡| 91麻豆国产精品久久| 精品亚洲欧美一区| 亚洲成人免费影院| 亚洲人亚洲人成电影网站色| 久久亚洲精华国产精华液| 777色狠狠一区二区三区| 91视频观看视频| 国产91丝袜在线18| 国产精品自拍三区| 久久精品国内一区二区三区| 午夜精品aaa| 夜夜嗨av一区二区三区中文字幕| 国产精品视频线看| 久久久不卡影院| 久久久噜噜噜久噜久久综合| 欧美大片在线观看一区二区| 欧美日韩五月天| 欧美私模裸体表演在线观看| 一本色道久久综合精品竹菊| 不卡的av在线播放| 成人av免费网站| 成人高清免费观看| 精品国产99国产精品| 欧美日韩精品欧美日韩精品一| 99久久99久久精品免费观看| 成人18精品视频| 99久久国产综合精品女不卡| 91在线精品一区二区三区| 成人黄色大片在线观看| 成人一级视频在线观看| 不卡一区中文字幕| 91一区二区三区在线观看| 一本一本大道香蕉久在线精品| 色综合久久综合| 欧美三级韩国三级日本三斤| 欧美视频一区在线| 日韩一级完整毛片| 久久久久综合网| 日本一区二区三区视频视频| 最新日韩在线视频| 夜夜操天天操亚洲| 日韩中文字幕1| 六月丁香综合在线视频| 国产成a人无v码亚洲福利| 成人av高清在线| 91麻豆.com| 欧美日韩aaa| 精品理论电影在线观看| 久久久久久久久99精品| 中文字幕一区二区三区在线不卡| 亚洲激情五月婷婷| 欧美a级理论片| 国产一区二区三区最好精华液| 成人综合婷婷国产精品久久蜜臀 | 777久久久精品| 精品日韩99亚洲| 国产精品视频在线看| 亚洲最快最全在线视频| 日产国产高清一区二区三区| 国产乱人伦偷精品视频不卡| 99热99精品| 7777精品伊人久久久大香线蕉超级流畅| 91精品国产综合久久久蜜臀粉嫩| 久久久久久久综合色一本| 自拍偷拍国产精品| 另类专区欧美蜜桃臀第一页| 欧美成人综合网站| 亚洲日本在线a| 卡一卡二国产精品| 97久久精品人人做人人爽| 91精品国产麻豆国产自产在线| 国产日韩欧美电影| 婷婷夜色潮精品综合在线| 国产精品456| 欧美日韩中文一区| 久久久蜜桃精品| 天堂在线亚洲视频| 成人avav在线| 精品少妇一区二区三区免费观看| 1区2区3区欧美| 激情亚洲综合在线| 欧美午夜不卡视频| 亚洲国产精品二十页| 亚洲成人中文在线| 成人精品视频一区二区三区尤物| 欧美日韩成人一区二区| 1000部国产精品成人观看| 精品一区二区久久久| 欧美三级电影网| 国产精品国产三级国产aⅴ无密码| 免费高清视频精品| 欧美色男人天堂| 国产精品久久毛片a| 精品一区二区三区影院在线午夜| 在线欧美小视频| 亚洲欧洲成人av每日更新| 久久精工是国产品牌吗| 在线免费不卡电影| 国产精品久久久久久久久动漫 | 成人avav在线| 久久影院视频免费| 日韩va欧美va亚洲va久久| 色网综合在线观看| 国产精品剧情在线亚洲| 韩日精品视频一区| 欧美videos大乳护士334| 视频在线观看一区二区三区| 欧美午夜寂寞影院| 亚洲一二三级电影| 欧美在线观看18| 一区二区三区日本| 欧美激情在线观看视频免费| 精品一区二区三区视频在线观看| 欧美日韩性生活| 亚洲成a人片综合在线| 欧洲精品一区二区三区在线观看| 国产精品麻豆久久久| 国产v综合v亚洲欧| 国产视频不卡一区| 国产成人高清在线| 国产午夜精品一区二区三区嫩草| 国产一区二区三区四区五区入口| 欧美成人r级一区二区三区| 久久成人久久爱| 精品国产一二三区| 国产一区中文字幕| 国产精品水嫩水嫩| 91麻豆蜜桃一区二区三区| 一区二区三区精品久久久| 91黄色在线观看| 亚洲国产一二三| 91精品在线麻豆| 久久国产精品一区二区| 2021国产精品久久精品| 国产91精品露脸国语对白| 国产精品三级av在线播放| 不卡一卡二卡三乱码免费网站| 亚洲男人的天堂在线观看| 欧美影院一区二区| 日韩av网站在线观看| 精品美女被调教视频大全网站| 国产精品综合二区| 亚洲三级免费观看| 欧美四级电影网| 久久不见久久见中文字幕免费| 久久综合久久综合久久综合| 国产91丝袜在线播放0| 亚洲日本一区二区| 欧美一区二区三区视频在线观看 | 一区在线中文字幕| 欧美日韩亚洲另类| 久久99精品久久久久久动态图| 国产日产欧美一区| 91国产成人在线| 青青草一区二区三区| 国产亚洲成年网址在线观看| 99久久夜色精品国产网站| 成人午夜视频网站| 一区二区三区欧美在线观看| 91精品在线免费| 成人午夜激情影院| 亚洲第一主播视频| 国产日韩欧美麻豆| 日本道色综合久久| 国模少妇一区二区三区| 亚洲永久免费av| 久久久亚洲高清| 欧美丝袜丝交足nylons图片| 韩国精品一区二区| 亚洲一区日韩精品中文字幕| www日韩大片| 欧美日韩在线不卡| 国产传媒欧美日韩成人| 午夜久久久久久久久| 国产精品国产三级国产普通话蜜臀| 3d动漫精品啪啪| 91在线观看美女| 黄页网站大全一区二区| 亚洲老司机在线| 国产三级欧美三级| 9191精品国产综合久久久久久| 成人伦理片在线| 国产真实乱偷精品视频免| 偷拍日韩校园综合在线| 亚洲男同1069视频| 国产精品少妇自拍| 精品久久久久久久久久久久久久久久久| 欧美在线观看禁18|