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); }
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); }