public override void SetModel(CartoonFixed model_) { base.SetModel(model_); DragEventTriggerListener.Get(gameObject).onDrag = Dragging; DragEventTriggerListener.Get(gameObject).onDragEnd = DragEnd; this.m_dir = this.CalcCurDir(); }
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; } }
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); }
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)); } }
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; }
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 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; } }
public override void SetModel(CartoonFixed model_) { base.SetModel(model_); }
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); }
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)); } }