Exemplo n.º 1
0
        public static void LoadMapFromPacket(string[] parse)
        {
            string mapID = parse[2];

            Maps.Map map = new Client.Logic.Maps.Map(mapID);

            int n = 2;

            //if (parse[13].ToInt() < 19 || parse[14].ToInt() < 14) {
            //    parse[13] = "19";
            //    parse[14] = "14";
            //}

            map.Tile          = new Client.Logic.Maps.Tile[parse[13].ToInt() + 1, parse[14].ToInt() + 1];
            map.OriginalTiles = new Tile[parse[13].ToInt() + 1, parse[14].ToInt() + 1];

            Enums.MapID mapType = (Enums.MapID)(parse[1].ToInt());

            map.Name             = parse[n + 1];
            map.Revision         = parse[n + 2].ToInt();
            map.Moral            = (Enums.MapMoral)parse[n + 3].ToInt();
            map.Up               = parse[n + 4].ToInt();
            map.Down             = parse[n + 5].ToInt();
            map.Left             = parse[n + 6].ToInt();
            map.Right            = parse[n + 7].ToInt();
            map.Music            = parse[n + 8];
            map.Indoors          = parse[n + 9].ToBool();
            map.Weather          = (Enums.Weather)parse[n + 10].ToInt();
            map.MaxX             = parse[n + 11].ToInt();
            map.MaxY             = parse[n + 12].ToInt();
            map.Darkness         = parse[n + 13].ToInt();
            map.HungerEnabled    = parse[n + 14].ToBool();
            map.RecruitEnabled   = parse[n + 15].ToBool();
            map.ExpEnabled       = parse[n + 16].ToBool();
            map.TimeLimit        = parse[n + 17].ToInt();
            map.MinNpcs          = parse[n + 18].ToInt();
            map.MaxNpcs          = parse[n + 19].ToInt();
            map.NpcSpawnTime     = parse[n + 20].ToInt();
            map.Cacheable        = parse[n + 21].ToBool();
            map.ImpersonatingMap = parse[n + 22];

            n += 23;

            for (int y = 0; y <= map.MaxY; y++)
            {
                for (int x = 0; x <= map.MaxX; x++)
                {
                    Maps.Tile tile = new Client.Logic.Maps.Tile();
                    tile.Ground             = parse[n].ToInt();
                    tile.GroundAnim         = parse[n + 1].ToInt();
                    tile.Mask               = parse[n + 2].ToInt();
                    tile.Anim               = parse[n + 3].ToInt();
                    tile.Mask2              = parse[n + 4].ToInt();
                    tile.M2Anim             = parse[n + 5].ToInt();
                    tile.Fringe             = parse[n + 6].ToInt();
                    tile.FAnim              = parse[n + 7].ToInt();
                    tile.Fringe2            = parse[n + 8].ToInt();
                    tile.F2Anim             = parse[n + 9].ToInt();
                    tile.Type               = (Enums.TileType)parse[n + 10].ToInt();
                    tile.Data1              = parse[n + 11].ToInt();
                    tile.Data2              = parse[n + 12].ToInt();
                    tile.Data3              = parse[n + 13].ToInt();
                    tile.String1            = parse[n + 14];
                    tile.String2            = parse[n + 15];
                    tile.String3            = parse[n + 16];
                    tile.RDungeonMapValue   = parse[n + 17].ToInt();
                    tile.GroundSet          = parse[n + 18].ToInt();
                    tile.GroundAnimSet      = parse[n + 19].ToInt();
                    tile.MaskSet            = parse[n + 20].ToInt();
                    tile.AnimSet            = parse[n + 21].ToInt();
                    tile.Mask2Set           = parse[n + 22].ToInt();
                    tile.M2AnimSet          = parse[n + 23].ToInt();
                    tile.FringeSet          = parse[n + 24].ToInt();
                    tile.FAnimSet           = parse[n + 25].ToInt();
                    tile.Fringe2Set         = parse[n + 26].ToInt();
                    tile.F2AnimSet          = parse[n + 27].ToInt();
                    map.Tile[x, y]          = tile;
                    map.OriginalTiles[x, y] = (Tile)tile.Clone();
                    n += 28;

                    // Load tiles into cache
                    tile.GroundGraphic     = Logic.Graphics.GraphicsManager.Tiles[tile.GroundSet].GetTileGraphic(tile.Ground);
                    tile.GroundAnimGraphic = Logic.Graphics.GraphicsManager.Tiles[tile.GroundAnimSet].GetTileGraphic(tile.GroundAnim);
                    tile.MaskGraphic       = Logic.Graphics.GraphicsManager.Tiles[tile.MaskSet].GetTileGraphic(tile.Mask);
                    tile.AnimGraphic       = Logic.Graphics.GraphicsManager.Tiles[tile.AnimSet].GetTileGraphic(tile.Anim);
                    tile.Mask2Graphic      = Logic.Graphics.GraphicsManager.Tiles[tile.Mask2Set].GetTileGraphic(tile.Mask2);
                    tile.M2AnimGraphic     = Logic.Graphics.GraphicsManager.Tiles[tile.M2AnimSet].GetTileGraphic(tile.M2Anim);
                    tile.FringeGraphic     = Logic.Graphics.GraphicsManager.Tiles[tile.FringeSet].GetTileGraphic(tile.Fringe);
                    tile.FAnimGraphic      = Logic.Graphics.GraphicsManager.Tiles[tile.FAnimSet].GetTileGraphic(tile.FAnim);
                    tile.Fringe2Graphic    = Logic.Graphics.GraphicsManager.Tiles[tile.Fringe2Set].GetTileGraphic(tile.Fringe2);
                    tile.F2AnimGraphic     = Logic.Graphics.GraphicsManager.Tiles[tile.F2AnimSet].GetTileGraphic(tile.F2Anim);
                }
            }

            int npcs = parse[n].ToInt();

            n++;

            for (int i = 0; i < npcs; i++)
            {
                map.Npc.Add(new MapNpcSettings());
                map.Npc[i].NpcNum             = parse[n].ToInt();
                map.Npc[i].SpawnX             = parse[n + 1].ToInt();
                map.Npc[i].SpawnY             = parse[n + 2].ToInt();
                map.Npc[i].MinLevel           = parse[n + 3].ToInt();
                map.Npc[i].MaxLevel           = parse[n + 4].ToInt();
                map.Npc[i].AppearanceRate     = parse[n + 5].ToInt();
                map.Npc[i].StartStatus        = (Enums.StatusAilment)parse[n + 6].ToInt();
                map.Npc[i].StartStatusCounter = parse[n + 7].ToInt();
                map.Npc[i].StartStatusChance  = parse[n + 8].ToInt();
                n += 9;
            }

            bool temp = parse[n].ToBool();

            map.MapID = mapID;

            if (map.Cacheable && !temp && (mapID.StartsWith("s") || mapID.StartsWith("h")))
            {
                mMaps[mapType] = map;
                SaveLocalMap(mapType);
                //mMaps[Enums.MapID.TempActive] = map;
                //SaveLocalMap(Enums.MapID.TempActive);
            }
            else
            {
                mMaps[mapType] = map;
                //mMaps[Enums.MapID.TempActive] = map;
                //				TODO: Random dungeon loading info hiding
                //				RMapLoaded = True
                //				If RMapInfoDone Then
                //				GameInstance.RDungeonInfo.Hide()
                //				RMapLoaded = False
                //				RMapInfoDone = False
                //				End If
            }

            if (mapType == Enums.MapID.TempActive)
            {
                PlayerManager.MyPlayer.MapID = mapID;

                // Close editors [Map + House editor]
                Windows.Editors.EditorManager.CloseMapEditor();
            }

            /*
             * switch (map.Weather) {
             *  case Enums.Weather.None:
             *      Globals.ActiveTime = Globals.GameTime;
             *      Globals.ActiveWeather = Globals.GameWeather;
             *      break;
             *  case Enums.Weather.Raining:
             *      Globals.ActiveWeather = Enums.Weather.Raining;
             *      Globals.ActiveTime = Globals.GameTime;
             *      break;
             *  case Enums.Weather.Snowing:
             *      Globals.ActiveWeather = Enums.Weather.Snowing;
             *      Globals.ActiveTime = Globals.GameTime;
             *      break;
             *  case Enums.Weather.Thunder:
             *      Globals.ActiveWeather = Enums.Weather.Thunder;
             *      Globals.ActiveTime = Globals.GameTime;
             *      break;
             * }
             */

            //Globals.ActiveWeather = map.Weather;

            Globals.ActiveTime = Globals.GameTime;

            Globals.SavingMap = false;
        }
Exemplo n.º 2
0
        public static void LoadMapFromPacket(string[] parse)
        {
            string mapID = parse[2];
            Maps.Map map = new Client.Logic.Maps.Map(mapID);

            int n = 2;

            //if (parse[13].ToInt() < 19 || parse[14].ToInt() < 14) {
            //    parse[13] = "19";
            //    parse[14] = "14";
            //}

            map.Tile = new Client.Logic.Maps.Tile[parse[13].ToInt() + 1, parse[14].ToInt() + 1];
            map.OriginalTiles = new Tile[parse[13].ToInt() + 1, parse[14].ToInt() + 1];

            Enums.MapID mapType = (Enums.MapID)(parse[1].ToInt());

            map.Name = parse[n + 1];
            map.Revision = parse[n + 2].ToInt();
            map.Moral = (Enums.MapMoral)parse[n + 3].ToInt();
            map.Up = parse[n + 4].ToInt();
            map.Down = parse[n + 5].ToInt();
            map.Left = parse[n + 6].ToInt();
            map.Right = parse[n + 7].ToInt();
            map.Music = parse[n + 8];
            map.Indoors = parse[n + 9].ToBool();
            map.Weather = (Enums.Weather)parse[n + 10].ToInt();
            map.MaxX = parse[n + 11].ToInt();
            map.MaxY = parse[n + 12].ToInt();
            map.Darkness = parse[n + 13].ToInt();
            map.HungerEnabled = parse[n + 14].ToBool();
            map.RecruitEnabled = parse[n + 15].ToBool();
            map.ExpEnabled = parse[n + 16].ToBool();
            map.TimeLimit = parse[n + 17].ToInt();
            map.MinNpcs = parse[n + 18].ToInt();
            map.MaxNpcs = parse[n + 19].ToInt();
            map.NpcSpawnTime = parse[n + 20].ToInt();
            map.Cacheable = parse[n + 21].ToBool();
            map.ImpersonatingMap = parse[n + 22];

            n += 23;

            for (int y = 0; y <= map.MaxY; y++) {
                for (int x = 0; x <= map.MaxX; x++) {
                    Maps.Tile tile = new Client.Logic.Maps.Tile();
                    tile.Ground = parse[n].ToInt();
                    tile.GroundAnim = parse[n + 1].ToInt();
                    tile.Mask = parse[n + 2].ToInt();
                    tile.Anim = parse[n + 3].ToInt();
                    tile.Mask2 = parse[n + 4].ToInt();
                    tile.M2Anim = parse[n + 5].ToInt();
                    tile.Fringe = parse[n + 6].ToInt();
                    tile.FAnim = parse[n + 7].ToInt();
                    tile.Fringe2 = parse[n + 8].ToInt();
                    tile.F2Anim = parse[n + 9].ToInt();
                    tile.Type = (Enums.TileType)parse[n + 10].ToInt();
                    tile.Data1 = parse[n + 11].ToInt();
                    tile.Data2 = parse[n + 12].ToInt();
                    tile.Data3 = parse[n + 13].ToInt();
                    tile.String1 = parse[n + 14];
                    tile.String2 = parse[n + 15];
                    tile.String3 = parse[n + 16];
                    tile.RDungeonMapValue = parse[n + 17].ToInt();
                    tile.GroundSet = parse[n + 18].ToInt();
                    tile.GroundAnimSet = parse[n + 19].ToInt();
                    tile.MaskSet = parse[n + 20].ToInt();
                    tile.AnimSet = parse[n + 21].ToInt();
                    tile.Mask2Set = parse[n + 22].ToInt();
                    tile.M2AnimSet = parse[n + 23].ToInt();
                    tile.FringeSet = parse[n + 24].ToInt();
                    tile.FAnimSet = parse[n + 25].ToInt();
                    tile.Fringe2Set = parse[n + 26].ToInt();
                    tile.F2AnimSet = parse[n + 27].ToInt();
                    map.Tile[x, y] = tile;
                    map.OriginalTiles[x, y] = (Tile)tile.Clone();
                    n += 28;

                    // Load tiles into cache
                    tile.GroundGraphic = Logic.Graphics.GraphicsManager.Tiles[tile.GroundSet].GetTileGraphic(tile.Ground);
                    tile.GroundAnimGraphic = Logic.Graphics.GraphicsManager.Tiles[tile.GroundAnimSet].GetTileGraphic(tile.GroundAnim);
                    tile.MaskGraphic = Logic.Graphics.GraphicsManager.Tiles[tile.MaskSet].GetTileGraphic(tile.Mask);
                    tile.AnimGraphic = Logic.Graphics.GraphicsManager.Tiles[tile.AnimSet].GetTileGraphic(tile.Anim);
                    tile.Mask2Graphic = Logic.Graphics.GraphicsManager.Tiles[tile.Mask2Set].GetTileGraphic(tile.Mask2);
                    tile.M2AnimGraphic = Logic.Graphics.GraphicsManager.Tiles[tile.M2AnimSet].GetTileGraphic(tile.M2Anim);
                    tile.FringeGraphic = Logic.Graphics.GraphicsManager.Tiles[tile.FringeSet].GetTileGraphic(tile.Fringe);
                    tile.FAnimGraphic = Logic.Graphics.GraphicsManager.Tiles[tile.FAnimSet].GetTileGraphic(tile.FAnim);
                    tile.Fringe2Graphic = Logic.Graphics.GraphicsManager.Tiles[tile.Fringe2Set].GetTileGraphic(tile.Fringe2);
                    tile.F2AnimGraphic = Logic.Graphics.GraphicsManager.Tiles[tile.F2AnimSet].GetTileGraphic(tile.F2Anim);
                }
            }

            int npcs = parse[n].ToInt();

            n++;

            for (int i = 0; i < npcs; i++) {
                map.Npc.Add(new MapNpcSettings());
                map.Npc[i].NpcNum = parse[n].ToInt();
                map.Npc[i].SpawnX = parse[n + 1].ToInt();
                map.Npc[i].SpawnY = parse[n + 2].ToInt();
                map.Npc[i].MinLevel = parse[n + 3].ToInt();
                map.Npc[i].MaxLevel = parse[n + 4].ToInt();
                map.Npc[i].AppearanceRate = parse[n + 5].ToInt();
                map.Npc[i].StartStatus = (Enums.StatusAilment)parse[n + 6].ToInt();
                map.Npc[i].StartStatusCounter = parse[n + 7].ToInt();
                map.Npc[i].StartStatusChance = parse[n + 8].ToInt();
                n += 9;
            }

            bool temp = parse[n].ToBool();

            map.MapID = mapID;

            if (map.Cacheable && !temp && (mapID.StartsWith("s") || mapID.StartsWith("h"))) {
                mMaps[mapType] = map;
                SaveLocalMap(mapType);
                //mMaps[Enums.MapID.TempActive] = map;
                //SaveLocalMap(Enums.MapID.TempActive);
            } else {
                mMaps[mapType] = map;
                //mMaps[Enums.MapID.TempActive] = map;
                //				TODO: Random dungeon loading info hiding
                //				RMapLoaded = True
                //				If RMapInfoDone Then
                //				GameInstance.RDungeonInfo.Hide()
                //				RMapLoaded = False
                //				RMapInfoDone = False
                //				End If
            }

            if (mapType == Enums.MapID.TempActive) {
                PlayerManager.MyPlayer.MapID = mapID;

                // Close editors [Map + House editor]
                Windows.Editors.EditorManager.CloseMapEditor();
            }
            /*
            switch (map.Weather) {
                case Enums.Weather.None:
                    Globals.ActiveTime = Globals.GameTime;
                    Globals.ActiveWeather = Globals.GameWeather;
                    break;
                case Enums.Weather.Raining:
                    Globals.ActiveWeather = Enums.Weather.Raining;
                    Globals.ActiveTime = Globals.GameTime;
                    break;
                case Enums.Weather.Snowing:
                    Globals.ActiveWeather = Enums.Weather.Snowing;
                    Globals.ActiveTime = Globals.GameTime;
                    break;
                case Enums.Weather.Thunder:
                    Globals.ActiveWeather = Enums.Weather.Thunder;
                    Globals.ActiveTime = Globals.GameTime;
                    break;
            }
            */

            //Globals.ActiveWeather = map.Weather;

            Globals.ActiveTime = Globals.GameTime;

            Globals.SavingMap = false;
        }