Exemplo n.º 1
0
    public void ReceiveCompletedBurger(CompletedBurger completedBurger)
    {
        Debug.Log("Completed burger", completedBurger);
        this.completedBurger = completedBurger;
        actualIngredients    = completedBurger.ingredients;
        var tray = completedBurger.gameObject;

        completedBurger.container = tray;
        tray.transform.SetParent(this.transform);
        foreach (var i in tray.GetComponentsInChildren <NewtonVR.NVRInteractableItem>())
        {
            Destroy(i);
        }

        foreach (var i in tray.GetComponentsInChildren <Rigidbody>())
        {
            i.isKinematic = true;
        }

        tray.GetComponent <Rigidbody>().isKinematic = true;
        var trayInteractable = tray.GetComponent <NewtonVR.NVRInteractableItem>();

        if (trayInteractable != null)
        {
            Destroy(trayInteractable);
        }
        tray.GetComponent <Rigidbody>().isKinematic = true;
        if (orderLabel != null)
        {
            Destroy(orderLabel.gameObject);
        }
        orderLabel = null;
        StartCoroutine("FinishOrder", tray);
    }
Exemplo n.º 2
0
    public IEnumerator AutoFulfillOrder(NpcOrder npc)
    {
        yield return(new WaitForSeconds(secondsToWait));

        CompletedBurger completedBurger = (CompletedBurger)Instantiate(completedBurgerPrefab, npc.trayPosition.position, Quaternion.identity);

        npc.ReceiveCompletedBurger(completedBurger);
    }
Exemplo n.º 3
0
    public override IEnumerator NpcServed(NpcOrder npc, CompletedBurger burger)
    {
        Debug.Log("Npc was served, sending this one away then spawning a new wave");
        currentNpc.GetComponent <NpcEnterStyle>().StopMovement();
        yield return(ScoreBurger(npc, burger));

        yield return(npc.GetComponent <NpcExitStyle>().NpcExit());

        Debug.Log("Npc exited, spawning a new wave");
        StartCoroutine("SpawnWave");
    }
Exemplo n.º 4
0
    public override IEnumerator NpcServed(NpcOrder npc, CompletedBurger burger)
    {
        Debug.Log("Npc was served, sending this one away");
        float accuracy = LevelManager.Instance.burgerScorer.CalcAccuracyScore(npc.GetOrder(), burger.ingredients);

        if (accuracy < 99)
        {
            Debug.Log("Accuracy was bad, making angry face: " + accuracy, burger);
            if (npc.transform.FindChild("angryFace"))
            {
                // If this NPC was already angry, end the level
                EndLevel();
            }
            else
            {
                GameObject angryFace = (GameObject)Instantiate(angryFacePrefab, npc.transform);
                angryFace.transform.localPosition = new Vector3(0, 1f, 0);
                angryFace.name      = "angryFace";
                npc.acceptingOrders = true;
            }
            Destroy(burger.gameObject);
        }
        else
        {
            Debug.Log("Customer satisfied");
            Transform clock = npc.transform.FindChild("clock");
            if (clock != null)
            {
                Destroy(clock.gameObject);
            }
            Destroy(burger);
            npc.GetComponent <NpcEnterStyle>().StopMovement();
            yield return(npc.GetComponent <NpcExitStyle>().NpcExit());

            currentNpcs--;
            TipJar tipJar = GameObject.FindObjectOfType <TipJar>();
            if (currentNpcs <= 0)
            {
                float maxCoins = LevelManager.Instance.settings.difficultyLevel;
                // maxCoins += npcCount * 0.1f;
                maxCoins *= maxCoins;
                maxCoins *= 0.25f;
                maxCoins /= 3;
                maxCoins  = Mathf.Max(0.25f, maxCoins);
                if (tipJar != null)
                {
                    tipJar.SpawnCoins(Random.Range(0, maxCoins) + 0.25f);
                }
                Debug.Log("Finished giving tip, spawning next wave");
                StartCoroutine("SpawnWave");
            }
        }
    }
Exemplo n.º 5
0
    public virtual float CalcNeatnessScore(CompletedBurger completedBurger)
    {
        Debug.Log("prevAxisSlop=" + completedBurger.prevAxisSloppiness + ", baseAxisSlop=" + completedBurger.baseAxisSloppiness);
        float totalSloppiness = (completedBurger.prevAxisSloppiness + completedBurger.baseAxisSloppiness) / 2 * 1300;

        if (totalSloppiness > 100)
        {
            totalSloppiness = 100;
        }
        Debug.Log("NeatnessScore=" + (100f - totalSloppiness));
        return(100f - totalSloppiness);
    }
Exemplo n.º 6
0
 void OnTriggerEnter(Collider other)
 {
     if (!acceptingOrders)
     {
         return;
     }
     if (other.transform.parent != null && other.transform.parent.gameObject.CompareTag("Food"))
     {
         other.transform.parent.gameObject.tag = "Untagged";
         acceptingOrders = false;
         Debug.Log("Received a food item, taking it", this);
         completedBurger = other.transform.parent.gameObject.GetComponent <CompletedBurger>();
         ReceiveCompletedBurger(completedBurger);
     }
 }
Exemplo n.º 7
0
    private IEnumerator ScoreBurger(NpcOrder npc, CompletedBurger burger)
    {
        GameObject tray         = burger.container;
        Transform  trayPosition = npc.trayPosition;

        yield return(MoveUtil.MoveOverSeconds(tray, trayPosition.localPosition, 1f));

        HappinessScoreDisplay scorer = Instantiate <HappinessScoreDisplay>(npc.scorePrefab);

        scorer.transform.SetParent(npc.transform);
        scorer.transform.localPosition    = npc.scorePosition.localPosition;
        scorer.transform.localEulerAngles = npc.scorePosition.localEulerAngles;
        if (scorer != null)
        {
            yield return(scorer.ScoreOrder(npc.GetDesiredIngredients(), burger, npc.GetTimeSinceOrderStarted()));
        }
        Destroy(scorer);
    }
Exemplo n.º 8
0
    public virtual IEnumerator ScoreOrder(string[] desiredIngredients, CompletedBurger completedBurger, float timeSinceOrderStarted)
    {
        HideScores();
        float speed    = LevelManager.Instance.burgerScorer.CalcSpeedScore(desiredIngredients, timeSinceOrderStarted);
        float accuracy = LevelManager.Instance.burgerScorer.CalcAccuracyScore(desiredIngredients, completedBurger.ingredients);
        float neatness = LevelManager.Instance.burgerScorer.CalcNeatnessScore(completedBurger);

        tipTotal = 0;
        yield return(new WaitForSeconds(0.5f));

        SetSpeedScore(speed);
        yield return(new WaitForSeconds(0.5f));

        SetAccuracyScore(accuracy);
        yield return(new WaitForSeconds(0.5f));

        SetNeatnessScore(neatness);
        if (tipJar != null)
        {
            yield return(tipJar.SpawnCoinsCoroutine(tipTotal));
        }
        yield return(new WaitForSeconds(4f));
    }
Exemplo n.º 9
0
    void FinalizeBurger(GameObject burgerScanner, List <GameObject> ingredients)
    {
        Debug.Log("Finalizing burger");
        GameObject previousIngredient = ingredients[0];
        Vector3    baseCenterAxis     = Vector3.zero;
        Vector3    previousCenterAxis = Vector3.zero;
        float      totalDistanceFromBaseCenterAxis     = 0;
        float      totalDistanceFromPreviousCenterAxis = 0;

        Destroy(burgerScanner.GetComponent <Ingredient>());
        Destroy(burgerScanner.GetComponent <Rigidbody>());
        string[] ingredientNames = new string[ingredients.Capacity];
        int      idx             = 0;

        foreach (GameObject i in ingredients)
        {
            Debug.Log(i.GetComponent <Ingredient>().ingredientName);
            ingredientNames[idx++] = i.GetComponent <Ingredient>().ingredientName;
            NewtonVR.NVRInteractables.Deregister(i.GetComponent <NewtonVR.NVRInteractable>());
            Destroy(i.GetComponent <Ingredient> ());
            Destroy(i.GetComponent <Rigidbody>());
            // Destroy(i.GetComponent<NewtonVR.NVRInteractableItem>());
            if (baseCenterAxis == Vector3.zero)
            {
                baseCenterAxis     = i.transform.position;
                previousCenterAxis = baseCenterAxis;
            }
            else
            {
                Vector3 curDistFromBaseAxis = (baseCenterAxis - i.transform.position);
                curDistFromBaseAxis.Set(curDistFromBaseAxis.x, 0, curDistFromBaseAxis.z);
                totalDistanceFromBaseCenterAxis += curDistFromBaseAxis.magnitude;
                Vector3 curDistFromPrevAxis = (previousCenterAxis - i.transform.position);
                curDistFromPrevAxis.Set(curDistFromPrevAxis.x, 0, curDistFromPrevAxis.z);
                totalDistanceFromPreviousCenterAxis += curDistFromPrevAxis.magnitude;

                previousCenterAxis = i.transform.position;
            }
            previousIngredient = i;
        }
        CompletedBurger completedBurger = (CompletedBurger)Instantiate(completedBurgerPrefab, transform.position, Quaternion.identity);

        completedBurger.ingredients = ingredientNames;
        burgerScanner.transform.SetParent(completedBurger.transform);
        int divideBy = Mathf.Max(ingredients.Capacity - 1, 1);

        completedBurger.baseAxisSloppiness = totalDistanceFromBaseCenterAxis / divideBy;
        completedBurger.prevAxisSloppiness = totalDistanceFromPreviousCenterAxis / divideBy;
        foreach (GameObject i in ingredients)
        {
            i.transform.SetParent(completedBurger.transform);
        }
        completedBurger.gameObject.SetActive(false);
        completedBurger.gameObject.SetActive(true);

        completedBurger.gameObject.AddComponent <NewtonVR.NVRInteractableItem>();
        //Destroy(burgerDetectionArea.gameObject);
        burgerDetectionArea.gameObject.SetActive(false);
        this.gameObject.SetActive(false);
        this.gameObject.transform.parent.GetComponent <NewtonVR.NVRInteractable>().RefreshColliders();
    }
Exemplo n.º 10
0
 public abstract IEnumerator NpcServed(NpcOrder npcOrder, CompletedBurger completedBurger);
Exemplo n.º 11
0
    private void LockBurger(GameObject[] ingredients)
    {
        Debug.Log("Finalizing burger");
        Vector3 baseCenterAxis     = Vector3.zero;
        Vector3 previousCenterAxis = Vector3.zero;
        float   totalDistanceFromBaseCenterAxis     = 0;
        float   totalDistanceFromPreviousCenterAxis = 0;

        NewtonVR.NVRInteractables.Deregister(GetComponent <NewtonVR.NVRInteractable>());
        GetComponent <Rigidbody>().useGravity  = false;
        GetComponent <Rigidbody>().isKinematic = true;
        Destroy(GetComponent <Rigidbody>());

        List <string> ingredientNames = new List <string>();

        foreach (GameObject i in ingredients)
        {
            if (i.GetComponent <Ingredient>() == null)
            {
                continue;
            }
            Debug.Log(i.GetComponent <Ingredient>().ingredientName);
            ingredientNames.Add(i.GetComponent <Ingredient>().ingredientName);
            NewtonVR.NVRInteractables.Deregister(i.GetComponent <NewtonVR.NVRInteractable>());
            Destroy(i.GetComponent <Ingredient>());
            Destroy(i.GetComponent <Rigidbody>());
            Destroy(i.GetComponent <NewtonVR.NVRInteractableItem>());
            if (baseCenterAxis == Vector3.zero)
            {
                baseCenterAxis     = i.transform.position;
                previousCenterAxis = baseCenterAxis;
            }
            else
            {
                Vector3 curDistFromBaseAxis = (baseCenterAxis - i.transform.position);
                curDistFromBaseAxis.Set(curDistFromBaseAxis.x, 0, curDistFromBaseAxis.z);
                totalDistanceFromBaseCenterAxis += curDistFromBaseAxis.magnitude;
                Vector3 curDistFromPrevAxis = (previousCenterAxis - i.transform.position);
                curDistFromPrevAxis.Set(curDistFromPrevAxis.x, 0, curDistFromPrevAxis.z);
                totalDistanceFromPreviousCenterAxis += curDistFromPrevAxis.magnitude;

                previousCenterAxis = i.transform.position;
            }
        }
        CompletedBurger completedBurger = (CompletedBurger)Instantiate(completedBurgerPrefab, transform.position, Quaternion.identity);

        completedBurger.ingredients = ingredientNames.ToArray();
        this.transform.SetParent(completedBurger.transform);
        int divideBy = Mathf.Max(ingredients.Length - 1, 1);

        completedBurger.baseAxisSloppiness = totalDistanceFromBaseCenterAxis / divideBy;
        completedBurger.prevAxisSloppiness = totalDistanceFromPreviousCenterAxis / divideBy;
        if (ingredients.Length <= 2)
        {
            completedBurger.baseAxisSloppiness = 0.3f;
            completedBurger.prevAxisSloppiness = 0.3f;
        }
        foreach (GameObject i in ingredients)
        {
            i.transform.SetParent(completedBurger.transform);
        }
        completedBurger.gameObject.SetActive(false);
        completedBurger.gameObject.SetActive(true);

        completedBurger.gameObject.AddComponent <NewtonVR.NVRInteractableItem>();
        //Destroy(burgerDetectionArea.gameObject);
    }