public void UpdateTweetViewSize(TweetView tweetView) { var tweetViewIndex = _instances.IndexOf(tweetView); if (tweetViewIndex < 0) { Debug.LogError("Can't find TweetView index"); return; } var nextTweetView = _instances[(tweetViewIndex + 1) % _instances.Count]; if (nextTweetView.transform.localPosition.y > tweetView.transform.localPosition.y) { return; } var diff = tweetView.transform.localPosition.y - tweetView.GetHeight() - nextTweetView.transform.localPosition.y; foreach (var instance in _instances) { if (instance == tweetView) { continue; } if (instance.transform.localPosition.y < tweetView.transform.localPosition.y) { instance.transform.Translate(Vector3.up * diff); } } }
public void OnTweetViewRemoved(TweetView tweetView) { var tweetViewIndex = _instances.IndexOf(tweetView); if (tweetViewIndex < 0) { Debug.LogError("Can't find TweetView index"); return; } var height = tweetView.GetHeight(); var border = tweetView.transform.localPosition.y; _instances.RemoveAt(tweetViewIndex); tweetView.DeinitTweet(); tweetView.PlayerCommentView.DeinitTweet(); _pool.ReturnObjectToPool(tweetView.GetComponent <PoolObject>()); var instanceOffset = Vector3.up * height; foreach (var instance in _instances) { if (instance.transform.localPosition.y < border) { instance.transform.Translate(instanceOffset); } } HideAllReplies(); }
public void OnCommentAdded(Tweet parentTweet, int childIndex) { TweetView tweetView = null; var tweetViewIndex = -1; for (var i = 0; i < _instances.Count; i++) { var instance = _instances[i]; if (instance.Tweet == parentTweet) { tweetView = instance; tweetViewIndex = i; break; } } if (!tweetView) { Debug.LogError("Can't find parent TweetView instance"); return; } TweetView prevTweetView; int index; if (parentTweet.CommentIds.Count == 1) { prevTweetView = tweetView; index = tweetViewIndex + 1; } else { prevTweetView = _instances[(tweetViewIndex + childIndex) % _instances.Count]; index = (tweetViewIndex + childIndex + 1) % _instances.Count; } var offset = prevTweetView.transform.localPosition.y - prevTweetView.GetHeight(); var commentTweetView = Add(offset, index); var tc = GameState.Instance.TweetsController; var ac = GameState.Instance.AgeController; var qc = GameState.Instance.QuestController; commentTweetView.TweetRoot.SetActive(true); commentTweetView.ReplyRoot.SetActive(false); commentTweetView.InitTweet(this, tc, ac, qc, tc.GetTweetById(parentTweet.CommentIds[childIndex]), false); commentTweetView.transform.SetSiblingIndex(prevTweetView.transform.GetSiblingIndex() + 1); var instanceOffset = Vector3.down * (commentTweetView.GetHeight() + 50f); foreach (var instance in _instances) { if (instance == commentTweetView) { continue; } if (instance.transform.localPosition.y < prevTweetView.transform.localPosition.y) { instance.transform.Translate(instanceOffset); } } // HideAllReplies(); }
public void ShowReply(TweetView tweetView) { var tweetViewIndex = _instances.IndexOf(tweetView); if (tweetViewIndex < 0) { Debug.LogError("Can't find TweetView instance"); return; } var tweet = tweetView.Tweet; TweetView prevTweetView; int index; if (tweet.CommentIds.Count == 0) { prevTweetView = tweetView; index = tweetViewIndex + 1; } else { prevTweetView = _instances[(tweetViewIndex + tweet.CommentIds.Count) % _instances.Count]; index = (tweetViewIndex + tweet.CommentIds.Count + 1) % _instances.Count; } var offset = prevTweetView.transform.localPosition.y - prevTweetView.GetHeight(); var replyTweetView = Add(offset, index); replyTweetView.TweetRoot.SetActive(false); replyTweetView.ReplyRoot.SetActive(true); replyTweetView.InitReply(tweet, this); replyTweetView.transform.SetSiblingIndex(prevTweetView.transform.GetSiblingIndex() + 1); var instanceOffset = Vector3.down * (replyTweetView.GetHeight() + 25f); foreach (var instance in _instances) { if (instance == replyTweetView) { continue; } if (instance.transform.localPosition.y < prevTweetView.transform.localPosition.y) { instance.transform.Translate(instanceOffset); } } }
public void HideReply(TweetView tweetView) { var tweetViewIndex = _instances.IndexOf(tweetView); if (tweetViewIndex < 0) { Debug.LogError("Can't find TweetView instance"); return; } var tweet = tweetView.Tweet; int index; if (tweet.CommentIds.Count == 0) { index = (tweetViewIndex + 1) % _instances.Count; } else { index = (tweetViewIndex + tweet.CommentIds.Count + 1) % _instances.Count; } var replyTweetView = _instances[index]; _instances.RemoveAt(index); var border = replyTweetView.transform.localPosition.y; var height = replyTweetView.GetHeight(); var instanceOffset = Vector3.up * (height + 25f); foreach (var instance in _instances) { if (instance.transform.localPosition.y <= border) { instance.transform.Translate(instanceOffset); } } replyTweetView.PlayerCommentView.DeinitTweet(); _pool.ReturnObjectToPool(replyTweetView.GetComponent <PoolObject>()); }