public FFACE(int processID)
{
// create our FFACE instance
_InstanceID = CreateInstance((UInt32)processID);
if (!System.IO.Directory.Exists(WindowerPath) && !ParseResources.UseFFXIDatFiles)
ParseResources.UseFFXIDatFiles = true;
//#region Find Windower Plugin Path
//System.Diagnostics.Process[] Processes = System.Diagnostics.Process.GetProcessesByName("pol");
//if (Processes.Length > 0)
// foreach (System.Diagnostics.ProcessModule mod in Processes[0].Modules)
// {
// if (mod.ModuleName.ToLower() == "hook.dll")
// {
// WindowerPath = mod.FileName.Substring(0, mod.FileName.Length - 8) + @"\plugins\";
// break;
// }
// }
//if (String.IsNullOrEmpty(WindowerPath))
// WindowerPath = "Windower path could not be found";
//#endregion
// Find out if we should be using structs or not
System.Diagnostics.FileVersionInfo fileInfo = System.Diagnostics.FileVersionInfo.GetVersionInfo(FFACE_LIBRARY);
// Need 4, 1, 0, 14 or later. Adjust these settings as needed.
UInt64 version = ((UInt64)fileInfo.FileMajorPart << 48) + ((UInt64)fileInfo.FileMinorPart << 32) + ((UInt64)fileInfo.FileBuildPart << 16) + (UInt64)fileInfo.FilePrivatePart;
if (fileInfo.FileMajorPart != 4)
throw new Exception(NEED_v410_14_OR_HIGHER);
else if (version < 0x000400010000000EUL) // 0004 0001 0000 000E (4, 1, 0, 14)
throw new Exception(NEED_v410_14_OR_HIGHER);
/*if (fileInfo.FileMajorPart != 4)
throw new Exception(NEED_v410_14_OR_HIGHER);
else if (fileInfo.FileMinorPart < 1)
throw new Exception(NEED_v410_14_OR_HIGHER);
else if (fileInfo.FileBuildPart < 0)
throw new Exception(NEED_v410_14_OR_HIGHER);
else if (fileInfo.FilePrivatePart < 14)
throw new Exception(NEED_v410_14_OR_HIGHER);*/
// instantiate our classes
Player = new PlayerTools(_InstanceID);
Target = new TargetTools(_InstanceID);
Party = new PartyTools(_InstanceID);
Fish = new FishTools(_InstanceID);
Windower = new WindowerTools(_InstanceID);
Timer = new TimerTools(_InstanceID);
Chat = new ChatTools(_InstanceID);
Item = new ItemTools(this);
NPC = new NPCTools(_InstanceID);
Menu = new MenuTools(this);
Search = new SearchTools(_InstanceID);
Navigator = new NavigatorTools(this);
//Resources = ParseResources.Instance;
#region Party Members
// instantiate our party members
PartyMember = new System.Collections.Generic.Dictionary<byte, PartyMemberTools>();
PartyMember.Add(0, new PartyMemberTools(_InstanceID, 0));
PartyMember.Add(1, new PartyMemberTools(_InstanceID, 1));
PartyMember.Add(2, new PartyMemberTools(_InstanceID, 2));
PartyMember.Add(3, new PartyMemberTools(_InstanceID, 3));
PartyMember.Add(4, new PartyMemberTools(_InstanceID, 4));
PartyMember.Add(5, new PartyMemberTools(_InstanceID, 5));
PartyMember.Add(6, new PartyMemberTools(_InstanceID, 6));
PartyMember.Add(7, new PartyMemberTools(_InstanceID, 7));
PartyMember.Add(8, new PartyMemberTools(_InstanceID, 8));
PartyMember.Add(9, new PartyMemberTools(_InstanceID, 9));
PartyMember.Add(10, new PartyMemberTools(_InstanceID, 10));
PartyMember.Add(11, new PartyMemberTools(_InstanceID, 11));
PartyMember.Add(12, new PartyMemberTools(_InstanceID, 12));
PartyMember.Add(13, new PartyMemberTools(_InstanceID, 13));
PartyMember.Add(14, new PartyMemberTools(_InstanceID, 14));
PartyMember.Add(15, new PartyMemberTools(_InstanceID, 15));
PartyMember.Add(16, new PartyMemberTools(_InstanceID, 16));
PartyMember.Add(17, new PartyMemberTools(_InstanceID, 17));
#endregion
}