diff --git a/app/src/main/java/com/chwl/app/avroom/dialog/PKScoreBoardDialog.java b/app/src/main/java/com/chwl/app/avroom/dialog/PKScoreBoardDialog.java deleted file mode 100644 index 5a9d64f4e..000000000 --- a/app/src/main/java/com/chwl/app/avroom/dialog/PKScoreBoardDialog.java +++ /dev/null @@ -1,297 +0,0 @@ -package com.chwl.app.avroom.dialog; - -import android.content.Context; -import android.os.Bundle; -import android.view.View; -import android.widget.ProgressBar; -import android.widget.TextView; - -import com.netease.nim.uikit.support.glide.GlideApp; -import com.chwl.app.R; -import com.chwl.app.common.widget.CircleImageView; -import com.chwl.app.ui.widget.dialog.BaseDialog; -import com.chwl.app.ui.widget.dialog.CommonTipDialog; -import com.chwl.core.manager.AvRoomDataManager; -import com.chwl.core.manager.IMNetEaseManager; -import com.chwl.core.manager.RoomEvent; -import com.chwl.core.room.pk.bean.PKMemberInfo; -import com.chwl.core.room.pk.bean.PKTeamInfo; -import com.chwl.core.room.pk.bean.PKTeamMember; -import com.chwl.core.room.pk.bean.RoomPkData; -import com.chwl.core.room.pk.event.PKDataUpdateEvent; -import com.chwl.core.room.pk.event.PKTimeFinishEvent; -import com.chwl.core.room.pk.event.PKTimeTickEvent; -import com.chwl.core.room.pk.model.PkModel; -import com.chwl.core.super_admin.util.SuperAdminUtil; -import com.chwl.library.utils.FormatUtils; -import com.chwl.library.utils.ResUtil; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - -import java.util.ArrayList; -import java.util.List; - -import io.reactivex.SingleObserver; -import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.disposables.Disposable; - -/** - * @author jack - * @Description - * @Date 2019/1/3 - */ -public class PKScoreBoardDialog extends BaseDialog { - - - private TextView tvPkVoteMode; - private View tvClose; - private ProgressBar pbScore; - private TextView tvRedTeamScore; - private TextView tvBlueTeamScore; - private TextView tvPkTimer; - private CircleImageView ivRedAvatar1; - private CircleImageView ivRedAvatar2; - private CircleImageView ivRedAvatar3; - private CircleImageView ivRedAvatar4; - private CircleImageView ivBlueAvatar1; - private CircleImageView ivBlueAvatar2; - private CircleImageView ivBlueAvatar3; - private CircleImageView ivBlueAvatar4; - private TextView tvRestart; - - private final List redTeamAvatars = new ArrayList<>(); - - private final List blueTeamAvatars = new ArrayList<>(); - - private RoomPkData roomPkData; - - private CompositeDisposable compositeDisposable; - - public PKScoreBoardDialog(Context context) { - super(context, R.style.easy_dialog_style); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setCanceledOnTouchOutside(true); - setContentView(R.layout.dialog_pk_score_board); - - tvPkVoteMode = (TextView) findViewById(R.id.tv_pk_vote_mode); - tvClose = findViewById(R.id.tv_close); - pbScore = (ProgressBar) findViewById(R.id.pb_score); - tvRedTeamScore = (TextView) findViewById(R.id.tv_red_team_score); - tvBlueTeamScore = (TextView) findViewById(R.id.tv_blue_team_score); - tvPkTimer = (TextView) findViewById(R.id.tv_pk_timer); - tvRestart = (TextView) findViewById(R.id.tv_restart); - - ivRedAvatar1 = (CircleImageView) findViewById(R.id.iv_red_avatar_1); - ivRedAvatar2 = (CircleImageView) findViewById(R.id.iv_red_avatar_2); - ivRedAvatar3 = (CircleImageView) findViewById(R.id.iv_red_avatar_3); - ivRedAvatar4 = (CircleImageView) findViewById(R.id.iv_red_avatar_4); - - ivBlueAvatar1 = (CircleImageView) findViewById(R.id.iv_blue_avatar_1); - ivBlueAvatar2 = (CircleImageView) findViewById(R.id.iv_blue_avatar_2); - ivBlueAvatar3 = (CircleImageView) findViewById(R.id.iv_blue_avatar_3); - ivBlueAvatar4 = (CircleImageView) findViewById(R.id.iv_blue_avatar_4); - - redTeamAvatars.add(ivRedAvatar1); - redTeamAvatars.add(ivRedAvatar2); - redTeamAvatars.add(ivRedAvatar3); - redTeamAvatars.add(ivRedAvatar4); - - blueTeamAvatars.add(ivBlueAvatar1); - blueTeamAvatars.add(ivBlueAvatar2); - blueTeamAvatars.add(ivBlueAvatar3); - blueTeamAvatars.add(ivBlueAvatar4); - init(); - } - - private void init() { - tvClose.setOnClickListener(v -> dismiss()); - roomPkData = PkModel.get().getCurPkInfo(); - if (roomPkData == null) { - return; - } - if (roomPkData.getVoteMode() == RoomPkData.VOTE_MODE_GIFT) { - tvPkVoteMode.setText(getContext().getResources().getString(R.string.vote_type_gift_value)); - } else if (roomPkData.getVoteMode() == RoomPkData.VOTE_MODE_PERSON) { - tvPkVoteMode.setText(getContext().getResources().getString(R.string.vote_type_gift_member)); - } - - PKTeamInfo redTeam = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_RED); - for (int i = 0; i < redTeamAvatars.size(); i++) { - if (i < redTeam.getTeamMembers().size()) { - redTeamAvatars.get(i).setVisibility(View.VISIBLE); - PKTeamMember pkTeamMember = redTeam.getTeamMembers().get(i); - PKMemberInfo pkMemberInfo = findPKMemberInfo(pkTeamMember.getUid()); - if (pkMemberInfo == null || pkMemberInfo.getUserInfo() == null) { - continue; - } - GlideApp.with(redTeamAvatars.get(i)) - .load(pkMemberInfo.getUserInfo().getAvatar()) - .placeholder(R.drawable.default_avatar) - .dontAnimate() - .into(redTeamAvatars.get(i)); - } else { - redTeamAvatars.get(i).setVisibility(View.GONE); - } - } - - PKTeamInfo blueTeam = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_BLUE); - for (int i = 0; i < blueTeamAvatars.size(); i++) { - if (i < blueTeam.getTeamMembers().size()) { - blueTeamAvatars.get(i).setVisibility(View.VISIBLE); - PKTeamMember pkTeamMember = blueTeam.getTeamMembers().get(i); - PKMemberInfo pkMemberInfo = findPKMemberInfo(pkTeamMember.getUid()); - if (pkMemberInfo == null || pkMemberInfo.getUserInfo() == null) { - continue; - } - GlideApp.with(blueTeamAvatars.get(i)) - .load(pkMemberInfo.getUserInfo().getAvatar()) - .placeholder(R.drawable.default_avatar) - .dontAnimate() - .into(blueTeamAvatars.get(i)); - - } else { - blueTeamAvatars.get(i).setVisibility(View.GONE); - } - } - - if (AvRoomDataManager.get().isManager() && !SuperAdminUtil.isSuperAdmin()) { - tvRestart.setVisibility(View.VISIBLE); - tvRestart.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (PkModel.get().getCurPkInfo() == null) { - toast(ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_01)); - dismiss(); - return; - } - if (PkModel.get().getCurPkInfo().getPkStatus() == RoomPkData.PK_STATUS_AFTER_PK) { - toast(ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_02)); - dismiss(); - return; - } - CommonTipDialog tipDialog = new CommonTipDialog(getContext()); - tipDialog.setTipMsg(ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_03) + - ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_04)); - tipDialog.setOnActionListener( - new CommonTipDialog.OnActionListener() { - @Override - public void onOk() { - PkModel.get().toPKAgain().subscribe(new SingleObserver() { - @Override - public void onSubscribe(Disposable d) { - compositeDisposable.add(d); - } - - @Override - public void onSuccess(String s) { - dismiss(); - } - - @Override - public void onError(Throwable e) { - toast(e.getMessage()); - } - }); - } - } - ); - tipDialog.show(); - } - }); - } else { - tvRestart.setVisibility(View.GONE); - tvRestart.setOnClickListener(null); - } - updateTime(); - onPKDataUpdateEvent(null); - } - - private PKMemberInfo findPKMemberInfo(String account) { - for (PKMemberInfo pkMemberInfo : PkModel.get().getPkMemberInfoList()) { - if (String.valueOf(pkMemberInfo.getUserInfo().getUid()).equals(account)) { - return pkMemberInfo; - } - } - return null; - } - - - private void updateTime() { - roomPkData = PkModel.get().getCurPkInfo(); - if (roomPkData == null) { - return; - } - long pkTimeUntilEnd = roomPkData.getCurPkTimeUntilEnd(); - tvPkTimer.setText(String.format("%1$02d:%2$02d", pkTimeUntilEnd / 60, pkTimeUntilEnd % 60)); - } - - - @Override - protected void onStart() { - super.onStart(); - EventBus.getDefault().register(this); - compositeDisposable = new CompositeDisposable(); - compositeDisposable.add(IMNetEaseManager.get().getChatRoomEventObservable() - .subscribe(this::onReceiveRoomEvent)); - } - - private void onReceiveRoomEvent(RoomEvent roomEvent) { - int event = roomEvent.getEvent(); - switch (event) { - case RoomEvent.PK_INFO_UPDATE: - roomPkData = PkModel.get().getCurPkInfo(); - if (roomPkData != null && (roomPkData.getPkStatus() == RoomPkData.PK_STATUS_BEFORE_PK || - roomPkData.getPkStatus() == RoomPkData.PK_STATUS_AFTER_PK)) { - dismiss(); - } - break; - } - } - - @Override - protected void onStop() { - super.onStop(); - EventBus.getDefault().unregister(this); - compositeDisposable.dispose(); - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onPKDataUpdateEvent(PKDataUpdateEvent event) { - if (PkModel.get().getCurPkInfo() == null - || PkModel.get().getCurPkInfo().getPkStatus() == RoomPkData.PK_STATUS_AFTER_PK) { - dismiss(); - return; - } - - PKTeamInfo redTeam = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_RED); - PKTeamInfo blueTeam = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_BLUE); - if (redTeam == null || blueTeam == null) { - return; - } - long totalScore = redTeam.getScore() + blueTeam.getScore(); - if (totalScore > 0) { - tvRedTeamScore.setText(FormatUtils.formatPKValue(redTeam.getScore())); - tvBlueTeamScore.setText(FormatUtils.formatPKValue(blueTeam.getScore())); - int percent = (int) ((float) redTeam.getScore() / (float) totalScore * 100.0f); - pbScore.setProgress(percent); - } else { - pbScore.setProgress(50); - } - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onPKTimeTickEvent(PKTimeTickEvent event) { - updateTime(); - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onPKTimeFinishEvent(PKTimeFinishEvent event) { - tvPkTimer.setText("00:00"); - } -} diff --git a/app/src/main/java/com/chwl/app/avroom/dialog/PKResultDialog.java b/app/src/main/java/com/chwl/app/avroom/dialog/RoomTeamPKResultDialog.java similarity index 76% rename from app/src/main/java/com/chwl/app/avroom/dialog/PKResultDialog.java rename to app/src/main/java/com/chwl/app/avroom/dialog/RoomTeamPKResultDialog.java index 4848c5eba..5930bae5a 100644 --- a/app/src/main/java/com/chwl/app/avroom/dialog/PKResultDialog.java +++ b/app/src/main/java/com/chwl/app/avroom/dialog/RoomTeamPKResultDialog.java @@ -1,14 +1,13 @@ package com.chwl.app.avroom.dialog; import android.content.Context; -import android.graphics.Color; import android.os.Bundle; import android.view.Gravity; +import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.ImageView; -import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.Nullable; @@ -17,18 +16,16 @@ import androidx.recyclerview.widget.RecyclerView; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; -import com.netease.nim.uikit.support.glide.GlideApp; import com.chwl.app.R; -import com.chwl.app.common.widget.CircleImageView; +import com.chwl.app.databinding.RoomTeamPkResultDialogBinding; import com.chwl.app.ui.widget.dialog.BaseDialog; -import com.chwl.library.common.util.Utils; -import com.chwl.app.ui.widget.recyclerview.decoration.ColorDecoration; import com.chwl.core.auth.AuthModel; import com.chwl.core.room.pk.bean.PKTeamInfo; import com.chwl.core.room.pk.bean.PKTeamMember; import com.chwl.core.room.pk.bean.RoomPkData; import com.chwl.library.utils.FormatUtils; import com.chwl.library.utils.ResUtil; +import com.netease.nim.uikit.support.glide.GlideApp; import java.util.ArrayList; import java.util.List; @@ -40,19 +37,14 @@ import lombok.Data; * @Description * @Date 2019/1/4 */ -public class PKResultDialog extends BaseDialog { +public class RoomTeamPKResultDialog extends BaseDialog { private final static int TEAM_RED = PKTeamInfo.TEAM_RED; private final static int TEAM_BLUE = PKTeamInfo.TEAM_BLUE; private final static int PK_RESULT_VICTORY = 1; private final static int PK_RESULT_FAIL = -1; private final static int PK_RESULT_TIE = 0; - - private LinearLayout llGuardianName; - private LinearLayout llGuardianValue; - private LinearLayout llPkMember; - private LinearLayout llScore; - private ImageView ivResultBottom; + private RoomTeamPkResultDialogBinding binding; private ImageView ivResultTop; private RecyclerView rvList; private TextView tvScore; @@ -60,9 +52,6 @@ public class PKResultDialog extends BaseDialog { private TextView tvGuardianValue; private TextView tvTeamStatus; private TextView tvSeeOtherTeam; - private TextView tvTeamLose; - private LinearLayout llResultTie; - private TextView tvTieScore; private int pkResult = PK_RESULT_TIE; private boolean isShowOpponent = false;//是否在显示对手 @@ -70,8 +59,9 @@ public class PKResultDialog extends BaseDialog { private RoomPkData roomPkData; private PKTeamInfo teamInfo; - public PKResultDialog(Context context, RoomPkData roomPkData) { + public RoomTeamPKResultDialog(Context context, RoomPkData roomPkData) { super(context, R.style.full_screen_dialog); + binding = RoomTeamPkResultDialogBinding.inflate(LayoutInflater.from(getContext())); Window window = getWindow(); if (window != null) { WindowManager.LayoutParams lps = window.getAttributes(); @@ -87,31 +77,20 @@ public class PKResultDialog extends BaseDialog { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCanceledOnTouchOutside(true); - setContentView(R.layout.dialog_pk_result); + setContentView(binding.getRoot()); - llPkMember = (LinearLayout) findViewById(R.id.ll_pk_member); - llScore = (LinearLayout) findViewById(R.id.ll_score); - - ivResultBottom = (ImageView) findViewById(R.id.iv_result_bottom); ivResultTop = (ImageView) findViewById(R.id.iv_result_top); - rvList = (RecyclerView) findViewById(R.id.rv_list); + rvList = (RecyclerView) findViewById(R.id.recycler_view); tvScore = (TextView) findViewById(R.id.tv_score); - llGuardianName = (LinearLayout) findViewById(R.id.ll_guardian_name); - llGuardianValue = (LinearLayout) findViewById(R.id.ll_guardian_value); tvGuardianName = (TextView) findViewById(R.id.tv_guardian_name); tvGuardianValue = (TextView) findViewById(R.id.tv_guardian_value); tvTeamStatus = (TextView) findViewById(R.id.tv_team_status); tvSeeOtherTeam = (TextView) findViewById(R.id.tv_see_other_team); - tvTeamLose = (TextView) findViewById(R.id.tv_team_lose); - - llResultTie = (LinearLayout) findViewById(R.id.ll_result_tie); - tvTieScore = (TextView) findViewById(R.id.tv_tie_score); adapter = new PkResultMemberAdapter(null); rvList.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false)); - rvList.addItemDecoration(new ColorDecoration(Color.TRANSPARENT, Utils.dip2px(getContext(), 10), 0, true)); rvList.setAdapter(adapter); tvSeeOtherTeam.setOnClickListener(v -> { @@ -130,28 +109,29 @@ public class PKResultDialog extends BaseDialog { return; } if (roomPkData.getVoteMode() == RoomPkData.VOTE_MODE_PERSON) { - llGuardianName.setVisibility(View.GONE); - llGuardianValue.setVisibility(View.GONE); + binding.groupGuardianName.setVisibility(View.GONE); + binding.groupGuardianValue.setVisibility(View.GONE); } int result = roomPkData.getResult(); int teamId = findTeamIdByAccount(String.valueOf(AuthModel.get().getCurrentUid())); if (teamId == PKTeamInfo.TEAM_NONE) { //观众 if (result == RoomPkData.PK_RESULT_DRAW) { + teamInfo = findTeamByTeamId(PKTeamInfo.TEAM_RED); pkResult = PK_RESULT_TIE; tvTeamStatus.setText(ResUtil.getString(R.string.avroom_dialog_pkresultdialog_01)); - llPkMember.setVisibility(View.GONE); - llScore.setVisibility(View.GONE); - llGuardianName.setVisibility(View.GONE); - llGuardianValue.setVisibility(View.GONE); - llResultTie.setVisibility(View.VISIBLE); - tvTieScore.setText(FormatUtils.formatPKValue(roomPkData.getTeams().get(0).getScore())); - refreshBgByStatus(); + if (teamInfo != null) { + tvScore.setText(teamInfo.getScore() + ""); + } else { + tvScore.setText("0"); + } + binding.groupGuardianName.setVisibility(View.GONE); + binding.groupGuardianValue.setVisibility(View.GONE); + refreshView(pkResult, teamInfo); } else { pkResult = PK_RESULT_VICTORY; teamInfo = findTeamByTeamId(result); refreshView(pkResult, teamInfo); - } } else { @@ -161,10 +141,13 @@ public class PKResultDialog extends BaseDialog { if (result == RoomPkData.PK_RESULT_DRAW) { pkResult = PK_RESULT_TIE; tvTeamStatus.setText(ResUtil.getString(R.string.avroom_dialog_pkresultdialog_02)); - tvScore.setText(teamInfo.getScore() + ""); - llGuardianName.setVisibility(View.GONE); - llGuardianValue.setVisibility(View.GONE); - tvTeamLose.setVisibility(View.GONE); + if (teamInfo != null) { + tvScore.setText(teamInfo.getScore() + ""); + } else { + tvScore.setText("0"); + } + binding.groupGuardianName.setVisibility(View.GONE); + binding.groupGuardianValue.setVisibility(View.GONE); refreshView(pkResult, teamInfo); } else { @@ -175,7 +158,7 @@ public class PKResultDialog extends BaseDialog { } - private void showTeamMembers(PKTeamInfo teamInfo) { + private void showTeamMembers(int pkResult, PKTeamInfo teamInfo) { List pkResultMembers = new ArrayList<>(); for (PKTeamMember pkTeamMember : teamInfo.getTeamMembers()) { PkResultMember resultMember = new PkResultMember(); @@ -184,22 +167,29 @@ public class PKResultDialog extends BaseDialog { resultMember.isMVP = pkTeamMember.getUid().equals(teamInfo.getMvp()); pkResultMembers.add(resultMember); } + if (pkResult == PK_RESULT_VICTORY) { + adapter.setAvatarBg(R.drawable.room_team_pk_result_avatar_bg_win); + } else if (pkResult == PK_RESULT_FAIL) { + adapter.setAvatarBg(R.drawable.room_team_pk_result_avatar_bg_fail); + } else { + adapter.setAvatarBg(R.drawable.room_team_pk_result_avatar_bg_draw); + } adapter.setNewData(pkResultMembers); } private void showColorByTeam(PKTeamInfo pkTeamInfo) { if (pkTeamInfo.getTeam() == PKTeamInfo.TEAM_RED) { - tvScore.setTextColor(getContext().getResources().getColor(R.color.color_FD4D72)); - tvGuardianName.setTextColor(getContext().getResources().getColor(R.color.color_FD4D72)); - tvGuardianValue.setTextColor(getContext().getResources().getColor(R.color.color_FD4D72)); - tvTeamStatus.setTextColor(getContext().getResources().getColor(R.color.color_FD4D72)); - tvSeeOtherTeam.setTextColor(getContext().getResources().getColor(R.color.color_59B9FB)); + tvScore.setTextColor(getContext().getResources().getColor(R.color.color_FF396F)); + tvGuardianName.setTextColor(getContext().getResources().getColor(R.color.color_FF396F)); + tvGuardianValue.setTextColor(getContext().getResources().getColor(R.color.color_FF396F)); + tvTeamStatus.setTextColor(getContext().getResources().getColor(R.color.color_FF4B81)); + tvSeeOtherTeam.setTextColor(getContext().getResources().getColor(R.color.color_73B8FF)); } else if (pkTeamInfo.getTeam() == PKTeamInfo.TEAM_BLUE) { - tvScore.setTextColor(getContext().getResources().getColor(R.color.color_59B9FB)); - tvGuardianName.setTextColor(getContext().getResources().getColor(R.color.color_59B9FB)); - tvGuardianValue.setTextColor(getContext().getResources().getColor(R.color.color_59B9FB)); - tvTeamStatus.setTextColor(getContext().getResources().getColor(R.color.color_59B9FB)); - tvSeeOtherTeam.setTextColor(getContext().getResources().getColor(R.color.color_FD4D72)); + tvScore.setTextColor(getContext().getResources().getColor(R.color.color_73B8FF)); + tvGuardianName.setTextColor(getContext().getResources().getColor(R.color.color_73B8FF)); + tvGuardianValue.setTextColor(getContext().getResources().getColor(R.color.color_73B8FF)); + tvTeamStatus.setTextColor(getContext().getResources().getColor(R.color.color_73B8FF)); + tvSeeOtherTeam.setTextColor(getContext().getResources().getColor(R.color.color_FF4B81)); } else { //未知 } @@ -207,14 +197,11 @@ public class PKResultDialog extends BaseDialog { private void refreshBgByStatus() { if (pkResult == PK_RESULT_VICTORY) { - ivResultTop.setImageResource(R.drawable.pk_result_victory_top); - ivResultBottom.setImageResource(R.mipmap.pk_result_victory_bottom); + ivResultTop.setImageResource(R.drawable.room_team_pk_result_top_win); } else if (pkResult == PK_RESULT_FAIL) { - ivResultTop.setImageResource(R.drawable.pk_result_fail_top); - ivResultBottom.setImageResource(R.mipmap.pk_result_fail_bottom); + ivResultTop.setImageResource(R.drawable.room_team_pk_result_top_fail); } else if (pkResult == PK_RESULT_TIE) { - ivResultTop.setImageResource(R.drawable.pk_result_tie_top); - ivResultBottom.setImageResource(R.mipmap.pk_result_tie_bottom); + ivResultTop.setImageResource(R.drawable.room_team_pk_result_top_draw); } } @@ -268,7 +255,7 @@ public class PKResultDialog extends BaseDialog { private void refreshView(int pkResult, PKTeamInfo teamInfo) { refreshBgByStatus(); - showTeamMembers(teamInfo); + showTeamMembers(pkResult, teamInfo); showColorByTeam(teamInfo); tvScore.setText(FormatUtils.formatPKValue(teamInfo.getScore())); @@ -291,7 +278,6 @@ public class PKResultDialog extends BaseDialog { if (pkResult == PK_RESULT_VICTORY) { tvTeamStatus.setText(ResUtil.getString(R.string.avroom_dialog_pkresultdialog_06)); } else if (pkResult == PK_RESULT_FAIL) { - tvTeamLose.setVisibility(View.VISIBLE); } tvSeeOtherTeam.setText(ResUtil.getString(R.string.avroom_dialog_pkresultdialog_07)); } else { @@ -305,7 +291,6 @@ public class PKResultDialog extends BaseDialog { if (pkResult == PK_RESULT_VICTORY) { tvTeamStatus.setText(ResUtil.getString(R.string.avroom_dialog_pkresultdialog_011)); } else if (pkResult == PK_RESULT_FAIL) { - tvTeamLose.setVisibility(View.VISIBLE); } tvSeeOtherTeam.setText(ResUtil.getString(R.string.avroom_dialog_pkresultdialog_012)); } else { @@ -327,20 +312,26 @@ public class PKResultDialog extends BaseDialog { class PkResultMemberAdapter extends BaseQuickAdapter { + private int avatarBgResId = R.drawable.room_team_pk_result_avatar_bg_win; + + public void setAvatarBg(int redId) { + this.avatarBgResId = redId; + } + public PkResultMemberAdapter(@Nullable List data) { - super(R.layout.item_pk_result_member_rv, data); + super(R.layout.room_team_pk_result_item, data); } @Override protected void convert(BaseViewHolder helper, PkResultMember item) { - CircleImageView avatar = helper.getView(R.id.civ_avatar); + ImageView avatarBg = helper.getView(R.id.iv_avatar_bg); + avatarBg.setImageResource(avatarBgResId); + ImageView avatar = helper.getView(R.id.iv_avatar); GlideApp.with(avatar) .load(item.avatar) .placeholder(R.drawable.default_avatar) .dontAnimate() .into(avatar); - - helper.setVisible(R.id.iv_mvp_mark, item.isMVP); } } diff --git a/app/src/main/java/com/chwl/app/avroom/dialog/RoomTeamPkDialog.kt b/app/src/main/java/com/chwl/app/avroom/dialog/RoomTeamPkDialog.kt new file mode 100644 index 000000000..1a7dce5ca --- /dev/null +++ b/app/src/main/java/com/chwl/app/avroom/dialog/RoomTeamPkDialog.kt @@ -0,0 +1,319 @@ +package com.chwl.app.avroom.dialog + +import android.text.TextUtils +import android.view.WindowManager +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.isVisible +import com.chwl.app.R +import com.chwl.app.base.BaseDialog +import com.chwl.app.databinding.RoomTeamPkDialogBinding +import com.chwl.app.ui.utils.loadAvatar +import com.chwl.app.ui.widget.dialog.CommonTipDialog +import com.chwl.core.manager.AvRoomDataManager +import com.chwl.core.room.pk.bean.PKTeamInfo +import com.chwl.core.room.pk.bean.RoomPKInvitedUpMicMember +import com.chwl.core.room.pk.bean.RoomPkData +import com.chwl.core.room.pk.event.PKDataUpdateEvent +import com.chwl.core.room.pk.event.PKTimeFinishEvent +import com.chwl.core.room.pk.event.PKTimeTickEvent +import com.chwl.core.room.pk.model.PkModel +import com.chwl.library.utils.FormatUtils +import com.chwl.library.utils.ResUtil +import com.chwl.library.utils.SingleToastUtil +import io.reactivex.SingleObserver +import io.reactivex.disposables.CompositeDisposable +import io.reactivex.disposables.Disposable +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode + +class RoomTeamPkDialog : BaseDialog() { + + private var compositeDisposable: CompositeDisposable? = null + + private var onActionListener: OnActionListener? = null + + override var width = WindowManager.LayoutParams.MATCH_PARENT + + override fun init() { + binding.layoutRoot.setOnClickListener { + dismissAllowingStateLoss() + } + binding.userListBlue.showBlueStyle() + binding.ivClose.setOnClickListener { + dismissAllowingStateLoss() + } + binding.tvNext.setOnClickListener { + if (PkModel.get().isFighting) { + onRestartClick() + } else { + onStartClick() + } + } + binding.ivAvatarRed.setOnClickListener { + if (!PkModel.get().isFighting) { + onSeatClick(PKTeamInfo.TEAM_RED) + } + } + binding.ivAvatarBlue.setOnClickListener { + if (!PkModel.get().isFighting) { + onSeatClick(PKTeamInfo.TEAM_BLUE) + } + } + binding.userListRed.setOnClickListener { + if (!PkModel.get().isFighting) { + onSeatClick(PKTeamInfo.TEAM_RED) + } + } + binding.userListBlue.setOnClickListener { + if (!PkModel.get().isFighting) { + onSeatClick(PKTeamInfo.TEAM_BLUE) + } + } + updateView() + } + + override fun onStart() { + super.onStart() + EventBus.getDefault().register(this) + compositeDisposable = CompositeDisposable() + } + + override fun onStop() { + super.onStop() + EventBus.getDefault().unregister(this) + compositeDisposable?.dispose() + } + + fun setOnActionListener(onActionListener: OnActionListener?) { + this.onActionListener = onActionListener + } + + fun updateView() { + if (_binding == null) { + return + } + updateTeamUserList() + updateTime() + updateProgress() + if (PkModel.get().isFighting) { + binding.tvNext.setText(R.string.pk_restart) + } else { + binding.tvNext.setText(R.string.start_pk) + } + updateManageButtonVisible(AvRoomDataManager.get().isManager) + } + + private fun updateTeamUserList() { + val pkMemberInfoList = PkModel.get().pkMemberInfoList + val redList = + pkMemberInfoList.filter { it.teamId == PKTeamInfo.TEAM_RED }.take(4).mapNotNull { + it.userInfo + } + val blueList = + pkMemberInfoList.filter { it.teamId == PKTeamInfo.TEAM_BLUE }.take(4).mapNotNull { + it.userInfo + } + binding.userListRed.updateData(redList.drop(1).map { + it.avatar + }) + binding.userListBlue.updateData(blueList.drop(1).map { + it.avatar + }) + binding.ivAvatarRed.loadAvatar(redList.firstOrNull()?.avatar) + binding.ivAvatarBlue.loadAvatar(blueList.firstOrNull()?.avatar) + } + + private fun updateManageButtonVisible(isVisible: Boolean) { + val dimensionRatio: String + if (isVisible) { + binding.ivBg.setImageResource(R.drawable.room_team_pk_bg) + binding.tvNext.isVisible = true + dimensionRatio = "309:379" + } else { + binding.ivBg.setImageResource(R.drawable.room_team_pk_bg_no_manage) + binding.tvNext.isVisible = false + dimensionRatio = "309:324" + } + val params = binding.layoutContent.layoutParams as ConstraintLayout.LayoutParams + params.dimensionRatio = dimensionRatio + binding.layoutContent.layoutParams = params + } + + private fun updateTime() { + if (_binding == null) { + return + } + val roomPkData = PkModel.get().curPkInfo + val pkTimeUntilEnd: Long + if (roomPkData?.pkStatus != RoomPkData.PK_STATUS_IN_PK) { + pkTimeUntilEnd = roomPkData?.duration ?: 0 + } else { + pkTimeUntilEnd = roomPkData.curPkTimeUntilEnd + } + binding.tvTime.text = + String.format("%1$02d:%2$02d", pkTimeUntilEnd / 60, pkTimeUntilEnd % 60) + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onPKDataUpdateEvent(event: PKDataUpdateEvent) { + updateProgress() + if (event.type == PKDataUpdateEvent.TYPE_RESULT) { + safeDismiss() + } + } + + private fun updateProgress() { + if (_binding == null) { + return + } + val redTeam = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_RED) + val blueTeam = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_BLUE) + if (redTeam == null || blueTeam == null) { + updateProgress(0, 0) + return + } + updateProgress(redTeam.score, blueTeam.score) + } + + private fun updateProgress(redScore: Long, blueScore: Long) { + val totalScore = redScore + blueScore + if (totalScore > 0) { + binding.tvScoreRed.text = FormatUtils.formatPKValue(redScore) + binding.tvScoreBlue.text = FormatUtils.formatPKValue(blueScore) + updateProgress(redScore.toFloat() / totalScore.toFloat()) + } else { + updateProgress(0.5f) + } + } + + private fun updateProgress(percent: Float) { + binding.pbScore.post { + binding.pbScore.progress = (percent * 100).toInt() + val progress = binding.pbScore.width * (percent) + var bias = + (progress - binding.svgaHot.width / 2f) / (binding.pbScore.width - binding.svgaHot.width) + val layoutParams = binding.svgaHot.layoutParams as ConstraintLayout.LayoutParams + bias = 1f.coerceAtMost(bias) + bias = 0f.coerceAtLeast(bias) + layoutParams.horizontalBias = bias + binding.svgaHot.layoutParams = layoutParams + } + } + + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onPKTimeTickEvent(event: PKTimeTickEvent?) { + updateTime() + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onPKTimeFinishEvent(event: PKTimeFinishEvent?) { + updateView() + } + + private fun onSeatClick(teamType: Int) { + //不是管理员或者房主弹出排麦dialog + if (!AvRoomDataManager.get().isManager) { + //已经排麦不操作 + if (!PkModel.get().pkMemberInfoList.isNullOrEmpty() && AvRoomDataManager.get().myIsInQueue) { + SingleToastUtil.showToastShort(ResUtil.getString(R.string.avroom_widget_pkboardview_03)) + return + } + onActionListener?.onShowPKMicQueueDialog() + return + } + //添加红队人员 + val selectDialog = + PKSelectPeopleDialog(context, teamType, PkModel.get().pkMemberInfoList) + selectDialog.setOnSelectPeopleListener { micEntityList -> //更新队伍,麦序,显示头像 + val upMicMemberList: MutableList = + ArrayList() + for (micEntity in micEntityList) { + if (TextUtils.isEmpty(micEntity.uid)) { + continue + } + val roomPKInvitedUpMicMember = RoomPKInvitedUpMicMember() + if (micEntity.isSelect) { + roomPKInvitedUpMicMember.groupType = teamType + } else { + if (TextUtils.isEmpty(micEntity.uid)) { + roomPKInvitedUpMicMember.groupType = PKTeamInfo.TEAM_NONE + } else { + val teamId = PkModel.get().getTeamIdInPKMemberList(micEntity.uid) + roomPKInvitedUpMicMember.groupType = + if (teamId == teamType) PKTeamInfo.TEAM_NONE else teamId + } + } + roomPKInvitedUpMicMember.uid = micEntity.uid + roomPKInvitedUpMicMember.nick = micEntity.nick + val micQueue = AvRoomDataManager.get().mMicQueueMemberMap + //设置坑位的位置 + for (i in 0 until micQueue.size()) { + val key = micQueue.keyAt(i) + val roomQueueInfo = micQueue[key] + if (roomQueueInfo.mChatRoomMember != null && roomQueueInfo.mChatRoomMember.account == micEntity.uid + ) { + roomPKInvitedUpMicMember.position = key + } + } + upMicMemberList.add(roomPKInvitedUpMicMember) + } + PkModel.get().inviteInTeam(upMicMemberList) + .doOnError { throwable: Throwable -> + SingleToastUtil.showToastShort( + throwable.message + ) + } + .subscribe() + } + selectDialog.show() + } + + private fun onStartClick() { + onActionListener?.onBeginPK() + } + + private fun onRestartClick() { + if (PkModel.get().curPkInfo == null) { + SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_01)) + dismissAllowingStateLoss() + return + } + if (PkModel.get().curPkInfo?.pkStatus == RoomPkData.PK_STATUS_AFTER_PK) { + SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_02)) + dismissAllowingStateLoss() + return + } + val tipDialog = CommonTipDialog(context) + tipDialog.setTipMsg( + ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_03) + + ResUtil.getString(R.string.avroom_dialog_pkscoreboarddialog_04) + ) + tipDialog.setOnActionListener( + object : CommonTipDialog.OnActionListener { + override fun onOk() { + PkModel.get().toPKAgain().subscribe(object : SingleObserver { + override fun onSubscribe(d: Disposable) { + compositeDisposable?.add(d) + } + + override fun onSuccess(t: String) { + dismissAllowingStateLoss() + } + + override fun onError(e: Throwable) { + SingleToastUtil.showToast(e.message) + } + }) + } + } + ) + tipDialog.show() + } + + interface OnActionListener { + fun onBeginPK() + fun onShowPKMicQueueDialog() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/avroom/fragment/HomePartyRoomFragment.java b/app/src/main/java/com/chwl/app/avroom/fragment/HomePartyRoomFragment.java index 38f46777a..c15015f01 100644 --- a/app/src/main/java/com/chwl/app/avroom/fragment/HomePartyRoomFragment.java +++ b/app/src/main/java/com/chwl/app/avroom/fragment/HomePartyRoomFragment.java @@ -8,10 +8,13 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.databinding.DataBindingUtil; +import com.chwl.app.avroom.dialog.RoomTeamPKResultDialog; +import com.chwl.app.avroom.dialog.RoomTeamPkDialog; import com.chwl.app.avroom.headline.RoomHeadlineWidget; import com.chwl.app.avroom.online.RoomOnlineWidget; import com.chwl.app.music.widget.MusicPlayerView; import com.chwl.app.ui.webview.DialogWebViewActivity; +import com.chwl.core.room.pk.event.PKDataUpdateEvent; import com.netease.nim.uikit.common.util.log.LogUtil; import com.trello.rxlifecycle3.android.FragmentEvent; import com.chwl.app.R; @@ -25,12 +28,9 @@ import com.chwl.app.avroom.anotherroompk.RoomPkForceFinishDialog; import com.chwl.app.avroom.anotherroompk.RoomPkReceivedDialog; import com.chwl.app.avroom.dialog.MicQueueDialog; import com.chwl.app.avroom.dialog.PKMicQueueDialog; -import com.chwl.app.avroom.dialog.PKResultDialog; -import com.chwl.app.avroom.dialog.PKScoreBoardDialog; import com.chwl.app.avroom.giftvalue.GiftValueDialogUiHelper; import com.chwl.app.avroom.presenter.HomePartyPresenter; import com.chwl.app.avroom.view.IHomePartyView; -import com.chwl.app.avroom.widget.PKBoardView; import com.chwl.app.base.BaseMvpActivity; import com.chwl.app.common.widget.dialog.DialogManager; import com.chwl.app.databinding.FragmentAvRoomGameBinding; @@ -87,10 +87,10 @@ import io.reactivex.disposables.Disposable; */ @CreatePresenter(HomePartyPresenter.class) public class HomePartyRoomFragment extends BaseRoomFragment implements - IHomePartyView, PKBoardView.OnActionListener { + IHomePartyView, RoomTeamPkDialog.OnActionListener { private long myUid; - private PKBoardView pkBoardView; + private RoomTeamPkDialog teamPkDialog; private Disposable mDisposable; private FragmentAvRoomGameBinding gameBinding; /** @@ -121,8 +121,7 @@ public class HomePartyRoomFragment extends BaseRoomFragment civRedAvatars = new ArrayList<>(); - private final List civBlueAvatars = new ArrayList<>(); - - private void init() { - inflate(getContext(), R.layout.layout_pk_board_view, this); - if (isInEditMode()) { - return; - } - llPkScoreBoard = findViewById(R.id.root_view); - rlRedTeamAddPeople = findViewById(R.id.fl_left); - tvRedTeamScore = this.findViewById(R.id.tv_red_team_score); - rlBlueTeamAddPeople = findViewById(R.id.fl_right); - tvBlueTeamScore = this.findViewById(R.id.tv_blue_team_score); - tvPkTimer = this.findViewById(R.id.tv_pk_timer); - pbScore = findViewById(R.id.pb_score); - ivPkBegin = findViewById(R.id.iv_pk_begin); - civRedTeamMember1 = findViewById(R.id.civ_red_team_member_1); - civRedTeamMember2 = findViewById(R.id.civ_red_team_member_2); - civRedTeamMember3 = findViewById(R.id.civ_red_team_member_3); - civRedTeamMember4 = findViewById(R.id.civ_red_team_member_4); - ivAddRedTeamMember = findViewById(R.id.iv_add_red_team_member); - civBlueTeamMember1 = findViewById(R.id.civ_blue_team_member_1); - civBlueTeamMember2 = findViewById(R.id.civ_blue_team_member_2); - civBlueTeamMember3 = findViewById(R.id.civ_blue_team_member_3); - civBlueTeamMember4 = findViewById(R.id.civ_blue_team_member_4); - ivAddBlueTeamMember = findViewById(R.id.iv_add_blue_team_member); - - civRedAvatars.add(civRedTeamMember1); - civRedAvatars.add(civRedTeamMember2); - civRedAvatars.add(civRedTeamMember3); - civRedAvatars.add(civRedTeamMember4); - - civBlueAvatars.add(civBlueTeamMember1); - civBlueAvatars.add(civBlueTeamMember2); - civBlueAvatars.add(civBlueTeamMember3); - civBlueAvatars.add(civBlueTeamMember4); - - updateView(); - - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - EventBus.getDefault().register(this); - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - EventBus.getDefault().unregister(this); - } - - public void updateView() { - if (PkModel.get().isFighting()) { - long countDownTime = PkModel.get().getCurPkInfo().getCurPkTimeUntilEnd(); - tvPkTimer.setText(String.format(Locale.getDefault(), "%1$02d:%2$02d", countDownTime / 60, countDownTime % 60)); - ivAddRedTeamMember.setVisibility(GONE); - ivAddBlueTeamMember.setVisibility(GONE); - ivPkBegin.setVisibility(GONE); - rlRedTeamAddPeople.setOnClickListener(null); - rlBlueTeamAddPeople.setOnClickListener(null); - tvPkTimer.setOnClickListener(null); - llPkScoreBoard.setOnClickListener(this); - showTeamAvatars(); - - PKTeamInfo blueTeamInfo = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_BLUE); - if (blueTeamInfo != null) { - tvBlueTeamScore.setText(FormatUtils.formatPKValue(blueTeamInfo.getScore())); - } - PKTeamInfo redTeamInfo = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_RED); - if (redTeamInfo != null) { - tvRedTeamScore.setText(FormatUtils.formatPKValue(redTeamInfo.getScore())); - } - - if (redTeamInfo != null && blueTeamInfo != null) { - long totalScore = redTeamInfo.getScore() + blueTeamInfo.getScore(); - if (totalScore > 0) { - int percent = (int) ((float) redTeamInfo.getScore() / (float) totalScore * 100.0f); - pbScore.setProgress(percent); - } else { - pbScore.setProgress(50); - } - } - - } else { - tvPkTimer.setText(ResUtil.getString(R.string.avroom_widget_pkboardview_01)); - if (!isTeamHaveMember(PKTeamInfo.TEAM_RED)) { - ivAddRedTeamMember.setVisibility(VISIBLE); - } else { - ivAddRedTeamMember.setVisibility(GONE); - } - - if (!isTeamHaveMember(PKTeamInfo.TEAM_BLUE)) { - ivAddBlueTeamMember.setVisibility(VISIBLE); - } else { - ivAddBlueTeamMember.setVisibility(GONE); - } - - pbScore.setProgress(50); - - showTeamAvatars(); - rlRedTeamAddPeople.setOnClickListener(this); - rlBlueTeamAddPeople.setOnClickListener(this); - if (AvRoomDataManager.get().isManager()) { - ivPkBegin.setVisibility(VISIBLE); - ivPkBegin.setOnClickListener(this); - } else { - ivPkBegin.setVisibility(GONE); - } - llPkScoreBoard.setOnClickListener(null); - RoomPkData roomPkData = PkModel.get().getCurPkInfo(); - if (roomPkData != null && - (roomPkData.getPkStatus() == RoomPkData.PK_STATUS_BEFORE_PK || roomPkData.getPkStatus() == RoomPkData.PK_STATUS_AFTER_PK)) { - tvBlueTeamScore.setText(FormatUtils.formatPKValue(0)); - tvRedTeamScore.setText(FormatUtils.formatPKValue(0)); - } - } - } - - private boolean isTeamHaveMember(int teamId) { - for (PKMemberInfo pkMemberInfo : PkModel.get().getPkMemberInfoList()) { - if (pkMemberInfo.getTeamId() == teamId) { - return true; - } - } - return false; - } - - public void showTeamAvatars() { - List pkMemberInfoList = PkModel.get().getPkMemberInfoList(); - for (CircleImageView civRedAvatar : civRedAvatars) { - civRedAvatar.setVisibility(GONE); - } - for (CircleImageView civBlueAvatar : civBlueAvatars) { - civBlueAvatar.setVisibility(GONE); - } - int redIndex = 0; - int blueIndex = 0; - for (int i = 0; i < pkMemberInfoList.size(); i++) { - PKMemberInfo pkMemberInfo = pkMemberInfoList.get(i); - if (pkMemberInfo.getTeamId() == PKTeamInfo.TEAM_RED) { - if (redIndex >= civRedAvatars.size()) { - break; - } - civRedAvatars.get(redIndex).setVisibility(VISIBLE); - GlideApp.with(this) - .load(pkMemberInfo.getUserInfo().getAvatar()) - .placeholder(R.drawable.default_avatar) - .dontAnimate() - .into(civRedAvatars.get(redIndex)); - redIndex++; - } else if (pkMemberInfoList.get(i).getTeamId() == PKTeamInfo.TEAM_BLUE) { - if (blueIndex >= civBlueAvatars.size()) { - break; - } - civBlueAvatars.get(blueIndex).setVisibility(VISIBLE); - GlideApp.with(this) - .load(pkMemberInfo.getUserInfo().getAvatar()) - .placeholder(R.drawable.default_avatar) - .dontAnimate() - .into(civBlueAvatars.get(blueIndex)); - blueIndex++; - } - } - } - - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onPKTimeTickEvent(PKTimeTickEvent event) { - if (PkModel.get().getCurPkInfo() == null) { - return; - } - long countDownTime = PkModel.get().getCurPkInfo().getCurPkTimeUntilEnd(); - tvPkTimer.setText(String.format("%1$02d:%2$02d", countDownTime / 60, countDownTime % 60)); - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onPKTimeFinishEvent(PKTimeFinishEvent event) { - updateView(); - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onPKDataUpdateEvent(PKDataUpdateEvent event) { - if (PkModel.get().getCurPkInfo() == null) { - return; - } - if (PkModel.get().getCurPkInfo().getPkStatus() == RoomPkData.PK_STATUS_IN_PK) { - PKTeamInfo blueTeamInfo = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_BLUE); - if (blueTeamInfo != null) { - tvBlueTeamScore.setText(FormatUtils.formatPKValue(blueTeamInfo.getScore())); - } - PKTeamInfo redTeamInfo = PkModel.get().findTeamByTeamId(PKTeamInfo.TEAM_RED); - if (redTeamInfo != null) { - tvRedTeamScore.setText(FormatUtils.formatPKValue(redTeamInfo.getScore())); - } - - if (redTeamInfo != null && blueTeamInfo != null) { - long totalScore = redTeamInfo.getScore() + blueTeamInfo.getScore(); - if (totalScore > 0) { - int percent = (int) ((float) redTeamInfo.getScore() / (float) totalScore * 100.0f); - pbScore.setProgress(percent); - } else { - pbScore.setProgress(50); - } - } - - } - if (PkModel.get().getCurPkInfo().getPkStatus() == RoomPkData.PK_STATUS_AFTER_PK) { - if (onActionListener != null) { - onActionListener.onEndPK(); - } - tvBlueTeamScore.setText(FormatUtils.formatPKValue(0)); - tvRedTeamScore.setText(FormatUtils.formatPKValue(0)); - } - if (PkModel.get().getCurPkInfo().getPkStatus() == RoomPkData.PK_STATUS_TERMINAL_PK_BEFORE_END) { - tvBlueTeamScore.setText(FormatUtils.formatPKValue(0)); - tvRedTeamScore.setText(FormatUtils.formatPKValue(0)); - } - } - - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.fl_left: - //不是管理员或者房主弹出排麦dialog - if (!AvRoomDataManager.get().isManager()) { - //已经排麦不操作 - if (!PkModel.get().getPkMemberInfoList().isEmpty() && AvRoomDataManager.get().myIsInQueue) { -// Toast.makeText(getContext(), ResUtil.getString(R.string.avroom_widget_pkboardview_02), Toast.LENGTH_SHORT).show(); - SingleToastUtil.showToastShort(ResUtil.getString(R.string.avroom_widget_pkboardview_03)); - return; - } - if (onActionListener != null) { - onActionListener.onShowPKMicQueueDialog(); - } - - return; - } - //添加红队人员 - PKSelectPeopleDialog selectRedDialog = new PKSelectPeopleDialog(getContext(), PKTeamInfo.TEAM_RED, PkModel.get().getPkMemberInfoList()); - selectRedDialog.setOnSelectPeopleListener(new PKSelectPeopleDialog.OnSelectPeopleListener() { - @Override - public void onSelectPeople(List micEntityList) { - //更新队伍,麦序,显示头像 - List upMicMemberList = new ArrayList<>(); - for (PKSelectPeopleDialog.MicEntity micEntity : micEntityList) { - if (TextUtils.isEmpty(micEntity.uid)) { - continue; - } - RoomPKInvitedUpMicMember roomPKInvitedUpMicMember = new RoomPKInvitedUpMicMember(); - if (micEntity.isSelect) { - roomPKInvitedUpMicMember.setGroupType(PKTeamInfo.TEAM_RED); - } else { - if (TextUtils.isEmpty(micEntity.uid)) { - roomPKInvitedUpMicMember.setGroupType(PKTeamInfo.TEAM_NONE); - } else { - int teamId = PkModel.get().getTeamIdInPKMemberList(micEntity.uid); - roomPKInvitedUpMicMember.setGroupType( - teamId == PKTeamInfo.TEAM_RED ? PKTeamInfo.TEAM_NONE : teamId); - } - } - roomPKInvitedUpMicMember.setUid(micEntity.uid); - roomPKInvitedUpMicMember.setNick(micEntity.nick); - SparseArray micQueue = AvRoomDataManager.get().mMicQueueMemberMap; - //设置坑位的位置 - for (int i = 0; i < micQueue.size(); i++) { - int key = micQueue.keyAt(i); - RoomQueueInfo roomQueueInfo = micQueue.get(key); - if (roomQueueInfo.mChatRoomMember != null - && roomQueueInfo.mChatRoomMember.getAccount().equals(micEntity.uid)) { - roomPKInvitedUpMicMember.setPosition(key); - } - } - upMicMemberList.add(roomPKInvitedUpMicMember); - } - PkModel.get().inviteInTeam(upMicMemberList) - .doOnError(throwable -> SingleToastUtil.showToastShort(throwable.getMessage())) - .subscribe(); - - } - }); - selectRedDialog.show(); - break; - case R.id.fl_right: - //不是管理员或者房主弹出排麦dialog - if (!AvRoomDataManager.get().isManager()) { - //已经排麦不操作 - if (!PkModel.get().getPkMemberInfoList().isEmpty() && AvRoomDataManager.get().myIsInQueue) { - return; - } - if (onActionListener != null) { - onActionListener.onShowPKMicQueueDialog(); - } - - return; - } - //添加蓝队人员 - PKSelectPeopleDialog selectBlueDialog = new PKSelectPeopleDialog(getContext(), PKTeamInfo.TEAM_BLUE, PkModel.get().getPkMemberInfoList()); - selectBlueDialog.setOnSelectPeopleListener(micEntityList -> { - //更新队伍,麦序,显示头像 - List upMicMemberList = new ArrayList<>(); - for (PKSelectPeopleDialog.MicEntity micEntity : micEntityList) { - if (TextUtils.isEmpty(micEntity.uid)) { - continue; - } - RoomPKInvitedUpMicMember roomPKInvitedUpMicMember = new RoomPKInvitedUpMicMember(); - if (micEntity.isSelect) { - roomPKInvitedUpMicMember.setGroupType(PKTeamInfo.TEAM_BLUE); - } else { - int teamId = PkModel.get().getTeamIdInPKMemberList(micEntity.uid); - roomPKInvitedUpMicMember.setGroupType( - teamId == PKTeamInfo.TEAM_BLUE ? PKTeamInfo.TEAM_NONE : teamId); - } - roomPKInvitedUpMicMember.setUid(micEntity.uid); - roomPKInvitedUpMicMember.setNick(micEntity.nick); - SparseArray micQueue = AvRoomDataManager.get().mMicQueueMemberMap; - //设置坑位的位置 - for (int i = 0; i < micQueue.size(); i++) { - int key = micQueue.keyAt(i); - RoomQueueInfo roomQueueInfo = micQueue.get(key); - if (roomQueueInfo.mChatRoomMember != null && - roomQueueInfo.mChatRoomMember.getAccount().equals(micEntity.uid)) { - roomPKInvitedUpMicMember.setPosition(key); - } - } - upMicMemberList.add(roomPKInvitedUpMicMember); - } - PkModel.get().inviteInTeam(upMicMemberList) - .doOnError(throwable -> SingleToastUtil.showToastShort(throwable.getMessage())) - .subscribe(); - }); - selectBlueDialog.show(); - break; - case R.id.iv_pk_begin: - // 开始PK 倒计时 - if (onActionListener != null) { - onActionListener.onBeginPK(); - } - break; - case R.id.root_view: - //pk中点击pk 面板 - if (PkModel.get().isFighting()) { - PKScoreBoardDialog pkScoreBoardDialog = new PKScoreBoardDialog(getContext()); - pkScoreBoardDialog.show(); - } - break; - default: - break; - } - } - - private OnActionListener onActionListener; - - public void setOnActionListener(OnActionListener onActionListener) { - this.onActionListener = onActionListener; - } - - public interface OnActionListener { - void onBeginPK(); - - void onEndPK(); - - void onShowPKMicQueueDialog(); - } - -} diff --git a/app/src/main/java/com/chwl/app/avroom/widget/TeamPKUserListView.kt b/app/src/main/java/com/chwl/app/avroom/widget/TeamPKUserListView.kt new file mode 100644 index 000000000..bc7429995 --- /dev/null +++ b/app/src/main/java/com/chwl/app/avroom/widget/TeamPKUserListView.kt @@ -0,0 +1,46 @@ +package com.chwl.app.avroom.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.FrameLayout +import androidx.core.view.isInvisible +import androidx.core.view.isVisible +import com.chwl.app.R +import com.chwl.app.databinding.LayoutRoomTeamPkUserListViewBinding +import com.chwl.app.ui.utils.ImageLoadUtils +import com.chwl.core.room.pk.bean.PKMemberInfo + +class TeamPKUserListView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : FrameLayout(context, attrs, defStyleAttr) { + + private val binding = LayoutRoomTeamPkUserListViewBinding.inflate(LayoutInflater.from(context)) + private val ivAvatars = arrayOf(binding.ivAvatar1, binding.ivAvatar2, binding.ivAvatar3) + + init { + addView(binding.root) + } + + fun showBlueStyle() { + binding.ivAvatarSeat1.setImageResource(R.drawable.room_team_pk_bg_seat_blue) + binding.ivAvatarSeat2.setImageResource(R.drawable.room_team_pk_bg_seat_blue) + binding.ivAvatarSeat3.setImageResource(R.drawable.room_team_pk_bg_seat_blue) + } + + fun updateData(data: List?) { + for (i in ivAvatars.indices) { + val item = data?.getOrNull(i) + if (item.isNullOrEmpty()) { + ivAvatars[i].isInvisible = true + } else { + ivAvatars[i].isVisible = true + ImageLoadUtils.loadImage( + context, + item, + ivAvatars[i], R.drawable.default_avatar + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/base/BaseDialog.kt b/app/src/main/java/com/chwl/app/base/BaseDialog.kt index 91f8ec9af..4dfef9730 100644 --- a/app/src/main/java/com/chwl/app/base/BaseDialog.kt +++ b/app/src/main/java/com/chwl/app/base/BaseDialog.kt @@ -7,9 +7,14 @@ import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.* import androidx.fragment.app.FragmentActivity +import androidx.fragment.app.FragmentManager +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.withResumed import androidx.viewbinding.ViewBinding import com.netease.nim.uikit.common.util.sys.ScreenUtil import com.trello.rxlifecycle3.components.support.RxDialogFragment +import kotlinx.coroutines.launch import java.lang.reflect.ParameterizedType abstract class BaseDialog : RxDialogFragment() { @@ -59,6 +64,46 @@ abstract class BaseDialog : RxDialogFragment() { } } + private var safeShowTask: ((FragmentManager, String?) -> Unit)? = null + + fun safeShow(fragmentManager: FragmentManager, lifecycleOwner: LifecycleOwner, tag: String? = null) { + lifecycleOwner.lifecycleScope.launch { + safeShowTask = { fm, tag -> + try { + show(fm, tag) + } catch (e: Exception) { + e.printStackTrace() + } + } + lifecycleOwner.withResumed { + safeShowTask?.invoke(fragmentManager, tag) + } + } + } + + fun safeDismiss() { + try { + dismissAllowingStateLoss() + } catch (e: Exception) { + e.printStackTrace() + } + } + + override fun onDestroy() { + super.onDestroy() + safeShowTask = null + } + + override fun dismiss() { + super.dismiss() + safeShowTask = null + } + + override fun dismissAllowingStateLoss() { + super.dismissAllowingStateLoss() + safeShowTask = null + } + override fun onDismiss(dialog: DialogInterface) { super.onDismiss(dialog) onDismissListener?.invoke() diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_action_left.png b/app/src/main/res/drawable-xxhdpi/room_pk_bg_action_left.png deleted file mode 100644 index 26bb1db6f..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_bg_action_left.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_action_left.webp b/app/src/main/res/drawable-xxhdpi/room_pk_bg_action_left.webp new file mode 100644 index 000000000..a64d59e78 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_bg_action_left.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_action_right.png b/app/src/main/res/drawable-xxhdpi/room_pk_bg_action_right.png deleted file mode 100644 index 740a4f271..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_bg_action_right.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_action_right.webp b/app/src/main/res/drawable-xxhdpi/room_pk_bg_action_right.webp new file mode 100644 index 000000000..d7a90f625 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_bg_action_right.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_full.png b/app/src/main/res/drawable-xxhdpi/room_pk_bg_full.png deleted file mode 100644 index dd6823768..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_bg_full.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_full.webp b/app/src/main/res/drawable-xxhdpi/room_pk_bg_full.webp new file mode 100644 index 000000000..68f22261c Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_bg_full.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_pb_blue.png b/app/src/main/res/drawable-xxhdpi/room_pk_bg_pb_blue.png deleted file mode 100644 index bb4aef930..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_bg_pb_blue.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_pb_blue.webp b/app/src/main/res/drawable-xxhdpi/room_pk_bg_pb_blue.webp new file mode 100644 index 000000000..3b2a60546 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_bg_pb_blue.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_pb_red.png b/app/src/main/res/drawable-xxhdpi/room_pk_bg_pb_red.png deleted file mode 100644 index e27ae95b3..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_bg_pb_red.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_pb_red.webp b/app/src/main/res/drawable-xxhdpi/room_pk_bg_pb_red.webp new file mode 100644 index 000000000..7a34664af Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_bg_pb_red.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_small.png b/app/src/main/res/drawable-xxhdpi/room_pk_bg_small.png deleted file mode 100644 index f8009d3e6..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_bg_small.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_small.webp b/app/src/main/res/drawable-xxhdpi/room_pk_bg_small.webp new file mode 100644 index 000000000..925d26ca0 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_bg_small.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_top.png b/app/src/main/res/drawable-xxhdpi/room_pk_bg_top.png deleted file mode 100644 index bf48d61a4..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_bg_top.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_bg_top.webp b/app/src/main/res/drawable-xxhdpi/room_pk_bg_top.webp new file mode 100644 index 000000000..d11d01c2c Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_bg_top.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_force_result_bg.png b/app/src/main/res/drawable-xxhdpi/room_pk_force_result_bg.png deleted file mode 100644 index 7c82c568d..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_force_result_bg.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_force_result_bg.webp b/app/src/main/res/drawable-xxhdpi/room_pk_force_result_bg.webp new file mode 100644 index 000000000..7a8cbbd14 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_force_result_bg.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_force_result_ic_close.png b/app/src/main/res/drawable-xxhdpi/room_pk_force_result_ic_close.png deleted file mode 100644 index 0d333b5d1..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_force_result_ic_close.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_force_result_ic_close.webp b/app/src/main/res/drawable-xxhdpi/room_pk_force_result_ic_close.webp new file mode 100644 index 000000000..98166d32d Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_force_result_ic_close.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_details.png b/app/src/main/res/drawable-xxhdpi/room_pk_ic_details.png deleted file mode 100644 index 30855aea3..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_ic_details.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_details.webp b/app/src/main/res/drawable-xxhdpi/room_pk_ic_details.webp new file mode 100644 index 000000000..ce0886fc6 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_ic_details.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_help.png b/app/src/main/res/drawable-xxhdpi/room_pk_ic_help.png deleted file mode 100644 index f5aa7bc5e..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_ic_help.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_help.webp b/app/src/main/res/drawable-xxhdpi/room_pk_ic_help.webp new file mode 100644 index 000000000..0c3fee9b2 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_ic_help.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_hot.png b/app/src/main/res/drawable-xxhdpi/room_pk_ic_hot.png deleted file mode 100644 index 4ace7448e..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_ic_hot.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_hot.webp b/app/src/main/res/drawable-xxhdpi/room_pk_ic_hot.webp new file mode 100644 index 000000000..ad4b53122 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_ic_hot.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_pk.png b/app/src/main/res/drawable-xxhdpi/room_pk_ic_pk.png deleted file mode 100644 index 859dfcc8f..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_ic_pk.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_pk.webp b/app/src/main/res/drawable-xxhdpi/room_pk_ic_pk.webp new file mode 100644 index 000000000..b1d03907c Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_ic_pk.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_seat_charm.png b/app/src/main/res/drawable-xxhdpi/room_pk_ic_seat_charm.png deleted file mode 100644 index 20b978493..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_ic_seat_charm.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_seat_charm.webp b/app/src/main/res/drawable-xxhdpi/room_pk_ic_seat_charm.webp new file mode 100644 index 000000000..71e5bdee1 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_ic_seat_charm.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_seat_wealth.png b/app/src/main/res/drawable-xxhdpi/room_pk_ic_seat_wealth.png deleted file mode 100644 index 224133eb2..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_ic_seat_wealth.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_seat_wealth.webp b/app/src/main/res/drawable-xxhdpi/room_pk_ic_seat_wealth.webp new file mode 100644 index 000000000..6fc23a3fa Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_ic_seat_wealth.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_text_charm.png b/app/src/main/res/drawable-xxhdpi/room_pk_ic_text_charm.png deleted file mode 100644 index 125d36496..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_ic_text_charm.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_text_charm.webp b/app/src/main/res/drawable-xxhdpi/room_pk_ic_text_charm.webp new file mode 100644 index 000000000..1d27bbbed Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_ic_text_charm.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_text_wealth.png b/app/src/main/res/drawable-xxhdpi/room_pk_ic_text_wealth.png deleted file mode 100644 index 8694be915..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_ic_text_wealth.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_text_wealth.webp b/app/src/main/res/drawable-xxhdpi/room_pk_ic_text_wealth.webp new file mode 100644 index 000000000..0edf28076 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_ic_text_wealth.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_vs.png b/app/src/main/res/drawable-xxhdpi/room_pk_ic_vs.png deleted file mode 100644 index c7bb8f24b..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_ic_vs.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_ic_vs.webp b/app/src/main/res/drawable-xxhdpi/room_pk_ic_vs.webp new file mode 100644 index 000000000..46819e9ea Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_ic_vs.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_blue.png b/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_blue.png deleted file mode 100644 index a57079403..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_blue.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_blue.webp b/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_blue.webp new file mode 100644 index 000000000..adbea717b Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_blue.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_charm.png b/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_charm.png deleted file mode 100644 index 7345ba25f..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_charm.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_charm.webp b/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_charm.webp new file mode 100644 index 000000000..9dbd09903 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_charm.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_red.png b/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_red.png deleted file mode 100644 index bf917f353..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_red.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_red.webp b/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_red.webp new file mode 100644 index 000000000..3995f0467 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_red.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_wealth.png b/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_wealth.png deleted file mode 100644 index fdd54480d..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_wealth.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_wealth.webp b/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_wealth.webp new file mode 100644 index 000000000..9607e91a4 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_result_avatar_border_wealth.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_bg.png b/app/src/main/res/drawable-xxhdpi/room_pk_result_bg.png deleted file mode 100644 index cdbe9b44b..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_result_bg.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_bg.webp b/app/src/main/res/drawable-xxhdpi/room_pk_result_bg.webp new file mode 100644 index 000000000..326fb6fa9 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_result_bg.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_draw.png b/app/src/main/res/drawable-xxhdpi/room_pk_result_draw.png deleted file mode 100644 index 107c672ae..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_result_draw.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_draw.webp b/app/src/main/res/drawable-xxhdpi/room_pk_result_draw.webp new file mode 100644 index 000000000..f666af2c0 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_result_draw.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_fail.png b/app/src/main/res/drawable-xxhdpi/room_pk_result_fail.png deleted file mode 100644 index d6ef923c4..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_result_fail.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_fail.webp b/app/src/main/res/drawable-xxhdpi/room_pk_result_fail.webp new file mode 100644 index 000000000..7415db524 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_result_fail.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_vs.png b/app/src/main/res/drawable-xxhdpi/room_pk_result_vs.png deleted file mode 100644 index 4f153b875..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_result_vs.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_vs.webp b/app/src/main/res/drawable-xxhdpi/room_pk_result_vs.webp new file mode 100644 index 000000000..cb96ac88e Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_result_vs.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_win.png b/app/src/main/res/drawable-xxhdpi/room_pk_result_win.png deleted file mode 100644 index f8ec228d7..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/room_pk_result_win.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/room_pk_result_win.webp b/app/src/main/res/drawable-xxhdpi/room_pk_result_win.webp new file mode 100644 index 000000000..0ce2c7ebb Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_pk_result_win.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_bg.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg.webp new file mode 100644 index 000000000..af8b8f03c Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_button.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_button.webp new file mode 100644 index 000000000..1e9e8fe55 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_button.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_gift_blue.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_gift_blue.webp new file mode 100644 index 000000000..05ab2d6c7 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_gift_blue.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_gift_red.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_gift_red.webp new file mode 100644 index 000000000..b0f119350 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_gift_red.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_no_manage.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_no_manage.webp new file mode 100644 index 000000000..4b75dcf10 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_no_manage.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_seat_blue.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_seat_blue.webp new file mode 100644 index 000000000..9c9005d55 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_seat_blue.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_seat_red.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_seat_red.webp new file mode 100644 index 000000000..08cca4ab8 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_bg_seat_red.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_ic_close.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_ic_close.webp new file mode 100644 index 000000000..853f338fd Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_ic_close.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_ic_time.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_ic_time.webp new file mode 100644 index 000000000..b0106d5cb Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_ic_time.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_ic_top.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_ic_top.webp new file mode 100644 index 000000000..11b62446e Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_ic_top.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_icon.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_icon.webp new file mode 100644 index 000000000..9396cd417 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_icon.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_result_avatar_bg_draw.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_avatar_bg_draw.webp new file mode 100644 index 000000000..45b567729 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_avatar_bg_draw.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_result_avatar_bg_fail.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_avatar_bg_fail.webp new file mode 100644 index 000000000..dc5039d90 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_avatar_bg_fail.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_result_avatar_bg_win.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_avatar_bg_win.webp new file mode 100644 index 000000000..bf4d5fb39 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_avatar_bg_win.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_result_bg.9.png b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_bg.9.png new file mode 100644 index 000000000..8a415ba83 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_bg.9.png differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_result_ic_arrow.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_ic_arrow.webp new file mode 100644 index 000000000..3ebeb895a Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_ic_arrow.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_result_team_name_bg.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_team_name_bg.webp new file mode 100644 index 000000000..aefd82ba5 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_team_name_bg.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_result_top_draw.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_top_draw.webp new file mode 100644 index 000000000..f45f216d1 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_top_draw.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_result_top_fail.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_top_fail.webp new file mode 100644 index 000000000..be739b662 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_top_fail.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/room_team_pk_result_top_win.webp b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_top_win.webp new file mode 100644 index 000000000..5a38d5d4d Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/room_team_pk_result_top_win.webp differ diff --git a/app/src/main/res/drawable/shape_66000000_14dp.xml b/app/src/main/res/drawable/shape_66000000_14dp.xml new file mode 100644 index 000000000..5c23fb236 --- /dev/null +++ b/app/src/main/res/drawable/shape_66000000_14dp.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_pk_result.xml b/app/src/main/res/layout/dialog_pk_result.xml deleted file mode 100644 index 9730fce4f..000000000 --- a/app/src/main/res/layout/dialog_pk_result.xml +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_pk_score_board.xml b/app/src/main/res/layout/dialog_pk_score_board.xml deleted file mode 100644 index 325381357..000000000 --- a/app/src/main/res/layout/dialog_pk_score_board.xml +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_av_room_game.xml b/app/src/main/res/layout/fragment_av_room_game.xml index 3b8af0f92..b01b17c35 100644 --- a/app/src/main/res/layout/fragment_av_room_game.xml +++ b/app/src/main/res/layout/fragment_av_room_game.xml @@ -260,6 +260,17 @@ android:onClick="@{click}" android:src="@drawable/room_ic_game" /> + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/layout_room_team_pk_user_list_view.xml b/app/src/main/res/layout/layout_room_team_pk_user_list_view.xml new file mode 100644 index 000000000..3b2a7bc96 --- /dev/null +++ b/app/src/main/res/layout/layout_room_team_pk_user_list_view.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/room_team_pk_dialog.xml b/app/src/main/res/layout/room_team_pk_dialog.xml new file mode 100644 index 000000000..0c5b36d1e --- /dev/null +++ b/app/src/main/res/layout/room_team_pk_dialog.xml @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/room_team_pk_result_dialog.xml b/app/src/main/res/layout/room_team_pk_result_dialog.xml new file mode 100644 index 000000000..d61e479f8 --- /dev/null +++ b/app/src/main/res/layout/room_team_pk_result_dialog.xml @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/room_team_pk_result_item.xml b/app/src/main/res/layout/room_team_pk_result_item.xml new file mode 100644 index 000000000..215dff206 --- /dev/null +++ b/app/src/main/res/layout/room_team_pk_result_item.xml @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 1c0a0efd2..d310d80e7 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -1402,15 +1402,15 @@ · متوازن · لا شيء · سجل فريق الأحمر · - عرض سجل فريق الأزرق> + عرض سجل فريق الأزرق · لقد فزت · - عرض سجل الخصم> - عرض سجلي> + عرض سجل الخصم + عرض سجلي · سجل فريق الأزرق · - عرض سجل فريق الأحمر> + عرض سجل فريق الأحمر · لقد فزت · - عرض سجل الخصم> - عرض سجلي> + عرض سجل الخصم + عرض سجلي · سجل الفريق غير المعروف · انتهت فترة الـ PK انتهى الـ PK @@ -5293,4 +5293,7 @@ المحفظة يرجى إدخال … + + 倒計時 + 開始PK \ No newline at end of file diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 0545beb2d..10d067db7 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1420,15 +1420,15 @@ ·勢均力敵· ·紅隊戰績· - 查看藍隊戰績> + 查看藍隊戰績 ·您勝利了· - 查看對方戰績> - 查看我的戰績> + 查看對方戰績 + 查看我的戰績 ·藍隊戰績· - 查看紅隊戰績> + 查看紅隊戰績 ·您勝利了· - 查看對方戰績> - 查看我的戰績> + 查看對方戰績 + 查看我的戰績 ·未知隊戰績· PK已經不在 PK已經結束 @@ -5236,4 +5236,6 @@ 錢包 請輸入.. + 倒計時 + 開始PK \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 0ae87e97b..1fe2655dc 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -734,4 +734,7 @@ #7E8373 #8E8E8E #AD89FF + #73B8FF + #FF396F + #FF4B81 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7bfc6904f..685effda8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1436,15 +1436,15 @@ · Balanced · None · Red Team\'s Record · - View Blue Team\'s Record> + View Blue Team\'s Record · You won · - View Opponent\'s Record> - View My Record> + View Opponent\'s Record + View My Record · Blue Team\'s Record · - View Red Team\'s Record> + View Red Team\'s Record · You won · - View Opponent\'s Record> - View My Record> + View Opponent\'s Record + View My Record · Unknown Team\'s Record · PK is no longer available PK has ended @@ -5274,6 +5274,9 @@ You cannot join again within 24 hours after leaving Wallet Please enter... + + 倒計時 + 開始PK diff --git a/core/src/main/java/com/chwl/core/manager/IMNetEaseManager.java b/core/src/main/java/com/chwl/core/manager/IMNetEaseManager.java index 44ba45e7a..3b41a4d55 100644 --- a/core/src/main/java/com/chwl/core/manager/IMNetEaseManager.java +++ b/core/src/main/java/com/chwl/core/manager/IMNetEaseManager.java @@ -1116,6 +1116,7 @@ public final class IMNetEaseManager { Logger.e(ResUtil.getString(R.string.xchat_android_core_manager_imneteasemanager_020) + msg.getAttachment().toJson(false)); //更新房間PK信息 PkModel.get().onReceivePKCreate(((RoomPkAttachment) msg.getAttachment()).getRoomPkData()); + noticePKCreate(); noticePKInfo(); addMessages(msg); break; @@ -1138,6 +1139,7 @@ public final class IMNetEaseManager { break; case CUSTOM_MESS_SUB_ROOM_PK_RE_START: PkModel.get().onReceivePKCreate(((RoomPkAttachment) msg.getAttachment()).getRoomPkData()); + noticePKCreate(); noticePKInfo(); addMessages(msg); break; @@ -3581,6 +3583,10 @@ public final class IMNetEaseManager { getChatRoomEventObservable().onNext(new RoomEvent().setEvent(RoomEvent.PK_START)); } + private void noticePKCreate() { + getChatRoomEventObservable().onNext(new RoomEvent().setEvent(RoomEvent.PK_CREATE)); + } + /** * 記錄用戶一天進入的房間id,隔天重置 */ diff --git a/core/src/main/java/com/chwl/core/manager/RoomEvent.java b/core/src/main/java/com/chwl/core/manager/RoomEvent.java index 9250284d5..8b009dee5 100644 --- a/core/src/main/java/com/chwl/core/manager/RoomEvent.java +++ b/core/src/main/java/com/chwl/core/manager/RoomEvent.java @@ -138,7 +138,6 @@ public class RoomEvent { //PK开始 public static final int PK_START = 52; - /** * 收到普通多人礼物 */ @@ -266,6 +265,9 @@ public class RoomEvent { public static final int TEMPLATE_NOTIFY = 110; + //PK创建 + public static final int PK_CREATE = 111; + private int event = NONE; private int micPosition = Integer.MIN_VALUE; private int posState = -1; diff --git a/core/src/main/java/com/chwl/core/room/pk/event/PKDataUpdateEvent.java b/core/src/main/java/com/chwl/core/room/pk/event/PKDataUpdateEvent.java index 1c46f5a72..4ec45863f 100644 --- a/core/src/main/java/com/chwl/core/room/pk/event/PKDataUpdateEvent.java +++ b/core/src/main/java/com/chwl/core/room/pk/event/PKDataUpdateEvent.java @@ -6,5 +6,17 @@ package com.chwl.core.room.pk.event; * @Date 2019/1/13 */ public class PKDataUpdateEvent { + public static int TYPE_RESULT = 1; + int type = 0; + public PKDataUpdateEvent() { + } + + public PKDataUpdateEvent(int type) { + this.type = type; + } + + public int getType() { + return type; + } } diff --git a/core/src/main/java/com/chwl/core/room/pk/model/PkModel.java b/core/src/main/java/com/chwl/core/room/pk/model/PkModel.java index a22e151c5..c8cd2fab7 100644 --- a/core/src/main/java/com/chwl/core/room/pk/model/PkModel.java +++ b/core/src/main/java/com/chwl/core/room/pk/model/PkModel.java @@ -992,7 +992,7 @@ public class PkModel extends BaseModel implements IPkModel { //更新PKData curPkInfo = roomPkData; curPkInfo.setCurPkTimeUntilEnd(0); - EventBus.getDefault().post(new PKDataUpdateEvent()); + EventBus.getDefault().post(new PKDataUpdateEvent(PKDataUpdateEvent.TYPE_RESULT)); //清除计分 mapHashMap.clear();