Example #1
0
 void UpdatePassengersTravelTime()
 {
     PlayerSaveData.PassengerData passengersData = PlayerSaveData.reference.passengerData;
     foreach (PlayerSaveData.Passenger passenger in passengersData.passengers)
     {
         passenger.stationsTravelled += 1;
     }
 }
Example #2
0
    public void SimulateWaitForPassengers(float time)
    {
        int minPercent = 0;
        int maxPercent = 0;

        minPercent = communityTimeInfo.MinPercentIn;
        maxPercent = communityTimeInfo.MaxPercentIn;

        PlayerSaveData.PassengerData passengersData = PlayerSaveData.reference.passengerData;
        if (passengersData.IsFull())
        {
            return;
        }
        float waitingTime = time;

        while (true)
        {
            if (waitingTime >= passengerTickTime)
            {
                waitingTime -= passengerTickTime;

                float passengersComing = ((float)passengersData.GetMaxPassengers() * Random.Range(minPercent, maxPercent)) / 100;
                passengersCame += passengersComing;

                passengersCameShown += (int)passengersCame;

                Color color = passengersLabel.color;
                color.a = 255;
                passengersLabel.color = color;
                passengersLabel.text  = "passengers +" + passengersCameShown;

                while (passengersCame >= 1)
                {
                    passengersData.AddPassenger();
                    passengersCame -= 1;
                    if (passengersData.IsFull())
                    {
                        break;
                    }
                }
                if (passengersData.IsFull())
                {
                    break;
                }
            }
            else
            {
                return;
            }
        }
    }
Example #3
0
    public void ComeInCommunity()
    {
        int minPercent = 0;
        int maxPercent = 0;

        if (GlobalUI.reference.IsState(GlobalUI.States.Town))
        {
            minPercent = TownController.reference.passengerInfo.MinPercentOut;
            maxPercent = TownController.reference.passengerInfo.MaxPercentOut;
        }
        else if (GlobalUI.reference.IsState(GlobalUI.States.Waystation))
        {
            minPercent = WaystationController.reference.passengerInfo.MinPercentOut;
            maxPercent = WaystationController.reference.passengerInfo.MaxPercentOut;
        }
        PlayerSaveData.PassengerData passengersData = PlayerSaveData.reference.passengerData;
        UpdatePassengersTravelTime();
        RemovePassengersComingOut(((float)passengersData.GetMaxPassengers() * Random.Range(minPercent, maxPercent)) / 100);
    }
Example #4
0
    void RemovePassengersComingOut(float count)
    {
        PlayerSaveData.PassengerData passengersData = PlayerSaveData.reference.passengerData;
        passengersCameOut += count;
        int timeIncome    = 0;
        int passengersOut = 0;

        while (passengersCameOut >= 1)
        {
            if (passengersData.passengers.Count <= 0)
            {
                break;
            }
            PlayerSaveData.Passenger passengerComingOut = passengersData.GetPassenger(Random.Range(0, passengersData.passengers.Count - 1));
            float attractionMod = (float)PlayerSaveData.reference.wagonData[passengerComingOut.wagonIndex].attraction / 100;
            if (attractionMod < 0)
            {
                attractionMod = 1 / (Mathf.Abs(attractionMod) + 1);
            }
            else
            {
                attractionMod = attractionMod + 1;
            }
            AddTime((int)(basePassengerTimeIncome * attractionMod * Mathf.Pow(passengerTravelMultiplier, passengerComingOut.stationsTravelled)));

            timeIncome += (int)(basePassengerTimeIncome * attractionMod * Mathf.Pow(passengerTravelMultiplier, passengerComingOut.stationsTravelled));

            passengersData.RemovePassenger(passengerComingOut);

            passengersCameOut -= 1;
            passengersOut     += 1;
        }
        Color color = timeIncomeLabel.color;

        color.a = 255;
        timeIncomeLabel.color = color;
        timeIncomeLabel.text  = "minutes +" + timeIncome;

        color   = passengersLabel.color;
        color.a = 255;
        passengersLabel.color = color;
        passengersLabel.text  = "passengers -" + passengersOut;
    }
Example #5
0
    IEnumerator WaitForPassengers()
    {
        int minPercent = 0;
        int maxPercent = 0;

        if (GlobalUI.reference.IsState(GlobalUI.States.Town))
        {
            minPercent = TownController.reference.passengerInfo.MinPercentIn;
            maxPercent = TownController.reference.passengerInfo.MaxPercentIn;
        }
        else if (GlobalUI.reference.IsState(GlobalUI.States.Waystation))
        {
            minPercent = WaystationController.reference.passengerInfo.MinPercentIn;
            maxPercent = WaystationController.reference.passengerInfo.MaxPercentIn;
        }

        PlayerSaveData.PassengerData passengersData = PlayerSaveData.reference.passengerData;
        if (passengersData.IsFull())
        {
            ToggleWaitForPassengers();
            return(true);
        }
        float waitinGameSeconds = 0;

        while (true)
        {
            Debug.Log("waiting");
            waitinGameSeconds -= Time.unscaledDeltaTime * waitingTimeSpeedMultiplier;
            while (waitinGameSeconds < 0)
            {
                waitinGameSeconds += 1;
                AddTime(-1);
                waitingTime += 1;
            }
            if (waitingTime >= passengerTickTime)
            {
                waitingTime -= passengerTickTime;

                float passengersComing = ((float)passengersData.GetMaxPassengers() * Random.Range(minPercent, maxPercent)) / 100;
                passengersCame += passengersComing;

                passengersCameShown += (int)passengersCame;

                Color color = passengersLabel.color;
                color.a = 255;
                passengersLabel.color = color;
                passengersLabel.text  = "passengers +" + passengersCameShown;

                while (passengersCame >= 1)
                {
                    passengersData.AddPassenger();
                    passengersCame -= 1;
                    if (passengersData.IsFull())
                    {
                        ToggleWaitForPassengers();
                        break;
                    }
                }
                if (passengersData.IsFull())
                {
                    ToggleWaitForPassengers();
                    break;
                }
            }
            yield return(null);
        }
    }