예제 #1
0
 void OnEnable()
 {
     if (Instance == null)
     {
         Instance = this;
     }
 }
예제 #2
0
        void Fall(int side)
        {
            int oppositeSide = side % 2 == 0 ? (side + 1) : (side - 1);

            transform.parent.GetComponentInChildren <LoggingActivityInteractPrompt>().HideUI();

            ApplyFallingForce(oppositeSide);
            hasFallen = true;

            foreach (ForestTreeSnapSpot snap in transform.GetComponentsInChildren <ForestTreeSnapSpot>())
            {
                snap.enabled = false;
            }
            LoggingActivityPlayerBehavior.UnsnapPlayer();
            GetComponent <ForestTreeBehavior>().enabled = false;

            int qualityAverage = QualityMinigame.CalculateAverageGrade();

            qualityAverage = Mathf.Clamp(qualityAverage, 0, maxQualityGrade.GetHashCode());

            QualityGrade gatheredQuality = (QualityGrade)qualityAverage;

            HomesteadStockpile.UpdateTreesCountAtGrade(gatheredQuality, 1);

            Debug.Log("Gathered Grade: " + gatheredQuality);

            //Visually phase tree out
            Invoke("PhaseOutTree", 5);
        }
예제 #3
0
    void GradeSplitFirewoodBeforeUnsnap()
    {
        SetCanPerformAction(false);

        PlayerHud.ToggleQualityGame(true);
        QualityMinigame.StartGame();

        StartCoroutine(WaitForFirewoodGrade());
    }
예제 #4
0
 public static void ToggleQualityGame(bool state)
 {
     if (!state && PlayerHudReference.qualityGame.activeSelf)
     {
         QualityMinigame.EndGame();
         PlayerHudReference.StartCoroutine(PlayerHudReference.HideQualityGame());
     }
     else
     {
         PlayerHudReference.qualityGame.SetActive(state);
     }
 }
예제 #5
0
    void HandleSnapLogic()
    {
        bool fellingCondition =
            (currentActivity == LoggingActivity.FELLING && !forestTreeToCut.HasFallen() /*&& forestTreeToCut.PlayerCanStore()*/ && PlayerTools.GetCurrentlyEquippedToolIndex() == 1);

        bool buckingCondition =
            (currentActivity == LoggingActivity.BUCKING && !felledTreeToSaw.IsLocationFullyCut(markToSaw) /*&& felledTreeToSaw.PlayerCanStore()*/ && PlayerTools.GetCurrentlyEquippedToolIndex() == 2);

        bool splittingCondition =
            (currentActivity == LoggingActivity.SPLITTING && logsRemaining > 0 /*&& logToSplit.PlayerCanStore()*/ && PlayerTools.GetCurrentlyEquippedToolIndex() == 3);

        if (Input.GetButtonDown("Interact") && canSnapPlayer)
        {
            if (fellingCondition || buckingCondition || splittingCondition)
            {
                if (!playerIsLocked)
                {
                    SnapPlayer();
                }
                else
                {
                    if (currentActivity == LoggingActivity.SPLITTING && QualityMinigame.GetUngradedFirewood() > 0)
                    {
                        GradeSplitFirewoodBeforeUnsnap();
                    }
                    else
                    {
                        UnsnapPlayer();
                    }
                }
            }

            // if (forestTreeToCut != null)
            // {
            //  if (!forestTreeToCut.PlayerCanStore()) Debug.Log("Full On Trees: Grade " + forestTreeToCut.GetQualityGrade().ToString());
            // }

            // if (felledTreeToSaw != null)
            // {
            //  if (!felledTreeToSaw.PlayerCanStore()) Debug.Log("Full On Logs: Grade " + felledTreeToSaw.GetQualityGrade().ToString());
            // }

            // if (logToSplit != null)
            // {
            //  if (!logToSplit.PlayerCanStore()) Debug.Log("Full On Firewood: Grade " + logToSplit.GetQualityGrade().ToString());
            // }
        }
    }
예제 #6
0
        void SawThrough(int loc)
        {
            if (locationFullySawed[0] && locationFullySawed[1])
            {
                LoggingActivityPlayerBehavior.UnsnapPlayer();

                int qualityAverage = QualityMinigame.CalculateAverageGrade();
                qualityAverage = Mathf.Clamp(qualityAverage, 0, maxQualityGrade.GetHashCode());

                QualityGrade gatheredQuality = (QualityGrade)qualityAverage;

                HomesteadStockpile.UpdateLogsCountAtGrade(gatheredQuality, 3);
                HomesteadStockpile.UpdateTreesCountAtGrade(maxQualityGrade, -1);

                Debug.Log("Gathered Grade: " + gatheredQuality);

                Invoke("PhaseOutLogs", 1.0f);
            }
        }
예제 #7
0
        void Split()
        {
            ApplySplitForce();

            LoggingActivityPlayerBehavior.UnsnapPlayer();

            int qualityAverage = QualityMinigame.CalculateAverageGrade(HomesteadStockpile.GetLogsCountAtGrade(maxQualityGrade));

            qualityAverage = Mathf.Clamp(qualityAverage, 0, maxQualityGrade.GetHashCode());

            QualityGrade gatheredQuality = (QualityGrade)qualityAverage;

            HomesteadStockpile.UpdateFirewoodCountAtGrade(gatheredQuality, QualityMinigame.GetUngradedFirewood());

            QualityMinigame.ClearUngradedFirewood();

            Debug.Log("Gathered Grade: " + gatheredQuality);

            Invoke("PhaseOutFirewood", 5f);
        }
예제 #8
0
        public void CutSide(int side)
        {
            int oppositeSide = side % 2 == 0 ? (side + 1) : (side - 1);
            int axisCount    = sideCutsCount[side] + sideCutsCount[oppositeSide];

            if (axisCount < 9)
            {
                upperCutBlock.CutFace(side);
                lowerCutBlock.CutFace(side);
                sideCutsCount[side]++;
            }
            else
            {
                LoggingActivityPlayerBehavior.SetCanPerformAction(false);
                PlayerHud.ToggleQualityGame(true);
                QualityMinigame.StartGame();

                StartCoroutine(FallAfterGrade(side));
            }
        }
예제 #9
0
    IEnumerator WaitForFirewoodGrade()
    {
        yield return(new WaitUntil(() => !QualityMinigame.IsGradeListEmpty()));

        UnsnapPlayer();

        int qualityAverage = QualityMinigame.CalculateAverageGrade(HomesteadStockpile.GetLogsCountAtGrade(QualityMinigame.GetLastMaxFirewoodGrade()));

        qualityAverage = Mathf.Clamp(qualityAverage, 0, QualityMinigame.GetLastMaxFirewoodGrade().GetHashCode());

        QualityGrade gatheredQuality = (QualityGrade)qualityAverage;

        int ungradedCount = QualityMinigame.GetUngradedFirewood();

        HomesteadStockpile.UpdateFirewoodCountAtGrade(gatheredQuality, ungradedCount);

        QualityMinigame.ClearUngradedFirewood();

        Debug.Log("Gathered Grade: " + gatheredQuality);
        // Debug.Log("Gathered Count: " + ungradedCount);
    }
예제 #10
0
        public void SawLocation(int loc)
        {
            if (locationStrokeCounts[loc] == 0)
            {
                logMarks[loc].SetActive(false);
            }


            if (locationStrokeCounts[loc] < 5)
            {
                int cut01 = loc == 0 ? 0 : 2;
                int cut02 = loc == 0 ? 1 : 3;

                locationStrokeCounts[loc]++;
                sawProgressCuts[cut01].CutFace(3);
                sawProgressCuts[cut02].CutFace(3);
            }

            if (locationStrokeCounts[loc] == 5)
            {
                snapSpots[loc].enabled  = false;
                locationFullySawed[loc] = true;

                LoggingActivityPlayerBehavior.SetCanPerformAction(false);

                if (locationFullySawed[0] && locationFullySawed[1])
                {
                    PlayerHud.ToggleQualityGame(true);
                    QualityMinigame.StartGame();

                    StartCoroutine(SawThroughAfterGrade(loc));
                }
                else
                {
                    LoggingActivityPlayerBehavior.UnsnapPlayer();
                }
            }
        }
예제 #11
0
        // public bool PlayerCanStore()
        // {
        //  return HomesteadStockpile.GetFirewoodCountAtGrade(qualityGrade) < PlayerSkills.GetMaxLumberFirewoodValue();
        // }

        // public QualityGrade GetQualityGrade() { return qualityGrade; }

        // public bool HasBeenSplit() { return hasBeenSplit; }

        public void ChopLog()
        {
            HomesteadStockpile.UpdateLogsCountAtGrade(maxQualityGrade, -1);
            if (HomesteadStockpile.GetLogsCountAtGrade(maxQualityGrade) > 0)
            {
                associatedLogPile.UpdateLogPile();
            }

            QualityMinigame.IncrementUngradedFirewood();
            QualityMinigame.SetLastMaxFirewoodGrade(maxQualityGrade);

            // hasBeenSplit = true;

            if (HomesteadStockpile.GetLogsCountAtGrade(maxQualityGrade) <= 0)
            {
                LoggingActivityPlayerBehavior.SetLogsRemaining(HomesteadStockpile.GetLogsCountAtGrade(maxQualityGrade));
                LoggingActivityPlayerBehavior.SetCanPerformAction(false);

                PlayerHud.ToggleQualityGame(true);
                QualityMinigame.StartGame();

                StartCoroutine(SplitAfterGrade());
            }
        }
예제 #12
0
        IEnumerator SawThroughAfterGrade(int loc)
        {
            yield return(new WaitUntil(() => !QualityMinigame.IsGradeListEmpty()));

            SawThrough(loc);
        }
예제 #13
0
 void Start()
 {
     Instance = this;
 }
예제 #14
0
        IEnumerator SplitAfterGrade()
        {
            yield return(new WaitUntil(() => !QualityMinigame.IsGradeListEmpty()));

            Split();
        }
예제 #15
0
        IEnumerator FallAfterGrade(int side)
        {
            yield return(new WaitUntil(() => !QualityMinigame.IsGradeListEmpty()));

            Fall(side);
        }