Ejemplo n.º 1
0
 public override void SetModel(CartoonFixed model_)
 {
     base.SetModel(model_);
     DragEventTriggerListener.Get(gameObject).onDrag    = Dragging;
     DragEventTriggerListener.Get(gameObject).onDragEnd = DragEnd;
     this.m_dir = this.CalcCurDir();
 }
Ejemplo n.º 2
0
    public void LoadVideos(CartoonItemWithClips videos_)
    {
        if (this.m_template_id != videos_.Item_id)
        {
            Debug.LogError(string.Format("{0}号动漫加载的是{1}号动漫的视频", m_template_id, videos_.Item_id));
            return;
        }

        if (null == m_cartoon_items || 0 == m_cartoon_items.Count)
        {
            this.Init();
        }

        if (m_cartoon_items.Count != videos_.M_Items.Count)
        {
            Debug.LogError(string.Format("{0}号动漫有模块{1}个,加载的视频模块有{2}个", m_template_id, m_cartoon_items.Count, videos_.M_Items.Count));
            return;
        }

        for (int i = 0; i < m_cartoon_items.Count && i < videos_.M_Items.Count; ++i)
        {
            CartoonFixed item  = m_cartoon_items[i];
            CartoonClips video = videos_.M_Items[i];

            item.m_videos = video.M_clips;
        }
    }
Ejemplo n.º 3
0
    public virtual void SetModel(CartoonFixed model_)
    {
        this.m_model = model_;

        m_player = this.transform.GetComponentInChildren <CartoonPlayer>();
        m_player.Init(this.m_model.GetFirstClip(), (int)this.m_rect.sizeDelta.x, (int)this.m_rect.sizeDelta.y, OnCartoonPlayerFinished);
    }
Ejemplo n.º 4
0
        public void MoveEnd(CartoonDragView view_, CartoonFixed model_)
        {
            this.ChangeAnchorPos(view_, model_, view_.Item_index, m_anchor_positions[view_.Item_index].m_pos);

            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));
            }
        }
Ejemplo n.º 5
0
 public void Init()
 {
     m_play_rect     = this.transform.Find("Play_Rect").GetComponent <RectTransform>();
     m_cartoon_items = new List <CartoonFixed>();
     foreach (Transform child in m_play_rect.transform)
     {
         CartoonFixed item = child.GetComponent <CartoonFixed>();
         m_cartoon_items.Add(item);
     }
 }
    public override void SetModel(CartoonFixed model_)
    {
        base.SetModel(model_);
        //DragEventTriggerListener.Get(gameObject).onDragStart = DragBegin;
        DragEventTriggerListener.Get(gameObject).onDrag    = Dragging;
        DragEventTriggerListener.Get(gameObject).onDragEnd = DragEnd;

        this.m_dir = this.CalcCurDir();

        m_cam = CameraManager.Instance.UICamera;
    }
Ejemplo n.º 7
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;
    }
Ejemplo n.º 8
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);
        }
Ejemplo n.º 9
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;
            }
        }
Ejemplo n.º 10
0
 public override void SetModel(CartoonFixed model_)
 {
     base.SetModel(model_);
 }
Ejemplo n.º 11
0
        private bool CanTurnAround(CartoonSquareRotateView view_, CartoonRotate model_, ENUM_ROTATE_DIR r_dir_)
        {
            int pre_idx = view_.Item_index - 1;

            while (pre_idx > 0)
            {
                if (this.m_anchor_positions[pre_idx].cur_ocuppied_cartoon_item_id != model_.m_item_id)
                {
                    //发现了前面的块

                    int          path      = 0;
                    CartoonFixed pre_model = this.m_cartoon.m_cartoon_items[this.m_anchor_positions[pre_idx].cur_ocuppied_cartoon_item_id];

                    List <int> pre_video_exits = new List <int>();
                    pre_video_exits.AddRange(pre_model.Video_entrance_2_exit.Values);
                    List <int> pre_door_indexes = pre_model.DoorIndexCopy;

                    List <int> cur_video_entrances = new List <int>();
                    cur_video_entrances.AddRange(model_.Video_entrance_2_exit.Keys);
                    List <int> cur_door_indexes = model_.DoorIndexCopy;

                    if (ENUM_ROTATE_DIR.E_CLOCKWISE == r_dir_)
                    {
                        CartoonUtil.ClockwiseRotate(cur_door_indexes);
                    }
                    else
                    {
                        CartoonUtil.AntiClockwiseRotate(cur_door_indexes);
                    }

                    //前一个块,有向右的出口3, 4 则本块8,7位必须有视频
                    //右侧两出口
                    int pre_right_out_3 = pre_door_indexes[2];
                    int pre_right_out_4 = pre_door_indexes[3];
                    if (pre_video_exits.Contains(pre_right_out_3))
                    {
                        //前一个块,有出口3
                        //检查本块是否有入口8的视频
                        int cur_left_in_8 = cur_door_indexes[7];
                        if (cur_video_entrances.Contains(cur_left_in_8))
                        {
                            ++path;
                        }
                    }
                    if (pre_video_exits.Contains(pre_right_out_4))
                    {
                        //前一个块,有出口4
                        //检查本块是否有入口7的视频
                        int cur_left_in_7 = cur_door_indexes[6];
                        if (cur_video_entrances.Contains(cur_left_in_7))
                        {
                            ++path;
                        }
                    }

                    //前一个块,有向上的出口1,2 则本块6,5位必须有视频

                    //上方两出口
                    int pre_up_out_1 = pre_door_indexes[0];
                    int pre_up_out_2 = pre_door_indexes[1];
                    if (pre_video_exits.Contains(pre_up_out_1))
                    {
                        //前一个块,有出口3
                        //检查本块是否有入口8的视频
                        int cur_down_in_6 = cur_door_indexes[5];
                        if (cur_video_entrances.Contains(cur_down_in_6))
                        {
                            ++path;
                        }
                    }
                    if (pre_video_exits.Contains(pre_up_out_2))
                    {
                        //前一个块,有出口4
                        //检查本块是否有入口7的视频
                        int cur_down_in_5 = cur_door_indexes[4];
                        if (cur_video_entrances.Contains(cur_down_in_5))
                        {
                            ++path;
                        }
                    }

                    //前一个块,有向下的出口6, 5 则本块1,2位必须有视频

                    //下方两出口
                    int pre_down_out_6 = pre_door_indexes[5];
                    int pre_down_out_5 = pre_door_indexes[4];
                    if (pre_video_exits.Contains(pre_down_out_6))
                    {
                        //前一个块,有出口3
                        //检查本块是否有入口8的视频
                        int cur_up_in_1 = cur_door_indexes[0];
                        if (cur_video_entrances.Contains(cur_up_in_1))
                        {
                            ++path;
                        }
                    }
                    if (pre_video_exits.Contains(pre_down_out_5))
                    {
                        //前一个块,有出口4
                        //检查本块是否有入口7的视频
                        int cur_up_in_2 = cur_door_indexes[1];
                        if (cur_video_entrances.Contains(cur_up_in_2))
                        {
                            ++path;
                        }
                    }

                    return(path > 0);
                }

                --pre_idx;
            }



            return(true);
        }
Ejemplo n.º 12
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));
            }
        }
Ejemplo n.º 13
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));
            }
        }