using System.Collections;  
 | 
using System.Collections.Generic;  
 | 
using UnityEngine;  
 | 
using UnityEditor;  
 | 
using System.IO;  
 | 
using System;  
 | 
  
 | 
public class BuildExtersion  
 | 
{  
 | 
  
 | 
    public static void BuildMap()  
 | 
    {  
 | 
        try  
 | 
        {  
 | 
            var buildParameters = new BuildParameters();  
 | 
            if (!buildParameters.error)  
 | 
            {  
 | 
                var levelPattern = "001";  
 | 
                var versionsFilePath = Application.dataPath + Path.DirectorySeparatorChar + "Editor/VersionConfigs/Versions.txt";  
 | 
                var lines = File.ReadAllLines(versionsFilePath);  
 | 
                for (int i = 2; i < lines.Length; i++)  
 | 
                {  
 | 
                    var line = lines[i];  
 | 
                    var lineStrings = line.Split('\t');  
 | 
                    if (lineStrings[0] == buildParameters.publisher)  
 | 
                    {  
 | 
                        levelPattern = lineStrings[23];  
 | 
                        break;  
 | 
                    }  
 | 
                }  
 | 
  
 | 
                if (!string.IsNullOrEmpty(levelPattern))  
 | 
                {  
 | 
                    UpdateLevelSetting.SetCreateRoleLevel(levelPattern);  
 | 
                    AssetDatabase.Refresh();  
 | 
                }  
 | 
  
 | 
                UpdateLevelSetting.SetAllLevelAssetBundleName();  
 | 
                ExcuteBuildAsset("maps", buildParameters);  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                EditorApplication.Exit(1);  
 | 
            }  
 | 
        }  
 | 
        catch (Exception ex)  
 | 
        {  
 | 
            Debug.Log("打包地图失败");  
 | 
            Debug.Log(ex);  
 | 
            EditorApplication.Exit(1);  
 | 
        }  
 | 
    }  
 | 
  
 | 
    public static void BuildEffect()  
 | 
    {  
 | 
  
 | 
    }  
 | 
  
 | 
    public static void BuildMobEffectShader()  
 | 
    {  
 | 
        try  
 | 
        {  
 | 
            var buildParameters = new BuildParameters();  
 | 
            if (!buildParameters.error)  
 | 
            {  
 | 
                UpdateEffectPrefabSetting.SetAllEffectPrefabAssetBundleName();  
 | 
                UpdateMobSetting.SetAllMobAssetBundleName();  
 | 
                UpdateShaderSetting.SetAllShaderAssetBundleName();  
 | 
                ExcuteBuildAsset("mobeffectshader", buildParameters);  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                EditorApplication.Exit(1);  
 | 
            }  
 | 
        }  
 | 
        catch (Exception ex)  
 | 
        {  
 | 
            Debug.Log("打包NPC模型 特效 shader失败");  
 | 
            Debug.Log(ex);  
 | 
            EditorApplication.Exit(1);  
 | 
        }  
 | 
    }  
 | 
  
 | 
    public static void BuildConfig()  
 | 
    {  
 | 
        try  
 | 
        {  
 | 
            var buildParameters = new BuildParameters();  
 | 
            if (!buildParameters.error)  
 | 
            {  
 | 
                UpdateScriptableObjectsSetting.SetAllScriptableObjectAssetBundleName();  
 | 
                ExcuteBuildAsset("config", buildParameters);  
 | 
                TableTool.CopyConfigsToOutPutPath(StringUtility.Contact(buildParameters.GetWholeOutPutPath(), "/config"));  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                EditorApplication.Exit(1);  
 | 
            }  
 | 
        }  
 | 
        catch (Exception ex)  
 | 
        {  
 | 
            Debug.Log("打包配置表失败");  
 | 
            Debug.Log(ex);  
 | 
            EditorApplication.Exit(1);  
 | 
        }  
 | 
    }  
 | 
  
 | 
    public static void BuildAudio()  
 | 
    {  
 | 
        try  
 | 
        {  
 | 
            var buildParameters = new BuildParameters();  
 | 
            if (!buildParameters.error)  
 | 
            {  
 | 
                UpdateAudioSetting.SetAllAudioAssetBundleName();  
 | 
                ExcuteBuildAsset("audio", buildParameters);  
 | 
  
 | 
               // UpdateVideoSetting.SetAllVideoAssetBundleName();  
 | 
               // ExcuteBuildAsset("video", buildParameters);  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                EditorApplication.Exit(1);  
 | 
            }  
 | 
        }  
 | 
        catch (Exception ex)  
 | 
        {  
 | 
            Debug.Log("打包音效失败");  
 | 
            Debug.Log(ex);  
 | 
            EditorApplication.Exit(1);  
 | 
        }  
 | 
    }  
 | 
  
 | 
    public static void BuildShader()  
 | 
    {  
 | 
  
 | 
    }  
 | 
  
 | 
    public static void BuildUI()  
 | 
    {  
 | 
        try  
 | 
        {  
 | 
            var buildParameters = new BuildParameters();  
 | 
            if (!buildParameters.error)  
 | 
            {  
 | 
                AssetSource.allFromEditor = true;  
 | 
                //CheckFontSwitch.CheckAndReplaceFontSwitch();  
 | 
                UpdateUIPrefabSetting.SetAllUIPrefabAssetBundleName();  
 | 
                UpdateUIWindowSetting.SetAllUIWindowAssetBundleName();  
 | 
  
 | 
                var rechargePattern = 1;  
 | 
                var versionsFilePath = Application.dataPath + Path.DirectorySeparatorChar + "Editor/VersionConfigs/Versions.txt";  
 | 
                var lines = File.ReadAllLines(versionsFilePath);  
 | 
                for (int i = 2; i < lines.Length; i++)  
 | 
                {  
 | 
                    var line = lines[i];  
 | 
                    var lineStrings = line.Split('\t');  
 | 
                    if (lineStrings[0] == buildParameters.publisher)  
 | 
                    {  
 | 
                        rechargePattern = int.Parse(lineStrings[22]);  
 | 
                        break;  
 | 
                    }  
 | 
                }  
 | 
  
 | 
                UpdateSpriteSetting.SetRechargeSkin(rechargePattern);  
 | 
                AssetDatabase.Refresh();  
 | 
                UpdateSpritePackingSetting.UpdateAllSpritePackingSetting();  
 | 
                UpdateSpriteSetting.SetAllSpriteAssetBundleName();  
 | 
  
 | 
                ExcuteBuildAsset("ui", buildParameters);  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                EditorApplication.Exit(1);  
 | 
            }  
 | 
        }  
 | 
        catch (Exception ex)  
 | 
        {  
 | 
            Debug.Log("打包ui失败");  
 | 
            Debug.Log(ex);  
 | 
            EditorApplication.Exit(1);  
 | 
        }  
 | 
    }  
 | 
  
 | 
    public static void BuildBuiltIn()  
 | 
    {  
 | 
        try  
 | 
        {  
 | 
            var buildParameters = new BuildParameters();  
 | 
            if (!buildParameters.error)  
 | 
            {  
 | 
                var publisher = buildParameters.publisher;  
 | 
                BuiltInResourceSetting.SetLaunchBackGround(publisher, buildParameters.buildTarget);  
 | 
                BuiltInResourceSetting.SetLoginBackGround(publisher, buildParameters.buildTarget);  
 | 
                BuiltInResourceSetting.SetLoginLogo(publisher, buildParameters.buildTarget);  
 | 
                UpdateBuiltInSetting.SetBuiltinAssetBundleName();  
 | 
                ExcuteBuildAsset("builtin", buildParameters);  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                EditorApplication.Exit(1);  
 | 
            }  
 | 
        }  
 | 
        catch (Exception ex)  
 | 
        {  
 | 
            Debug.Log("打包builtin失败");  
 | 
            Debug.Log(ex);  
 | 
            EditorApplication.Exit(1);  
 | 
        }  
 | 
    }  
 | 
  
 | 
    public static void MakeAssetVersionFile()  
 | 
    {  
 | 
        try  
 | 
        {  
 | 
            var buildParameters = new BuildParameters();  
 | 
            if (!buildParameters.error)  
 | 
            {  
 | 
                var fileInfoes = new List<FileInfo>();  
 | 
                FileExtersion.GetAllDirectoryFileInfos(buildParameters.GetWholeOutPutPath(), fileInfoes);  
 | 
                AssetsVersionMaker.WriteAssetsVersionFile(buildParameters.GetWholeOutPutPath(), fileInfoes);  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                EditorApplication.Exit(1);  
 | 
            }  
 | 
        }  
 | 
        catch (Exception ex)  
 | 
        {  
 | 
            Debug.Log("生成AssetVersion失败");  
 | 
            Debug.Log(ex);  
 | 
            EditorApplication.Exit(1);  
 | 
        }  
 | 
    }  
 | 
  
 | 
    private static void ExcuteBuildAsset(string category, BuildParameters @params)  
 | 
    {  
 | 
        var opt = BuildAssetBundleOptions.None;  
 | 
        opt |= BuildAssetBundleOptions.ChunkBasedCompression;  
 | 
        opt |= BuildAssetBundleOptions.DeterministicAssetBundle;  
 | 
  
 | 
        AssetBundleBuildExtersion.Build(@params.GetWholeOutPutPath(), category, opt, @params.buildTarget);  
 | 
    }  
 | 
  
 | 
    class BuildParameters  
 | 
    {  
 | 
        public bool error = false;  
 | 
        public string outputPath;  
 | 
        public string publisher;  
 | 
        public BuildTarget buildTarget;  
 | 
  
 | 
        public BuildParameters()  
 | 
        {  
 | 
            try  
 | 
            {  
 | 
                var args = Environment.GetCommandLineArgs();  
 | 
                for (int i = 0; i < args.Length; i++)  
 | 
                {  
 | 
                    var arg = args[i];  
 | 
                    if (arg.ToLower() == "-outputpath")  
 | 
                    {  
 | 
                        outputPath = args[i + 1];  
 | 
                    }  
 | 
                    else if (arg.ToLower() == "-buildtarget")  
 | 
                    {  
 | 
                        switch (args[i + 1].ToLower())  
 | 
                        {  
 | 
                            case "android":  
 | 
                                buildTarget = BuildTarget.Android;  
 | 
                                break;  
 | 
                            case "ios":  
 | 
                                buildTarget = BuildTarget.iOS;  
 | 
                                break;  
 | 
                            case "standalone":  
 | 
                                buildTarget = BuildTarget.StandaloneWindows;  
 | 
                                break;  
 | 
                        }  
 | 
                    }  
 | 
                    else if (arg.ToLower() == "-publisher")  
 | 
                    {  
 | 
                        publisher = args[i + 1];  
 | 
                    }  
 | 
                }  
 | 
  
 | 
                error = false;  
 | 
            }  
 | 
            catch (Exception ex)  
 | 
            {  
 | 
                error = true;  
 | 
                Debug.LogException(ex);  
 | 
                EditorApplication.Exit(1);  
 | 
            }  
 | 
        }  
 | 
  
 | 
        public string GetWholeOutPutPath()  
 | 
        {  
 | 
            switch (buildTarget)  
 | 
            {  
 | 
                case BuildTarget.Android:  
 | 
                    return StringUtility.Contact(outputPath, "/android");  
 | 
                case BuildTarget.iOS:  
 | 
                    return StringUtility.Contact(outputPath, "/ios");  
 | 
                case BuildTarget.StandaloneWindows:  
 | 
                    return StringUtility.Contact(outputPath, "/standalone");  
 | 
                default:  
 | 
                    return string.Empty;  
 | 
            }  
 | 
        }  
 | 
    }  
 | 
  
 | 
}  
 |