private void Dragging(CartoonLongRotateView view_, CartoonRotate model_) { int exchanged_index = -1; switch (view_.m_dir) { case ENUM_ITEM_DIRECTION.E_LEFT: exchanged_index = CartoonUtil.GetLeftIndex(view_.Item_index, model_.m_width_unit, this.anchor_w_size, this.anchor_h_size); break; case ENUM_ITEM_DIRECTION.E_UP: exchanged_index = CartoonUtil.GetUpIndex(view_.Item_index, model_.m_width_unit, this.anchor_w_size, this.anchor_h_size); break; case ENUM_ITEM_DIRECTION.E_RIGHT: exchanged_index = CartoonUtil.GetRightIndex(view_.Item_index, model_.m_width_unit, this.anchor_w_size, this.anchor_h_size); break; case ENUM_ITEM_DIRECTION.E_DOWN: exchanged_index = CartoonUtil.GetDownIndex(view_.Item_index, model_.m_width_unit, this.anchor_w_size, this.anchor_h_size); break; } if (-1 == exchanged_index) { return; } if (false == this.CanBeExchanged(exchanged_index)) { return; } AnchorPos exchanged = this.m_anchor_positions[exchanged_index]; int exchanged_id = exchanged.cur_ocuppied_cartoon_item_id; CartoonFixedView exchange_view = m_cartoon_views[exchanged_id]; CartoonFixed exchange_item = m_cartoon.m_cartoon_items[exchanged_id]; //我的钉子点不动,尾巴被替换 int my_tail_index = view_.Tail_index; int my_id = model_.m_item_id; //来我的位置 this.ChangeAnchorPos(exchange_view, exchange_item, my_tail_index, m_anchor_positions[my_tail_index].m_pos); //目的地记录换成我 m_anchor_positions[exchanged_index].cur_ocuppied_cartoon_item_id = my_id; //我的anchor记录换成目的地的 view_.Tail_index = exchanged_index; }
private void PlayVideo(int pre_exit_, bool is_first = false) { AnchorPos ap = this.m_anchor_positions[this.m_cur_index_playing]; int cartoon_id = ap.cur_ocuppied_cartoon_item_id; CartoonFixedView cartoon_view = this.m_cartoon_views[cartoon_id]; cartoon_view.Play(pre_exit_, is_first); m_played_views.Add(cartoon_id); ++this.m_cur_index_playing; }
private bool ChangeAnchorPos(CartoonFixedView item_view, CartoonFixed item, int next_index, Vector2 next_anchor_pos) { List <int> occupy_indexes = item_view.SetAnchorPosAndReturnOccupyIndex(next_anchor_pos, next_index, anchor_w_size, anchor_h_size); if (null == occupy_indexes) { Debug.LogError("此次移动会超过边界"); return(false); } foreach (int occupy_idx in occupy_indexes) { m_anchor_positions[occupy_idx].cur_ocuppied_cartoon_item_id = item.m_item_id; } return(true); }
public void Moving(CartoonDragView view_, CartoonFixed model_) { int my_index = view_.Item_index; int my_id = model_.m_item_id; AnchorPos exchanged = GetNearestNeighbour(my_id, my_index, view_.m_rect.anchoredPosition); if (null != exchanged) { int exchanged_id = exchanged.cur_ocuppied_cartoon_item_id; int exchanged_index = exchanged.m_index_on_panel; CartoonFixedView exchange_view = m_cartoon_views[exchanged_id]; CartoonFixed exchange_item = m_cartoon.m_cartoon_items[exchanged_id]; //来我的位置 this.ChangeAnchorPos(exchange_view, exchange_item, my_index, m_anchor_positions[my_index].m_pos); //他的anchor记录换成我 m_anchor_positions[exchanged_index].cur_ocuppied_cartoon_item_id = my_id; //我的anchor记录换成他 view_.Item_index = exchanged_index; } }
private void ResetCartoonItemPosition() { m_cartoon_views = new Dictionary <int, CartoonFixedView>(); m_played_views = new List <int>(); m_cur_index_playing = 0; int index = 0; for (int i = 0; i < m_cartoon.m_cartoon_items.Count; ++i) { CartoonFixed item = m_cartoon.m_cartoon_items[i]; item.Init(); item.m_item_id = i; CartoonFixedView item_view = null; if (ENUM_CARTOON_ITEM_TYPE.E_SQUARE_FIXED == item.m_item_type) { item_view = item.gameObject.GetComponent <CartoonFixedView>(); } else if (ENUM_CARTOON_ITEM_TYPE.E_SQUARE_DRAG == item.m_item_type) { item_view = item.gameObject.GetComponent <CartoonDragView>(); } else if (ENUM_CARTOON_ITEM_TYPE.E_SQUARE_ROTATE == item.m_item_type) { item_view = item.gameObject.GetComponent <CartoonSquareRotateView>(); } else if (ENUM_CARTOON_ITEM_TYPE.E_LONGRECT_ROTATE == item.m_item_type) { item_view = item.gameObject.GetComponent <CartoonLongRotateView>(); } if (null == item_view) { Debug.LogError("找不到漫画的view" + item.name); return; } m_cartoon_views[item.m_item_id] = item_view; AnchorPos pos_on_panel = m_anchor_positions[index]; while (-1 != pos_on_panel.cur_ocuppied_cartoon_item_id) { ++index; pos_on_panel = m_anchor_positions[index]; } if (!this.ChangeAnchorPos(item_view, item, index, pos_on_panel.m_pos)) { return; } } for (int i = 0; i < m_anchor_positions.Count; ++i) { Debug.Log(string.Format("序列{0},cartoon id {1}", i, m_anchor_positions[i].cur_ocuppied_cartoon_item_id)); } }
private void InitCartoonItemPosition() { m_cartoon_views = new Dictionary <int, CartoonFixedView>(); m_played_views = new List <int>(); m_cur_index_playing = 0; int index = 0; for (int i = 0; i < m_cartoon.m_cartoon_items.Count; ++i) { CartoonFixed item = m_cartoon.m_cartoon_items[i]; item.Init(); item.m_item_id = i; CartoonFixedView item_view = null; if (ENUM_CARTOON_ITEM_TYPE.E_SQUARE_FIXED == item.m_item_type) { item_view = item.gameObject.AddComponent <CartoonFixedView>(); } else if (ENUM_CARTOON_ITEM_TYPE.E_SQUARE_DRAG == item.m_item_type) { item_view = item.gameObject.AddComponent <CartoonDragView>(); ((CartoonDragView)item_view).ReisterMoving(Moving); ((CartoonDragView)item_view).ReisterMoveEnd(MoveEnd); } else if (ENUM_CARTOON_ITEM_TYPE.E_SQUARE_ROTATE == item.m_item_type) { item_view = item.gameObject.AddComponent <CartoonSquareRotateView>(); ((CartoonSquareRotateView)item_view).RegisterCanTurn(CanTurnAround); } else if (ENUM_CARTOON_ITEM_TYPE.E_LONGRECT_ROTATE == item.m_item_type) { item_view = item.gameObject.AddComponent <CartoonLongRotateView>(); ((CartoonLongRotateView)item_view).RegisterCanDrag(CanDrag); ((CartoonLongRotateView)item_view).RegisterDragging(Dragging); } if (null == item_view) { Debug.LogError("找不到漫画种类" + item.name); return; } item_view.SetModel(item); m_cartoon_views[item.m_item_id] = item_view; item_view.OnVideoFinished = PlayNext; AnchorPos pos_on_panel = m_anchor_positions[index]; while (-1 != pos_on_panel.cur_ocuppied_cartoon_item_id) { ++index; pos_on_panel = m_anchor_positions[index]; } if (!this.ChangeAnchorPos(item_view, item, index, pos_on_panel.m_pos)) { return; } } for (int i = 0; i < m_anchor_positions.Count; ++i) { Debug.Log(string.Format("序列{0},cartoon id {1}", i, m_anchor_positions[i].cur_ocuppied_cartoon_item_id)); } }