/// <summary>移除卡牌</summary> /// <param name="cdItm"></param> public void RemoveCard(FightPanel_CardItem cdItm) { if (mTeamCards.IndexOf(cdItm) > -1) { mTeamCards.Remove(cdItm); } if (mTeamCardsFreeQueque.IndexOf(cdItm) == -1) { mTeamCardsFreeQueque.Add(cdItm); } cdItm.gameObject.SetActive(false); }
private void OnDrop_ExpItem(GameObject obj, GameObject dragObj) { if (PVPManager.IsMyTurn || Define.TestMsg) { FightPanel_CardItem cdItm = UICardDrag.DragObject.GetComponent <FightPanel_CardItem>(); if (null != cdItm && cdItm.SerData != null && cdItm.SerData.pid > 0) { FightPanel_CardItem toItm = exp_cardItem[obj.transform]; if (toItm != cdItm) { FightProxy.Instance.SendUseCard(cdItm.SerData.index, UseType.ExpType, toItm.SerData.index); } } } }
private void OnDrog_Card(GameObject obj, GameObject go) { if (!PVPManager.IsMyTurn || Define.TestMsg) { Debug.Log("Not My Turn"); return; } FightPanel_CardItem mouseItm = DragObject.GetComponent <FightPanel_CardItem>(); FightPanel_CardItem toItm = obj.GetComponent <FightPanel_CardItem>(); if (null != mouseItm) { if (toItm != null && mouseItm.SerData != null && toItm.SerData != null) { FightProxy.Instance.SendUseCard(mouseItm.SerData.index, UseType.CardType, toItm.SerData.index); } } else { Debug.Log("No Card SerData!!!"); } }
//拖拽Updata private void GameObjectDragAndDrog() { if (mDoMoveTimer > 0) { mDoMoveTimer -= Time.deltaTime; if (mDoMoveTimer < 0) { mDoMoveTimer = 0; } } if (Input.GetMouseButtonDown(0) && target == null) { RaycastHit hitInfo; target = ReturnGameObjectDrag(out hitInfo); if (target != null) { mMouseDownTargetPos = target.transform.position; isMouseDrag = true; screenPosition = EventCamera.WorldToScreenPoint(target.transform.position); offset = target.transform.position - EventCamera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z)); //Vector3 pt = target.transform.position.Clone(); //pt.y += 1.4f; //Vector3 screenPt = PVPManager.Instance.AvatarCamera.WorldToScreenPoint(pt); //Vector3 worldPt = PVPManager.Instance.FightCamera.ScreenToWorldPoint(screenPt); Vector3 worldPt = PVPManager.Instance.FightCamera.ScreenToWorldPoint(Input.mousePosition); worldPt.z = target.transform.position.z; PVPManager.SetArrowOrgPoint(worldPt); } } if (Input.GetMouseButtonUp(0)) { PVPManager.HideArrow(); RaycastHit hitInfo; if (UICardDrag.DragObject != null) { PureMVC.Patterns.Facade.Instance.SendNotification(NotificationID.Fight_ShowExpPan, false); GameObject totarget = ReturnGameObjectDrag(out hitInfo); FightPanel_CardItem cdItm = UICardDrag.DragObject.GetComponent <FightPanel_CardItem>(); TD_Card cdCfg = null; bool haveTarget = false; if (cdItm.SerData != null) { cdCfg = CardConfig.GetItem(cdItm.SerData.cardId); FightCommonUtil.CheckCardSkillHaveTarget(cdCfg, cdItm.SerData.exp); } Vector3 pos = Main.CameraUI.ScreenToWorldPoint(Input.mousePosition); if ( (PVPManager.IsMyTurn || Define.TestMsg) && pos.y > -0.25f && !haveTarget) { UICardDrag.DragObject = null; FightProxy.Instance.SendUseCard(cdItm.SerData.index, NetProtocal.UseType.CardType, 0); } else if (null != totarget) { CardRole cdRole = PVPManager.Instance.GetCardRoleByTransform(totarget.transform); CardRole mdRole = PVPManager.Instance.GetCardRoleByTransform(target.transform); if (PVPManager.IsMyTurn || Define.TestMsg) { if (null != cdItm.SerData && cdItm.SerData.pid != 0) { if (haveTarget) { FightProxy.Instance.SendUseCard(cdItm.SerData.index, NetProtocal.UseType.MoveType, cdRole.SerData.pos); } } else { Debug.Log("Card_To_Hero No Server Data!!!"); } } else { } UICardDrag.DragObject = null; } } else if (Input.GetMouseButtonUp(0) && null != target && mDoMoveTimer == 0) { GameObject oldtarget = target; isMouseDrag = false; mDoMoveTimer = 0.5f; GameObject totarget = ReturnGameObjectDrag(out hitInfo); CardRole oldCd = PVPManager.Instance.GetCardRoleByTransform(oldtarget.transform); canDrag = false; if (null != totarget && oldtarget != totarget) { CardRole toCd = PVPManager.Instance.GetCardRoleByTransform(totarget.transform); if (Define.VSTest) { PVPManager.Instance.ChangeSlotPostion(oldCd, toCd); oldtarget.transform.DOMove(toCd.transform.position, 1f); totarget.transform.DOMove(oldCd.transform.position, 1f).OnComplete(delegate() { canDrag = true; }); } else { int moveAdd = toCd.SerData.pos - oldCd.SerData.pos; if (Mathf.Abs(moveAdd) == 1) { FightProxy.Instance.SendMove(oldCd.SerData.index, moveAdd); } } } else { oldtarget.transform.DOMove(oldCd.transform.position, 1f).OnComplete(delegate() { canDrag = true; }); } } target = null; } if (isMouseDrag && target != null) { Vector3 currentScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z); Vector3 currentScreenPt = EventCamera.ScreenToWorldPoint(currentScreenSpace); Vector3 currentPosition = currentScreenPt + offset; Vector3 oldPosition = target.transform.localPosition; if (!AllowXMove) { currentPosition.x = oldPosition.x; } if (!AllowYMove) { currentPosition.y = oldPosition.y; } if (!AllowZMove) { currentPosition.z = oldPosition.z; } //target.transform.localPosition = currentPosition; } }
private void DoEffect(EffectVO vo) { int cnt; FightPanel_CardItem cdItm; if (vo.Type == TargetType.Role) { if (vo.RoleProp == RolePropType.GameOver) { string warn = vo.Value == PlayerProxy.Instance.Info.pid ? "我方胜利" : "敌方胜利"; m_Panel.overLab.text = warn; m_Panel.overLab.gameObject.SetActive(true); } //获取额外卡牌 if (vo.RoleProp == RolePropType.ExtractCard && vo.CardItem != null) { if (vo.IsMe || Define.VSTest) { FightPanel_CardItem cdItm0 = GetCardItem(vo.IsMe); if (cdItm0 != null) { AddCard(cdItm0); cdItm0.SerData = vo.CardItem; Vector3 pos = cdItm0.transform.position.Clone(); pos.x = 1.3f; cdItm0.transform.position = pos; if (Define.NoAni) { cdItm0.transform.position = mTeamAInitPosition[cdItm0.NoShowIndex]; PVPManager.Instance.On_DoMoveNextEffect(true); } else { cdItm0.transform.DOMove(mTeamAInitPosition[cdItm0.NoShowIndex], 0.5f).OnComplete(() => { PVPManager.Instance.On_DoMoveNextEffect(true); }); } } } else { FightPanel_CardItem cdItm0 = GetCardItem(vo.IsMe); if (cdItm0 != null) { cdItm0.SerData = vo.CardItem; cdItm0.gameObject.SetActive(true); cdItm0.transform.position = mTeamBInitPosition[cdItm0.NoShowIndex]; } UpdateCardBPostion(); PVPManager.Instance.On_DoMoveNextEffect(true); } } else if (vo.IsMe && vo.RoleProp == RolePropType.CreateCard) { cdItm = mTeamCardsFreeQueque[0]; AddCard(cdItm); Vector3 pos = cdItm.transform.position.Clone(); pos.x = 1.2f; cdItm.transform.position = pos; UpdateCardAPostion(); PVPManager.Instance.On_DoNextEffect(true); } else if (!vo.IsMe && vo.RoleProp == RolePropType.CreateCard) { cdItm = GetCardItem(vo.IsMe); if (cdItm != null) { cdItm.SerData = vo.CardItem; cdItm.gameObject.SetActive(true); cdItm.transform.position = mTeamBInitPosition[cdItm.NoShowIndex]; UpdateCardBPostion(); PVPManager.Instance.On_DoNextEffect(true); } } else if (vo.IsMe && vo.RoleProp == RolePropType.RemoveCard) { cnt = mTeamCards.Count; cdItm = GetCardItem(vo.IsMe, vo.Value); Debug.LogError("Remove MyCard:" + vo.Value); if (null != cdItm) { RemoveCard(cdItm); UpdateCardAPostion(); PVPManager.Instance.On_DoNextEffect(true); } } else if (!vo.IsMe && vo.RoleProp == RolePropType.RemoveCard) { cnt = mTeamCards.Count; cdItm = GetCardItem(vo.IsMe, vo.Value); if (null != cdItm) { cdItm.gameObject.SetActive(false); UpdateCardBPostion(); PVPManager.Instance.On_DoNextEffect(true); } } else { PVPManager.Instance.On_DoNextEffect(true); } } else if (vo.Type == TargetType.Card) { if (vo.IsMe) { int ct = 0; ct = mTeamCards.Count; FightPanel_CardItem cdItm0 = GetCardItem(vo.IsMe, vo.Target.Target); if (null != cdItm0) { if (vo.CardProp == CardPropType.Exp) { cdItm0.SerData.exp = vo.Value; AddCard(cdItm0); cdItm0.UpdateDisplay(); UpdateCardAPostion(); PVPManager.Instance.On_DoNextEffect(true); } } } else { int ct = 0; ct = mTeamBCards.Count; FightPanel_CardItem cdItm1 = GetCardItem(vo.IsMe, vo.Target.Target); if (null != cdItm1) { if (vo.CardProp == CardPropType.Exp) { cdItm1.SerData.exp = vo.Value; cdItm1.gameObject.SetActive(true); cdItm1.UpdateDisplay(); UpdateCardBPostion(); PVPManager.Instance.On_DoNextEffect(true); } } } } }
protected override void OnShow(INotification notification) { Instance = this; m_Panel.overLab.gameObject.SetActive(false); m_Panel.panAddPower.gameObject.SetActive(false); UIEventListener.Get(m_Panel.backBtn.gameObject).onClick = OnClick_BackBtn; List <Transform> exps = new List <Transform> { m_Panel.addExpItem0, m_Panel.addExpItem1, m_Panel.addExpItem2, m_Panel.addExpItem3, m_Panel.addExpItem4, m_Panel.addExpItem5 }; int len = exps.Count; for (int n = 0; n < len; n++) { UIEventListener.Get(exps[n].gameObject).onDrop = OnDrop_ExpItem; UIEventListener.Get(exps[n].gameObject).onHover = OnHover_ExpItem; } List <Transform> cards = new List <Transform> { m_Panel.Card0, m_Panel.Card1, m_Panel.Card2, m_Panel.Card3, m_Panel.Card4, m_Panel.Card5, m_Panel.CardOp0, m_Panel.CardOp1, m_Panel.CardOp2, m_Panel.CardOp3, m_Panel.CardOp4, m_Panel.CardOp5 }; int cnt = cards.Count; bool haveData = null != FightProxy.Instance.RoomInfo; int fLen = 0; int sLen = 0; bool isMe = true; List <FightCardMsg> teamACardMsg = null; List <FightCardMsg> teamBCardMsg = null; mExp = new List <Transform>(); exp_cardItem = new Dictionary <Transform, FightPanel_CardItem>(); if (haveData) { isMe = FightProxy.Instance.RoomInfo.frole.pid == PlayerProxy.Instance.Info.pid; m_Panel.mynameLab.text = FightProxy.Instance.RoomInfo.frole.name; m_Panel.opnameLab.text = FightProxy.Instance.RoomInfo.srole.name; if (isMe) { teamACardMsg = FightProxy.Instance.RoomInfo.frole.cards.card; teamBCardMsg = FightProxy.Instance.RoomInfo.srole.cards.card; } else { teamACardMsg = FightProxy.Instance.RoomInfo.srole.cards.card; teamBCardMsg = FightProxy.Instance.RoomInfo.frole.cards.card; } fLen = teamACardMsg.Count; sLen = teamBCardMsg.Count; } mTeamCards = new List <FightPanel_CardItem>(); mTeamBCards = new List <FightPanel_CardItem>(); mInitTeamCards = new List <FightPanel_CardItem>(); mInitTeamBCards = new List <FightPanel_CardItem>(); mTeamCardsFreeQueque = new List <FightPanel_CardItem>(); mTeamAInitPosition = new List <Vector3>(); mTeamBInitPosition = new List <Vector3>(); for (int i = 0; i < cnt; i++) { FightPanel_CardItem cardItem = ScriptHelper.BindField(cards[i], "FightPanel_CardItem") as FightPanel_CardItem; int index = i % 6; if (Define.VSTest) { FightCardMsg tmsg = new FightCardMsg(); tmsg.index = index; cardItem.SerData = tmsg; } if (i < 6) { if (haveData && index < fLen) { mTeamCards.Add(cardItem); } if (!haveData) { mTeamCards.Add(cardItem); } mInitTeamCards.Add(cardItem); mTeamAInitPosition.Add(cardItem.transform.position); cardItem.ExpItem = exps[i].transform; mExp.Add(exps[i].transform); exp_cardItem[exps[i].transform] = cardItem; if (haveData && index >= fLen) { exps[i].gameObject.SetActive(false); } } if (index < fLen && i < 6) { if (haveData) { cardItem.SerData = teamACardMsg[i]; } } else if (index >= fLen && i < 6) { if (haveData) { mTeamCardsFreeQueque.Add(cardItem); } } else if (i >= 6) { UICardDrag dragItm = cardItem.GetComponent <UICardDrag>(); dragItm.IsCustomDrag = false; dragItm.CanClickTween = false; mTeamBInitPosition.Add(cardItem.transform.position); mInitTeamBCards.Add(cardItem); if (haveData && index < sLen) { mTeamBCards.Add(cardItem); cardItem.SerData = teamBCardMsg[index]; } if (!haveData) { mTeamBCards.Add(cardItem); } } if (haveData) { cardItem.UpdateDisplay(); } } AddExpPan_InitPosition = m_Panel.panAddPower.position; OpPan_InitPosition = m_Panel.panOpCard.position; if (Define.VSTest) { m_Panel.myTurnWarnPan.gameObject.SetActive(false); m_Panel.opTurnWarnPan.gameObject.SetActive(false); } else { m_Panel.myTurnWarnPan.gameObject.SetActive(InitIsMyAtk == -1); m_Panel.opTurnWarnPan.gameObject.SetActive(InitIsMyAtk == 1); mCountTimer = 90; string warstr = InitIsMyAtk == -1 ? "FightMyTurn" : "FightOpTurn"; m_Panel.turnLab.text = TextManager.GetUIString(warstr); m_Panel.countLab.text = mCountTimer.ToString(); m_Panel.btnTurn.gameObject.SetActive(InitIsMyAtk == -1); if (InitIsMyAtk == -1) { Tween_MyTrunWarn(); } else { Tween_OpTrunWarn(); } } UpdateArcane(); if (null != mOpenEffectList) { int eftLen = mOpenEffectList.Count; for (int ei = 0; ei < eftLen; ei++) { DoEffect(mOpenEffectList[ei]); } } TimerManager.AddTimerRepeat(mTimer_CountDown, 1f, OnTimer_CountDown); }