private MapSave CreateSaveGameObject() { MapSave save = new MapSave(); foreach (Vector2 key in buildingTileControllers.Keys) { if (key.x == 0 && key.y == 0) { continue; } TileSave tileSave = new TileSave(); tileSave.posX = key.x; tileSave.posY = key.y; tileSave.isResource = buildingTileControllers[key].isResourceTile; tileSave.resourceType = buildingTileControllers[key].resourceType; tileSave.isDiscovered = buildingTileControllers[key].isDiscovered; tileSave.worldPosX = buildingTileControllers[key].gameObject.transform.localPosition.x; tileSave.worldPosY = buildingTileControllers[key].gameObject.transform.localPosition.y; tileSave.worldPosZ = buildingTileControllers[key].gameObject.transform.localPosition.z; save.tileSaves.Add(tileSave); } return(save); }
public void LoadOverworldMaps() { ushort[,] unusedTiles = new ushort[32, 32]; int mapCount = 0; for (int i = 0; i < 160; i++) { try { all_maps[i] = new MapSave((short)i, overworld); //TODO: Remove that and find a way to compare the tiles arrays if (i >= 131 && i <= 146) { continue; } mapCount++; } catch (Exception e) { WriteLog("Error : " + e.Message.ToString(), Color.Red); return; } } LoadedProjectStatistics.usedMaps = mapCount; LoadedProjectStatistics.tiles32Maps = overworld.tiles32count; LoadedProjectStatistics.itemsMaps = -1; LoadedProjectStatistics.spritesMaps = -1; LoadedProjectStatistics.overlaysMaps = -1; LoadedProjectStatistics.entrancesMaps = -1; LoadedProjectStatistics.exitsMaps = -1; LoadedProjectStatistics.holesMaps = -1; LoadedProjectStatistics.whirlpoolMaps = -1; WriteLog("Overworld maps data loaded properly", Color.Green); }
public void StartGame() { //Load the last saved map MainGame.fullMap = MapSave.LoadMap(); MainGame.tileMap = tileMap; BuildLevel(25); MainGame.Level = 25; }
public void LoadChunkByName(string chunk, int offsetx, int offsety) { chunk2 = new MapSave(); SaveData sdatachunk2 = new SaveData(); LoadMap(chunk, chunk2); // create map from file List <GameObject> TilesChunk2 = new List <GameObject>(); List <GameObject> ObjectsChunk2 = new List <GameObject>(); }
public void Cleanup() { PlayerSave = null; map = new MapSave(); maploader = null; TilesGO.Clear(); ObjectsGO.Clear(); Destroy(Player); //Destroy(UI); }
/// <summary> /// Starts the game. /// </summary> static void StartGame() { //Pass the finalized map to the game //MainGame.fullMap = WorldGen.fullMap; //Save the map for the future MapSave.SaveMap(WorldGen.fullMap); Debug.Log("Map Saved"); //load the game level Application.LoadLevel(1); }
//Handles the saving and loading of the map on game start up and close. public void SaveGame(string saveName) { MapSave save = CreateSaveGameObject(); BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Create(Application.persistentDataPath + "/" + saveName + "/MapSave.save"); bf.Serialize(file, save); file.Close(); Debug.Log("Saved maps..."); }
void Start() { mapSave = GameObject.Find("MapHandler").GetComponent <MapSave>(); // Recupera informações básicas do mapa mapSave.ReadFile(); // Referencia botões settingBtn = gameObject.GetComponentsInChildren <Button>(); // Atribui listeners settingBtn[(int)settingEnum.Save].onClick.AddListener(() => Save()); settingBtn[(int)settingEnum.ChangeSkyBox].onClick.AddListener(() => ChangeSkyBox()); settingBtn[(int)settingEnum.Exit].onClick.AddListener(() => Exit()); }
public void SerializeData(Vector2[] data) { var savedata = new MapSave(); savedata.mapConfig = MAP_DATA.MAP_CONFIG; savedata.renderSetup = MAP_DATA.RENDER_SETUP; savedata.gpuData = data; savedata.modelData = meshUtils.SerializeModelRegister(); string save = JsonUtility.ToJson(savedata); string datapath = _saveDataPath(MAP_DATA.MAPNAME); File.Delete(datapath); File.WriteAllText(datapath, save); }
void CreateBuiltGame(object sender, Message message) { IClient client = (IClient)sender; DarkRiftReader reader = message.GetReader(); string gameName = reader.ReadString(); MapSave Map = JsonUtility.FromJson <MapSave>(reader.ReadString()); List <MapObject> walls = new List <MapObject>(); foreach (WallSave w in Map.Walls) { walls.Add(MapObject.CreatePreset(new BoxCollider(new STransform(new Vector2(w.PosX, w.PosY), 0), new Vector2(w.SizeX, w.SizeY)), 0)); } ; List <Vector2> spawns = new List <Vector2>(); foreach (Vector2 spawn in Map.SpawnPoints) { spawns.Add(spawn); } GameCreationData builtData = GameCreationData.CreateSimple(walls, spawns); //neither GameName nor Spawnpoints are implemented on client!!! if (!Games.ContainsKey(gameName)) { Game g = Game.CreateGame(gameName, builtData); Games.Add(g.Name, g); g.JoinPlayer(Players[client.ID]); } else { gameName += " "; while (Games.ContainsKey(gameName)) { gameName += "*"; } Game g = Game.CreateGame(gameName, builtData); Games.Add(g.Name, g); g.JoinPlayer(Players[client.ID]); } }
public void SaveGame(SaveData previous, GameObject Tribe, MapSave Map) { if (Directory.Exists(previous.savefolder + previous.savefile + "/") == false) { Directory.CreateDirectory(previous.savefolder + previous.savefile + "/"); } BinaryFormatter bf = new BinaryFormatter(); previous.tribesave = Tribe.GetComponent <TribeGO>().tribeCurrent; previous.mapsave = Map; previous.eventsave = GM.EM.events; if (PlayerPrefs.GetString("mapfile") != "") { previous.mapfile = PlayerPrefs.GetString("mapfile"); } FileStream file = File.Open(previous.savefolder + previous.savefile + "/" + previous.savefile, FileMode.OpenOrCreate); bf.Serialize(file, previous); file.Close(); }
public void LoadGame(string loadName) { if (File.Exists(Application.persistentDataPath + "/" + loadName + "/MapSave.save")) { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(Application.persistentDataPath + "/" + loadName + "/MapSave.save", FileMode.Open); MapSave save = (MapSave)bf.Deserialize(file); file.Close(); BuildingTileController btc; foreach (TileSave ts in save.tileSaves) { GameObject temp = GameObject.Instantiate(TileTemplate, map.transform); temp.transform.localPosition = new Vector3(ts.worldPosX, ts.worldPosY, ts.worldPosZ); buildingTileControllers.Add(new Vector2(ts.posX, ts.posY), temp.GetComponent <BuildingTileController>()); btc = temp.GetComponent <BuildingTileController>(); if (ts.isResource == true) { btc.isResourceTile = true; btc.BuildingSprite.gameObject.SetActive(true); btc.BuildingSprite.sprite = ResourceSprites[ts.resourceType]; } if (ts.isDiscovered) { btc.isDiscovered = true; btc.DisableButton(); } } } else { Debug.Log("No Map Save Found"); } UpdateMap(null); }
public static TerrainType[,] DeserializeTerrainTypes() { MapSave save = MAP_DATA.MAPSAVE; if (save.gpuData.Length == 0) { return(null); } var mapConfig = save.mapConfig; var terrainTypes = new TerrainType[mapConfig.GridSize, mapConfig.GridSize]; int count = 0; for (int i = 0; i < terrainTypes.GetLength(0); i++) { for (int j = 0; j < terrainTypes.GetLength(1); j++) { TerrainType type = new TerrainType(mapConfig.GetTerrainConfigByID((int)save.gpuData[count].x)); terrainTypes[j, i] = type; count++; } } return(terrainTypes); }
public void LoadMap(string mapfile, MapSave map) { StreamReader reader = new StreamReader(mapfile); string line = reader.ReadLine(); while (!reader.EndOfStream) { if (line.Contains("<map")) { map.sizex = Convert.ToInt32(map.GetValueFromKey("width", line)); map.sizey = Convert.ToInt32(map.GetValueFromKey("height", line)); map.tilesizex = Convert.ToInt32(map.GetValueFromKey("tilewidth", line)); map.tilesizey = Convert.ToInt32(map.GetValueFromKey("tileheight", line)); map.basevalue = Convert.ToInt32(map.GetValueFromKey("infinite", line)); map.render = map.GetValueFromKey("renderorder", line); map.orientation = map.GetValueFromKey("orientation", line); map.nextobject = Convert.ToInt32(map.GetValueFromKey("nextobjectid", line)); LayerSave maptiles = new LayerSave(); map.layer = maptiles; // here } if (line.Contains("<layer")) { LayerSave ground = map.layer; ground.name = map.GetValueFromKey("name", line); ground.sizex = Convert.ToInt32(map.GetValueFromKey("width", line)); ground.sizey = Convert.ToInt32(map.GetValueFromKey("height", line)); line = reader.ReadLine(); if (line.Contains("<data encoding=\"csv\"")) { string newid = reader.ReadLine(); for (int j = 0; j < ground.sizey; j++) { if (ground.name == "Ground") { ground.tiles.Add(new List <TileSave>()); } for (int i = 0; i < ground.sizex; i++) { TileSave tilesave = new TileSave(); if (ground.name == "Ground") { if (newid.IndexOf(",") > 0) { tilesave.mapid = Convert.ToInt32(newid.Substring(0, newid.IndexOf(","))); // newid for other layers newid = newid.Substring(newid.IndexOf(",") + 1); // same } else { tilesave.mapid = Convert.ToInt32(newid); } tilesave.posx = i; tilesave.posy = j; ground.tiles[j].Add(tilesave); } /*else if (ground.name == "Triggers") * { * tilesave = ground.tiles[j][i]; * if (newid.IndexOf(",") > 0) * { * tilesave.triggerid = Convert.ToInt32(newid.Substring(0, newid.IndexOf(","))); * newid = newid.Substring(newid.IndexOf(",") + 1); * } * else * { * tilesave.triggerid = Convert.ToInt32(newid); * } * }*/ else if (ground.name == "AddedGround") { // tile already created in ground. tilesave = ground.tiles[j][i]; if (newid.IndexOf(",") > 0) { tilesave.addedid = Convert.ToInt32(newid.Substring(0, newid.IndexOf(","))); newid = newid.Substring(newid.IndexOf(",") + 1); } else { tilesave.addedid = Convert.ToInt32(newid); } } } newid = reader.ReadLine(); } } } if (line.Contains("<objectgroup")) { ObjectGroupSave objectlayer = new ObjectGroupSave(); objectlayer.name = map.GetValueFromKey("name", line); if (line.Contains("offsetx")) { objectlayer.offsetx = Convert.ToInt32(map.GetValueFromKey("offsetx", line)); } if (line.Contains("offsety")) { objectlayer.offsety = Convert.ToInt32(map.GetValueFromKey("offsety", line)); } map.objectgroups.Add(objectlayer); line = reader.ReadLine(); if (line.Contains("<object")) { while (!line.Contains("</objectgroup>")) { ObjectSave obj = new ObjectSave(); obj.id = Convert.ToInt32(map.GetValueFromKey("id", line)); obj.gid = Convert.ToInt32(map.GetValueFromKey("gid", line)); obj.x = Convert.ToSingle(map.GetValueFromKey("x", line), CultureInfo.InvariantCulture.NumberFormat); obj.y = Convert.ToSingle(map.GetValueFromKey("y", line)); obj.width = Convert.ToInt32(map.GetValueFromKey("width", line)); obj.height = Convert.ToInt32(map.GetValueFromKey("height", line)); obj.offsetx = objectlayer.offsetx; obj.offsety = objectlayer.offsety; line = reader.ReadLine(); if (line.Contains("<properties")) { while ((!line.Contains("</object>")) && (!line.Contains("</properties"))) { if (line.Contains("<property")) { obj.modifiers.Add(map.GetValueFromKey("name", line), map.GetValueFromKey("value", line)); } line = reader.ReadLine(); } if (line.Contains("</properties")) { line = reader.ReadLine(); } line = reader.ReadLine(); } map.objects.Add(obj); } } } if (line.Contains("<tileset")) { TileSetsSave tilesets = new TileSetsSave(); tilesets.first = Convert.ToInt32(map.GetValueFromKey("firstgid", line)); tilesets.source = map.GetValueFromKey("source", line); StreamReader readertileset = new StreamReader("Assets/Resources/Map/" + tilesets.source); int internid = 0; string linetileset = readertileset.ReadLine(); while (!readertileset.EndOfStream) { if (linetileset.Contains("<tileset")) { tilesets.name = map.GetValueFromKey("name", linetileset); tilesets.tilewidth = Convert.ToInt32(map.GetValueFromKey("tilewidth", linetileset)); tilesets.tileheight = Convert.ToInt32(map.GetValueFromKey("tileheight", linetileset)); tilesets.spritecount = Convert.ToInt32(map.GetValueFromKey("tilecount", linetileset)); } if (linetileset.Contains("<tile ")) { TileSetSave tileset = new TileSetSave(); tileset.id = Convert.ToInt32(map.GetValueFromKey("id", linetileset)); linetileset = readertileset.ReadLine(); tileset.internal_id = internid; while (!linetileset.Contains("</tile>")) { if (linetileset.Contains("<property")) { tileset.modifiers.Add(map.GetValueFromKey("name", linetileset), map.GetValueFromKey("value", linetileset)); } if (linetileset.Contains("<image") && (!linetileset.Contains("format"))) { tileset.height = Convert.ToInt32(map.GetValueFromKey("height", linetileset)); tileset.spritefile = map.GetValueFromKey("source", linetileset); tileset.width = Convert.ToInt32(map.GetValueFromKey("width", linetileset)); } linetileset = readertileset.ReadLine(); } internid++; tilesets.tilesets.Add(tileset); } linetileset = readertileset.ReadLine(); } map.tilesets.Add(tilesets); } line = reader.ReadLine(); } map.layer.tiles.Reverse(); reader.Close(); }
public void LoadChunkedTiles(MapSave chunk, int startx, int starty, int sizex, int sizey, int offsetx, int offsety) { GameManager GM = GameObject.Find("GameManager").GetComponent <GameManager>(); int miny = 0; int maxy = chunk.sizey; if (starty - sizey > 0) { miny = starty - sizey; } if (starty + sizey < chunk.sizey) { maxy = starty + sizey; } int minx = 0; int maxx = chunk.sizex; if (startx - sizex > 0) { minx = startx - sizex; } if (startx + sizex < chunk.sizex) { maxx = startx + sizex; } for (int y = miny; y < maxy; y++) { for (int x = minx; x < maxx; x++) { int drawback = 10; /* TILES GROUND */ TileSave tileCur = chunk.layer.tiles[y][x]; TileSetSave tileset = new TileSetSave(); GameObject tilego = null; GameObject emptyMap = GameObject.Find("Map"); Vector3 placement = Vector3.zero; if (tileCur.mapid > chunk.basevalue) { foreach (TileSetsSave tss in chunk.tilesets) { foreach (TileSetSave ts in tss.tilesets) { if ((tileCur.mapid == tss.first + ts.id)) { tileset = ts; int id_min = tileset.spritefile.Substring(0, tileset.spritefile.IndexOf("_")).Length; string sub = tileset.spritefile.Substring(id_min + 1); string id = sub.Substring(0, sub.IndexOf(".")); tilego = GameObject.Instantiate(GM.Prefabs[GM.prefabs_name[id]], Vector3.zero, Quaternion.identity); tilego.name = "Instantiated : " + x + offsetx + " / " + y + offsety; if (y % 2 == 1) { placement = new Vector3(((x + offsetx) * chunk.tilesizex + chunk.tilesizex / 2.0f) / 100.0f, ((y + offsety) * chunk.tilesizey / 2.0f + chunk.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); } else { placement = new Vector3(((x + offsetx) * chunk.tilesizex + chunk.tilesizex / 2.0f) / 100.0f + (chunk.tilesizex / 2.0f / 100.0f), ((y + offsety) * chunk.tilesizey / 2.0f + chunk.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); } tilego.GetComponent <Transform>().position = placement; if (tileset.modifiers.ContainsKey("collider") && (tileset.modifiers["collider"] == "true")) { tilego.AddComponent <PolygonCollider2D>(); tilego.AddComponent <PolygonCollider2D>().isTrigger = false; } else { tilego.AddComponent <BoxCollider2D>(); tilego.GetComponent <BoxCollider2D>().isTrigger = true; } tilego.transform.SetParent(emptyMap.GetComponent <Transform>()); //TilesGO.Add(tilego); break; } } if (tileset.id > 0) { break; } } } /* ADDED GROUND */ drawback = 9; if (chunk.layer.tiles[y][x].addedid > chunk.basevalue) { TileSetSave tilesetAdded = new TileSetSave(); if (chunk.layer.tiles[y][x].addedid > chunk.basevalue) { GameObject tilegoAdded = null; foreach (TileSetsSave tss in chunk.tilesets) { foreach (TileSetSave ts in tss.tilesets) { if ((chunk.layer.tiles[y][x].addedid == tss.first + ts.id)) { tilesetAdded = ts; int id_min = tilesetAdded.spritefile.Substring(0, tilesetAdded.spritefile.IndexOf("_")).Length; string sub = tilesetAdded.spritefile.Substring(id_min + 1); string id = sub.Substring(0, sub.IndexOf(".")); tilegoAdded = GameObject.Instantiate(GM.Prefabs[GM.prefabs_name[id]]); tilegoAdded.name = "Instantiated_Added : " + x + " / " + y; if (tilesetAdded.modifiers.ContainsKey("collider") && (tilesetAdded.modifiers["collider"] == "true")) { tilegoAdded.AddComponent <PolygonCollider2D>(); tilegoAdded.GetComponent <PolygonCollider2D>().isTrigger = false; } else { tilegoAdded.AddComponent <BoxCollider2D>(); tilegoAdded.GetComponent <BoxCollider2D>().isTrigger = true; } placement = Vector3.zero; if (y % 2 == 1) { placement = new Vector3(((x + offsetx) * chunk.tilesizex + chunk.tilesizex / 2.0f) / 100.0f, ((y + offsety) * chunk.tilesizey / 2.0f + chunk.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); } else { placement = new Vector3(((x + offsetx) * chunk.tilesizex + chunk.tilesizex / 2.0f) / 100.0f + (chunk.tilesizex / 2.0f / 100.0f), ((y + offsety) * chunk.tilesizey / 2.0f + chunk.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); } tilegoAdded.GetComponent <Transform>().position = placement; tilegoAdded.GetComponent <Transform>().SetParent(emptyMap.GetComponent <Transform>()); } if (tilesetAdded.id > 0) { break; } } } } } } } }
public override void OnInspectorGUI() { if (scriptTarget == null || scriptTarget != target) { scriptTarget = (MapSave)target; } if (scriptTarget != null && scriptTarget.PixelDatas != null) { if (scriptTarget.PixelDatas.Length != (scriptTarget.sizeMap.x * scriptTarget.sizeMap.y)) { scriptTarget.ResetDatas(); } } base.OnInspectorGUI(); if (GUILayout.Button("Reset data array")) { if (scriptTarget != null) { scriptTarget.ResetDatas(); } } if (GUILayout.Button("Generate Map")) { if (scriptTarget != null) { scriptTarget.GenerateMap(); } } EditorGUILayout.BeginHorizontal(); EditorGUILayout.Space(); EditorGUILayout.BeginVertical(); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); for (int i = 0; i < 4; i++)//4 => Layer count { string textButton = "Layer_" + (i + 1); if (GUILayout.Button(textButton, (mLayer == i) ? EditorStyles.toolbarButton : EditorStyles.miniButton)) { mLayer = i; } } EditorGUILayout.EndHorizontal(); scrollView = EditorGUILayout.BeginScrollView(scrollView); EditorGUILayout.BeginVertical(); //HEADER for (int y = scriptTarget.sizeMap.y - 1; y >= 0; y--) { if (y == scriptTarget.sizeMap.y - 1) { EditorGUILayout.BeginHorizontal(); for (int x = 0; x < scriptTarget.sizeMap.x; x++) { GUILayout.Label((x + 1).ToString()); } EditorGUILayout.EndHorizontal(); } EditorGUILayout.BeginHorizontal(); for (int x = 0; x < scriptTarget.sizeMap.x; x++) { int index = y * scriptTarget.sizeMap.x + x; switch (mLayer) { case 0: scriptTarget.PixelDatas[index].indexL1 = EditorGUILayout.IntField(scriptTarget.PixelDatas[index].indexL1); break; case 1: scriptTarget.PixelDatas[index].indexL2 = EditorGUILayout.IntField(scriptTarget.PixelDatas[index].indexL2); break; case 2: scriptTarget.PixelDatas[index].indexL3 = EditorGUILayout.IntField(scriptTarget.PixelDatas[index].indexL3); break; case 3: scriptTarget.PixelDatas[index].dataNav = EditorGUILayout.IntField(scriptTarget.PixelDatas[index].dataNav); break; default: break; } } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndVertical(); EditorGUILayout.EndScrollView(); EditorUtility.SetDirty(scriptTarget); EditorGUILayout.EndVertical(); EditorGUILayout.Space(); EditorGUILayout.EndHorizontal(); }
public void LoadMapGO(MapSave mapfile, List <GameObject> TilesGO, List <GameObject> ObjectsGO, List <ObjectSave> objectssave, List <GameObject> Ground_Prefabs) { GM = GameObject.Find("GameManager").GetComponent <GameManager>(); GameObject emptyMap = new GameObject("Map"); Vector3 placement = Vector3.zero; for (int y = 0; y < mapfile.sizey; y++) { for (int x = 0; x < mapfile.sizex; x++) { int drawback = 10; /* TILES GROUND */ TileSave tileCur = mapfile.layer.tiles[y][x]; TileSetSave tileset = new TileSetSave(); GameObject tilego = null; if (tileCur.mapid > mapfile.basevalue) { foreach (TileSetsSave tss in mapfile.tilesets) { foreach (TileSetSave ts in tss.tilesets) { if ((tileCur.mapid == tss.first + ts.id)) { tileset = ts; int id_min = tileset.spritefile.Substring(0, tileset.spritefile.IndexOf("_")).Length; string sub = tileset.spritefile.Substring(id_min + 1); string id = sub.Substring(0, sub.IndexOf(".")); tilego = GameObject.Instantiate(Ground_Prefabs[GM.prefabs_name[id]], Vector3.zero, Quaternion.identity); tilego.name = "Instantiated : " + x + " / " + y; // useless but keep just in case /*switch (mapfile.orientation) * { * case "orthogonal": * placement = new Vector3((x * mapfile.tilesizex + mapfile.tilesizex / 2.0f) / 100.0f, (y * mapfile.tilesizey + mapfile.tilesizey / 2.0f) / 100.0f, GM.ZGround+ drawback); * break; * case "staggered":*/ if (y % 2 == 1) { placement = new Vector3((x * mapfile.tilesizex + mapfile.tilesizex / 2.0f) / 100.0f, (y * mapfile.tilesizey / 2.0f + mapfile.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); } else { placement = new Vector3((x * mapfile.tilesizex + mapfile.tilesizex / 2.0f) / 100.0f + (mapfile.tilesizex / 2.0f / 100.0f), (y * mapfile.tilesizey / 2.0f + mapfile.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); } /* break; * case "isometric": * if (y % 2 == 1) * placement = new Vector3((x * mapfile.tilesizex + mapfile.tilesizex / 2.0f) / 100.0f, (y * mapfile.tilesizey / 2.0f + mapfile.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); * else * placement = new Vector3((x * mapfile.tilesizex + mapfile.tilesizex / 2.0f) / 100.0f + (mapfile.tilesizex / 2.0f / 100.0f), (y * mapfile.tilesizey / 2.0f + mapfile.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); * break; * default: * placement = new Vector3((x * mapfile.tilesizex + mapfile.tilesizex / 2.0f) / 100.0f, (y * mapfile.tilesizey + mapfile.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); * break; * }*/ tilego.GetComponent <Transform>().position = placement; if (tileset.modifiers.ContainsKey("collider") && (tileset.modifiers["collider"] == "true")) { tilego.AddComponent <PolygonCollider2D>(); tilego.AddComponent <PolygonCollider2D>().isTrigger = false; } else { tilego.AddComponent <BoxCollider2D>(); tilego.GetComponent <BoxCollider2D>().isTrigger = true; } tilego.transform.SetParent(emptyMap.GetComponent <Transform>()); TilesGO.Add(tilego); break; } } if (tileset.id > 0) { break; } } } /* ADDED GROUND */ drawback = 9; if (mapfile.layer.tiles[y][x].addedid > mapfile.basevalue) { TileSetSave tilesetAdded = new TileSetSave(); if (mapfile.layer.tiles[y][x].addedid > mapfile.basevalue) { GameObject tilegoAdded = null; foreach (TileSetsSave tss in mapfile.tilesets) { foreach (TileSetSave ts in tss.tilesets) { if ((mapfile.layer.tiles[y][x].addedid == tss.first + ts.id)) { tilesetAdded = ts; int id_min = tilesetAdded.spritefile.Substring(0, tilesetAdded.spritefile.IndexOf("_")).Length; string sub = tilesetAdded.spritefile.Substring(id_min + 1); string id = sub.Substring(0, sub.IndexOf(".")); tilegoAdded = GameObject.Instantiate(Ground_Prefabs[GM.prefabs_name[id]]); tilegoAdded.name = "Instantiated_Added : " + x + " / " + y; if (tilesetAdded.modifiers.ContainsKey("collider") && (tilesetAdded.modifiers["collider"] == "true")) { tilegoAdded.AddComponent <PolygonCollider2D>(); tilegoAdded.GetComponent <PolygonCollider2D>().isTrigger = false; } else { tilegoAdded.AddComponent <BoxCollider2D>(); tilegoAdded.GetComponent <BoxCollider2D>().isTrigger = true; } placement = Vector3.zero; // useless but keep just in case /* switch (mapfile.orientation) * { * case "orthogonal": * placement = new Vector3((x * mapfile.tilesizex + mapfile.tilesizex / 2.0f) / 100.0f, (y * mapfile.tilesizey + mapfile.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); * break; * case "staggered":*/ if (y % 2 == 1) { placement = new Vector3((x * mapfile.tilesizex + mapfile.tilesizex / 2.0f) / 100.0f, (y * mapfile.tilesizey / 2.0f + mapfile.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); } else { placement = new Vector3((x * mapfile.tilesizex + mapfile.tilesizex / 2.0f) / 100.0f + (mapfile.tilesizex / 2.0f / 100.0f), (y * mapfile.tilesizey / 2.0f + mapfile.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); } /* break; * case "isometric": * if (y % 2 == 1) * placement = new Vector3((x * mapfile.tilesizex + mapfile.tilesizex / 2.0f) / 100.0f, (y * mapfile.tilesizey / 2.0f + mapfile.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); * else * placement = new Vector3((x * mapfile.tilesizex + mapfile.tilesizex / 2.0f) / 100.0f + (mapfile.tilesizex / 2.0f / 100.0f), (y * mapfile.tilesizey / 2.0f + mapfile.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); * break; * default: * placement = new Vector3((x * mapfile.tilesizex + mapfile.tilesizex / 2.0f) / 100.0f, (y * mapfile.tilesizey + mapfile.tilesizey / 2.0f) / 100.0f, GM.ZGround + drawback); * break; * }*/ tilegoAdded.GetComponent <Transform>().position = placement; // maybe use one day for sorting, but there's an issue with white shader on addedground // if (tilego == null) tilegoAdded.GetComponent <Transform>().SetParent(emptyMap.GetComponent <Transform>()); // else // tilegoAdded.GetComponent<Transform>().SetParent(tilego.GetComponent<Transform>()); } if (tilesetAdded.id > 0) { break; } } } } } } } GameObject emptyGO = new GameObject("Objects"); Sprite Radius = Resources.Load <Sprite>("Play/radius_rect"); foreach (ObjectSave obj in mapfile.objects) { GameObject curObj = null; ObjectGO curObjGO = null; TileSetSave tileset = new TileSetSave(); if (obj.gid > mapfile.basevalue) { foreach (TileSetsSave tss in mapfile.tilesets) { foreach (TileSetSave ts in tss.tilesets) { if ((obj.gid == tss.first + ts.id)) { tileset = ts; int id_min = ts.spritefile.Substring(0, ts.spritefile.IndexOf("_")).Length; string sub = ts.spritefile.Substring(id_min + 1); string id = sub.Substring(0, sub.IndexOf(".")); foreach (string key in tileset.modifiers.Keys) { if (obj.modifiers.ContainsKey(key) == false) { obj.modifiers.Add(key, tileset.modifiers[key]); } } curObj = GameObject.Instantiate(Ground_Prefabs[GM.prefabs_name[id]]); curObj.tag = "object"; curObj.name = "Instantiated_Added : " + obj.x + " / " + obj.y; if (obj.width != tileset.width) { curObj.GetComponent <Transform>().localScale = new Vector3((float)obj.width / tileset.width, (float)obj.height / tileset.height, 0.0f); } curObjGO = curObj.GetComponent <ObjectGO>(); curObjGO.objectCur = obj; break; } } if (tileset.id > 0) { break; } } } if ((curObj != null) && (curObjGO != null)) { placement = Vector3.zero; curObjGO.InitObj(); /* switch (mapfile.orientation) * { * case "orthogonal": * placement = new Vector3((obj.x + obj.offsetx + obj.width / 2) / 100.0f, ((mapfile.sizey * mapfile.tilesizey) - ((obj.y + obj.offsety - obj.height / 2.0f))) / 100.0f, GM.ZObjects); * break; * case "staggered":*/ if (obj.y % 2 == 1) { placement = new Vector3((obj.x + obj.offsetx + obj.width / 2) / 100.0f, ((mapfile.sizey * mapfile.tilesizey / 2) - ((obj.y + obj.offsety - obj.height / 2.0f))) / 100.0f, GM.ZObjects); } else { placement = new Vector3((obj.x + obj.offsetx + obj.width / 2) / 100.0f, ((mapfile.sizey * mapfile.tilesizey / 2) - ((obj.y + obj.offsety - obj.height / 2.0f))) / 100.0f + (mapfile.tilesizey / 2.0f / 100.0f), GM.ZObjects); } /*break; * case "isometric": * placement = new Vector3((obj.x + obj.offsetx + obj.width / 2) / 100.0f, ((mapfile.sizey * mapfile.tilesizey / 2) - ((obj.y + obj.offsety - obj.height / 2.0f))) / 100.0f, GM.ZObjects); * break; * default: * placement = new Vector3((obj.x + obj.offsetx + obj.width / 2) / 100.0f, ((mapfile.sizey * mapfile.tilesizey) - ((obj.y + obj.offsety - obj.height / 2.0f))) / 100.0f, GM.ZObjects); * break; * }*/ placement.z += 2; if (obj.modifiers.ContainsKey("collider") && (obj.modifiers["collider"] == "true")) { curObj.AddComponent <PolygonCollider2D>(); } else if (obj.modifiers.ContainsValue("trigger")) { curObjGO.addTrigger(curObj, Radius, objectssave); } else { curObj.AddComponent <BoxCollider2D>(); curObj.GetComponent <BoxCollider2D>().isTrigger = true; } if (obj.modifiers.ContainsKey("loadChunk")) { curObj.tag = "Loader"; } curObj.GetComponent <Transform>().position = placement; curObj.transform.SetParent(emptyGO.GetComponent <Transform>()); } } }
public void LoadMapGO(MapSave mapfile) { LoadGroundGO(); LoadObjGO(); }