Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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);
        }