Example #1
0
 public void SetStructuresGuest(GameSavedata savedata)
 {
     for (int i = 0; i < savedata.structureDatas.Count; i++)
     {
         SetSingleStructureGuest(structures[i], savedata.structureDatas[i]);
     }
 }
Example #2
0
 public void LoadStructuresFromSave(GameSavedata savedata)
 {
     ClearStructureManager();
     for (int i = 0; i < savedata.structureDatas.Count; i++)
     {
         ConstructStructureFromData(savedata.structureDatas[i]);
     }
 }
Example #3
0
 private void OpenCombatAreasToSavedIndex(GameSavedata savedata)
 {
     while (PublicHuntingAreaIndex < savedata.combatAreaManager.publicHuntingAreaIndex)
     {
         if (huntingAreas[ConqueringHuntingAreaIndex].IsBossArea)
         {
             OnBossAreaConquered(true);
         }
         else
         {
             OnHuntingAreaConquered(true);
         }
     }
 }
Example #4
0
    // 현 상태 저장
    public void Save()
    {
        // 데이터 패스 설정
        savedataPath = Application.persistentDataPath + "/test.sav"; // 임시
        string sceneName = SceneManager.GetActiveScene().name;

        // 저장
        BinaryFormatter bf     = new BinaryFormatter();
        FileStream      stream = new FileStream(savedataPath, FileMode.Create);

        GameSavedata data = new GameSavedata(sceneName);

        bf.Serialize(stream, data);
        stream.Close();
    }
Example #5
0
    public void LoadCombatAreas(GameSavedata savedata)
    {
        for (int i = 0; i <= savedata.combatAreaManager.publicHuntingAreaIndex + 1; i++)
        {
            //Debug.Log("LoadHA");
            huntingAreas[i].InitFromSaveData(savedata.combatAreaManager.huntingAreas[i]);
            huntingAreas[i].isNew = false;
        }

        for (int i = 0; i <= savedata.combatAreaManager.bossAreaIndex; i++)
        {
            bossAreas[i].InitFromSaveData(savedata.combatAreaManager.bossAreas[i]);
            bossAreas[i].isNew = false;
        }
    }
Example #6
0
    // structure만 지정해주는 메서드
    public void SetTileStructure(GameSavedata savedata)
    {
        GameObject[,] tiles = tileMap.transform.GetChild(0).GetComponent <TileLayer>().GetTiles();
        Tile tempTile;

        List <TileData> tileDatas = savedata.tileDatas;

        for (int i = 0; i < tileDatas.Count; i++)
        {
            if (tileDatas[i].prefabInfo != 0 && tileDatas[i].structureIndex != -1)
            {
                tempTile = tiles[tileDatas[i].x, tileDatas[i].y].GetComponent <Tile>();
                tempTile.SetStructure(StructureManager.Instance.structures[tileDatas[i].structureIndex]);
            }
        }
    }
Example #7
0
    /// <summary>
    /// 세이브 파일에서 정보 읽어서 로드
    /// </summary>
    /// <returns>로드 되었는지 아닌지</returns>
    public bool InstantiateFromSave()
    {
        // 세이브에서 받아서 결과값 대입
        if (isLoadedGame)
        {
            GameManager.Instance.LoadPlayerData(savedata);

            GameManager.Instance.LoadTileMap(savedata);
            GameManager.Instance.SetCombatAreas();

            GameManager.Instance.LoadTravelers(savedata);
            GameManager.Instance.LoadAdventurers(savedata);
            GameManager.Instance.LoadSpecialAdventurers(savedata);

            StructureManager.Instance.LoadStructuresFromSave(savedata);
            CombatAreaManager.Instance.LoadCombatAreasFromSave(savedata); //순서 바꿔야할 수도?
            GameManager.Instance.LoadBossPhaseData(savedata);

            GameManager.Instance.SetEveryTrvDestPlace(savedata);

            GameManager.Instance.SetAdvsEnemy(savedata);
            CombatAreaManager.Instance.SetMonstersEnemy(savedata);

            GameManager.Instance.ActivateLoadedActors(savedata);
            //CombatAreaManager.Instance.ActivateMonsters();
            StructureManager.Instance.SetStructuresGuest(savedata);

            TileMapGenerator.Instance.SetTileStructure(savedata);
            GameManager.Instance.LoadUI(savedata);
            GameManager.Instance.CreateStatDummies();

            //Debug.Log("불러오기 성공");

            savedata = null;

            return(true);
        }
        else
        {
            return(false);
        }
    }
Example #8
0
    // 세이브 파일에서 로드
    public GameSavedata LoadFromSave()
    {
        // 데이터 패스 설정
        savedataPath = Application.persistentDataPath + "/test.sav"; // 임시

        // 불러오기
        if (File.Exists(savedataPath))
        {
            BinaryFormatter bf     = new BinaryFormatter();
            FileStream      stream = new FileStream(savedataPath, FileMode.Open);

            savedata = bf.Deserialize(stream) as GameSavedata;

            stream.Close();
            return(savedata);
        }
        else
        {
            return(null);
        }
    }
Example #9
0
 public void SetMonstersEnemy(GameSavedata savedata)
 {
     for (int i = 0; i <= ConqueringHuntingAreaIndex; i++)
     {
         foreach (int key in huntingAreas[i].monstersEnabled.Keys)
         {
             if (savedata.combatAreaManager.huntingAreas[i].monstersEnabled[key].enemy != null)
             {
                 GameManager.Instance.SetICombatantEnemy(huntingAreas[i].monstersEnabled[key].GetComponent <Monster>(), savedata.combatAreaManager.huntingAreas[i].monstersEnabled[key].enemy);
             }
         }
     }
     for (int i = 0; i <= BossAreaIndex; i++)
     {
         foreach (int key in bossAreas[i].monstersEnabled.Keys)
         {
             if (savedata.combatAreaManager.bossAreas[i].monstersEnabled[key].enemy != null)
             {
                 GameManager.Instance.SetICombatantEnemy(bossAreas[i].monstersEnabled[key].GetComponent <Monster>(), savedata.combatAreaManager.bossAreas[i].monstersEnabled[key].enemy);
             }
         }
     }
 }
Example #10
0
 public void LoadCombatAreasFromSave(GameSavedata savedata)
 {
     OpenCombatAreasToSavedIndex(savedata);
     LoadCombatAreas(savedata);
 }
Example #11
0
    private void CreateMapFromSave(GameSavedata savedata)
    {
        int             layer_Count = 0;
        string          t;
        List <TileData> tileDatas = savedata.tileDatas;
        GameObject      tileObject;



        do
        {
            t = mapData["layers"][layer_Count++];
        } while (t != null);

        layer_Count--;
        //맵 데이터 읽기 완료

        // 이런건 고정이니 수정안함.
        tileMap_Object = new GameObject("TileMap"); // instantiate 할 필요 없음. 씬에 추가까지 자동으로 됨
        tileMap_Object.transform.position = new Vector3(0.0f, 0.0f, 0.0f);
        tileMap = tileMap_Object.AddComponent <TileMap>();
        tileMap.SetWidth(mapData["width"].AsInt);
        tileMap.SetHeight(mapData["height"].AsInt);
        tileMap.SetLayerCount(layer_Count);
        tileMap.SetOrientation(mapData["orientation"]);
        tileMap.SetRenderOrder(mapData["renderorder"]);


        //타일맵 생성 완료. 레이어 추가는 아직


        ////////////////////////////////////////////////////////////

        GameObject layer_Object = new GameObject("TileLayer");

        layer_Object.transform.parent   = tileMap_Object.transform;
        layer_Object.transform.position = new Vector3(0.0f, 0.0f, 0.0f);
        TileLayer layer = layer_Object.AddComponent <TileLayer>();

        layer.SetLayerNum(0);
        layer.SetLayerWidth(mapData["layers"][0]["width"].AsInt);
        layer.SetLayerHeight(mapData["layers"][0]["height"].AsInt);
        layer.SetOffsetX(mapData["layers"][0]["offsetx"] == null ? 0 : mapData["layers"][0]["offsetx"].AsInt);
        layer.SetOffsetY(mapData["layers"][0]["offsety"] == null ? 0 : mapData["layer"][0]["offsety"].AsInt);
        layer.SetOpacity(mapData["layers"][0]["opacity"].AsInt);
        layer.SetLayerName(mapData["layers"][0]["name"]);
        layer.SetLayerType(mapData["layers"][0]["type"]);
        layer.AssignTileArray(mapData["layers"][0]["width"].AsInt, mapData["layers"][0]["height"].AsInt);
        layer.AssignTileForMoveArray(mapData["layers"][0]["width"].AsInt, mapData["layers"][0]["height"].AsInt);
        tileMap.AddLayer(layer_Object);
        //layer는 0번 하나만~]
        //layer_Count = 1;

        // 레이어를 더 추가하면 GameSavedata에 레이어 Count 추가해주고 for문 돌아주면 됨.
        for (int i = 0; i < tileDatas.Count; i++)
        {
            if (tileDatas[i].prefabInfo != 0)
            {
                tileObject = (GameObject)Instantiate(preLoadedTileObject[tileDatas[i].prefabInfo]);

                // 레이어에 따라 이름이 바뀔 수 있으므로. 저장된 name값으로 할당.
                tileObject.name             = tileDatas[i].tileName;
                tileObject.transform.parent = layer_Object.transform;
                Tile tile = tileObject.AddComponent <Tile>();

                // 로드 했을 때 새로 할당하기 위해서.
                tile.prefabInfo = tileDatas[i].prefabInfo;

                // 프로퍼티 세팅.

                tile.SetRoad(tileDatas[i].isRoad);
                tile.SetIsStructed(tileDatas[i].isStructed);
                tile.SetNonTile(tileDatas[i].isNonTile);
                tile.SetIsBuildingArea(tileDatas[i].isBuildingArea);
                tile.SetIsHuntingArea(tileDatas[i].isHuntingArea);
                tile.SetIsActive(tileDatas[i].isActive);

                // structure는 structure 로드 후에 따로 해줘야.

                tile.SetX(tileDatas[i].x);
                tile.SetY(tileDatas[i].y);

                tile.SetLayerNum(tileDatas[i].layerNum);
                // 레이어 관련은 수정해야할 수도.
                tile.SetLayer(layer);
                tile.SetTileType(tile.prefabInfo);

                tileObject.transform.position = new Vector3(tileDatas[i].position.x, tileDatas[i].position.y, tileDatas[i].position.z);
                layer.AddTile(tile.x, tile.y, tileObject);

                // 이부분 뭔지 모르겠음
                int ui = tile.y * layer.GetLayerWidth() * 4 + 2 * tile.x;
                int di = tile.y * layer.GetLayerWidth() * 4 + 2 * tile.x + 2 * layer.GetLayerWidth() + 1;
                int li = tile.y * layer.GetLayerWidth() * 4 + 2 * tile.x + 2 * layer.GetLayerWidth();
                int ri = tile.y * layer.GetLayerWidth() * 4 + 2 * tile.x + 1;

                Vector3 p = tile.transform.position;

                layer.AddTileForMove(tile.x * 2, tile.y * 2, new Vector3(p.x, p.y + 0.666f, p.z), tile);            // u
                tile.SetChild(0, layer.GetTileForMove(tile.x * 2, tile.y * 2));
                layer.AddTileForMove(tile.x * 2 + 1, tile.y * 2, new Vector3(p.x + 0.333f, p.y + 0.5f, p.z), tile); // r
                tile.SetChild(1, layer.GetTileForMove(tile.x * 2 + 1, tile.y * 2));
                layer.AddTileForMove(tile.x * 2, tile.y * 2 + 1, new Vector3(p.x - 0.333f, p.y + 0.5f, p.z), tile); // l
                tile.SetChild(2, layer.GetTileForMove(tile.x * 2, tile.y * 2 + 1));
                layer.AddTileForMove(tile.x * 2 + 1, tile.y * 2 + 1, new Vector3(p.x, p.y + 0.333f, p.z), tile);    // d
                tile.SetChild(3, layer.GetTileForMove(tile.x * 2 + 1, tile.y * 2 + 1));
            }
            else
            {
                //0으로 생성
                tileObject = (GameObject)Instantiate(preLoadedTileObject[1]); //Resources.Load("TilePrefabs/" + 1));
                                                                              //tile_Resources.Add(mapData["layers"][i]["data"][x * layer.GetLayerWidth() + y].AsInt, tile_Object);
                tileObject.name             = (tileDatas[i].y * layer.GetLayerWidth() + tileDatas[i].x).ToString();
                tileObject.transform.parent = layer_Object.transform;

                Tile tile = tileObject.AddComponent <Tile>();

                // 저장을 위해
                tile.prefabInfo = 0;
                //Tile tile = tile_Object.GetComponent<Tile>();
                //////////////////tile.SetPassable(false);
                tile.SetRoad(false);
                tile.SetX(tileDatas[i].x);
                tile.SetY(tileDatas[i].y);
                tile.SetLayerNum(0);
                tile.SetLayer(layer);
                tile.SetTileType(mapData["layers"][i]["data"][tile.y * layer.GetLayerWidth() + tile.x].AsInt);
                tileObject.GetComponent <SpriteRenderer>().enabled = false;

                tileObject.tag = "non_Tile";
                tile.SetNonTile(true);

                tileObject.transform.position = new Vector3(tileDatas[i].position.x, tileDatas[i].position.y, tileDatas[i].position.z);
                layer.AddTile(tile.x, tile.y, tileObject);
            }
        }
    }
Example #12
0
 public GameObject GenerateMapFromSave(string path, GameSavedata savedata)  //맵 생성
 {
     LoadMapDataFromSave(path);
     CreateMapFromSave(savedata);
     return(tileMap_Object);
 }