示例#1
0
 public void StartFalling()
 {
     crushedChips                   = GetChipsForChipMeta(crushChipsMeta.crushedChips);
     fallingChips                   = GetChipsForChipMeta(crushChipsMeta.fallingChips);
     faller.transform.parent        = transform;
     faller.transform.localPosition = Vector3.zero;
     foreach (Chip chip in fallingChips)
     {
         float toReplace   = crushedChips [0].transform.localPosition.y;
         int   indexOffset = chip.chipMeta.stackPos - crushedChips [0].chipMeta.stackPos;
         float relativeY   = indexOffset * chip.chipMeta.Height;
         float newY        = relativeY + toReplace;
         faller.CreateMoverFor(faller.transform, chip.transform, chip.transform.localPosition, new Vector3(chip.transform.localPosition.x, newY, chip.transform.localPosition.z));
     }
     while (crushedChips.Count > 0)
     {
         Chip chipToCrush = crushedChips [0];
         chipToCrush.transform.parent = null;
         //Create and start a particle system
         crushedChips.RemoveAt(0);
         Vector3             chipLocation = chipToCrush.transform.position;
         MJParticleExplosion explosion    = GetParticleExplosion();
         Color chipColor = chipToCrush.GetMainColor();
         explosion.Explode(chipLocation, chipColor, chipColor);
         chipToCrush.gameObject.SetActive(false);
         Destroy(chipToCrush.gameObject);
     }
     crushChipsMeta = new CrushChipsMeta();
     crushedChips.Clear();
     fallingChips.Clear();
     faller.StartFalling();
 }
示例#2
0
    public CrushChipsMeta CleanupStackForCrushedChips(int position)
    {
        CrushChipsMeta crushChipsMeta = CheckForCrushingChips(position);

        foreach (ChipMeta chipMeta in crushChipsMeta.crushedChips)
        {
            RemoveAt(chipMeta.stackPos);
        }
        return(crushChipsMeta);
    }
示例#3
0
 // Use this for initialization
 void Start()
 {
     flipper.AddListener(this, FCEvent.END);
     faller.AddListener(this, FCEvent.END);
     faller.targetTransform = transform;
     crushChipsMeta         = Meta.CleanupStackForCrushedChips(0);
     if (crushChipsMeta.HasCrushedChips)
     {
         Debug.Log("The stack has [" + crushChipsMeta.crushedChips.Count + "] chips that should be crushed. ");
         StartFalling();
     }
 }
示例#4
0
    public CrushChipsMeta FlipStackAt(int position)             //Doesn't actually flip the UI stack, only flips the the chips meta
    {
        ReverseOrderAt(position, chips);
        for (int i = position; i < chips.Count; i++)
        {
            ChipMeta chip = chips [i];
            chip.Flip();
            chip.stackPos = i;
        }

        CrushChipsMeta crushingChips = CheckForCrushingChips(position);

        foreach (ChipMeta meta in crushingChips.crushedChips)
        {
            RemoveAt(meta.stackPos);
        }
        return(crushingChips);
    }
示例#5
0
    public void FlipAt(int position)
    {
        if (flipper.IsFlipping || faller.IsFalling)             //Extra insurance that the meta stack won't be flipped when the flipper isn't finished
        {
            return;
        }

        List <GameObject> chipsToFlip = new List <GameObject> ();

        for (int i = position; i < transform.childCount; i++)
        {
            chipsToFlip.Add(transform.GetChild(i).gameObject);
        }

        crushChipsMeta = meta.FlipStackAt(position);
        flipper.Flip(chipsToFlip, transform);

        Debug.LogFormat("<color=yellow>Flipping at {0}.</color> Updated stack: {1})", position, meta.ToStringShort());
    }