public static void HighlightOnlyOne(StreetPoint streetPoint) { UnmarkPreviouslyHighlightedPoints(); prevHighlightedPoints.Add(streetPoint); streetPoint.IsHighlighted = true; }
void Update() { if (Input.GetMouseButtonDown(0)) { if (EventSystem.current.IsPointerOverGameObject()) { return; } RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { if (hit.transform != null) { StreetPoint targetPoint = hit.transform.parent?.GetComponent <StreetPoint>(); if (targetPoint != null && targetPoint.IsHighlighted) { Player player = this.transform.GetComponent <Player>(); GameEvents.Current.DestinationSelected(null, new MovementEventArgs(player, targetPoint)); } } } } }
public static void HighlightAccesPoints(Agent agent) { UnmarkPreviouslyHighlightedPoints(); //highlight all Points, that are accessable by the player var targets = MovementHelper.GetTargets(agent); if (targets.Count > 0) { foreach (GameObject go in targets) { StreetPoint point = go.GetComponent <StreetPoint>(); prevHighlightedPoints.Add(point); point.IsHighlighted = true; } } else { agent.Data.HasLost = true; GameEvents.Current.PlayerMoveFinished(null, new PlayerEventArgs(agent.Data)); } }
private void Current_OnDestinationSelected(object sender, MovementEventArgs e) { this.player = e.Player; this.streetPoint = e.TargetPosition; foreach (TicketButton tb in ticketButtons) { tb.SetTicketCount(this.player.GetTicketCount(tb.GetTicket())); } IStreet street = this.streetPoint.GetPathByPosition(player.Position, streetPoint.GetGameObject()); var costs = street.Costs; foreach (TicketButton tb in ticketButtons) { if (tb.gameObject.activeSelf == true && !costs.Contains(tb.GetTicket())) { tb.gameObject.SetActive(false); } } this.gameObject.SetActive(true); }
protected void MoveRandomly() { // determine street StreetPoint currentPoint = Position.GetComponent <StreetPoint>(); List <GameObject> targets = MovementHelper.GetTargets(this); if (targets.Count > 0) { int index = System.Convert.ToInt32(Random.Range(0, targets.Count)); // pay ticket IStreet street = currentPoint.GetPathByPosition(Position, targets[index]); var cost = street.ReturnTicketCost().Where(c => HasTicket(c)).ToArray(); RemoveTicket(cost[System.Convert.ToInt32(Random.Range(0, cost.Length))]); // move StartCoroutine(nameof(Move), street); } else { Data.HasLost = true; GameEvents.Current.PlayerMoveFinished(this, new PlayerEventArgs(this.Data)); } }
public MovementEventArgs(Agent player, StreetPoint point) { this.Player = player; this.TargetPosition = point; }