public static void HighlightOnlyOne(StreetPoint streetPoint)
        {
            UnmarkPreviouslyHighlightedPoints();

            prevHighlightedPoints.Add(streetPoint);
            streetPoint.IsHighlighted = true;
        }
예제 #2
0
        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);
        }
예제 #5
0
        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));
            }
        }
예제 #6
0
 public MovementEventArgs(Agent player, StreetPoint point)
 {
     this.Player         = player;
     this.TargetPosition = point;
 }