コード例 #1
0
        /// <summary>
        /// 场景加载完成回调
        /// </summary>
        /// <param name="scene">加载完成的场景</param>
        /// <param name="arg1">加载模式</param>
        private void OnSceneLoaded(Scene scene, LoadSceneMode arg1)
        {
            if (SceneUtil.IsGameScene(scene.name))
            {
                UiManager.Instance.ShowSceneNameOnUi(scene.name);

                QMhelper.SetActive(true);

                Player.ShowPlayer(Vector3.zero);

                if (PixelCameraFollower != null)
                {
                    PixelCameraFollower.m_Target = Player.transform;
                    return;
                }

                if (miniPixelCameraFollower != null)
                {
                    miniPixelCameraFollower.m_Target = Player.transform;
                    return;
                }
            }
            else
            {
                Player.HidePlayer();
                QMhelper.SetActive(false);
            }
        }
コード例 #2
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;
        }
コード例 #3
0
ファイル: Health.cs プロジェクト: SeiChuu/PixelGame-Public
        /// <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);
        }
コード例 #4
0
        /// <summary>
        /// 设置收到打击动画
        /// </summary>
        public override void SetTakeHit(int amount)
        {
            if (Fsm.State != States.Normal)
            {
                return;
            }
            base.SetTakeHit(amount);

            //TODO: 被打动画
//            if (!animator.GetCurrentAnimatorStateInfo(0).IsName("TakeHit")) animator.Play("TakeHit");

            QMhelper.SetCurrentHp(Health.health);
            if (CameraShaker.Instance != null)
            {
                CameraShaker.InitShake(0.075f, 2f);
            }
        }
コード例 #5
0
        /// <summary>
        /// 添加 <see cref="SkillPack"/> 的支持
        /// </summary>
        public void SavePlayerInfo()
        {
            Debug.Log("---------SAVE TO FILE----------");

            PlayerInfo.weapons.Clear();
            foreach (var weapon in Player.WeaponBag)
            {
                PlayerInfo.weapons.Add(weapon.weaponData);
            }

            PlayerInfo.exp   = ExpManager.Instance.Exp;
            PlayerInfo.level = ExpManager.Instance.Level;
            PlayerInfo.score = ScoreManager.Instance.Score;

            var    formatter = new BinaryFormatter();
            Stream stream    = new FileStream("Data.bin", FileMode.Create, FileAccess.Write, FileShare.None);

            formatter.Serialize(stream, PlayerInfo);
            stream.Close();

            QMhelper.Save();

            new Notification.Builder("Game Data", "Game data has been saved.").Show();
        }
コード例 #6
0
        private void Awake()
        {
            Instance = this;
            EventCenter.AddListener <int, int>(EventManager.EventType.UpdateAmmo, SetAmmoInfo);
            EventCenter.AddListener <Song>(EventManager.EventType.SetUpMusicInfo, UpdateMusicName);
            EventCenter.AddListener <int>(EventManager.EventType.UpdateHits, UpdateHits);
            EventCenter.AddListener <int>(EventManager.EventType.UpdateCoin, UpdateCoin);
            EventCenter.AddListener <ExpManager.LevelDataPack>(EventManager.EventType.UpdateLevel, UpdateLevel);

            _hitCanvasGroup = hitInfo.GetComponent <CanvasGroup>();
            _hitsAnimator   = hitInfo.GetComponent <Animator>();

            var scale = GetComponent <CanvasScaler>();

            var sws = Screen.width / scale.referenceResolution.x;
            var shs = Screen.height / scale.referenceResolution.y;

            scale.matchWidthOrHeight = sws > shs ? 1 : 0;

            _pauseButtonCanvasGroup = pauseButton.GetComponent <CanvasGroup>();

            QMhelper.SetupCoinText(coinText);
            QMhelper.SetupHpText(hpText);
        }
コード例 #7
0
        // 加血
        public override void SetTakeHealth()
        {
//            HealthBar.SetHearts(Health.health);
            QMhelper.SetCurrentHp(Health.health);
        }
コード例 #8
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);
        }
コード例 #9
0
 /// <summary>
 /// 加血
 /// </summary>
 public override void SetTakeHealth()
 {
     QMhelper.SetCurrentHp(Health.health);
 }