Example #1
0
    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;
    }
Example #2
0
        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;
        }
Example #3
0
        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);
        }
Example #4
0
        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;
            }
        }
Example #5
0
        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));
            }
        }
Example #6
0
        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));
            }
        }