示例#1
0
    /// <summary>
    /// Instantiate a Cardboard Box based on an aliment
    /// </summary>
    public static GameObject InstantiateCardboardBox(float _t_expiry, AlimentObject _alimentObject)
    {
        GameObject go = Instantiate(prefabCardboardBox) as GameObject;

        go.GetComponent <CardboardBox>().Init(_t_expiry, _alimentObject);

        return(go);
    }
示例#2
0
 public void Init(AlimentObject _alimentObject, AlimentState _state = AlimentState.None)
 {
     alimentName      = _alimentObject.name;
     alimentType      = _alimentObject.type;
     nutriments       = _alimentObject.nutriments;
     alimentState     = _state;
     alimentStepState = AlimentStepState.Dirty;
     expiryState      = ExpiryState.Fresh;
     t_expiry         = 9999f;
 }
    public void Init(AlimentObject _alimentObject, float _t_expiry = 0f)
    {
        alimentObject = _alimentObject;

        //if (alimentObject.meshStack != null) GetComponent<MeshFilter>().mesh = alimentObject.meshStack;
        //if (_alimentObject.materialsStack != null && _alimentObject.materialsStack.Length > 0) GetComponent<MeshRenderer>().materials = _alimentObject.materialsStack;

        if (_t_expiry != 0f)
        {
            t_expiry = _t_expiry;
        }
    }
示例#4
0
    private void CreatePool(AlimentObject aliment, AlimentState _state)
    {
        //create pool
        GameObject go = new GameObject("Pool :" + aliment.name + " " + _state.ToString());

        go.transform.parent = transform;
        Pool newPool = go.AddComponent <Pool>();

        KeyValuePair <string, AlimentState> key = new KeyValuePair <string, AlimentState>(aliment.name, _state); // Create a new key with the NAME and the STATE of the current aliment

        GameObject tmpAliment = FoodDatabase.InstantiateAliment(aliment, _state);

        newPool.Init(tmpAliment, DefaultSizePool);

        pools[key] = newPool;
    }
示例#5
0
    public static GameObject InstantiateAliment(AlimentObject _alimentObject, AlimentState _state)
    {
        if (_alimentObject != null)
        {
            // Create go

            Object     toInstantiate = null;
            GameObject alimentGO     = null;

            foreach (AlimentObject.InfoState infoState in _alimentObject.listState)
            {
                if (infoState.state == _state)
                {
                    toInstantiate = infoState.prefab;
                }
            }

            if (toInstantiate != null)
            {
                alimentGO = Instantiate(toInstantiate) as GameObject;
            }
            else
            {
                Debug.Log("_alimentObject: " + _alimentObject.name + " state " + _state);
            }

            // Set Aliment
            Aliment aliment = alimentGO.AddComponent <Aliment>();
            aliment.Init(_alimentObject, _state);

            return(alimentGO);
        }

        //Debug.Log("Aliment " + _nameAliment + " doesn't exist !");
        return(null);
    }
示例#6
0
    /// <summary>
    /// Use of Disinfection Post
    /// </summary>
    /// <param name="pController"></param>
    public void Interact(PlayerController pController)
    {
        player = pController;
        GrabableObject objectInHand = pController.pDatas.objectInHand;
        Gastro         gastroInHand = player.pDatas.gastroInHand;

        // Put object = No object in furnace and object in hand of player
        if (haveAnObject == false)
        {
            if (grabableReceived == null)
            {
                Aliment actualAliment;
                if (gastroInHand != null)
                {
                    actualAliment = gastroInHand.alimentStocked;
                }
                else
                {
                    actualAliment = objectInHand.GetComponent <Aliment>();
                }

                if (actualAliment != null && actualAliment.alimentState >= AlimentState.Standard && actualAliment.alimentState <= AlimentState.Sample)
                {
                    AlimentObject actualAlimentObject = FoodDatabase.mapAlimentObject[actualAliment.alimentName];

                    bool alimenStateExist = false;

                    for (int i = 0; i < actualAlimentObject.listState.Count; i++)
                    {
                        if (actualAlimentObject.listState[i].state == AlimentState.Cooked)
                        {
                            alimenStateExist = true;
                            break;
                        }
                    }
                    if (alimenStateExist)
                    {
                        if (gastroInHand != null)
                        {
                            grabableReceived = player.pDatas.gastroInHand.ReleaseObject(false, false, false);
                        }
                        else
                        {
                            grabableReceived = player.pInteract.ReleaseObject(false, false, false);
                        }
                        grabableReceived.AllowGrab(false);
                        grabableReceived.transform.position = foodPos.position;
                        grabableReceived.transform.rotation = foodPos.rotation;

                        haveAnObject = true;

                        Aliment newAliment = grabableReceived.GetComponent <Aliment>();

                        // Affect the player
                        player.TeleportTo(playerPosition, true);
                        player.BeginInteractionState();

                        // transform dirty aliment into fresh aliment
                        if (newAliment != null)
                        {
                            currentStartAction = StartCoroutine(StartAction(newAliment, transformationTime, true));
                            photonView.RPC("StartActionOnline", RpcTarget.Others, pController.photonView.OwnerActorNr);
                        }
                    }
                    else
                    {
                        GameManager.Instance.PopUp.CreateText("Cet aliment ne peut pas être cuit", 50, new Vector2(0, 300), 3.0f);
                    }
                }
                else
                {
                    GameManager.Instance.PopUp.CreateText("Cet object ne peut pas être déposé ici", 50, new Vector2(0, 300), 3.0f);
                }
            }
        }
        else if (haveAnObject == true && objectInHand != null)
        {
            if (gastroInHand != null && gastroInHand.alimentStocked == null)
            {
                StartCoroutine(TakeFood());
            }
        }
        else if (objectInHand == null && haveAnObject == true)  // Take object = object in furnace and no object in hand of player
        {
            StartCoroutine(TakeFood());
        }
        else if (gastroInHand != null && haveAnObject == true) // put object impossible = object in furnace and object in hand of player
        {
            GameManager.Instance.PopUp.CreateText("Il y a actuellement un objet dans la sauteuse", 50, new Vector2(0, 300), 3.0f);
        }
    }
示例#7
0
 public void Init(float _t_expiry, AlimentObject _alimentObject)
 {
     t_expiry      = _t_expiry;
     alimentObject = _alimentObject;
 }
    public void Interact(PlayerController pController)
    {
        player = pController;
        GrabableObject objectInHand = player.pDatas.objectInHand;
        Gastro         gastroInHand = pController.pDatas.gastroInHand;

        // Put object = No object on post and object in hand of player
        if (haveAnObject == false && objectInHand != null)
        {
            if (gastroInHand == null)
            {
                if (grabableReceived == null)
                {
                    Aliment actualAliment = objectInHand.GetComponent <Aliment>();
                    string  alimentType   = actualAliment.alimentType.ToString();
                    string  postType      = typeOfTreament.ToString();

                    if (alimentType == postType)
                    {
                        sameState = true;
                    }
                    else
                    {
                        sameState = false;
                    }

                    Debug.Log(alimentType);
                    Debug.Log(postType);
                    Debug.Log(sameState);

                    if (actualAliment != null && (actualAliment.alimentState == AlimentState.InContent || actualAliment.alimentState == AlimentState.Standard))
                    {
                        AlimentObject actualAlimentObject = FoodDatabase.mapAlimentObject[actualAliment.alimentName];

                        bool alimenStateExist = false;
                        for (int i = 0; i < actualAlimentObject.listState.Count; i++)
                        {
                            if (actualAlimentObject.listState[i].state == AlimentState.Clean)
                            {
                                alimenStateExist = true;
                                break;
                            }
                        }

                        if (sameState && alimenStateExist)
                        {
                            grabableReceived = player.pInteract.ReleaseObject(false, false, false);
                            grabableReceived.AllowGrab(false);
                            grabableReceived.AllowPhysic(false);
                            grabableReceived.transform.position = initPos.position;
                            grabableReceived.transform.rotation = initPos.rotation;

                            haveAnObject = true;

                            Aliment newAliment = grabableReceived.GetComponent <Aliment>();

                            // Affect the player
                            player.TeleportTo(playerPosition, true);
                            player.BeginInteractionState();

                            // transform dirty aliment into fresh aliment
                            if (newAliment != null)
                            {
                                GeneralError.ErrorNoOutfit(pController);
                                currentStartAction = StartCoroutine(StartAction(newAliment, transformationTime, true, true));
                            }

                            photonView.RPC("PutObjectInPost", RpcTarget.Others, pController.photonView.OwnerActorNr);
                        }
                        else
                        {
                            GameManager.Instance.PopUp.CreateText("Cet Objet ne peut pas être déposé ici", 50, new Vector2(0, 300), 3.0f);
                        }
                    }
                    else if (objectInHand != null && haveAnObject == true)
                    {
                        GameManager.Instance.PopUp.CreateText("Il y a actuellement un objet sur le poste", 50, new Vector2(0, 300), 3.0f);
                    }
                    else
                    {
                        GameManager.Instance.PopUp.CreateText("Cet Objet ne peut pas être déposé ici", 50, new Vector2(0, 300), 3.0f);
                    }
                }
            }
            else
            {
                GameManager.Instance.PopUp.CreateText("Il n'est pas possible d'utiliser un gastro ici", 50, new Vector2(0, 300), 3.0f);
            }
        }
        else
        {
            GameManager.Instance.PopUp.CreateText("Cet object ne peut pas être déposé ici", 50, new Vector2(0, 300), 3.0f);
        }
    }
    /// <summary>
    /// Use of Disinfection Post
    /// </summary>
    /// <param name="pController"></param>
    public void Interact(PlayerController pController)
    {
        player = pController;
        GrabableObject objectInHand = player.pDatas.objectInHand;
        Gastro         gastroInHand = player.pDatas.gastroInHand;

        // Put object = No object in furnace and object in hand of player
        if (haveAnObject == false && objectInHand != null)
        {
            if (grabableReceived == null)
            {
                Aliment actualAliment;
                if (gastroInHand != null)
                {
                    actualAliment = gastroInHand.alimentStocked;
                }
                else
                {
                    actualAliment = objectInHand.GetComponent <Aliment>();
                }
                if (actualAliment != null && (actualAliment.alimentState == AlimentState.Standard || actualAliment.alimentState == AlimentState.Clean))
                {
                    AlimentObject actualAlimentObject = FoodDatabase.mapAlimentObject[actualAliment.alimentName];

                    bool alimenStateExist = false;

                    for (int i = 0; i < actualAlimentObject.listState.Count; i++)
                    {
                        if (actualAlimentObject.listState[i].state == AlimentState.Cut)
                        {
                            alimenStateExist = true;
                            break;
                        }
                    }
                    if (alimenStateExist)
                    {
                        if (player.pDatas.gastroInHand != null)
                        {
                            grabableReceived = player.pDatas.gastroInHand.ReleaseObject(false, false, false);
                        }
                        else
                        {
                            grabableReceived = player.pInteract.ReleaseObject(false, false, false);
                        }
                        grabableReceived.AllowGrab(false);
                        grabableReceived.transform.position = foodPos.position;
                        grabableReceived.transform.rotation = foodPos.rotation;

                        haveAnObject = true;

                        Aliment newAliment = grabableReceived.GetComponent <Aliment>();

                        // Affect the player
                        player.TeleportTo(playerPosition, true);
                        player.BeginInteractionState();

                        // transform dirty aliment into fresh aliment
                        if (newAliment != null)
                        {
                            GeneralError.ErrorNoOutfit(pController);
                            currentStartAction = StartCoroutine(StartAction(newAliment, transformationTime, true, true));
                        }

                        photonView.RPC("PutObjectInPost", RpcTarget.Others, pController.photonView.OwnerActorNr);
                    }
                    else
                    {
                        GameManager.Instance.PopUp.CreateText("Cet aliment ne peut pas être coupé", 50, new Vector2(0, 300), 3.0f);
                    }
                }
                else
                {
                    GameManager.Instance.PopUp.CreateText("Cet object ne peut pas être déposé ici", 50, new Vector2(0, 300), 3.0f);
                }
            }
        }
        else if (objectInHand == null && haveAnObject == true)  // Take object = object in furnace and no object in hand of player
        {
            if (player.pDatas.gastroInHand != null)
            {
                if (player.pDatas.gastroInHand.StockAliment(objectCutted, true) == false)
                {
                    GameManager.Instance.PopUp.CreateText("impossible de mettre " + objectCutted.GetComponent <Aliment>().alimentName + " dans le gastro", 50, new Vector2(0, 300), 3.0f);
                }
            }
            else
            {
                if (player.pInteract.GrabObject(objectCutted, true) == false)
                {
                    GameManager.Instance.PopUp.CreateText("impossible de prendre " + objectCutted.GetComponent <Aliment>().alimentName + " dans vos mains", 50, new Vector2(0, 300), 3.0f);
                }
            }
        }
        else if (objectInHand != null && haveAnObject == true) // put object impossible = object in furnace and object in hand of player
        {
            GameManager.Instance.PopUp.CreateText("Il y a actuellement un objet sur le poste", 50, new Vector2(0, 300), 3.0f);
        }
    }