예제 #1
0
    void CauseBurn()
    {
        int lastBaby = babies.Count - 1;

        if (lastBaby < 0)
        {
            GetComponentInChildren <SpriteRenderer>().color = Color.black;
            SendMessage("Kill", KilledBy.Fire);
        }
        else
        {
            float fire       = fireStrength * Time.deltaTime;
            int   lastToBurn = Mathf.Max(0, lastBaby - 10);
            for (int i = lastBaby; i >= lastToBurn; i--)
            {
                BabyController sacrifice = babies[i];
                sacrifice.Health -= fire;

                if (sacrifice.Health < 0.05f)
                {
                    babies.Remove(sacrifice);
                    sacrifice.Kill();
                }
                fire *= fireStrengthDecay;
            }
        }
    }
예제 #2
0
    void AdoptBaby()
    {
        BabyController baby = GameMaster.instance.CreateBaby();

        baby.transform.position = GlobalAdoptionCenter;
        baby.SetAttachment(gameObject, ClingArea);
        babyFruits.Add(baby);
    }
예제 #3
0
 void LooseAllBabies()
 {
     while (babies.Count > 0)
     {
         BabyController b = babies[0];
         babies.Remove(b);
         b.FreeAttachment();
     }
 }
    // Start is called before the first frame update
    void Start()
    {
        babyController    = Baby.GetComponentInChildren <BabyController>();
        babyRubController = Baby.GetComponentInChildren <RubbingController>();

        controllersInCollider    = new HashSet <OVRInput.Controller>();
        controllerToGameObject   = new Dictionary <OVRInput.Controller, GameObject>();
        interactionStartPosition = new Dictionary <OVRInput.Controller, Vector3>();
        interactionStartTime     = new Dictionary <OVRInput.Controller, float>();
    }
예제 #5
0
 void Start()
 {
     strollerLocalOffset      = stroller.transform.localPosition;
     strollerSpriteRenderer   = stroller.GetComponent <SpriteRenderer> ();
     pregnipushSpriteRenderer = GetComponent <SpriteRenderer>();
     baby = GameMaster.instance.CreateBaby();
     baby.transform.position = transform.position;
     baby.SetAttachment(stroller, attachment);
     baby.DoNotRemove = true;
 }
예제 #6
0
 public void PickupBaby(BabyController baby)
 {
     if (!isAlive)
     {
         return;
     }
     babies.Add(baby);
     baby.SetAttachment(gameObject, attachmentArea);
     baby.gameObject.layer = LayerMask.NameToLayer("Carried");
     baby.DoNotRemove      = true;
 }
예제 #7
0
    public void BirthChild()
    {
        BabyController baby = GameMaster.instance.CreateBaby();

        baby.transform.position = transform.position;
        baby.BabyState          = BabyController.State.DoNotMove;
        Vector2     ejectForce = new Vector2(Random.Range(-1f, 1f) * lateralisation, Random.Range(upScaleMin, upScaleMax)).normalized;
        Rigidbody2D rb         = baby.GetComponent <Rigidbody2D>();

        rb.AddTorque(Random.Range(-90, 90));
        rb.AddForce(ejectForce * force);
    }
    // Use this for initialization
    void Start()
    {
        scoreText = GameObject.Find("Canvas/Score").GetComponent <Text>();

        bc   = GameObject.Find("Baby").GetComponent <BabyController>();
        life = 3;
        rain();
        gameOver     = false;
        spawnerSpeed = 4;
        audio        = GetComponent <AudioSource>();
        audio.clip   = music;
        audio.Play();
    }
예제 #9
0
 void Update()
 {
     if (!init)
     {
         init = true;
         for (int i = 0; i < numberOfBabies; ++i)
         {
             BabyController baby = GameMaster.instance.CreateBaby();
             baby.transform.position = transform.position + Vector3.up * 0.4f;
             baby.BabyState          = BabyController.State.Playing;
             baby.DoNotRemove        = true;
         }
     }
 }
예제 #10
0
 void OnCollisionEnter2D(Collision2D coll)
 {
     //Debug.Log(coll.gameObject.name);
     if (coll.gameObject.tag == "Baby")
     {
         babyInRange        = coll.gameObject.GetComponent <BabyController>();
         inGrabRangeForBaby = true;
     }
     if (coll.gameObject.tag == "PlayZone")
     {
         inDropRange = true;
         dropZone    = coll.transform.position;
     }
 }
예제 #11
0
 private void Update()
 {
     for (int i = babyFruits.Count - 1; i >= 0; i--)
     {
         BabyController baby = babyFruits[i];
         if (baby == null)
         {
             babyFruits.RemoveAt(i);
         }
         else if (Mathf.Abs(player.position.x - baby.transform.position.x) < dropRange)
         {
             baby.FreeAttachment();
             babyFruits.Remove(baby);
         }
     }
 }
예제 #12
0
 void PruneBunt()
 {
     if (Random.value < Time.deltaTime * pruneSpeed)
     {
         int lastBaby = babies.Count - 1;
         if (lastBaby >= 0)
         {
             BabyController baby = babies[lastBaby];
             if (baby.Health < .95f)
             {
                 if (baby != null)
                 {
                     baby.Kill();
                 }
                 babies.Remove(baby);
             }
         }
     }
 }
예제 #13
0
 private void Awake()
 {
     _instance = this;
 }
예제 #14
0
    public BabyController CreateBaby()
    {
        if (babies.Count > maxNumberOfBabies)
        {
            List <BabyController> toRemove = new List <BabyController>();
            int maxRemove = babies.Count - maxNumberOfBabies;
            foreach (BabyController controller in babies)
            {
                if (controller.DoNotRemove)
                {
                    continue;
                }
                if (toRemove.Count >= maxRemove)
                {
                    break;
                }
                if (controller.Killed)
                {
                    Debug.Log("Removing killed");
                    toRemove.Add(controller);
                }
            }
            List <BabyController> visible = new List <BabyController> ();
            foreach (BabyController controller in babies)
            {
                if (controller.DoNotRemove)
                {
                    continue;
                }
                if (toRemove.Count >= maxRemove)
                {
                    break;
                }
                if (controller.VisibleTime == null)
                {
                    Debug.Log("Removing invisible");
                    toRemove.Add(controller);
                }
                else
                {
                    visible.Add(controller);
                }
            }
            visible.Sort((x, y) => x.VisibleTime.Value.CompareTo(y.VisibleTime.Value));
            foreach (BabyController controller in babies)
            {
                if (controller.DoNotRemove)
                {
                    continue;
                }
                if (toRemove.Count >= maxRemove)
                {
                    break;
                }
                Debug.Log("Removing visible");
                toRemove.Add(controller);
            }

            foreach (BabyController controller in toRemove)
            {
                Debug.Log("Removing baby");
                babies.Remove(controller);
                Destroy(controller.gameObject);
            }
        }
        BabyController baby = Instantiate(babyPrefab, allTheBabies, true);

        babies.Add(baby);
        Debug.Log(babies.Count + " number of babies");

        return(baby);
    }
예제 #15
0
 // Use this for initialization
 void Start()
 {
     //charJ = GetComponent<CharacterJoint>();
     babyController = GetComponentInParent <BabyController>();
 }