Example #1
0
        public void Show()
        {
            var result =
                string.Format(
                    "WaitOnFountain: {0}\n" + "MoveTo: {1}\n" + "CheckPoint: {2}\n" + "Target: {3}\n" +
                    "ShouldRecall: {4}\n" + "IsUnderAttack: {5}\n" + "DamageTaken: {6}\n" + "AttackedByTurret: {7}\n" +
                    "NextItemPrice: {8}\n" + "CurrentMonster: {9}\n" + "GameState: {10}\n" + "MinionsAround: {11}\n" +
                    "SmiteableMob: {12}\n" + "InDanger: {13}\n" + "Afk: {14}\n" + "DamageCount: {15}\n", WaitOnFountain,
                    MoveTo.ToString(), LastCheckPoint.ToString(), Target == null ? "null" : Target.Name, ShouldRecall,
                    IsUnderAttack(), DamageTaken, AttackedByTurret, NextItemPrice, CurrentMonster, GameState,
                    MinionsAround, SmiteableMob == null ? "null" : SmiteableMob.Name, InDanger, afk, DamageCount);

            Console.WriteLine(result);
        }
Example #2
0
    private IEnumerator LoadGameStateHelper()
    {
        // Set our first checkpoint to the default start point
        if (_saveData == null)
        {
            LastCheckPoint = _currentLevel.DefaultStartpoint;
        }

        // Clear out player inventory
        Inventory.Clear();

        // Get the saved data
        _saveData = GameSaveState.Load(GameSaveStatePath);

        // Do nothing if we failed to load a game save
        if (_saveData == null)
        {
            _saveData = new GameSaveState();
            Checkpoint lastCheckpoint = LastCheckPoint.GetComponent <Checkpoint>();
            if (lastCheckpoint != null)
            {
                _saveData.Checkpoint = lastCheckpoint.Location;
            }
            yield break;
        }

        // Load up the correct level
        if (!string.IsNullOrEmpty(SaveData.LevelName) && !SaveData.LevelName.Equals(SceneManager.GetActiveScene().name))
        {
            Instantiate(Resources.Load("Prefabs/User Interface/Loading Screen")); // NOTE: WE DON'T USE THE OBJECT POOL, SINCE WE ONLY NEED THE 1
            SceneManager.LoadScene(SaveData.LevelName);
        }

        // Move player to his last checkpoint.
        bool checkpointFound = false;

        GameObject[] spawnPoints = GameObject.FindGameObjectsWithTag("Respawn");
        foreach (GameObject obj in spawnPoints)
        {
            Checkpoint checkpoint = obj.GetComponent <Checkpoint>();
            if (checkpoint != null && checkpoint.Location == _saveData.Checkpoint)
            {
                Player.transform.position = checkpoint.transform.position;
                LastCheckPoint            = checkpoint.transform;
                checkpointFound           = true;
                break;
            }
        }
        if (!checkpointFound)
        {
            Debug.LogWarning("Saved checkpoint not found!");
            LastCheckPoint = _currentLevel.DefaultStartpoint;
        }

        // Reload the player's items
        foreach (InventoryItem invItem in _saveData.InventoryState.ItemsHeld)
        {
            Inventory.AddItem(InventoryItemFactory.CreateFromType(invItem.Type, invItem.Quantity));
        }

        // Reload the player's weapons
        foreach (WeaponSaveState weaponSave in _saveData.InventoryState.WeaponsHeld)
        {
            string weaponName = "Prefabs/Items/Weapons/InHand/" + weaponSave.WeaponType.ToString().Substring(7);
            // NOTE: WE MAY WANT TO POOL HERE, BUT I DON'T THINK IT HAPPENS ENOUGH TO BE WORTH IT/NOT SURE IT MAKES SENSE
            GameObject createdWeapon = (GameObject)Instantiate(Resources.Load(weaponName), _currentLevel.OffscreenPosition, Quaternion.identity);
            if (createdWeapon == null)
            {
                Debug.LogWarning("Failed to load weapon: " + weaponName);
                continue;
            }
            Weapon newWeapon = createdWeapon.GetComponent <Weapon>();
            newWeapon.Quantity = weaponSave.Quantity;
            Inventory.Weapons.Add(newWeapon);
        }

        // Display the correct weapon
        for (int i = 0; i < Inventory.Items.Count; i++)
        {
            if (UI.CurrentWeapon == _saveData.InventoryState.CurrentWeapon)
            {
                break;
            }
            UI.CycleToNextWeapon();
        }
        UI.RefreshWeaponWheel();

        yield return(null);
    }