Пример #1
0
 private bool Move(SlotComponent slot, int step)
 {
     if (current != slot)
     {
         if (slot.IsEmpty)
         {
             slot.ReserveHold(this);
             SetSlot(slot);
         }
         else if (slot.IsMergable(this))
         {
             slot.ReserveMerger(this);
             SetSlot(slot);
         }
         else
         {
             Debug.LogError("maybe wrong box moving logic (id:" + id + ")");
             return(false);
         }
         float t = Mathf.Clamp(Mathf.Abs(step), 0, 3) * 0.05f;
         tween = true;
         LeanTween.move(gameObject, slot.transform.position, t).setEase(LeanTweenType.linear).setOnComplete(HandleMove);
         return(true);
     }
     return(false);
 }
Пример #2
0
    public BoxComponent New(int level = 0, SlotComponent slot = null)
    {
        level = Mathf.Clamp(level, 0, boxPrefabs.Length - 1);

        // set position
        if (slot == null)
        {
            ArrayList list = new ArrayList();
            foreach (SlotComponent s in slots)
            {
                if (s.IsEmpty)
                {
                    list.Add(s);
                }
            }
            if (list.Count == 0)
            {
                Debug.LogError("nowhere found to create box");
                return(null);
            }
            slot = list[(Random.Range(0, list.Count))] as SlotComponent;
        }

        // instantiate box
        count++;
        boxCount++;
        BoxComponent box = Instantiate(boxPrefabs[level], slot.transform.position, Quaternion.identity) as BoxComponent;

        box.transform.SetParent(transform, false);
        box.transform.position = slot.transform.position;
        box.Init(count.ToString(), level, slot);
        slot.ReserveHold(box);
        boxes.Add(box.id, box);

        return(box);
    }