Esempio n. 1
0
    public bool CanExecuteAction(Action action)
    {
        float lastTime = PlayerPrefs.GetFloat(action.tag, 0);

        if (lastTime == 0)
        {
            if (action.tag != Constants.Actions.SLEEP_NIGHT && action.tag != Constants.Actions.TAKE_NAP)
            {
                return(true);
            }
        }

        int lastTimeInMinutes    = clock.GetTotalMinutes((long)lastTime);
        int currentTimeInMinutes = clock.GetTotalMinutes((long)clock.currentGameTime);

        int minutesDiff = currentTimeInMinutes - lastTimeInMinutes;

        int hour = clock.GetHours((long)clock.currentGameTime);

        switch (action.tag)
        {
        case Constants.Actions.EAT_MEAL:
            return(minutesDiff > 4 * 60);

        case Constants.Actions.EAT_SNACK:
            return(minutesDiff > 2 * 60);

        case Constants.Actions.LOSE_TIME:
            return(minutesDiff > 60);

        case Constants.Actions.SLEEP_NIGHT:
            return(hour >= 23 || hour < 3);

        case Constants.Actions.TAKE_NAP:
            return(hour >= 13 && minutesDiff > 8 * 60);

        case Constants.Actions.USE_BATHROOM:
            return(minutesDiff > 3 * 60);

        case Constants.Actions.WATCH_MOVIE:
            return(minutesDiff > 1 * 60);

        case Constants.Actions.WRITE_THESIS:
            return(minutesDiff > 1 * 60);
        }

        return(true);
    }