|
|
|
@ -49,7 +49,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag |
|
|
|
public LayerMask layerMask; |
|
|
|
|
|
|
|
[Header("鼠标检测脚本")] |
|
|
|
public CardOnMouseEnter cardOnMouseEnter; |
|
|
|
public CardOnMouseEnter cardOnMouseEnter; |
|
|
|
|
|
|
|
void Start() |
|
|
|
{ |
|
|
|
@ -82,47 +82,51 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
switch (dragState) |
|
|
|
if (GameManager.Instance.onDraw ==false ) |
|
|
|
{ |
|
|
|
case CardDragState.onBeginDrag: |
|
|
|
if(choosed ==false ) |
|
|
|
{ |
|
|
|
TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.useCard; |
|
|
|
CardChoose(eventData); |
|
|
|
dragState = CardDragState.onDrag; |
|
|
|
} |
|
|
|
break; |
|
|
|
case CardDragState.onDrag: |
|
|
|
CardFollow(); |
|
|
|
if (Mouse.current.leftButton.wasReleasedThisFrame && ready) |
|
|
|
{ |
|
|
|
dragState = CardDragState.onEndDrag; |
|
|
|
} |
|
|
|
break; |
|
|
|
case CardDragState.onEndDrag: |
|
|
|
TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.none; |
|
|
|
CardUse(); |
|
|
|
break; |
|
|
|
case CardDragState.noDrag: |
|
|
|
if (Mouse.current.leftButton.wasReleasedThisFrame && GameManager.Instance.onDrag == false) |
|
|
|
{ |
|
|
|
eventData.position = Mouse.current.position.value; |
|
|
|
|
|
|
|
eventSystem.RaycastAll(eventData, result); |
|
|
|
if (result.Count > 0) |
|
|
|
switch (dragState) |
|
|
|
{ |
|
|
|
case CardDragState.onBeginDrag: |
|
|
|
if (choosed == false) |
|
|
|
{ |
|
|
|
TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.useCard; |
|
|
|
CardChoose(eventData); |
|
|
|
dragState = CardDragState.onDrag; |
|
|
|
} |
|
|
|
break; |
|
|
|
case CardDragState.onDrag: |
|
|
|
CardFollow(); |
|
|
|
if (Mouse.current.leftButton.wasReleasedThisFrame && ready) |
|
|
|
{ |
|
|
|
Debug.Log(result[0].gameObject.name); |
|
|
|
if (result[0].gameObject == this.gameObject) |
|
|
|
dragState = CardDragState.onEndDrag; |
|
|
|
} |
|
|
|
break; |
|
|
|
case CardDragState.onEndDrag: |
|
|
|
TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.none; |
|
|
|
CardUse(); |
|
|
|
break; |
|
|
|
case CardDragState.noDrag: |
|
|
|
if (Mouse.current.leftButton.wasReleasedThisFrame && GameManager.Instance.onDrag == false) |
|
|
|
{ |
|
|
|
eventData.position = Mouse.current.position.value; |
|
|
|
|
|
|
|
eventSystem.RaycastAll(eventData, result); |
|
|
|
if (result.Count > 0) |
|
|
|
{ |
|
|
|
dragState = CardDragState.onBeginDrag; |
|
|
|
GameManager.Instance.onDrag = true; |
|
|
|
Debug.Log(result[0].gameObject.name); |
|
|
|
if (result[0].gameObject == this.gameObject) |
|
|
|
{ |
|
|
|
dragState = CardDragState.onBeginDrag; |
|
|
|
GameManager.Instance.onDrag = true; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@ -143,8 +147,9 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag |
|
|
|
GetComponent<CanvasGroup>().blocksRaycasts = false; |
|
|
|
originalpoint = this.transform.localPosition; |
|
|
|
|
|
|
|
transform.SetParent(transform.parent.parent); |
|
|
|
transform.position = eventData.position; |
|
|
|
transform.SetParent(transform.parent.parent); |
|
|
|
transform.localPosition = cardOnMouseEnter.originPoint; |
|
|
|
|
|
|
|
GetComponent<RectTransform>().localScale = cardOnMouseEnter.targetScale; |
|
|
|
|
|
|
|
//根据卡牌数据决定是否调用曲线
|
|
|
|
@ -172,7 +177,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag |
|
|
|
eventData.position = Mouse.current.position.value; |
|
|
|
|
|
|
|
eventSystem.RaycastAll(eventData, result); |
|
|
|
Debug.Log(result[0].gameObject.name); |
|
|
|
// Debug.Log(result[0].gameObject.name);
|
|
|
|
if (result.Count > 0) |
|
|
|
{ |
|
|
|
if(result[0].gameObject.name == "TotalPanel") |
|
|
|
@ -181,9 +186,10 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag |
|
|
|
{ |
|
|
|
ready = true; |
|
|
|
} |
|
|
|
transform.position = cardOnMouseEnter.originPoint; |
|
|
|
transform.localPosition = cardOnMouseEnter.originPoint; |
|
|
|
if (cardEntity.cardOriginalData.CastingRange != 0) |
|
|
|
{ |
|
|
|
Debug.Log("12123123"); |
|
|
|
ainPanleWork(eventData); |
|
|
|
} |
|
|
|
else |
|
|
|
@ -199,28 +205,17 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
transform.position = eventData.position; |
|
|
|
// Debug.Log(transform.position);
|
|
|
|
// Debug.Log(eventData.position);
|
|
|
|
// transform.position = eventData.position;
|
|
|
|
Vector3 eventDataWorld = CardActiveSort.Instance.ScreenPointToWorldPoint(eventData.position, 10f); |
|
|
|
transform.position = eventDataWorld; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
// if (eventData.pointerCurrentRaycast.gameObject.name == )
|
|
|
|
// {
|
|
|
|
// follow = false;
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// follow = true;
|
|
|
|
// }
|
|
|
|
// if (follow == true)
|
|
|
|
// {
|
|
|
|
// transform.position = eventData.position;
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// transform.position = CardActiveSort.Instance.preparePoint.transform.position;
|
|
|
|
// }
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//卡牌释放
|
|
|
|
@ -352,7 +347,8 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag |
|
|
|
transform.SetParent(originalParent); |
|
|
|
GetComponent<CanvasGroup>().blocksRaycasts = true; |
|
|
|
transform.localScale = new Vector3(1f, 1f, 1f); |
|
|
|
|
|
|
|
|
|
|
|
CardActiveSort.Instance.ReflashCardPoint(); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
@ -375,41 +371,40 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag |
|
|
|
{ |
|
|
|
//射线检测瞄准的地图节点,判断是否可放置和改变放置影响区
|
|
|
|
Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.value); |
|
|
|
if (eventData.pointerCurrentRaycast.gameObject != null) |
|
|
|
Debug.Log(Mouse.current.position.value); |
|
|
|
if (Physics.Raycast(ray, out RaycastHit raycastHit, 500, layerMask.value)) |
|
|
|
{ |
|
|
|
if (Physics.Raycast(ray, out RaycastHit raycastHit, 500, layerMask.value)) |
|
|
|
Debug.Log(raycastHit.collider.gameObject.name); |
|
|
|
//检测到跟上次瞄准地方不同,更新
|
|
|
|
if (currentNode == null || raycastHit.collider.transform.gameObject != currentNode.gameObject) |
|
|
|
{ |
|
|
|
// Debug.Log(raycastHit.collider.gameObject.name);
|
|
|
|
//检测到跟上次瞄准地方不同,更新
|
|
|
|
if (currentNode == null || raycastHit.collider.transform.gameObject != currentNode.gameObject) |
|
|
|
foreach (MapUnity mapUnity in cardEntity.influencePreviewPool) |
|
|
|
{ |
|
|
|
foreach (MapUnity mapUnity in cardEntity.influencePreviewPool) |
|
|
|
{ |
|
|
|
mapUnity.influenced = false; |
|
|
|
} |
|
|
|
cardEntity.influencePreviewPool.Clear(); |
|
|
|
currentNode = raycastHit.collider.transform.GetComponent<MapUnity>(); |
|
|
|
mapUnity.influenced = false; |
|
|
|
} |
|
|
|
cardEntity.influencePreviewPool.Clear(); |
|
|
|
currentNode = raycastHit.collider.transform.GetComponent<MapUnity>(); |
|
|
|
|
|
|
|
//重新调用范围预览
|
|
|
|
//GameManager.Instance.player.StepPreviewInfluencedNode(cardEntity.cardOriginalData.CastingRange);
|
|
|
|
setCastingRangePreview(cardEntity.cardOriginalData.EffectRange); |
|
|
|
//预览影响范围
|
|
|
|
if (currentNode.influenced) |
|
|
|
{ |
|
|
|
//根据卡牌属性改变影响池
|
|
|
|
//重新调用范围预览
|
|
|
|
//GameManager.Instance.player.StepPreviewInfluencedNode(cardEntity.cardOriginalData.CastingRange);
|
|
|
|
setCastingRangePreview(cardEntity.cardOriginalData.EffectRange); |
|
|
|
//预览影响范围
|
|
|
|
if (currentNode.influenced) |
|
|
|
{ |
|
|
|
//根据卡牌属性改变影响池
|
|
|
|
|
|
|
|
Vector3 face = currentNode.transform.position - GameManager.Instance.playerOn.transform.position; |
|
|
|
float euler = Vector3.SignedAngle(-GameManager.Instance.playerOn.transform.forward, face, GameManager.Instance.playerOn.transform.up) + 180; |
|
|
|
setEffectRangePreview(cardEntity.cardOriginalData.EffectRange, euler, currentNode); |
|
|
|
//influencePreviewPool.Add(currentNode);
|
|
|
|
Vector3 face = currentNode.transform.position - GameManager.Instance.playerOn.transform.position; |
|
|
|
float euler = Vector3.SignedAngle(-GameManager.Instance.playerOn.transform.forward, face, GameManager.Instance.playerOn.transform.up) + 180; |
|
|
|
setEffectRangePreview(cardEntity.cardOriginalData.EffectRange, euler, currentNode); |
|
|
|
//influencePreviewPool.Add(currentNode);
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private void setCastingRangePreview(string effectRange) |
|
|
|
|