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; }
/// <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); }
/// <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); }