新增跨房PK预约提示气泡

This commit is contained in:
huangjian
2022-07-14 17:41:40 +08:00
parent 84fa1c74e1
commit 6dd7481a29
10 changed files with 81 additions and 10 deletions

View File

@@ -24,12 +24,9 @@ import com.yizhuan.erban.avroom.dialog.MicQueueDialog;
import com.yizhuan.erban.avroom.dialog.PKMicQueueDialog;
import com.yizhuan.erban.avroom.dialog.PKResultDialog;
import com.yizhuan.erban.avroom.dialog.PKScoreBoardDialog;
import com.yizhuan.erban.avroom.firstcharge.FirstChargeDialog;
import com.yizhuan.erban.avroom.firstcharge.FirstChargePrizeDialog;
import com.yizhuan.erban.avroom.giftvalue.GiftValueDialogUiHelper;
import com.yizhuan.erban.avroom.ktv.KtvSongListActivity;
import com.yizhuan.erban.ui.webview.DialogWebViewActivity;
import com.yizhuan.xchat_android_core.helper.AtProxy;
import com.yizhuan.erban.avroom.presenter.HomePartyPresenter;
import com.yizhuan.erban.avroom.view.IHomePartyView;
import com.yizhuan.erban.avroom.widget.PKBoardView;
@@ -38,6 +35,7 @@ import com.yizhuan.erban.common.widget.dialog.DialogManager;
import com.yizhuan.erban.databinding.FragmentAvRoomGameBinding;
import com.yizhuan.erban.treasure_box.widget.GoldBoxHelper;
import com.yizhuan.erban.ui.webview.DatingRuleWebViewActivity;
import com.yizhuan.erban.ui.webview.DialogWebViewActivity;
import com.yizhuan.erban.utils.UserUtils;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.UriProvider;
@@ -53,7 +51,6 @@ import com.yizhuan.xchat_android_core.pay.event.FirstChargeEvent;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.room.event.DatingSelectUserEvent;
import com.yizhuan.xchat_android_core.room.face.DynamicFaceModel;
import com.yizhuan.xchat_android_core.room.event.RoomAtEvent;
import com.yizhuan.xchat_android_core.room.face.FaceInfo;
import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
import com.yizhuan.xchat_android_core.room.model.MicQueueModel;
@@ -66,8 +63,10 @@ import com.yizhuan.xchat_android_core.room.queuing_mic.event.QueuingMicEmptyEven
import com.yizhuan.xchat_android_core.room.queuing_mic.event.QueuingMicNotEmptyEvent;
import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
import com.yizhuan.xchat_android_library.utils.TimeUtils;
import com.yizhuan.xchat_android_library.utils.UIUtils;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
@@ -75,11 +74,13 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.Single;
import io.reactivex.SingleObserver;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
/**
@@ -101,6 +102,7 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
*/
private MicQueueDialog micQueueDialog;
private PKMicQueueDialog pkMicQueueDialog;
private Disposable roomPkOrderDisposable;
public static HomePartyRoomFragment newInstance(boolean isRoomMin) {
HomePartyRoomFragment roomFragment = new HomePartyRoomFragment();
@@ -145,6 +147,7 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
initSpeedyMessage(gameBinding.flSpeedyMessage);
updateQueuingMicBtn();
updatePkScoreBoard();
initRoomPkOrder(AvRoomDataManager.get().showPkBeginTime, AvRoomDataManager.get().pkBeginTime);
getMvpPresenter().getBannerList();
UserModel.get().getCurrentUserInfo()
.compose(bindToLifecycle())
@@ -209,6 +212,7 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
gameBinding.setRoomInfo(AvRoomDataManager.get().mCurrentRoomInfo);
updateQueuingMicBtn();
updatePkScoreBoard();
initRoomPkOrder(AvRoomDataManager.get().showPkBeginTime, AvRoomDataManager.get().pkBeginTime);
break;
case RoomEvent.KICK_DOWN_MIC_BY_S_ADMIN:
case RoomEvent.KICK_DOWN_MIC:
@@ -279,11 +283,30 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
RoomPkFinishDialog.newInstance(roomPkBean).show(mContext);
}
break;
case RoomEvent.ROOM_PK_ORDER:
RoomPkBean roomPkOrder = ((RoomPKAttachment) roomEvent.getChatRoomMessage().getAttachment()).getRoomPkBean();
initRoomPkOrder(true, roomPkOrder.getBeginTime());
break;
default:
break;
}
}
private void initRoomPkOrder(boolean isShowPkBeginTime, long pkBeginTime) {
if (roomPkOrderDisposable != null && !roomPkOrderDisposable.isDisposed()) return;
long residueSeconds = (pkBeginTime - CurrentTimeUtils.getCurrentTime()) / 1000;
if (isShowPkBeginTime && residueSeconds > 0) {
gameBinding.llRoomPkOrder.setVisibility(View.VISIBLE);
roomPkOrderDisposable = Observable.intervalRange(0, residueSeconds, 1, 1, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.doOnComplete(() -> gameBinding.llRoomPkOrder.setVisibility(View.GONE))
.subscribe(aLong -> gameBinding.tvRoomPkOrderTime.setText(TimeUtils.getFormatTimeString((residueSeconds - aLong) * 1000, "min:sec")));
} else {
gameBinding.llRoomPkOrder.setVisibility(View.GONE);
}
}
/**
* cp房自动上麦
*/

View File

@@ -127,6 +127,8 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
AvRoomDataManager.get().isRoomFans = roomInfo.isRoomFans();
AvRoomDataManager.get().trtcSig = roomInfo.getTrtcSig();
AvRoomDataManager.get().clearScreenTime = roomInfo.getClearScreenTime();
AvRoomDataManager.get().showPkBeginTime = roomInfo.isShowPkBeginTime();
AvRoomDataManager.get().pkBeginTime = roomInfo.getPkBeginTime();
AvRoomDataManager.get().setRedEnvelopeOpen(roomInfo.isRedEnvelopeOpen());
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ROOM_LIST_TYPE,
"区分房间类型:" + roomInfo.getRoomTypeLable());

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -78,19 +78,51 @@
</LinearLayout>
<LinearLayout
android:id="@+id/ll_room_pk_order"
android:layout_width="130dp"
android:layout_height="34dp"
android:layout_below="@id/contribute_list"
android:layout_marginTop="5dp"
android:background="@drawable/bg_room_pk_order"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="8dp"
android:includeFontPadding="false"
android:text="距离下一场PK开始"
android:textColor="@color/white"
android:textSize="10sp" />
<TextView
android:id="@+id/tv_room_pk_order_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:includeFontPadding="false"
android:textColor="#fffff333"
android:textSize="10sp"
tools:text="04:55" />
</LinearLayout>
<TextView
android:id="@+id/tv_hour_rank"
android:layout_width="76dp"
android:layout_height="24dp"
android:layout_alignTop="@id/contribute_list"
android:layout_alignParentEnd="true"
android:paddingStart="1dp"
android:background="@drawable/bg_single_room_rank_entrance"
android:drawableStart="@drawable/ic_single_room_rank"
android:drawablePadding="4dp"
android:gravity="center_vertical"
android:includeFontPadding="false"
android:onClick="@{click}"
android:paddingStart="1dp"
android:text="小时榜"
android:textColor="@color/white"
android:textSize="12dp"

View File

@@ -1251,6 +1251,11 @@ public final class IMNetEaseManager {
case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_NOTIFY:
noticeRoomEvent(msg, RoomEvent.SINGLE_ROOM_PK_NOTIFY);
break;
case CUSTOM_MSG_SUB_ROOM_PK_ORDER:
AvRoomDataManager.get().showPkBeginTime = true;
AvRoomDataManager.get().pkBeginTime = roomPkBean.getBeginTime();
noticeRoomEvent(msg, RoomEvent.ROOM_PK_ORDER);
break;
}
break;
case CUSTOM_MSG_VIP:

View File

@@ -346,6 +346,7 @@ public class CustomAttachment implements MsgAttachment {
public static final int CUSTOM_MSG_SUB_ROOM_PK_UPDATE = 834;
public static final int CUSTOM_MSG_SUB_ROOM_PK_FINISH = 835;
public static final int CUSTOM_MSG_SUB_ROOM_PK_NOTIFY = 836;
public static final int CUSTOM_MSG_SUB_ROOM_PK_ORDER = 8314;
public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_INVITE = 837;// 个播pk发出邀请
public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_REFUSE = 838;// 个播pk拒绝邀请
public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_ACCEPT = 839;// 个播pk接受邀请

View File

@@ -110,6 +110,11 @@ public class RoomPkBean implements Serializable {
private String winNick;
private String failNick;
/**
* PK预约字段
*/
private long beginTime;
@Data
public static class RankBean implements Serializable {
//uid

View File

@@ -175,7 +175,8 @@ public final class AvRoomDataManager {
//清空公屏消息时间
public long clearScreenTime;
private Disposable subscribe;
public boolean showPkBeginTime;
public long pkBeginTime;
/**
* 一起玩 按钮开关
*/
@@ -325,9 +326,6 @@ public final class AvRoomDataManager {
if (mCurrentRoomInfo != null) {
mCurrentRoomInfo = null;
}
if (subscribe != null) {
subscribe.dispose();
}
haveSelfChange = false;
GiftValueMrg.get().clearObsever();
mMicQueueMemberMap.clear();

View File

@@ -233,6 +233,8 @@ public class RoomEvent {
public static final int ROOM_RANK_TOP_NOTIFY = 91;
public static final int ROOM_PK_ORDER = 92;
private int event = NONE;
private int micPosition = Integer.MIN_VALUE;
private int posState = -1;

View File

@@ -141,6 +141,9 @@ public class RoomInfo implements Parcelable,Serializable {
private long worldId; // >0:语音派对房
private boolean showPkBeginTime;
private long pkBeginTime;
protected RoomInfo(Parcel in) {
uid = in.readLong();
officeUser = in.readInt();