//put a cake layer on the counter, add it to the list
    public void NextLayer(CakeLayer layer)
    {
        float yPos = (transform.childCount / 1.5f) * yModifier;

        Transform layerTrans = layer.transform;

        layerTrans.SetParent(transform);

        //if this is the first layer
        if (transform.childCount == 1)
        {
            //scale to fixed size
            layerTrans.localScale = new Vector2(0.2f, 0.15f);
        }
        //if not
        else
        {
            //scale to relative size
            layerTrans.localScale = new Vector3(prevXScale * 0.85f, 0.15f);
        }
        prevXScale = layerTrans.localScale.x;
        layerTrans.localPosition = new Vector2(0, yPos);

        foreach (ArmScript arm in Arms)
        {
            //update the target to the current layer
            arm.ChangeTarget(layerTrans);
        }
        CakeLayers.Add(layer);
        UpdateLayersPresent();
    }
Beispiel #2
0
 private void CreateCakeLayer(CakeLayer layer)
 {
     if (Board.Children.Count < 7)
     {
         UcCakeLayer cakeLayer = new UcCakeLayer {
             Current = layer
         };
         Board.Children.Add(cakeLayer);
     }
 }
    //remove 1 slice of cake ("health") from the cake, destroy it if it was the last piece
    public void RemoveCakeSlice()
    {
        //get the most recently added layer
        CakeLayer lastLayer = CakeLayers[CakeLayers.Count - 1];
        //get its sprite
        Sprite currentSprite = lastLayer.GetComponent <Image>().sprite;

        //set a bool to check if we got out of the for loop due to a break or because the i ran out
        bool imageChanged = false;

        for (int i = 0; i < CakeSprites.Count - 1; i++)
        {
            Sprite cakeSprite = CakeSprites[i];

            //identify the current sprite
            if (currentSprite == cakeSprite)
            {
                //update the sprite of the highest layer so it has 1 less slice
                lastLayer.GetComponent <Image>().sprite = CakeSprites[i + 1];
                imageChanged = true;
                break;
            }
        }
        //make sure we didnt get out of the loop due to a break
        if (!imageChanged)
        {
            //get it out of the list and out of the game
            CakeLayers.Remove(lastLayer);
            Destroy(lastLayer.gameObject);
            UpdateLayersPresent();
            foreach (ArmScript arm in Arms)
            {
                if (LayersPresent)
                {
                    arm.ChangeTarget(CakeLayers[CakeLayers.Count - 1].transform);
                }
                //in case there's 0 layers left
                else
                {
                    //reset arms
                    arm.ResetDelay();
                    arm.ChangeTarget(transform);
                }
            }
        }
    }
Beispiel #4
0
    void NewTargetTime()
    {
        //get a random time
        TimeModifier modifier = GetNewRandomMod(previousMod);
        int          hour     = GetNewRandomHour(previousHour);
        //string of the written-out time to put in the label
        string targetTimeText;

        //produce the new cake layer, put it in the oven
        currentCakeLayer = Instantiate(CakeLayerPrefab, OvenTrans);
        currentCakeLayer.gameObject.transform.SetPositionAndRotation(TempCakeTrans.position, TempCakeTrans.rotation);

        //set the target time
        TimeSpan newTime = ProduceTime(modifier, hour, out targetTimeText);

        currentCakeLayer.SetTime(newTime);
        TargetLabel.text = targetTimeText;
        VoiceScript.PlayTimeSounds(hour, (int)modifier);
    }