void OnEnterTramComplete(int playerIndex)
    {
//		Debug.Log("DEBUGTIME_SPAWN_ARRIVE: "+DEBUGTIME_SPAWN_ARRIVE);

        RequestedStop rs = stopNameManager.CharArrived();

        passengerInfo[playerIndex].Show(rs.urgency * timeBetweenStops + timeBetweenStopsMargin, rs.stopName);

        if (_boardingCount < 4)
        {
            ++_boardingCount;

            //all aboard, start moving!
            if (_boardingCount == 4)
            {
                tramSpeed      = minTramSpeed;
                _updateHandler = UpdateMovingTram;
                EventManager.StartTramEvent();
            }
        }
    }
示例#2
0
    public RequestedStop CharArrived()
    {
        RequestedStop requestedStop = new RequestedStop("", UnityEngine.Random.Range(1, 4));


        //A chance of 1/6 to get the same stop as another player (if there are other players with stops...)
        bool sameAsOther = (_requestedStops.Count > 0 && UnityEngine.Random.Range(0, 6) == 0);

        if (sameAsOther)
        {
            RequestedStop rsSame = _requestedStops[UnityEngine.Random.Range(0, _requestedStops.Count)];
            requestedStop.stopName = rsSame.stopName;
            requestedStop.urgency  = rsSame.urgency;
        }
        else
        {
            //increase urgency until it is unique! (no 2 stops with the same urgency)
            bool isUnique = false;
            do
            {
                isUnique = true;
                for (int i = 0; i < _requestedStops.Count; i++)
                {
                    if (requestedStop.urgency == _requestedStops[i].urgency)
                    {
                        ++requestedStop.urgency;
                        isUnique = false;
                    }
                }
            } while (!isUnique);

            requestedStop.stopName = _stopNamesQueue.Dequeue();
            _stopNamesQueue.Enqueue(requestedStop.stopName);
            _requestedStops.Add(requestedStop);
        }
        return(requestedStop);
    }