Esempio n. 1
0
    /*
     *     Static function that helps initializing this object without waiting for the scene
     *     that contains it to be called!
     *     It accept a savegame to be read in order to instantiate it correctly.
     */
    public static void InstanceGameHandler(SaveManager.SaveGame SaveGame)
    {
        GameObject Temp = new GameObject("GameHandler");

        Temp.AddComponent <GameHandler>();
        GameHandler.Instance.Init(SaveGame);

        /*
         * Result.PlayerScore = GameHandler.Instance.GetPlayer().GetScore();
         * Result.PlayerPosition = new SerializableVector3(GameHandler.Instance.GetPlayer().transform.position);
         * Result.EnemyPosition = new SerializableVector3[GameHandler.Instance.Enemies.Count];
         * Index = 0;
         * foreach( EnemyAI Enemy in GameHandler.Instance.Enemies ) {
         *     Result.EnemyPosition[Index] = new SerializableVector3(Enemy.transform.position);
         *
         * }
         * Result.ItemPosition = new SerializableVector3[GameHandler.Instance.Coins.Count];
         * Index = 0;
         * foreach( Coin CoinPosition in GameHandler.Instance.Coins ) {
         *     Result.ItemPosition[Index] = new SerializableVector3(CoinPosition.transform.position);
         *
         * }
         * Result.SceneName = SceneManager.GetActiveScene().name;
         */
    }
Esempio n. 2
0
    private void InitFromSaveGame(SaveManager.SaveGame SaveGame)
    {
        LoadedFromSaveGame = true;
        Skill = SaveGame.Skill;
        GetPlayer().AddScore(SaveGame.PlayerScore);
        GetPlayer().gameObject.transform.position = SaveGame.Player.Position.ToVector3();
        GetPlayer().RestoreRotation(SaveGame.Player.Rotation.ToQuaternion());
        GetPlayer().SetHealth(SaveGame.PlayerHealth);
        //
        //GetPlayer().Flip();
        //SavedPlayerTransform = SaveGame.Player;
        StartingFromSaveGame = true;

        if (Coins == null)
        {
            Coins = new List <Coin>();
        }
        ClearCoinsArray();
        for (int i = 0; i < SaveGame.ItemPosition.Length; i++)
        {
            GameObject CurrentCoin = null;
            Debug.Log("Got type: " + SaveGame.ItemPosition[i].Type);
            Type    CoinType     = Type.GetType(SaveGame.ItemPosition[i].Type);
            Vector3 CoinPosition = SaveGame.ItemPosition[i].Position.ToVector3();
            if (CoinType == typeof(GoldCoin))
            {
                CurrentCoin = Instantiate(Resources.Load("Prefabs/GoldCoin"), CoinPosition, Quaternion.identity)
                              as GameObject;
            }
            else if (CoinType == typeof(SilverCoin))
            {
                CurrentCoin = Instantiate(Resources.Load("Prefabs/SilverCoin"), CoinPosition, Quaternion.identity)
                              as GameObject;
            }
            else if (CoinType == typeof(CopperCoin))
            {
                CurrentCoin = Instantiate(Resources.Load("Prefabs/CopperCoin"), CoinPosition, Quaternion.identity)
                              as GameObject;
            }
            else
            {
                Debug.Log("Unknown type: " + CoinType.ToString());
                continue;
            }
            CurrentCoin.name = CurrentCoin.name + i;
            Coin TempCoin = CurrentCoin.GetComponent <Coin>();
            Coins.Add(TempCoin);
        }
        if (SaveGame.DoorSwitch != null && SaveGame.DoorSwitch.UnLocked)
        {
            GameObject SwitchObject = GameObject.Find(SaveGame.DoorSwitch.Name);
            if (SwitchObject != null)
            {
                DoorSwitch Switch = SwitchObject.GetComponent <DoorSwitch>();
                Switch.UnlockDoor(true);
            }
        }
    }
Esempio n. 3
0
    /*
     *      Load Scene async and instance the game handler restoring the state from a savegame.
     */
    public static IEnumerator LoadSceneAsync(SaveManager.SaveGame SavedGame)
    {
        AsyncOperation LoadLevel = SceneManager.LoadSceneAsync(SavedGame.SceneName);

        while (!LoadLevel.isDone)
        {
            yield return(null);
        }
        GameHandler.InstanceGameHandler(SavedGame);
    }