//エラー検出
        public static void MakeCheckErrors(uint mapid, List <FELint.ErrorSt> errors)
        {
            List <uint> tracelist = new List <uint>();
            uint        wmapid    = MapSettingForm.GetWorldMapEventIDWhereMapID(mapid);

            if (wmapid == 0)
            {//存在しない
                return;
            }
            //FE7はINDEX
            uint         p;
            InputFormRef InputFormRef = N_Init(null);

            p = InputFormRef.IDToAddr(wmapid);
            if (p == U.NOT_FOUND)
            {
                errors.Add(new FELint.ErrorSt(FELint.Type.MAPSETTING_WORLDMAP, U.NOT_FOUND
                                              , R._("対応するワールドマップイベント({0})が存在しません。", U.To0xHexString(wmapid))));
            }
            else
            {
                uint event_addr = Program.ROM.u32(p);
                FELint.CheckEventPointer(event_addr, errors, FELint.Type.WORLDMAP_EVENT, p, true, tracelist);
            }
        }
示例#2
0
        public static uint GetEventByMapID(uint mapid)
        {
            uint wmapid = MapSettingForm.GetWorldMapEventIDWhereMapID(mapid);

            if (wmapid == 0)
            {//存在しない
                return(U.NOT_FOUND);
            }
            //FE6はPLISTが格納されている.
            return(MapPointerForm.PlistToOffsetAddr(MapPointerForm.PLIST_TYPE.WORLDMAP_FE6ONLY, wmapid));
        }
示例#3
0
        public static uint GetEventByMapID(uint mapid, bool isBefore)
        {
            //FE8はINDEX
            uint p;

            if (isBefore)
            {
                uint wmapid = MapSettingForm.GetWorldMapEventIDWhereMapID(mapid);
                if (wmapid == 0)
                {//存在しない
                    return(U.NOT_FOUND);
                }

                InputFormRef InputFormRef = N_Init(null);
                p = InputFormRef.IDToAddr(wmapid);
            }
            else
            {
                uint wmapid = mapid;
                if (wmapid == 0)
                {//存在しない
                    return(U.NOT_FOUND);
                }

                InputFormRef InputFormRef = Init(null);
                p = InputFormRef.IDToAddr(wmapid);
            }
            if (p == U.NOT_FOUND)
            {
                return(U.NOT_FOUND);
            }
            uint event_addr = Program.ROM.p32(p);

            if (!U.isSafetyOffset(event_addr))
            {
                return(U.NOT_FOUND);
            }
            return(event_addr);
        }
示例#4
0
        //エラー検出
        public static void MakeCheckErrors(uint mapid, List <FELint.ErrorSt> errors)
        {
            List <uint> tracelist = new List <uint>();
            uint        wmapid    = MapSettingForm.GetWorldMapEventIDWhereMapID(mapid);

            if (wmapid == 0)
            {//存在しない
                return;
            }
            //FE6はPLISTが格納されている.
            uint p;
            uint event_addr = MapPointerForm.PlistToOffsetAddrFast(MapPointerForm.PLIST_TYPE.WORLDMAP_FE6ONLY, wmapid, out p);

            if (event_addr == U.NOT_FOUND)
            {
                errors.Add(new FELint.ErrorSt(FELint.Type.MAPSETTING_WORLDMAP, U.NOT_FOUND
                                              , R._("対応するワールドマップイベント({0})が存在しません。", U.To0xHexString(wmapid))));
            }
            else
            {
                FELint.CheckEvent(event_addr, errors, FELint.Type.WORLDMAP_EVENT, p, true, tracelist);
            }
        }
示例#5
0
        //全データの取得
        public static void MakeAllDataLength(List <Address> list)
        {
            List <uint> tracelist = new List <uint>();
            uint        mapmax    = MapSettingForm.GetDataCount();

            for (uint mapid = 0; mapid < mapmax; mapid++)
            {
                uint wmapid = MapSettingForm.GetWorldMapEventIDWhereMapID(mapid);
                if (wmapid == 0)
                {//存在しない
                    continue;
                }
                //FE6はPLISTが格納されている.
                uint p;
                uint event_addr = MapPointerForm.PlistToOffsetAddrFast(MapPointerForm.PLIST_TYPE.WORLDMAP_FE6ONLY, wmapid, out p);
                if (event_addr == U.NOT_FOUND)
                {
                    continue;
                }

                string name = "WorldMapEvent " + U.To0xHexString(mapid) + " ";
                EventScriptForm.ScanScript(list, p, true, true, name, tracelist);
            }
        }