示例#1
0
        //刷新当前地图全部资源格子
        public static void RefreshResourcesIcon()
        {
            int bianchang = Int32.Parse(DateFile.instance.partWorldMapDate[DateFile.instance.mianPartId][98]);
            int placeNum  = bianchang * bianchang;

            for (int j = 0; j < placeNum; j++)
            {
                WorldMapPlace worldMapPlace = WorldMapSystem.instance.worldMapPlaces[j];
                if (DateFile.instance.HaveShow(DateFile.instance.mianPartId, j) > 0)
                {
                    if (int.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, j, 89)) != 6)
                    {
                        worldMapPlace.resourceIconHolder.gameObject.SetActive(true);
                        int[] placeResource    = DateFile.instance.GetPlaceResource(DateFile.instance.mianPartId, j);
                        int[] placeResourceMax = new int[]
                        {
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, j, 1)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, j, 2)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, j, 3)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, j, 4)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, j, 5)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, j, 6)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, j, 7)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, j, 8))
                        };
                        int[] compare;
                        if (settings.ShowMax)
                        {
                            compare = placeResourceMax;
                        }
                        else
                        {
                            compare = placeResource;
                        }
                        for (int i = 0; i < 6; i++)
                        {
                            if (compare[i] >= settings.yuZhi)
                            {
                                worldMapPlace.resourceIcon[i].SetActive(true);
                            }
                            else
                            {
                                worldMapPlace.resourceIcon[i].SetActive(false);
                            }
                        }
                    }
                    else
                    {
                        worldMapPlace.resourceIconHolder.gameObject.SetActive(false);
                    }
                }
                else
                {
                    worldMapPlace.resourceIconHolder.gameObject.SetActive(false);
                }
            }
        }
        //设置格子图标
        public static void SetResourcesIcon(int placeId)
        {
            WorldMapPlace worldMapPlace = WorldMapSystem.instance.worldMapPlaces[placeId];

            if (DateFile.instance.HaveShow(DateFile.instance.mianPartId, placeId) > 0)
            {
                if (int.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 89)) != 6)
                {
                    worldMapPlace.resourceIconHolder.gameObject.SetActive(true);
                    int[] placeResource    = DateFile.instance.GetPlaceResource(DateFile.instance.mianPartId, placeId);
                    int[] placeResourceMax = new int[]
                    {
                        Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 1)),
                        Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 2)),
                        Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 3)),
                        Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 4)),
                        Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 5)),
                        Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 6)),
                    };
                    int[] compare;
                    if (settings.ShowMax)
                    {
                        compare = placeResourceMax;
                    }
                    else
                    {
                        compare = placeResource;
                    }
                    if (!Main.enabled)
                    {
                        compare = placeResource;
                    }
                    for (int i = 0; i < 6; i++)
                    {
                        int yuZhi = Main.enabled ? settings.yuZhi : 100;
                        if (compare[i] >= yuZhi && settings.yuZhiToggle[i])
                        {
                            worldMapPlace.resourceIcon[i].SetActive(true);
                        }
                        else
                        {
                            worldMapPlace.resourceIcon[i].SetActive(false);
                        }
                    }
                }
                else
                {
                    worldMapPlace.resourceIconHolder.gameObject.SetActive(false);
                }
            }
            else
            {
                worldMapPlace.resourceIconHolder.gameObject.SetActive(false);
            }
        }
示例#3
0
            public static void Postfix(WorldMapPlace __instance)
            {
                int placeId = Int32.Parse(GetInstanceField(typeof(WorldMapPlace), __instance, "placeId").ToString());

                if (DateFile.instance.HaveShow(DateFile.instance.mianPartId, placeId) > 0)
                {
                    if (int.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 89)) != 6)
                    {
                        __instance.resourceIconHolder.gameObject.SetActive(true);
                        int[] placeResource    = DateFile.instance.GetPlaceResource(DateFile.instance.mianPartId, placeId);
                        int[] placeResourceMax = new int[]
                        {
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 1)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 2)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 3)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 4)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 5)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 6)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 7)),
                            Int32.Parse(DateFile.instance.GetNewMapDate(DateFile.instance.mianPartId, placeId, 8))
                        };
                        int[] compare;
                        if (settings.ShowMax)
                        {
                            compare = placeResourceMax;
                        }
                        else
                        {
                            compare = placeResource;
                        }
                        for (int i = 0; i < 6; i++)
                        {
                            if (compare[i] >= settings.yuZhi)
                            {
                                __instance.resourceIcon[i].SetActive(true);
                            }
                            else
                            {
                                __instance.resourceIcon[i].SetActive(false);
                            }
                        }
                    }
                    else
                    {
                        __instance.resourceIconHolder.gameObject.SetActive(false);
                    }
                }
                else
                {
                    __instance.resourceIconHolder.gameObject.SetActive(false);
                }
            }
示例#4
0
        static void Postfix(WorldMapPlace __instance, int ___placeId)
        {
            if (!Main.enabled || !Main.settings.showStroyLevel)
            {
                return;
            }
            if (__instance.storyTime.text == "99")
            {
                return;
            }
            DateFile df     = DateFile.instance;
            int      pid    = ___placeId;
            int      partId = df.mianPartId;

            if (df.HaveShow(partId, pid) <= 0)
            {
                return;
            }
            if (!DateFile.instance.HaveStory(partId, pid))
            {
                return;
            }
            if (!df.worldMapState[partId].ContainsKey(pid))
            {
                return;
            }

            int    storyId = df.worldMapState[partId][pid][0];
            string level   = df.baseStoryDate[storyId][3];

            if (int.Parse(level) < 1)
            {
                return;
            }

            int storyTime = df.worldMapState[partId][pid][1];

            if (storyTime > 0)
            {
                __instance.storyTime.text = "难度:" + level + "时间:" + storyTime;
                __instance.storyTime.text = string.Format("难度:{0}时间{1}", level, storyTime);
            }
            else
            {
                __instance.storyTime.text = "难度:" + level;
            }
        }
示例#5
0
        static void Postfix(WorldMapPlace __instance, int ___placeId)
        {
            if (!Main.enabled ||
                !Main.settings.showStroyLevel ||
                __instance.storyTime.text == "99" ||
                DateFile.instance.HaveShow(DateFile.instance.mianPartId, ___placeId) < 1 ||
                !DateFile.instance.HaveStory(DateFile.instance.mianPartId, ___placeId) ||
                !DateFile.instance.worldMapState[DateFile.instance.mianPartId].ContainsKey(___placeId))
            {
                return;
            }
            int    storyId = DateFile.instance.worldMapState[DateFile.instance.mianPartId][___placeId][0];
            string level   = DateFile.instance.baseStoryDate[storyId][3];

            if (int.Parse(level) < 1)
            {
                return;
            }
            int storyTime = DateFile.instance.worldMapState[DateFile.instance.mianPartId][___placeId][1];

            __instance.storyTime.text = storyTime > 0 ? string.Format("难度:{0}时间{1}", level, storyTime) : $"难度:{level}";
        }
示例#6
0
        public static void Postfix(WorldMapPlace __instance, int ___placeId)
        {
            if (!Main.enabled ||
                !Main.settings.showStroyLevel ||
                __instance.storyTime.text == "99" ||
                DateFile.instance.HaveShow(DateFile.instance.mianPartId, ___placeId) < 1 ||
                !DateFile.instance.HaveStory(DateFile.instance.mianPartId, ___placeId) ||
                !DateFile.instance.worldMapState[DateFile.instance.mianPartId].TryGetValue(___placeId, out var storyInfo))
            {
                return;
            }

            int    storyId = storyInfo[0];
            string level   = DateFile.instance.baseStoryDate[storyId][3];

            if (int.Parse(level) < 1)
            {
                return;
            }
            int storyTime = storyInfo[1];

            __instance.storyTime.text = storyTime > 0 ? $"难度:{level}时间{storyTime}" : $"难度:{level}";
        }
示例#7
0
        /*
         * //声明 AutoPatchHandlers 字段(把所有要在游戏启动时加载 PatchHandler 的全部放进去)
         * //注意区分 AutoPatchHandlers 和 PatchHandlers,以及代码顺序最好别弄错,毕竟从上往下执行的
         * /// <summary>AutoPatchHandlers自动补丁仓库</summary>
         * public static readonly Dictionary<string, PatchHandler> AutoPatchHandlers = new Dictionary<string, PatchHandler>
         * {
         *  //在这里加入,如下示例
         *  //(?注意最好不要在 AutoPatchHandlers仓库 和 后续的 PatchHandlers仓库 中重复加入同一个PatchHandler?)这点不确定,俺还没研究透、俺太彩了
         *
         *  ////对应【string, PatchHandler】
         *  //{ "显示丰富资源", new PatchHandler()
         *  //    {
         *  //        TargetType = typeof(WorldMapPlace),
         *  //        TargetMethonName = "UpdatePaceResource",
         *  //        Postfix = AccessTools.Method(PatchesType,"UpdatePaceResource_Postfix")
         *  //    }
         *  //},
         *
         *  //新的PatchHandler可以继续往下加
         *  //GOD代码示例里部分是new PatchHandler,部分是new PatchHandler()。后者是允许传参的?俺新手不是很懂代码
         *
         * };
         *
         * /// <summary>
         * /// 初始化多线程加载补丁
         * /// </summary>
         * public static void Init()
         * {
         *  Main.Logger.LogInfo($"多线程 Patch 开始");
         *  //遍历 AutoPatchHandlers 自动补丁仓库内的所有条目
         *  foreach (var patch in AutoPatchHandlers)
         *  {
         *      //尝试
         *      try
         *      {
         *          Main.Logger.LogInfo($"Patch { patch.Key }");
         *          //调用“条目的值”的Patch方法(以harmony为阐述)
         *          patch.Value.Patch(harmony);
         *      }
         *      //异常捕获(当上方执行出错时,输出错误原因,而不是MOD直接崩溃)
         *      catch (Exception ex)
         *      {
         *          Main.Logger.LogError($"{ patch.Key } Patch Failed");
         *          Main.Logger.LogError(ex);
         *      }
         *  }
         *
         *  //无参PatchAll方法会自动搜索本程序集内的所有HarmonyPatch补丁(当然要按照它所提供的指定格式声明才行)
         *  harmony.PatchAll();
         *  Main.Logger.LogInfo($"Patch 完成");
         * }
         */
        #endregion

        #region 采用 YanLib 中 PatchHandler 的新式补丁(Patch)方式,支持Unpatch(需要YanCore前置插件)

        //接收游戏本身在UpdatePaceResource时使用的的placeId,并传导调用本MOD的资源图标刷新方式去再刷新一次
        //以及这个“Pace”是游戏本身的茄子代码、就这样写错的,所以这边也只能跟着用
        //这其实是一个对游戏中WorldMapPlace类下的UpdatePaceResource
        /// <summary></summary>
        /// <param name="__instance"></param>
        public static void UpdatePaceResource_Postfix(WorldMapPlace __instance)
        {
            int placeId = Int32.Parse(Main.GetInstanceField(typeof(WorldMapPlace), __instance, "placeId").ToString());

            Main.SetResourcesIcon(placeId);
        }