Ejemplo n.º 1
0
        public static void Save(DataPlayer dataPlayer)
        {
            BinaryFormatter formatter = new BinaryFormatter();
            string          path      = $"{Application.persistentDataPath}/{SaveName}";
            FileStream      stream    = new FileStream(path, FileMode.Create);

            formatter.Serialize(stream, Convert(dataPlayer));
            stream.Close();
        }
Ejemplo n.º 2
0
        public static DataPlayer Load(DataUnits dataUnits, DataPlayer reference)
        {
            string path = $"{Application.persistentDataPath}/{SaveName}";

            if (File.Exists(path))
            {
                Debug.Log($"Load successfully {path}");
                BinaryFormatter formatter = new BinaryFormatter();
                FileStream      stream    = new FileStream(path, FileMode.Open);
                saveFile = formatter.Deserialize(stream) as Dictionary <string, object>;
                DataPlayer data = Convert(saveFile, dataUnits, reference);

                return(data);
            }
            Debug.Log($"Save file not found in {path}");
            return(null);
        }
Ejemplo n.º 3
0
        public static DataPlayer Copy(DataPlayer data)
        {
            var newdata = (CreateInstance(typeof(DataPlayer)) as DataPlayer);

            newdata.Player          = data.Player;
            newdata.manaFlows       = data.manaFlows;
            newdata.startMaxMana    = data.startMaxMana;
            newdata.manaMax         = data.manaMax;
            newdata.upgradeMana     = data.upgradeMana;
            newdata.upgradeManaCost = data.upgradeManaCost;
            newdata.dataTower       = data.dataTower;

            newdata.playerTowers = data.playerTowers;
            newdata.squad        = data.squad;
            newdata.playerUnits  = data.playerUnits;
            newdata.side         = data.side;
            return(newdata);
        }
Ejemplo n.º 4
0
        public void OnAwake()
        {
            dataPlayer = actor.GetData <DataPlayer>();
            if (dataPlayer.Player)
            {
                gameManager = Toolbox.Get <GameManager>();
                managerUI   = Toolbox.Get <ManagerUI>();
                managerUI.pause.onClick.AddListener(OnPause);
                managerUI.OnButtonClick.Where(x => x.buttonPressed == ButtonPressed.unit).Subscribe(OnUnitButton).AddTo(actor);
                managerUI.OnButtonClick.Where(x => x.buttonPressed == ButtonPressed.mana).Subscribe(OnManaButton).AddTo(actor);

                managerUI.OnPauseClick.Subscribe(OnPauseOff).AddTo(actor);
                managerUI.endGameMenu.button.onClick.AddListener(OnEndGameContinue);

                managerUI.pauseMenu.Back.onClick.AddListener(OnPauseBack);

                managerUI.mana.maxCount = dataPlayer.manaMax = dataPlayer.startMaxMana;
                managerUI.mana.upCount  = dataPlayer.manaMax + dataPlayer.upgradeMana;
                dataPlayer.mana.Value   = 0;
            }
        }
Ejemplo n.º 5
0
        public static Dictionary <string, object> Convert(DataPlayer dataPlayer)
        {
            var data = new Dictionary <string, object>();

            var squad = new List <int>();

            foreach (var item in dataPlayer.squad)
            {
                squad.Add(dataPlayer.playerUnits.IndexOf(item));
            }

            data.Add(PlayerSquad, squad.ToArray());

            var playerUnits = new List <Stats>();

            foreach (var item in dataPlayer.playerUnits)
            {
                playerUnits.Add(item.stats);
            }

            data.Add(PlayerUnits, playerUnits.ToArray());


            var playerTowers = new List <Stats>();

            foreach (var item in dataPlayer.playerTowers)
            {
                playerTowers.Add(item.stats);
            }

            data.Add(PlayerTowers, playerTowers.ToArray());


            data.Add(PlayerActiveTower, dataPlayer.playerTowers.IndexOf(dataPlayer.dataTower));

            data.Add(Gold, dataPlayer.Gold.Value);

            return(data);
        }
Ejemplo n.º 6
0
        public void StartBattle()
        {
            if (dataPlayer)
            {
                dataPlayer = GetData <DataPlayer>();
            }


            if (dataPlayer.dataTower.prefab)
            {
                tower = dataPlayer.Tower = ManagerUnits.SpawnTower(dataPlayer.dataTower, dataPlayer);

                var spell     = tower.GetData <DataSpell>();
                var dataTower = tower.GetData <DataUnit>();
                if (dataPlayer.Player && spell && dataTower)
                {
                    var managerUi = Toolbox.Get <ManagerUI>();
                    managerUi.BattleButtonSpawn(dataPlayer);
                    managerUi.spell.StartCountdown(spell.countdown);
                    managerUi.OnButtonClick.Where(x => x.buttonPressed == ButtonPressed.spell).Subscribe(
                        delegate
                        (UICallBack uICallBack)
                    {
                        dataTower.OnSpellCast.OnNext(tower);
                    }).AddTo(this);
                }
                else if (!dataPlayer.Player)
                {
                    if (GetData <DataAi>().difficult == Difficult.normal)
                    {
                        dataPlayer.Tower.GetData <DataUnit>().OnSetDamage.Subscribe(delegate(Unit unit)
                        {
                            dataPlayer.Tower.GetData <DataUnit>().OnSpellCast.OnNext(dataPlayer.Tower);
                        }).AddTo(this);
                    }
                }
            }
        }
Ejemplo n.º 7
0
        public void OnAwake()
        {
            dataPlayer = actor.GetData <DataPlayer>();
            foreach (var item in dataPlayer.squad)
            {
                coundowns.Add(item, 0.0f);
            }

            dataPlayer.manaMax    = dataPlayer.startMaxMana;
            dataPlayer.mana.Value = 0;

            manager      = Toolbox.Get <GameManager>();
            managerUnits = Toolbox.Get <ManagerUnits>();
            if (dataPlayer.side == Side.left)
            {
                enemyUnits = managerUnits.right;
            }
            else
            {
                enemyUnits = managerUnits.left;
            }

            difficult = actor.GetData <DataAi>().difficult;

            if (difficult == Difficult.easy)
            {
                timeToAction = 5f;
            }
            else if (difficult == Difficult.normal)
            {
                timeToAction = 3f;
            }
            else
            {
                timeToAction = 0f;
            }
        }
Ejemplo n.º 8
0
 protected override void OnStart()
 {
     dataPlayer = GetData <DataPlayer>();
 }
Ejemplo n.º 9
0
        public static DataPlayer Convert(Dictionary <string, object> data, DataUnits dataUnits, DataPlayer reference)
        {
            DataPlayer dataPlayer = DataPlayer.Copy(reference);

            dataPlayer.Gold.SetValueAndForceNotify((int)data[Gold]);


            var unitStats = data[PlayerUnits] as Stats[];

            var playerUnits = new List <DataUnit>();
            int i           = 0;

            foreach (var item in dataUnits.units)
            {
                var unit = DataUnit.Copy(item);
                if (i < unitStats.Length)
                {
                    unit.stats = unitStats[i];
                }
                playerUnits.Add(unit);
                i++;
            }
            dataPlayer.playerUnits = playerUnits;



            var playerSquadNumbers = data[PlayerSquad] as int[];
            var playerSquad        = new List <DataUnit>();

            foreach (var item in playerSquadNumbers)
            {
                playerSquad.Add(playerUnits[item]);
            }
            dataPlayer.squad = playerSquad;


            var towerStats   = data[PlayerTowers] as Stats[];
            var playerTowers = new List <DataUnit>();

            i = 0;
            foreach (var item in dataUnits.towers)
            {
                var tower = DataUnit.Copy(item);

                if (i < towerStats.Length)
                {
                    tower.stats = towerStats[i];
                }
                playerTowers.Add(tower);
                i++;
            }
            dataPlayer.playerTowers = playerTowers;

            var activeTowerNumber = (int)data[PlayerActiveTower];

            if (activeTowerNumber >= 0 && playerTowers.Count > activeTowerNumber)
            {
                dataPlayer.dataTower = playerTowers[activeTowerNumber];
            }
            else
            {
                dataPlayer.dataTower = playerTowers[0];
            }

            return(dataPlayer);
        }