Exemplo n.º 1
0
        //Engine file constructor
        public Level(string enginePath)
        {
            path = Path.GetDirectoryName(enginePath);

            // Engine elements
            using (EngineParser engineParser = new EngineParser(enginePath))
            {
                game = engineParser.DetectGame();

                //REMOVE THESE ASAP!!!!!111
                renderDefBytes   = engineParser.GetRenderDefBytes();
                collBytes        = engineParser.GetCollisionBytes();
                billboardBytes   = engineParser.GetBillboardBytes();
                soundConfigBytes = engineParser.GetSoundConfigBytes();

                Console.WriteLine("Parsing skybox...");
                skybox = engineParser.GetSkyboxModel();
                Console.WriteLine("Success");

                Console.WriteLine("Parsing moby models...");
                mobyModels = engineParser.GetMobyModels();
                Console.WriteLine("Added " + mobyModels.Count + " moby models");

                Console.WriteLine("Parsing tie models...");
                tieModels = engineParser.GetTieModels();
                Console.WriteLine("Added " + tieModels.Count + " tie models");

                Console.WriteLine("Parsing shrub models...");
                shrubModels = engineParser.GetShrubModels();
                Console.WriteLine("Added " + shrubModels.Count + " shrub models");

                Console.WriteLine("Parsing weapons...");
                weaponModels = engineParser.GetWeapons();
                Console.WriteLine("Added " + weaponModels.Count + " weapons");

                Console.WriteLine("Parsing textures...");
                textures = engineParser.GetTextures();
                Console.WriteLine("Added " + textures.Count + " textures");

                Console.WriteLine("Parsing ties...");
                ties = engineParser.GetTies(tieModels);
                Console.WriteLine("Added " + ties.Count + " ties");

                Console.WriteLine("Parsing Shrubs...");
                shrubs = engineParser.GetShrubs(shrubModels);
                Console.WriteLine("Added " + shrubs.Count + " Shrubs");

                Console.WriteLine("Parsing Lights...");
                lights = engineParser.GetLights();
                Console.WriteLine("Added " + lights.Count + " lights");

                Console.WriteLine("Parsing terrain elements...");
                terrains = engineParser.GetTerrainModels();
                Console.WriteLine("Added " + terrains?.Count + " terrain elements");

                Console.WriteLine("Parsing player animations...");
                playerAnimations = engineParser.GetPlayerAnimations((MobyModel)mobyModels[0]);
                Console.WriteLine("Added " + playerAnimations?.Count + " player animations");

                uiElements = engineParser.GetUiElements();
                Console.WriteLine("Added " + uiElements?.Count + " ui elements");

                lightConfig        = engineParser.GetLightConfig();
                textureConfigMenus = engineParser.GetTextureConfigMenu();
                collisionModel     = engineParser.GetCollisionModel();
            }


            // Gameplay elements
            using (GameplayParser gameplayParser = new GameplayParser(game, path + @"/gameplay_ntsc"))
            {
                Console.WriteLine("Parsing Level variables...");
                levelVariables = gameplayParser.GetLevelVariables();

                Console.WriteLine("Parsing mobs...");
                mobs = gameplayParser.GetMobies(game, mobyModels);
                Console.WriteLine("Added " + mobs?.Count + " mobs");

                Console.WriteLine("Parsing splines...");
                splines = gameplayParser.GetSplines();
                //Console.WriteLine("Added " + splines.Count + " splines");

                Console.WriteLine("Parsing languages...");
                english = gameplayParser.GetEnglish();
                lang2   = gameplayParser.GetLang2();
                french  = gameplayParser.GetFrench();
                german  = gameplayParser.GetGerman();
                spanish = gameplayParser.GetSpanish();
                italian = gameplayParser.GetItalian();
                lang7   = gameplayParser.GetLang7();
                lang8   = gameplayParser.GetLang8();

                Console.WriteLine("Parsing other gameplay assets...");
                unk6  = gameplayParser.GetUnk6();
                unk7  = gameplayParser.GetUnk7();
                unk13 = gameplayParser.GetUnk13();
                unk17 = gameplayParser.GetUnk17();
                unk14 = gameplayParser.GetUnk14();

                tieData   = gameplayParser.GetTieData(ties.Count);
                shrubData = gameplayParser.getShrubData(shrubs.Count);

                type04s = gameplayParser.GetType04s();
                type0Cs = gameplayParser.GetType0Cs();
                type64s = gameplayParser.GetType64s();
                type68s = gameplayParser.GetType68s();
                type7Cs = gameplayParser.GetType7Cs();
                type80s = gameplayParser.GetType80();
                type88s = gameplayParser.GetType88s();
                type50s = gameplayParser.GetType50s();
                type5Cs = gameplayParser.GetType5Cs();

                pVars       = gameplayParser.GetPvars(mobs);
                cuboids     = gameplayParser.GetCuboids();
                gameCameras = gameplayParser.GetGameCameras();

                mobyIds       = gameplayParser.GetMobyIds();
                tieIds        = gameplayParser.GetTieIds();
                shrubIds      = gameplayParser.GetShrubIds();
                occlusionData = gameplayParser.GetOcclusionData();
            }


            VramParser vramParser = new VramParser(path + @"/vram.ps3");

            if (!vramParser.valid)
            {
                valid = false;
                return;
            }

            vramParser.GetTextures(textures);
            vramParser.Close();


            Console.WriteLine("Level parsing done");
            valid = true;
        }