示例#1
0
    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);
    }
示例#2
0
    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;
 }
示例#4
0
    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>();
    }
示例#5
0
 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);
    }
示例#7
0
    //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);
    }
示例#10
0
        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]);
            }
        }
示例#11
0
    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();
    }
示例#12
0
    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);
    }
示例#14
0
    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();
    }
示例#15
0
    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;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
示例#16
0
    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();
    }
示例#17
0
    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>());
            }
        }
    }
示例#18
0
 public void LoadMapGO(MapSave mapfile)
 {
     LoadGroundGO();
     LoadObjGO();
 }