Beispiel #1
0
        public virtual void ShowPlayer(Vector3 pos)
        {
            ResumeControl();
            gameObject.SetActive(true);
            transform.position = pos;

            Health.invincible = false;
            Health.dead       = false;
            Health.health     = (int)QMhelper.GetMaxHpVal();
            QMhelper.SetCurrentHp(Health.health);

            if (CurrWeapon == null)
            {
                return;
            }

            if (CurrWeapon.weaponData is GunInfo info)
            {
                // TODO: 重生子弹
                info.clipCapacity    = 100;
                info.remainingBullet = 500;

                EventCenter.Broadcast(EventManager.EventType.UpdateAmmo, info.clipCapacity,
                                      info.remainingBullet);
            }

            SetupWeaponIco();

            // 更新 Exp Ui
            ExpManager.Instance.AddExp(0);
            GameManager.Instance.PlayerInfo.OperateCoin(0);

            GetComponent <BoxCollider2D>().enabled = true;
        }
Beispiel #2
0
        /// <summary>
        /// 加血
        /// </summary>
        /// <param name="amount">加血值</param>
        /// <returns></returns>
        public bool TakeHeal(int amount)
        {
            if (dead || Math.Abs(health - QMhelper.GetMaxHpVal()) < 0.1f)
            {
                return(false);
            }

            health = (int)Mathf.Min(QMhelper.GetMaxHpVal(), health + amount);

            Actor.SetTakeHealth();

            return(true);
        }
Beispiel #3
0
        /// <summary>
        /// 加载玩家信息
        /// TODO:加载存档选项
        /// </summary>
        public void LoadPlayerInfo()
        {
            QMhelper.Load();

            var fileInfo = new FileInfo("Data.bin");

//            if (fileInfo.Exists)
            if (false)
            {
                Debug.Log("---------READ FROM FILE----------");
                Debug.Log("Path: " + fileInfo.Directory);

                var    formatter = new BinaryFormatter();
                Stream stream    = new FileStream("Data.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
                PlayerInfo = (PlayerInfo)formatter.Deserialize(stream);
#if UNITY_EDITOR
                Debug.Log(PlayerInfo.ToString());
#endif
            }
            else
            {
                Debug.Log("---------NEW DATA----------");

                // New skills (Common skill)
                var skillDodge = new CommonSkillDetail.Builder(SkillType.DodgeNone, 0, "DodgeNone").SetColdDownTime(0)
                                 .Build();
                var skillWpNone = new CommonSkillDetail.Builder(SkillType.WpNone, 0, "WpNone").SetColdDownTime(0)
                                  .Build();
                var skillDis = new CommonSkillDetail.Builder(SkillType.Displacement, 0, "Displacement")
                               .SetColdDownTime(0.5f).Build();

                // Data and skill order
                var skillList = new List <SkillDetail>
                {
                    new CommonSkillDetail.Builder(SkillType.FireBall, 0, "FireBall").SetColdDownTime(0.5f).Build(),
                    new CommonSkillDetail.Builder(SkillType.LightningBolt, 0, "LightningBolt").SetColdDownTime(2f)
                    .Build(),
                    skillDodge,
                    skillWpNone,
                    skillDis
                };

                // Skill-pack (All skills)
                var skillPack = new SkillPack(
                    skillDodge, skillWpNone, skillDis, skillList
                    );

                // TODO: 玩家昵称设置
                PlayerInfo = new PlayerInfo("Player", new List <WeaponData>(), skillPack);
            }

            var playerGo = Instantiate(ResourceLoader.PlayerRes, new Vector3(16.5f, -71),
                                       Quaternion.Euler(Vector3.zero));
            Player = playerGo.GetComponent <BasePlayer>();
            Player.Health.health = (int)QMhelper.GetMaxHpVal();

            QMhelper.SetupPlayer(Player.gameObject);

            ExpManager.Instance.Level = PlayerInfo.level;
            ExpManager.Instance.Exp   = PlayerInfo.exp;

            PlayerInfo.OperateCoin(0, true);

            var player = Player;

            // Init if CommonPlayer
            if (Player is CommonPlayer commonPlayer)
            {
                commonPlayer.SkillManager.Init(ref player, ref PlayerInfo.skillPack);

                foreach (var weaponRes in PlayerInfo.weapons.Select(data =>
                                                                    Resources.LoadAsync <Weapon>("Prefabs/Weapons/" + data.weaponName + "/" + data.weaponName)))
                {
                    weaponRes.completed += operation =>
                    {
                        commonPlayer.EquipWeapon((Weapon)weaponRes.asset, true);
                        Debug.Log("LoadDone");
                    };
                }
            }

            PixelCameraFollower.m_Target = Player.transform;

            // 设置小地图
            if (miniPixelCameraFollower != null)
            {
                miniPixelCameraFollower.m_Target = Player.transform;
            }

            DontDestroyOnLoad(playerGo);
        }