public override bool Cast(BoardTarget target, DeckManager manager) { if (manager.energy < cost) { manager.Alert("Not enough energy!"); return(false); } if (target == null) { manager.Alert("Must target the board!"); return(false); } if (target.unit != null) { manager.Alert("Space is already occupied!"); return(false); } else { if (this.target == Target.Spawn && !Utils.Vector3InBox(manager.transform.position, manager.spawnPositionLimit, target.transform.position)) { manager.Alert("Can only be spawned on the homerow!"); return(false); } manager.energy -= cost; Instantiate(unit, target.transform.position, Quaternion.identity).Setup(manager, target); return(true); } }
public override bool Cast(BoardTarget target, DeckManager manager) { if (manager.energy < cost) { manager.Alert("Not enough energy!"); return(false); } if (target == null || target.unit == null) { manager.Alert("Invalid target!"); return(false); } if (target.unit.team == manager) { manager.Alert("Target is friendly!"); return(false); } if ((target.transform.localPosition - target.transform.parent.InverseTransformPoint(manager.transform.position)).sqrMagnitude > 1.8f) { manager.Alert("Target is too far away!"); return(false); } if (damage < 0) { target.unit.Heal(-damage); } else { target.unit.Damage(damage); } manager.AddAtRandom(this); manager.energy -= cost; return(true); }
public override bool Cast(BoardTarget target, DeckManager manager) { if (manager.energy < cost) { manager.Alert("Not enough energy!"); return(false); } if (target == null || target.unit == null) { manager.Alert("Invalid target!"); return(false); } else { if (target.unit.team == manager) { manager.Alert("Target is friendly!"); return(false); } target.unit.moveDist = Mathf.Max(1.1f, target.unit.moveDist * 0.6f); if (damage < 0) { target.unit.Heal(-damage); } else { target.unit.Damage(damage); } manager.Discard(this); manager.energy -= cost; return(true); } }
private void OnBeginDrag(PointerEventData eventData) { if (!manager.interactable || manager.energy < card.cost) { if (!manager.interactable) { manager.Alert("Not your turn!"); } else { manager.Alert("Not enough energy!"); } dragging = false; line1.enabled = false; line2.enabled = false; manager.board.Unlight(); } dragging = true; line1.enabled = true; line2.enabled = true; var pos = Utils.GetGroundIntersect(cam.ScreenPointToRay(transform.position * 1.05f), 2f); line1.SetPosition(0, pos); line1.SetPosition(1, pos); line2.SetPosition(0, pos); line2.SetPosition(1, pos); switch (card.target) { case BaseCard.Target.Empty: manager.board.Highlight((BoardTarget b) => b.unit == null); break; case BaseCard.Target.Global: manager.board.Highlight((_) => true); break; case BaseCard.Target.Enemy: manager.board.Highlight((BoardTarget b) => b.unit != null && b.unit.team != manager); break; case BaseCard.Target.Friendly: manager.board.Highlight((BoardTarget b) => b.unit?.team == manager); break; case BaseCard.Target.Spawn: manager.board.Highlight((BoardTarget b) => b.unit == null && Utils.Vector3InBox(manager.transform.position, manager.spawnPositionLimit, b.transform.position)); break; } }
public override bool Cast(BoardTarget target, DeckManager manager) { if (manager.energy < cost) { manager.Alert("Not enough energy!"); return(false); } foreach (var b in target.board.targets) { if (b.unit != null && (b.transform.localPosition - target.transform.localPosition).sqrMagnitude < radius * radius) { if (damage < 0) { b.unit.Heal(-damage); } else { b.unit.Damage(damage); } } } manager.Discard(this); manager.energy -= cost; return(true); }
public override bool Cast(BoardTarget target, DeckManager manager) { if (manager.energy < cost) { manager.Alert("Not enough energy!"); return(false); } if (discard) { var hand = manager.handTransform.GetComponentsInChildren <CardUI>(); num = hand.Length; foreach (var c in hand) { manager.Discard(c.card); Destroy(c.gameObject); } } else { manager.Discard(this); } for (int i = 0; i < num; i++) { manager.DrawToHand(); } manager.energy -= cost; return(true); }
public bool Move(BoardTarget target) { if (target == null) { return(false); } if (!team.interactable) { team.Alert("Not your unit or not your turn!"); return(false); } var sqrDist = (target.transform.localPosition - location.transform.localPosition).sqrMagnitude; if (target.unit != null) { if (target.unit.team == team) { team.Alert("Space already occupied!"); return(false); } else if (sqrDist <= attackDist * attackDist) { hasMoved = true; AttackFX(target.transform.position); if (target.unit.Damage(damage) && sqrDist <= moveDist * moveDist) { StopAllCoroutines(); StartCoroutine(Utils.LerpMoveTo(transform, target.transform.position)); if (location.unit == this) { location.unit = null; } target.unit = this; location = target; return(true); } else { return(false); } } else { team.Alert("Target is too far away!"); return(false); } } else if (sqrDist <= moveDist * moveDist) { hasMoved = true; StopAllCoroutines(); StartCoroutine(Utils.LerpMoveTo(transform, target.transform.position)); target.unit = this; if (location.unit == this) { location.unit = null; } location = target; return(true); } else { team.Alert("Cannot move that far!"); Debug.Log("dist: " + sqrDist); } return(false); }