Beispiel #1
0
    //读档时调用的函数//
    public void Load(int current)
    {
        string gameDataFile = GetDataPath() + "/" + dataFileName + current.ToString() + ".sav";

        if (xs.hasFile(gameDataFile))
        {
            string   dataString      = xs.LoadXML(gameDataFile);
            GameData gameDataFromXML = xs.DeserializeObject(dataString, typeof(GameData)) as GameData;

            //是合法存档//
            if (gameDataFromXML.key == gameData.key)
            {
                gameData = gameDataFromXML;
                PlayerPrefs.SetString("LastScene", gameData.Position);
                PlayerPrefs.SetInt("Crystal", gameData.crystal);
                PlayerPrefs.SetString("Plot", gameData.plot);
                PlayerPrefs.SetInt("Fairy", gameData.fairy);
                SceneManager.LoadScene("CrossRoad");
            }
            //是非法拷贝存档//
            else
            {
                Debug.Log("save file broken");
                //留空:游戏启动后数据清零,存档后作弊档被自动覆盖//
            }
        }
    }
Beispiel #2
0
    public void Load()                                                                                          //读档时调用的函数
    {
        string gameDataFile = GetDataPath() + "/" + dataFileName;

        if (xs.hasFile(gameDataFile))                                                           //存档文件存在
        {
            //print("have data");
            string   dataString      = xs.LoadXML(gameDataFile);
            GameData gameDataFromXML = xs.DeserializeObject(dataString, typeof(GameData)) as GameData;

            if (gameDataFromXML.key == gameData.key)                                    //是合法存档
            {
                gameData = gameDataFromXML;
                //print("gameData.HeroLifeNum :" + gameData.HeroLifeNum);
            }
            else                                                                                                        //是非法拷贝存档
            {
                //留空:游戏启动后数据清零,存档后作弊档被自动覆盖
            }
        }
        else                                                                                            //存档文件不存在
        {
            if (gameData != null)                                                                       //当前有数据
            {
                Save();                                                                                 //新建存档文件
            }
        }
    }
    private void LoadFromFile()
    {
        string gameDataFile = GetDataPath() + "/" + dataFileName;

        if (xmlSaver.hasFile(gameDataFile))
        {
            string   dataString      = xmlSaver.LoadXML(gameDataFile);
            GameData gameDataFromXML = xmlSaver.DeserializeObject(dataString, typeof(GameData)) as GameData;

            if (gameDataFromXML.Key == gameData.Key)
            {
                gameData = gameDataFromXML;
            }
            else
            {
            }
        }
        else
        {
            if (gameData != null)
            {
                Save();
            }
        }
    }
Beispiel #4
0
    //读档时调用的函数//
    public void Load()
    {
        string gameDataFile = GetDataPath() + "/" + dataFileName;

        if (xs.hasFile(gameDataFile))
        {
            string   dataString      = xs.LoadXML(gameDataFile);
            GameData gameDataFromXML = xs.DeserializeObject(dataString, typeof(GameData)) as GameData;

            //是合法存档//
            if (gameDataFromXML.key == gameData.key)
            {
                gameData = gameDataFromXML;
            }
            //是非法拷贝存档//
            else
            {
                //留空:游戏启动后数据清零,存档后作弊档被自动覆盖//
            }
        }
        else
        {
            if (gameData != null)
            {
                Save();
            }
        }
    }
Beispiel #5
0
        //读档时调用的函数,游戏开始时Player自动读档,如果没有存档那么自动创建
        public void Load(IPlayer currentPlayer)
        {
            if (currentPlayer == null)
            {
                Debug.LogError("没有Player,无法读档");
                return;
            }
            // File
            string gameDataFile = GetDataPath() + "/" + dataFileName;

            if (gameData != null)
            {
                Debug.Log("直接从运行时存档读取数据");
            }
            else if (xs.hasFile(gameDataFile))
            {
                string   dataString      = xs.LoadXML(gameDataFile);
                GameData gameDataFromXML = xs.DeserializeObject(dataString, typeof(GameData)) as GameData;

                //是合法存档
                if (gameDataFromXML != null && gameDataFromXML.key == SystemInfo.deviceUniqueIdentifier)
                {
                    //将存档赋给当前实例
                    Debug.Log("已读取存档");
                    gameData = gameDataFromXML;
                }
                else
                {
                    gameData = new GameData(); // 创建初始存档
                    Debug.Log("非法存档,重新创建新存档");
                    //将存档写入XML文件
                    dataString = xs.SerializeObject(gameData, typeof(GameData));
                    xs.CreateXML(gameDataFile, dataString);
                }
            }
            else
            {
                gameData = new GameData(); // 创建初始存档
                Debug.Log("创建新存档于" + gameDataFile);
                //将存档写入XML文件
                string dataString = xs.SerializeObject(gameData, typeof(GameData));
                xs.CreateXML(gameDataFile, dataString);
            }
            // LoadData值类型
            currentPlayer.Name       = gameData.Name;
            currentPlayer.Rank       = gameData.Rank;
            currentPlayer.Gold       = gameData.Gold;
            currentPlayer.MedicineID = gameData.MedicineID;
            currentPlayer.CanAttack2 = gameData.CanAttack2;
            currentPlayer.CanAttack3 = gameData.CanAttack3;
            currentPlayer.CanAvoid   = gameData.CanAvoid;
            currentPlayer.CanDush    = gameData.CanDush;
            // 引用类型
            currentPlayer.PropNum   = gameData.PropNum;
            currentPlayer.Fit       = gameData.Fit;
            currentPlayer.HasProp   = gameData.HasProp;
            currentPlayer.TasksData = gameData.TasksData;
            currentPlayer.PlayerMedi.FitEquip();
        }
    public void Load()
    {
        string gameDataFile = "Save/systemsave.sav";

        if (!xs.hasFile(gameDataFile))
        {
            Create();
        }
        {
            string     dataString      = xs.LoadXML(gameDataFile);
            SystemData gameDataFromXML = xs.DeserializeObject(dataString, typeof(SystemData)) as SystemData;

            systemdata = gameDataFromXML;
            //Debug.Log(systemdata.character[0]);
        }
    }
Beispiel #7
0
        //读档时调用的函数,游戏开始时Player自动读档,如果没有存档那么自动创建//
        public void Load(IPlayer currentPlayer)
        {
            if (currentPlayer == null)
            {
                Debug.LogError("没有Player,无法读档");
                return;
            }
            // File
            string gameDataFile = GetDataPath() + "/" + dataFileName;

            if (gameData != null)
            {
                Debug.Log("直接从运行时存档读取数据");
            }
            else if (xs.hasFile(gameDataFile))
            {
                string   dataString      = xs.LoadXML(gameDataFile);
                GameData gameDataFromXML = xs.DeserializeObject(dataString, typeof(GameData)) as GameData;

                //是合法存档//
                if (gameDataFromXML != null && gameDataFromXML.key == SystemInfo.deviceUniqueIdentifier)
                {
                    //将存档赋给当前实例
                    Debug.Log("已读取存档");
                    gameData = gameDataFromXML;
                }
                else
                {
                    gameData = new GameData(); // 创建初始存档
                    Debug.Log("非法存档,重新创建新存档");
                    //将存档写入XML文件
                    dataString = xs.SerializeObject(gameData, typeof(GameData));
                    xs.CreateXML(gameDataFile, dataString);
                }
            }
            else
            {
                gameData = new GameData(); // 创建初始存档
                Debug.Log("创建新存档于" + gameDataFile);
                //将存档写入XML文件
                string dataString = xs.SerializeObject(gameData, typeof(GameData));
                xs.CreateXML(gameDataFile, dataString);
            }
            // TODO:这里读取数据
            // 如currentPlayer.Name = gameData.Name;
        }
Beispiel #8
0
    //读档时调用的函数//
    public static SaveAble Load(System.Type type)
    {
        string gameDataFile = Utils.GetDataPath() + "/" + type.Name + ".xml";

        if (xs.hasFile(gameDataFile))
        {
            try
            {
                string dataString = xs.LoadXML(gameDataFile);

                object   gameDataFromXML = xs.DeserializeObject(dataString, type);
                SaveAble sa = (SaveAble)gameDataFromXML;
                if (null != sa && sa.key == GDM.UKey)
                {
                    //是合法存档//
                    SaveAble t = (SaveAble)sa;
                    Debug.Log("读档成功......");
                    return(t);
                }
                else
                {
                    //是非法拷贝存档//
                    string fileKey = "";
                    if (null != sa)
                    {
                        fileKey = sa.key;
                    }
                    Debug.Log("不是本设备的存档!存档清除:key=" + GDM.UKey + "; FileKey=" + fileKey + "; File:" + type.Name);
                    //留空:游戏启动后数据清零,存档后作弊档被自动覆盖//
                }
            } catch (System.Exception e)
            {
                Debug.Log("存档Load出错!存档清除:key=" + GDM.UKey + "; File:" + type.Name);
                Debug.Log("e.Message: " + e.Message);
            }
        }

        return(null);
    }
        //读档时调用的函数,游戏开始时Player自动读档,如果没有存档那么自动创建//
        public GameData Load()
        {
            string gameDataFile = GetDataPath() + "/" + dataFileName;

            if (xs.hasFile(gameDataFile))
            {
                string   dataString      = xs.LoadXML(gameDataFile);
                GameData gameDataFromXML = xs.DeserializeObject(dataString, typeof(GameData)) as GameData;

                //是合法存档//
                if (gameDataFromXML.key == SystemInfo.deviceUniqueIdentifier)
                {//将存档赋给当前实例
                    Debug.Log("已读取存档");
                    gameData = gameDataFromXML;
                    return(gameData);
                }
                //是非法拷贝存档//
                //留空:游戏启动后数据清零,存档后作弊档被自动覆盖//
            }

            gameData = new GameData();     // 创建初始存档
            Save();
            return(gameData);
        }
Beispiel #10
0
    void GridUpdate(SceneView sceneview)
    {
        Handles.BeginGUI();
        GUILayout.BeginArea(new Rect(0, 0, 1000, 640));
        // GUILayout.BeginHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("Scene Name: ", GUILayout.Width(128));
        grid.scenename = GUILayout.TextField(grid.scenename, GUILayout.Width(128));
        GUILayout.EndHorizontal();
        focus = GUILayout.Toolbar(focus, catecory, GUILayout.Width(64 * catecory.Length));

        focus_tile[focus] = GUILayout.Toolbar(focus_tile[focus], TileTextures[focus], GUILayout.Width(64 * TileTextures[focus].Length), GUILayout.Height(64));
        // GUILayout.EndHorizontal();
        GUILayout.Label("press a to add, s to save, d to load,\nwhen the scene window is activated.");

        GUILayout.EndArea();
        Handles.EndGUI();

        Event e = Event.current;

        Ray     r        = Camera.current.ScreenPointToRay(new Vector3(e.mousePosition.x, -e.mousePosition.y + Camera.current.pixelHeight));
        Vector3 mousePos = r.origin;

        if (e.isKey)
        {
            switch (e.character)
            {
            case 'a':
                string     name   = TileNames[focus][focus_tile[focus]];
                Object     loaded = Resources.Load("Prefabs\\" + catecory[focus] + "\\" + name, typeof(GameObject));
                GameObject pre    = PrefabUtility.InstantiatePrefab(loaded) as GameObject;
                pre.name = name;
                pre.tag  = catecory[focus];

                Vector3 aligned = new Vector3(Mathf.Floor(mousePos.x / grid.width) * grid.width + grid.width / 2, Mathf.Floor(mousePos.y / grid.height) * grid.height + grid.height / 2, 0);
                pre.transform.position = aligned;

                break;

            //save the map
            case 's':
                Debug.Log("save map start!");

                string path = "Level";

                //check the directory
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }

                path += "/" + grid.scenename + ".lv";

                LevelInfo levelinfo = new LevelInfo();

                GameObject[] AllGameObjects = FindObjectsOfType(typeof(GameObject)) as GameObject[];
                foreach (GameObject go in AllGameObjects)
                {
                    if (go.name == "grid" || go.name == "scenario")
                    {
                        continue;
                    }
                    if (go.name == "Main Camera")
                    {
                        levelinfo.Rooms = go.GetComponent <CameraFollow>().Rooms;
                        continue;
                    }
                    if (go.transform.parent != null)
                    {
                        continue;
                    }
                    if (go.tag == "Event")
                    {
                        EventItem ei = new EventItem();
                        ei.name = go.name;
                        ei.x    = go.transform.position.x;
                        ei.y    = go.transform.position.y;
                        if (go.name == "GotoPlot")
                        {
                            ei.arg = go.GetComponent <Plot>().plotno;
                        }
                        else if (go.name == "GotoScene")
                        {
                            ei.arg = go.GetComponent <GotoScene>().scenename;
                        }
                        levelinfo.events.Add(ei);
                    }
                    else
                    {
                        LevelItem li = new LevelItem();
                        li.tag  = go.tag;
                        li.name = go.name;
                        li.x    = go.transform.position.x;
                        li.y    = go.transform.position.y;
                        levelinfo.items.Add(li);
                    }
                }

                XmlSaver xs         = new XmlSaver();
                string   datastring = xs.SerializeObject(levelinfo, typeof(LevelInfo));
                xs.CreateXML(path, datastring);

                Debug.Log("save map success!");
                break;

            // load the map
            case 'd':
                // clear the map
                AllGameObjects = SceneManager.GetActiveScene().GetRootGameObjects();
                foreach (GameObject go in AllGameObjects)
                {
                    if (go.name == "grid" || go.name == "Main Camera" || go.name == "scenario")
                    {
                        continue;
                    }
                    if (go.transform.parent != null)
                    {
                        continue;
                    }
                    GameObject.DestroyImmediate(go);
                }
                // load the map
                xs   = new XmlSaver();
                path = "Level/" + grid.scenename + ".lv";
                if (xs.hasFile(path))
                {
                    datastring = xs.LoadXML(path);
                    levelinfo  = xs.DeserializeObject(datastring, typeof(LevelInfo)) as LevelInfo;

                    Camera.main.GetComponent <CameraFollow>().CameraMode = 0;
                    Camera.main.GetComponent <CameraFollow>().Rooms      = levelinfo.Rooms;

                    foreach (LevelItem li in levelinfo.items)
                    {
                        string tag = li.tag;
                        name = li.name;
                        float x = li.x;
                        float y = li.y;

                        loaded   = Resources.Load("Prefabs\\" + tag + "\\" + name, typeof(GameObject));
                        pre      = PrefabUtility.InstantiatePrefab(loaded) as GameObject;
                        pre.name = name;
                        pre.transform.position = new Vector3(x, y, 0);
                    }
                }
                else
                {
                    Debug.Log("the level data does not exist.");
                }
                break;
            }
        }
    }
Beispiel #11
0
    private void LoadMap(string MapName)
    {
        XmlSaver xs   = new XmlSaver();
        string   path = "Level/" + MapName + ".lv";

        if (xs.hasFile(path))
        {
            string    datastring = xs.LoadXML(path);
            LevelInfo levelinfo  = xs.DeserializeObject(datastring, typeof(LevelInfo)) as LevelInfo;

            Camera.main.GetComponent <CameraFollow>().CameraMode = 0;
            Camera.main.GetComponent <CameraFollow>().Rooms      = levelinfo.Rooms;

            foreach (LevelItem li in levelinfo.items)
            {
                string tag  = li.tag;
                string name = li.name;
                float  x    = li.x;
                float  y    = li.y;

                if (li.tag != "Player" || (li.tag == "Player" && player == null))
                {
                    GameObject pre = Resources.Load("Prefabs\\" + tag + "\\" + name, typeof(GameObject)) as GameObject;
                    if (!pre)
                    {
                        Debug.Log("tile " + name + " load failed.");
                    }

                    pre      = Instantiate(pre, new Vector3(x, y, 0), Quaternion.identity);
                    pre.name = name;
                }
                else
                {
                    player.transform.position = new Vector3(x, y, 0);
                    Camera.main.GetComponent <CameraFollow>().FindCurrentRoom();
                }
            }
            foreach (EventItem ei in levelinfo.events)
            {
                string tag  = "Event";
                string name = ei.name;
                float  x    = ei.x;
                float  y    = ei.y;

                GameObject pre = Resources.Load("Prefabs\\" + tag + "\\" + name, typeof(GameObject)) as GameObject;
                if (!pre)
                {
                    Debug.Log("tile " + name + " load failed.");
                }

                pre      = Instantiate(pre, new Vector3(x, y, 0), Quaternion.identity);
                pre.name = name;
                if (name == "GotoPlot")
                {
                    pre.GetComponent <Plot>().plotno = ei.arg;
                }
                else if (name == "GotoScene")
                {
                    pre.GetComponent <GotoScene>().scenename = ei.arg;
                }
            }
        }
        else
        {
            Debug.Log("the level data does not exist.");
        }
    }