public void LoadGame()
    {
        this.Clear();

        Instantiate(PlayerGameObjectReference, Vector3.zero, new Quaternion(0, 0, 0, 0));

        //Check if there is a save game.
        if (!File.Exists("OPS_Complex_Save_Load.ser"))
        {
            UnityEngine.Debug.LogError("OPS_Complex_Save_Load.ser does not exits. Please use first save!");
        }

        //Load save game.
        FileStream stream    = new FileStream("OPS_Complex_Save_Load.ser", FileMode.Open);
        Stopwatch  stopwatch = new Stopwatch();

        stopwatch.Start();

        //Deserialize
        SaveMetaData saveMetaData = OPS.Serialization.IO.Serializer.DeSerializeFromStream <SaveMetaData>(stream);

        //Load
        this.OnLoad(saveMetaData);

        stopwatch.Stop();
        stream.Close();

        UnityEngine.Debug.Log("Loaded Game: ElapsedMilliseconds: " + stopwatch.ElapsedMilliseconds);
    }
    public override void OnLoad(SaveMetaData _SaveMetaData)
    {
        base.OnLoad(_SaveMetaData);

        this.Direction = _SaveMetaData.GetNextVector3();
        this.liveTime  = _SaveMetaData.GetNextFloat();
    }
    public override void OnSave(SaveMetaData _SaveMetaData)
    {
        base.OnSave(_SaveMetaData);

        _SaveMetaData.Add(this.Direction);
        _SaveMetaData.Add(this.liveTime);
    }
    public SaveMetaData GetNextChild()
    {
        SaveMetaData var_Result = this.childList[this.childIndex];

        this.childIndex += 1;
        return(var_Result);
    }
 public void AddChild(SaveMetaData _SaveMetaData)
 {
     if (_SaveMetaData == null)
     {
         return;
     }
     this.childList.Add(_SaveMetaData);
 }
示例#6
0
    public override void OnLoad(SaveMetaData _SaveMetaData)
    {
        base.OnLoad(_SaveMetaData);

        this.live = _SaveMetaData.GetNextFloat();
        if (this.live <= 0)
        {
            this.Die();
        }
    }
    public void SaveGame()
    {
        //Create save game file.
        FileStream stream    = new FileStream("OPS_Complex_Save_Load.ser", FileMode.Create);
        Stopwatch  stopwatch = new Stopwatch();

        stopwatch.Start();

        //Create new SaveMetaData.
        SaveMetaData saveMetaData = new SaveMetaData();

        //Save game.
        this.OnSave(saveMetaData);

        //Serialize
        OPS.Serialization.IO.Serializer.SerializeToStream(stream, saveMetaData);

        stopwatch.Stop();
        stream.Close();

        UnityEngine.Debug.Log("Saved Game: ElapsedMilliseconds: " + stopwatch.ElapsedMilliseconds);
    }
    /// <summary>
    /// Loads the Player.
    /// Instantiates and loads the enemies.
    /// Instantiates and loads the projectiles.
    /// </summary>
    /// <param name="_SaveMetaData"></param>
    public void OnLoad(SaveMetaData _SaveMetaData)
    {
        //Load Player
        bool playerDataSaved = _SaveMetaData.GetNextBool();

        if (playerDataSaved)
        {
            //Load extra SaveMetaData for player data;
            SaveMetaData playerSaveMetaData = _SaveMetaData.GetNextChild();

            //Load player data
            Player.OnLoad(playerSaveMetaData);
        }

        //Load Enemy
        bool enemyDataSaved = _SaveMetaData.GetNextBool();

        if (enemyDataSaved)
        {
            int enemyCount = _SaveMetaData.GetNextInt();

            for (int i = 0; i < enemyCount; i++)
            {
                bool isNull = _SaveMetaData.GetNextBool();
                if (isNull)
                {
                    continue;
                }

                //Instantiate new enemy
                Enemy enemy = Instantiate(EnemyGameObjectReference, Vector3.zero, new Quaternion(0, 0, 0, 0)).GetComponent <Enemy>();

                //Load extra SaveMetaData for enemy data;
                SaveMetaData enemySaveMetaData = _SaveMetaData.GetNextChild();
                enemy.OnLoad(enemySaveMetaData);

                //Add to enemy list.
                EnemyList.Add(enemy);
            }
        }

        //Load Projectile
        bool projectileDataSaved = _SaveMetaData.GetNextBool();

        if (projectileDataSaved)
        {
            int projectileCount = _SaveMetaData.GetNextInt();

            for (int i = 0; i < projectileCount; i++)
            {
                bool isNull = _SaveMetaData.GetNextBool();
                if (isNull)
                {
                    continue;
                }

                //Instantiate new projectile
                Projectile projectile = Instantiate(ProjectileReference, Vector3.zero, new Quaternion(0, 0, 0, 0)).GetComponent <Projectile>();

                //Load extra SaveMetaData for projectile data;
                SaveMetaData projectileSaveMetaData = _SaveMetaData.GetNextChild();
                projectile.OnLoad(projectileSaveMetaData);

                //Add to projectile list.
                ProjectileList.Add(projectile);
            }
        }
    }
    /// <summary>
    /// Saves the Player.
    /// Iterates through all Enemies and saves them.
    /// Iterates through all Projectiles and saves them.
    /// </summary>
    /// <param name="_SaveMetaData"></param>
    public void OnSave(SaveMetaData _SaveMetaData)
    {
        //Save Player
        if (Player == null)
        {
            _SaveMetaData.Add(false);
        }
        else
        {
            _SaveMetaData.Add(true);

            //Save player data in extra SaveMetaData.
            SaveMetaData playerSaveMetaData = new SaveMetaData();
            Player.OnSave(playerSaveMetaData);

            //Store the playerSaveMetaData as child in the whole SaveMetaData.
            _SaveMetaData.AddChild(playerSaveMetaData);
        }

        //Save Enemy
        if (EnemyList == null)
        {
            _SaveMetaData.Add(false);
        }
        else
        {
            _SaveMetaData.Add(true);

            //Save enemy count.
            _SaveMetaData.Add(EnemyList.Count);

            for (int i = 0; i < EnemyList.Count; i++)
            {
                _SaveMetaData.Add(EnemyList[i] == null);

                if (EnemyList[i] == null)
                {
                    continue;
                }

                //Save enemy data in extra SaveMetaData.
                SaveMetaData enemySaveMetaData = new SaveMetaData();
                EnemyList[i].OnSave(enemySaveMetaData);

                //Store the enemySaveMetaData as child in the whole SaveMetaData.
                _SaveMetaData.AddChild(enemySaveMetaData);
            }
        }

        //Save Projectiles
        if (ProjectileList == null)
        {
            _SaveMetaData.Add(false);
        }
        else
        {
            _SaveMetaData.Add(true);

            //Save projectile count.
            _SaveMetaData.Add(ProjectileList.Count);

            for (int i = 0; i < ProjectileList.Count; i++)
            {
                _SaveMetaData.Add(ProjectileList[i] == null);

                if (ProjectileList[i] == null)
                {
                    continue;
                }

                //Save projectile data in extra SaveMetaData.
                SaveMetaData projectileSaveMetaData = new SaveMetaData();
                ProjectileList[i].OnSave(projectileSaveMetaData);

                //Store the enemySaveMetaData as child in the whole SaveMetaData.
                _SaveMetaData.AddChild(projectileSaveMetaData);
            }
        }
    }
示例#10
0
 public virtual void OnLoad(SaveMetaData _SaveMetaData)
 {
     this.transform.position = _SaveMetaData.GetNextVector3();
     this.transform.rotation = _SaveMetaData.GetNextQuaternion();
 }
示例#11
0
 public virtual void OnSave(SaveMetaData _SaveMetaData)
 {
     _SaveMetaData.Add(this.transform.position);
     _SaveMetaData.Add(this.transform.rotation);
 }
示例#12
0
    public override void OnSave(SaveMetaData _SaveMetaData)
    {
        base.OnSave(_SaveMetaData);

        _SaveMetaData.Add(this.live);
    }