public void AddBuff(int buff_id) { Config cMagicBuff = ConfigPool.Load("MagicBuff"); Config cTriggerBuff = ConfigPool.Load("TriggerBuff"); Config cAuraBuff = ConfigPool.Load("AuraBuff"); if (cMagicBuff.ContainsKey(buff_id)) { MagicBuff buff = new MagicBuff(this.role, buff_id); this.magic_buff_map.Add(buff_id, buff); } else if (cTriggerBuff.ContainsKey(buff_id)) { TriggerBuff buff = new TriggerBuff(this.role, buff_id); this.trigger_buff_map.Add(buff_id, buff); } else if (cAuraBuff.ContainsKey(buff_id)) { AuraBuff buff = new AuraBuff(this.role, buff_id); this.aura_buff_map.Add(buff_id, buff); } else { Log.Debug(string.Format("Buff Id:{0} Not Exist", buff_id)); } }
void OnControllerColliderHit(ControllerColliderHit hit) { GameObject obj = hit.gameObject; switch (obj.tag) { case nameof(Tag.Buff): MagicBuff buff = obj.GetComponent <MagicBuff>(); buff.BePickUp(myIndex); break; case nameof(Tag.Ground): break; default: Debug.LogError("人物碰到:" + obj.name + "/" + obj.tag); break; } }
/// <summary> /// 解析所有帧操作指令并在本客户端复现 /// </summary> /// <param name="xieyi"></param> private void SelectFrameInfo(MessageXieYi xieyi) { byte[] tempMessageContent = xieyi.MessageContent; string messageInfo = ""; CharacterCommon member = null; BuffInfo buffInfo = null; switch ((MessageConvention)xieyi.XieYiFirstFlag) { case MessageConvention.moveDirection: ActorMoveDirection moveDir = SerializeHelper.Deserialize <ActorMoveDirection>(tempMessageContent); member = GameManager.instance.memberGroup[moveDir.userIndex]; //用上次移动操作到这次操作的时间,算出当前位置,并移动到该点 //member.transform.DOMove(SerializeHelper.BackVector(moveDir.position), DataController.FrameFixedTime); //member.SetPosition(SerializeHelper.BackVector(moveDir.position)); member.SetNetDirection(moveDir); break; case MessageConvention.rotateDirection: ActorRotateDirection rotateDir = SerializeHelper.Deserialize <ActorRotateDirection>(tempMessageContent); //判断用户 //Debug.LogError("玩家接收方向移动:" + messageInfo); member = GameManager.instance.memberGroup[rotateDir.userIndex]; member.SetNetDirection(rotateDir); break; case MessageConvention.jump: ActorJump netJump = SerializeHelper.Deserialize <ActorJump>(tempMessageContent); member = GameManager.instance.memberGroup[netJump.userIndex]; member.SetJump(); break; case MessageConvention.shootBullet: ShootInfo shootInfo = SerializeHelper.Deserialize <ShootInfo>(tempMessageContent); member = GameManager.instance.memberGroup[shootInfo.userIndex]; if (shootInfo.userIndex != DataController.instance.MyLocateIndex) //自身在收到服务器消息之前已旋转 { member.ShowBullet(shootInfo); } break; case MessageConvention.bulletInfo: BulletInfo bulletInfo = SerializeHelper.Deserialize <BulletInfo>(tempMessageContent); switch (bulletInfo.shootTag) { case ShootTag.Box: BoxManager.instance.SetBulletInfo(bulletInfo); break; case ShootTag.Character: UpdateMemberShoot(xieyi); break; case ShootTag.Wall: Debug.Log("射中Wall:" + bulletInfo.shootInfo); break; case ShootTag.Buff: Debug.LogError("Buff不算是子弹"); break; } break; case MessageConvention.createBuff: buffInfo = SerializeHelper.Deserialize <BuffInfo>(tempMessageContent); GameObject obj = PoolManager.instance.GetPoolObjByType(PreLoadType.Buff, GameManager.instance.transBuff); obj.transform.position = BoxManager.instance.GetBoxInfoByIndex(buffInfo.boxIndex).transform.position; MagicBuff buff = obj.GetComponent <MagicBuff>(); buff.Init(buffInfo); break; case MessageConvention.getBuff: buffInfo = SerializeHelper.Deserialize <BuffInfo>(tempMessageContent); BoxManager.instance.SetBuffData(buffInfo); break; } }
/// <summary> /// Replaces text and such with what would happen if the skill was upgraded /// </summary> /// <param name="allyGrim">Grimoire of the selected</param> /// <param name="previewMagicStat">The amount the magic will potentially increase</param> public void PreviewSkillUpgrade(AllyGrimoire allyGrim, int amountIncrease) { // Default values string skillName = " None"; string skillDescription = "Upgrade magic to gain a skill"; int skillDmg = 0; int skillRange = 0; int skillCooldown = 0; Sprite skillIcon = null; // For if the values were changed at all bool isSkillNameBuff = false; bool isSkillDmgBuff = false; bool isSkillRangeBuff = false; bool isSkillCooldownBuff = false; // Get the starting values for the skill AllySkillController skillContRef = allyGrim.GetComponent <AllySkillController>(); if (skillContRef != null) { Skill activeSkill = skillContRef.SpecialSkill; if (activeSkill != null) { skillName = " " + SkillHolder.GetSkillName(activeSkill.GetSkillNum()); skillDescription = SkillHolder.GetSkillDescription(activeSkill.GetSkillNum()); skillIcon = SkillHolder.GetSkillImage(activeSkill.GetSkillNum()); skillDmg = activeSkill.GetDamage(); skillRange = activeSkill.GetRange(); skillCooldown = activeSkill.GetCoolDown(); } // Iterate over the buffs for (int i = 1; i <= amountIncrease; ++i) { // Get the next buff MagicBuff nextBuff = allyGrim.PeekForward(i); switch (nextBuff) { // If the next buff is to acquire a skill, get that skill and set the defaults case (MagicBuff.SKILLACQ): // We are going to temporarily give this character the skill in question to get the starting values Skill gainSkill = _skillHolderRef.GiveSkill(skillContRef, allyGrim.SkillToGain); skillName = " " + SkillHolder.GetSkillName(allyGrim.SkillToGain); skillDescription = SkillHolder.GetSkillDescription(allyGrim.SkillToGain); skillIcon = SkillHolder.GetSkillImage(allyGrim.SkillToGain); skillDmg = gainSkill.GetDamage(); skillRange = gainSkill.GetRange(); skillCooldown = gainSkill.GetCoolDown(); isSkillNameBuff = true; isSkillDmgBuff = true; isSkillRangeBuff = true; isSkillCooldownBuff = true; // Get rid of the temporary skill Destroy(gainSkill); break; // If the next buff is just an increment, increment them case (MagicBuff.DMGINC): ++skillDmg; isSkillDmgBuff = true; break; case (MagicBuff.RANGEINC): isSkillRangeBuff = true; ++skillRange; break; case (MagicBuff.COOLLWR): isSkillCooldownBuff = true; --skillCooldown; break; default: Debug.Log("Unhandled MagicBuff in SkillPreviewController"); break; } } // Set the values _skillNameText.text = skillName; _skillDescriptionText.text = skillDescription; _skillIconImage.sprite = skillIcon; if (skillIcon == null) { _skillIconImage.color = new Color(0, 0, 0, 0); } else { _skillIconImage.color = new Color(1, 1, 1, 1); } _skillDmgText.text = skillDmg.ToString(); _skillRangeText.text = skillRange.ToString(); _skillCooldownText.text = skillCooldown.ToString(); // Set the ones that were buffed to green if (isSkillNameBuff) { _skillNameText.color = CharDetailedMenuController.UpgradeTextCol; } if (isSkillDmgBuff) { _skillDmgText.color = CharDetailedMenuController.UpgradeTextCol; } if (isSkillRangeBuff) { _skillRangeText.color = CharDetailedMenuController.UpgradeTextCol; } if (isSkillCooldownBuff) { _skillCooldownText.color = CharDetailedMenuController.UpgradeTextCol; } } }