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; }
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; }