private ObservableCollection <GameEntity> LoadCharacterNames(CMS_File cmsFile, ERS_File ersFile) { ObservableCollection <GameEntity> entities = new ObservableCollection <GameEntity>(); MSG_File characterMsgFile = MSG_File.Load(fileIO.GetFileFromGame(CHARACTER_MSG_PATH)); foreach (var ersEntry in ersFile.GetSubentryList(2)) { CMS_Entry cmsEntry = cmsFile.GetEntry(ersEntry.Index); string name = null; string eepkPath = string.Format("vfx/{0}", ersEntry.FILE_PATH); if (cmsEntry != null) { name = characterMsgFile.GetCharacterName(cmsEntry.Str_04); if (string.IsNullOrWhiteSpace(name)) { name = String.Format("??? ({0} / {1})", cmsEntry.Index, cmsEntry.Str_04); } } entities.Add(new GameEntity() { Name = name, EepkPath = eepkPath }); } return(entities); }
private int GetCharaId(string shortName) { CMS_File cmsFile = (CMS_File)install.GetParsedFile <CMS_File>(CMS_PATH); foreach (var chara in cmsFile.CMS_Entries) { if (chara.Str_04.ToLower() == shortName) { return(int.Parse(chara.Index)); } } return(NullTokenInt); //Chara wasn't found, so defaulting to 0 }
public LoadFromGameHelper() { CUS_File cusFile = (CUS_File)Xenoverse2.Instance.GetParsedFileFromGame(CUS_PATH); CMS_File cmsFile = (CMS_File)Xenoverse2.Instance.GetParsedFileFromGame(CMS_PATH); ERS_File ersFile = (ERS_File)Xenoverse2.Instance.GetParsedFileFromGame(ERS_PATH); characters = LoadCharacterNames(cmsFile, ersFile); superSkills = LoadSkillNames(CUS_File.SkillType.Super, cusFile, cmsFile); ultimateSkills = LoadSkillNames(CUS_File.SkillType.Ultimate, cusFile, cmsFile); evasiveSkills = LoadSkillNames(CUS_File.SkillType.Evasive, cusFile, cmsFile); blastSkills = LoadSkillNames(CUS_File.SkillType.Blast, cusFile, cmsFile); awokenSkills = LoadSkillNames(CUS_File.SkillType.Awoken, cusFile, cmsFile); cmn = LoadCmnNames(ersFile); demo = LoadDemoNames(ersFile); }
public GameInterface(Xv2FileIO _fileIO) { fileIO = _fileIO; CUS_File cusFile = CUS_File.Load(fileIO.GetFileFromGame(CUS_PATH)); CMS_File cmsFile = CMS_File.Load(fileIO.GetFileFromGame(CMS_PATH)); ERS_File ersFile = ERS_File.Load(fileIO.GetFileFromGame(ERS_PATH)); characters = LoadCharacterNames(cmsFile, ersFile); superSkills = LoadSkillNames(CUS_File.SkillType.Super, cusFile, cmsFile); ultimateSkills = LoadSkillNames(CUS_File.SkillType.Ultimate, cusFile, cmsFile); evasiveSkills = LoadSkillNames(CUS_File.SkillType.Evasive, cusFile, cmsFile); blastSkills = LoadSkillNames(CUS_File.SkillType.Blast, cusFile, cmsFile); awokenSkills = LoadSkillNames(CUS_File.SkillType.Awoken, cusFile, cmsFile); cmn = LoadCmnNames(ersFile); demo = LoadDemoNames(ersFile); }
private void Uninstall_CMS(string path, _File file) { try { CMS_File binaryFile = (CMS_File)GetParsedFile <CMS_File>(path, false); CMS_File cpkBinFile = (CMS_File)GetParsedFile <CMS_File>(path, true); Section section = file.GetSection(Sections.CMS_Entries); if (section != null) { UninstallEntries(binaryFile.CMS_Entries, (cpkBinFile != null) ? cpkBinFile.CMS_Entries : null, section.IDs); } } catch (Exception ex) { string error = string.Format("Failed at {0} uninstall phase ({1}).", ErrorCode.CMS, path); throw new Exception(error, ex); } }
private ObservableCollection <GameEntity> LoadSkillNames(CUS_File.SkillType skillType, CUS_File cusFile, CMS_File cmsFile) { ObservableCollection <GameEntity> entities = new ObservableCollection <GameEntity>(); MSG_File nameMsgFile = (skillType != CUS_File.SkillType.Blast) ? MSG_File.Load(fileIO.GetFileFromGame(string.Format("{0}en.msg", cusFile.GetNameMsgPath(skillType)))) : null; string skillDir; List <Skill> skills; switch (skillType) { case CUS_File.SkillType.Super: skills = cusFile.SuperSkills; skillDir = "skill/SPA"; break; case CUS_File.SkillType.Ultimate: skills = cusFile.UltimateSkills; skillDir = "skill/ULT"; break; case CUS_File.SkillType.Evasive: skills = cusFile.EvasiveSkills; skillDir = "skill/ESC"; break; case CUS_File.SkillType.Blast: skills = cusFile.BlastSkills; skillDir = "skill/BLT"; break; case CUS_File.SkillType.Awoken: skills = cusFile.AwokenSkills; skillDir = "skill/MET"; break; default: throw new InvalidDataException("LoadSkillNames: unknown skillType = " + skillType); } foreach (var skill in skills) { if (skill.I_14.HasFlag(Skill.FilesLoadedFlags.Eepk)) { string eepkPath; if (skill.Str_28 == "NULL") { //Get skill folder and files name int skillID2 = int.Parse(skill.I_10); int cmsId = (int)Math.Floor(skillID2 / 10f); string charaShortName = cmsFile.GetEntry(cmsId.ToString()).Str_04; //If chara ID belongs to a CAC, the skill is tagged as CMN instead. if (cmsId >= 100 && cmsId < 109) { charaShortName = "CMN"; } string folderName = String.Format("{0}_{1}_{2}", skillID2.ToString("D3"), charaShortName, skill.Str_00); eepkPath = String.Format("{0}/{1}/{1}.eepk", skillDir, folderName); } else { //This skill uses another skills EEPK, so we dont have to calculate its folder name eepkPath = String.Format("skill/{0}/{1}.eepk", skill.Str_28, Path.GetFileName(skill.Str_28)); } //Get skill name string name = null; if (skillType != CUS_File.SkillType.Blast) { name = nameMsgFile.GetSkillName(int.Parse(skill.I_10), skillType); } if (string.IsNullOrWhiteSpace(name)) { name = string.Format("??? ({0} / {1})", skill.I_10, skill.Str_00); } entities.Add(new GameEntity() { Name = name, EepkPath = eepkPath }); } } return(entities); }