예제 #1
0
        internal static void ClearInstancedMaps()
        {
            int i;

            for (i = 1; i <= MAX_INSTANCED_MAPS; i++)
            {
                S_Resources.CacheResources(i + Constants.MAX_MAPS);
                InstancedMaps[i].OriginalMap = 0;
            }
        }
예제 #2
0
        internal static int CreateInstance(int mapNum)
        {
            int i;
            int slot;

            if (mapNum <= 0 || mapNum > Constants.MAX_MAPS)
            {
                return(-1);
            }

            slot = FindFreeInstanceMapSlot();

            if (slot == -1)
            {
                return(-1);
            }

            InstancedMaps[slot].OriginalMap = mapNum;

            // Copy Map Data
            modTypes.Map[slot + Constants.MAX_MAPS] = modTypes.Map[mapNum];

            // Copy Map Item Data

            for (i = 1; i <= Constants.MAX_MAP_ITEMS; i++)
            {
                modTypes.MapItem[slot + Constants.MAX_MAPS, i] = modTypes.MapItem[mapNum, i];
            }

            // Copy Map NPCs
            modTypes.MapNpc[slot + Constants.MAX_MAPS] = modTypes.MapNpc[mapNum];

            // Re-Cache Resource
            S_Resources.CacheResources(slot + Constants.MAX_MAPS);

            if (!(modTypes.Map[slot + Constants.MAX_MAPS].Name == Microsoft.VisualBasic.Constants.vbNullString))
            {
                modTypes.Map[slot + Constants.MAX_MAPS].Name = modTypes.Map[slot + Constants.MAX_MAPS].Name + INSTANCED_MAP_SUFFIX;
            }

            return(slot);
        }