Exemple #1
0
        /// <summary>
        /// 加载模组包
        /// </summary>
        /// <param name="packagePath">模组包路径</param>
        /// <param name="initialize">是否立即初始化模组包</param>
        /// <returns>返回模组包UID</returns>
        public GameMod LoadGameMod(string packagePath, bool initialize = true)
        {
            GameMod mod = FindGameModByPath(packagePath);

            if (mod != null)
            {
                GameLogger.Warning(TAG, "Mod \"{0}\" already registered, skip", packagePath);
                return(mod);
            }

            //路径处理
            if (StringUtils.IsUrl(packagePath))
            {
                GameLogger.Error(TAG, "不支持从 URL 加载模组包 \"{0}\" ,请将其先下载至 streamingAssetsPath 后再加载。", packagePath);
                return(null);
            }
            //处理路径至mod文件夹路径
            if (!File.Exists(packagePath) && !GamePathManager.IsAbsolutePath(packagePath))
            {
                packagePath = GamePathManager.GetResRealPath("mod", packagePath);
            }
            if (!File.Exists(packagePath))
            {
                GameLogger.Error(TAG, "Mod file \"{0}\" not exists", packagePath);
                return(null);
            }

            mod = new GameMod(packagePath, this);
            if (!mod.Init())
            {
                return(null);
            }
            if (!gameMods.Contains(mod))
            {
                gameMods.Add(mod);
            }

            GameManager.GameMediator.DispatchGlobalEvent(GameEventNames.EVENT_MOD_REGISTERED, "*", mod.PackageName, mod);
            GameLogger.Log(TAG, "Register mod \"{0}\"", packagePath);

            if (initialize)
            {
                mod.Load(this);
            }

            return(mod);
        }
Exemple #2
0
        private GameActionCallResult OnCallLoadLevel(params object[] param)
        {
            if (levelLoadStatus == LevelLoadStatus.Loading || levelLoadStatus == LevelLoadStatus.UnLoading)
            {
                GameErrorManager.LastError = GameError.InProgress;
                return(GameActionCallResult.CreateActionCallResult(false));
            }
            if (levelLoadStatus != LevelLoadStatus.NotLoad)
            {
                GameErrorManager.LastError = GameError.AlredayLoaded;
                return(GameActionCallResult.CreateActionCallResult(false));
            }

            string pathOrName = (string)param[0];
            string levelPath  = "";
            int    number;

            if (int.TryParse(pathOrName, out number))
            {
                if (number < 15)
                {
                    levelPath = GamePathManager.GetResRealPath("core", "levels/Level" + number + ".ballance");
                }
            }
            else
            {
                if (GamePathManager.IsAbsolutePath(pathOrName))
                {
                    levelPath = pathOrName;
                }
                else
                {
                    levelPath = GamePathManager.GetResRealPath("level", pathOrName);
                }
            }

            EnterLoader();
            StartCoroutine(LoadLevel(levelPath));
            return(GameActionCallResult.CreateActionCallResult(true));
        }