游戏中用户去掉礼物特效
This commit is contained in:
@@ -537,7 +537,7 @@ public class HomePartyFragment extends AbsRoomFragment implements View.OnClickLi
|
|||||||
ButtonItem buttonItem1 = new ButtonItem("退出房间", new ButtonItem.OnClickListener() {
|
ButtonItem buttonItem1 = new ButtonItem("退出房间", new ButtonItem.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick() {
|
public void onClick() {
|
||||||
if (AvRoomDataManager.get().isGamePlaying(AvRoomDataManager.get().getMicPosition(AuthModel.get().getCurrentUid()))){
|
if (AvRoomDataManager.get().isGamePlaying(AuthModel.get().getCurrentUid())){
|
||||||
getDialogManager().showOkCancelDialog("游戏中退出房间默认逃跑,确定进行此操作?", false,
|
getDialogManager().showOkCancelDialog("游戏中退出房间默认逃跑,确定进行此操作?", false,
|
||||||
() -> ((AVRoomActivity) getActivity()).toBack());
|
() -> ((AVRoomActivity) getActivity()).toBack());
|
||||||
return;
|
return;
|
||||||
@@ -576,7 +576,7 @@ public class HomePartyFragment extends AbsRoomFragment implements View.OnClickLi
|
|||||||
ButtonItem buttonItem2 = new ButtonItem("最小化房间", new ButtonItem.OnClickListener() {
|
ButtonItem buttonItem2 = new ButtonItem("最小化房间", new ButtonItem.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick() {
|
public void onClick() {
|
||||||
if (AvRoomDataManager.get().isGamePlaying(AvRoomDataManager.get().getMicPosition(AuthModel.get().getCurrentUid()))){
|
if (AvRoomDataManager.get().isGamePlaying(AuthModel.get().getCurrentUid())){
|
||||||
getDialogManager().showOkCancelDialog("游戏中最小化房间默认逃跑,确定进行此操作?", false,
|
getDialogManager().showOkCancelDialog("游戏中最小化房间默认逃跑,确定进行此操作?", false,
|
||||||
() -> ((AVRoomActivity) getActivity()).toBack());
|
() -> ((AVRoomActivity) getActivity()).toBack());
|
||||||
return;
|
return;
|
||||||
|
@@ -29,6 +29,7 @@ import com.yizhuan.erban.R;
|
|||||||
import com.yizhuan.erban.common.widget.CircleImageView;
|
import com.yizhuan.erban.common.widget.CircleImageView;
|
||||||
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
|
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
|
||||||
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
|
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
|
||||||
|
import com.yizhuan.xchat_android_core.auth.AuthModel;
|
||||||
import com.yizhuan.xchat_android_core.bean.RoomQueueInfo;
|
import com.yizhuan.xchat_android_core.bean.RoomQueueInfo;
|
||||||
import com.yizhuan.xchat_android_core.gift.GiftModel;
|
import com.yizhuan.xchat_android_core.gift.GiftModel;
|
||||||
import com.yizhuan.xchat_android_core.gift.bean.GiftEffectInfo;
|
import com.yizhuan.xchat_android_core.gift.bean.GiftEffectInfo;
|
||||||
@@ -66,14 +67,6 @@ public class GiftEffectView extends RelativeLayout implements SVGACallback {
|
|||||||
private boolean isAnim;
|
private boolean isAnim;
|
||||||
|
|
||||||
|
|
||||||
public interface GiftEffectListener {
|
|
||||||
void onGiftEffectEnd();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAnim() {
|
|
||||||
return isAnim;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GiftEffectView(Context context) {
|
public GiftEffectView(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
init();
|
init();
|
||||||
@@ -89,6 +82,10 @@ public class GiftEffectView extends RelativeLayout implements SVGACallback {
|
|||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isAnim() {
|
||||||
|
return isAnim;
|
||||||
|
}
|
||||||
|
|
||||||
public void setGiftEffectListener(GiftEffectListener giftEffectListener) {
|
public void setGiftEffectListener(GiftEffectListener giftEffectListener) {
|
||||||
this.giftEffectListener = giftEffectListener;
|
this.giftEffectListener = giftEffectListener;
|
||||||
}
|
}
|
||||||
@@ -184,7 +181,10 @@ public class GiftEffectView extends RelativeLayout implements SVGACallback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void drawSvgaEffect(String url) throws MalformedURLException {
|
private void drawSvgaEffect(String url) throws MalformedURLException {
|
||||||
if (!AvRoomDataManager.get().mIsNeedGiftEffect) return;
|
if (!AvRoomDataManager.get().mIsNeedGiftEffect ||
|
||||||
|
AvRoomDataManager.get().isGamePlaying(AuthModel.get().getCurrentUid())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
SVGAParser.Companion.shareParser().decodeFromURL(new URL(url), new SVGAParser.ParseCompletion() {
|
SVGAParser.Companion.shareParser().decodeFromURL(new URL(url), new SVGAParser.ParseCompletion() {
|
||||||
@Override
|
@Override
|
||||||
public void onComplete(@Nullable SVGAVideoEntity videoItem) {
|
public void onComplete(@Nullable SVGAVideoEntity videoItem) {
|
||||||
@@ -201,7 +201,7 @@ public class GiftEffectView extends RelativeLayout implements SVGACallback {
|
|||||||
public void onError() {
|
public void onError() {
|
||||||
|
|
||||||
}
|
}
|
||||||
},null);
|
}, null);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,27 +225,6 @@ public class GiftEffectView extends RelativeLayout implements SVGACallback {
|
|||||||
objectAnimator1.start();
|
objectAnimator1.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class EffectHandler extends Handler {
|
|
||||||
private WeakReference<GiftEffectView> mReference;
|
|
||||||
|
|
||||||
EffectHandler(GiftEffectView giftEffectView) {
|
|
||||||
mReference = new WeakReference<>(giftEffectView);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handleMessage(Message msg) {
|
|
||||||
super.handleMessage(msg);
|
|
||||||
if (mReference != null) {
|
|
||||||
final GiftEffectView giftEffectView = mReference.get();
|
|
||||||
if (giftEffectView != null) {
|
|
||||||
if (msg.what == 0) {
|
|
||||||
giftEffectView.deleteAnim();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void release() {
|
public void release() {
|
||||||
effectHandler.removeMessages(0);
|
effectHandler.removeMessages(0);
|
||||||
}
|
}
|
||||||
@@ -269,4 +248,29 @@ public class GiftEffectView extends RelativeLayout implements SVGACallback {
|
|||||||
public void onStep(int i, double v) {
|
public void onStep(int i, double v) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface GiftEffectListener {
|
||||||
|
void onGiftEffectEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class EffectHandler extends Handler {
|
||||||
|
private WeakReference<GiftEffectView> mReference;
|
||||||
|
|
||||||
|
EffectHandler(GiftEffectView giftEffectView) {
|
||||||
|
mReference = new WeakReference<>(giftEffectView);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleMessage(Message msg) {
|
||||||
|
super.handleMessage(msg);
|
||||||
|
if (mReference != null) {
|
||||||
|
final GiftEffectView giftEffectView = mReference.get();
|
||||||
|
if (giftEffectView != null) {
|
||||||
|
if (msg.what == 0) {
|
||||||
|
giftEffectView.deleteAnim();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -167,7 +167,8 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
|
|
||||||
|
|
||||||
private void drawMagicAnimation(List<MagicReceivedInfo> magicReceivedInfos) {
|
private void drawMagicAnimation(List<MagicReceivedInfo> magicReceivedInfos) {
|
||||||
if (!AvRoomDataManager.get().mIsNeedGiftEffect) {
|
if (!AvRoomDataManager.get().mIsNeedGiftEffect ||
|
||||||
|
AvRoomDataManager.get().isGamePlaying(AuthModel.get().getCurrentUid())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -300,7 +301,8 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
List<GiftReceiver> targetUsers = new ArrayList<>();
|
List<GiftReceiver> targetUsers = new ArrayList<>();
|
||||||
int totalCoin = 0;
|
int totalCoin = 0;
|
||||||
|
|
||||||
if (AvRoomDataManager.get().mIsNeedGiftEffect) {
|
if (AvRoomDataManager.get().mIsNeedGiftEffect &&
|
||||||
|
!AvRoomDataManager.get().isGamePlaying(AuthModel.get().getCurrentUid())) {
|
||||||
SVGAImageView imageView = playLuckyBagAnim(svgaUrl);
|
SVGAImageView imageView = playLuckyBagAnim(svgaUrl);
|
||||||
handler.postDelayed(() -> {
|
handler.postDelayed(() -> {
|
||||||
removeView(imageView);
|
removeView(imageView);
|
||||||
@@ -385,10 +387,10 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (TextUtils.isEmpty(svgaUrl)) {
|
if (TextUtils.isEmpty(svgaUrl)) {
|
||||||
SVGAParser.Companion.shareParser().decodeFromAssets(path, parseCompletion,null);
|
SVGAParser.Companion.shareParser().decodeFromAssets(path, parseCompletion, null);
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
SVGAParser.Companion.shareParser().decodeFromURL(new URL(svgaUrl), parseCompletion,null);
|
SVGAParser.Companion.shareParser().decodeFromURL(new URL(svgaUrl), parseCompletion, null);
|
||||||
} catch (MalformedURLException e) {
|
} catch (MalformedURLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@@ -448,65 +450,6 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class UiHandler extends Handler {
|
|
||||||
private WeakReference<GiftV2View> mReference;
|
|
||||||
|
|
||||||
UiHandler(GiftV2View giftV2View) {
|
|
||||||
this.mReference = new WeakReference<>(giftV2View);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handleMessage(Message msg) {
|
|
||||||
super.handleMessage(msg);
|
|
||||||
GiftV2View giftV2View = mReference.get();
|
|
||||||
if (giftV2View == null) return;
|
|
||||||
Activity activity = (Activity) giftV2View.context;
|
|
||||||
if (activity == null || activity.isDestroyed()) return;
|
|
||||||
if (msg.what == 0) {
|
|
||||||
// 播放礼物动效
|
|
||||||
GiftEffectInfo giftEffectInfo = (GiftEffectInfo) msg.obj;
|
|
||||||
giftV2View.drawGiftEffect(giftEffectInfo);
|
|
||||||
} else if (msg.what == 1) {
|
|
||||||
// 播放魔法svga
|
|
||||||
if (msg.obj == null) return;
|
|
||||||
MagicReceivedInfo explodeSvga = (MagicReceivedInfo) msg.obj;
|
|
||||||
String animationUrl = giftV2View.getValidExplodeAnimationUrl(explodeSvga.getMagicId(),
|
|
||||||
explodeSvga.getExplodeAnim());
|
|
||||||
if (TextUtils.isEmpty(animationUrl)) return;
|
|
||||||
giftV2View.startSvgaAnimation(animationUrl, new SimpleParseCompletion() {
|
|
||||||
@Override
|
|
||||||
public void onComplete(SVGAVideoEntity svgaVideoEntity) {
|
|
||||||
GiftV2View giftV2View = mReference.get();
|
|
||||||
if (giftV2View == null) return;
|
|
||||||
giftV2View.cacheSvgaVideoItem(animationUrl, svgaVideoEntity);
|
|
||||||
SVGAImageView imageView = giftV2View.mMagicExplodeView;
|
|
||||||
SVGADrawable drawable = new SVGADrawable(svgaVideoEntity);
|
|
||||||
imageView.setLoops(1);
|
|
||||||
imageView.setImageDrawable(drawable);
|
|
||||||
imageView.setClearsAfterStop(true);
|
|
||||||
imageView.startAnimation();
|
|
||||||
imageView.setCallback(new SimpleSvgaCallback(giftV2View) {
|
|
||||||
@Override
|
|
||||||
public void onFinished() {
|
|
||||||
GiftV2View giftV2View = mReference.get();
|
|
||||||
if (giftV2View == null) return;
|
|
||||||
// 移除上一次播放的爆炸特效
|
|
||||||
giftV2View.mMagicReceivedInfos.remove(0);
|
|
||||||
int size = giftV2View.mMagicReceivedInfos.size();
|
|
||||||
if (size > 0) {
|
|
||||||
Message message = Message.obtain();
|
|
||||||
message.what = 1;
|
|
||||||
message.obj = giftV2View.mMagicReceivedInfos.get(0);
|
|
||||||
sendMessage(message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isCenter(MagicReceivedInfo magicReceivedInfo) {
|
private boolean isCenter(MagicReceivedInfo magicReceivedInfo) {
|
||||||
int magicId = magicReceivedInfo.getMagicId();
|
int magicId = magicReceivedInfo.getMagicId();
|
||||||
MagicInfo magicInfo = MagicModel.get().getMagicInfo(magicId);
|
MagicInfo magicInfo = MagicModel.get().getMagicInfo(magicId);
|
||||||
@@ -514,6 +457,13 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
return magicInfo.getPosition() == MagicInfo.POS_CENTER;
|
return magicInfo.getPosition() == MagicInfo.POS_CENTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getValidPathAnimationUrl(int magicId, String url) {
|
||||||
|
if (!TextUtils.isEmpty(url)) return url;
|
||||||
|
MagicInfo magicInfo = MagicModel.get().getMagicInfo(magicId);
|
||||||
|
if (magicInfo == null) return "";
|
||||||
|
return magicInfo.getPathAnim();
|
||||||
|
}
|
||||||
|
|
||||||
// private boolean isCenter(MonsterAttackReceiveInfo monsterAttackReceiveInfo) {
|
// private boolean isCenter(MonsterAttackReceiveInfo monsterAttackReceiveInfo) {
|
||||||
// int magicId = Integer.parseInt(monsterAttackReceiveInfo.getMagicId());
|
// int magicId = Integer.parseInt(monsterAttackReceiveInfo.getMagicId());
|
||||||
// MagicInfo magicInfo = MagicModel.get().getMagicInfo(magicId);
|
// MagicInfo magicInfo = MagicModel.get().getMagicInfo(magicId);
|
||||||
@@ -521,13 +471,6 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
// return magicInfo.getPosition() == MagicInfo.POS_CENTER;
|
// return magicInfo.getPosition() == MagicInfo.POS_CENTER;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
private String getValidPathAnimationUrl(int magicId, String url) {
|
|
||||||
if (!TextUtils.isEmpty(url)) return url;
|
|
||||||
MagicInfo magicInfo = MagicModel.get().getMagicInfo(magicId);
|
|
||||||
if (magicInfo == null) return "";
|
|
||||||
return magicInfo.getPathAnim();
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getValidExplodeAnimationUrl(int magicId, String url) {
|
private String getValidExplodeAnimationUrl(int magicId, String url) {
|
||||||
if (!TextUtils.isEmpty(url)) return url;
|
if (!TextUtils.isEmpty(url)) return url;
|
||||||
MagicInfo magicInfo = MagicModel.get().getMagicInfo(magicId);
|
MagicInfo magicInfo = MagicModel.get().getMagicInfo(magicId);
|
||||||
@@ -581,7 +524,6 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void drawGiftEffect(GiftEffectInfo giftEffectInfo) {
|
private void drawGiftEffect(GiftEffectInfo giftEffectInfo) {
|
||||||
giftEffectInfoList.add(giftEffectInfo);
|
giftEffectInfoList.add(giftEffectInfo);
|
||||||
if (!giftEffectView.isAnim()) {
|
if (!giftEffectView.isAnim()) {
|
||||||
@@ -590,7 +532,6 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 打怪兽时使用的动画效果
|
* 打怪兽时使用的动画效果
|
||||||
*
|
*
|
||||||
@@ -659,7 +600,10 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void drawMagicView(Point senderPoint, Point receivePoint, MagicReceivedInfo magicReceivedInfo) {
|
private void drawMagicView(Point senderPoint, Point receivePoint, MagicReceivedInfo magicReceivedInfo) {
|
||||||
if (!AvRoomDataManager.get().mIsNeedGiftEffect) return;
|
if (!AvRoomDataManager.get().mIsNeedGiftEffect ||
|
||||||
|
AvRoomDataManager.get().isGamePlaying(AuthModel.get().getCurrentUid())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (senderPoint == null)
|
if (senderPoint == null)
|
||||||
senderPoint = new Point(mScreenWidth - giftWidth, mScreenHeight - UIUtil.dip2px(context, 50));
|
senderPoint = new Point(mScreenWidth - giftWidth, mScreenHeight - UIUtil.dip2px(context, 50));
|
||||||
@@ -718,7 +662,7 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
} else {
|
} else {
|
||||||
System.out.println(TAG + ", 用io!");
|
System.out.println(TAG + ", 用io!");
|
||||||
URL url = new URL(animation);
|
URL url = new URL(animation);
|
||||||
mSVGAParser.decodeFromURL(url, parseCompletion,null);
|
mSVGAParser.decodeFromURL(url, parseCompletion, null);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -726,7 +670,8 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void drawGiftView(Point senderPoint, Point receivePoint, GiftReceiveInfo giftReceiveInfo) {
|
private void drawGiftView(Point senderPoint, Point receivePoint, GiftReceiveInfo giftReceiveInfo) {
|
||||||
if (!AvRoomDataManager.get().mIsNeedGiftEffect) {
|
if (!AvRoomDataManager.get().mIsNeedGiftEffect ||
|
||||||
|
AvRoomDataManager.get().isGamePlaying(AuthModel.get().getCurrentUid())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (giftReceiveInfo == null) {
|
if (giftReceiveInfo == null) {
|
||||||
@@ -792,7 +737,6 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
mMagicViewPool.shutdown();
|
mMagicViewPool.shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onGiftEffectEnd() {
|
public void onGiftEffectEnd() {
|
||||||
if (giftEffectInfoList != null && giftEffectInfoList.size() > 0) {
|
if (giftEffectInfoList != null && giftEffectInfoList.size() > 0) {
|
||||||
@@ -808,6 +752,73 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
System.out.println(TAG + "onDetachedFromWindow: " + dettached);
|
System.out.println(TAG + "onDetachedFromWindow: " + dettached);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SVGAVideoEntity popSvgaVideoItem(String url) {
|
||||||
|
return mSVGAVideoEntityMap.get(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cacheSvgaVideoItem(String url, SVGAVideoEntity videoEntity) {
|
||||||
|
mSVGAVideoEntityMap.put(url, videoEntity);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class UiHandler extends Handler {
|
||||||
|
private WeakReference<GiftV2View> mReference;
|
||||||
|
|
||||||
|
UiHandler(GiftV2View giftV2View) {
|
||||||
|
this.mReference = new WeakReference<>(giftV2View);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleMessage(Message msg) {
|
||||||
|
super.handleMessage(msg);
|
||||||
|
GiftV2View giftV2View = mReference.get();
|
||||||
|
if (giftV2View == null) return;
|
||||||
|
Activity activity = (Activity) giftV2View.context;
|
||||||
|
if (activity == null || activity.isDestroyed()) return;
|
||||||
|
if (msg.what == 0) {
|
||||||
|
// 播放礼物动效
|
||||||
|
GiftEffectInfo giftEffectInfo = (GiftEffectInfo) msg.obj;
|
||||||
|
giftV2View.drawGiftEffect(giftEffectInfo);
|
||||||
|
} else if (msg.what == 1) {
|
||||||
|
// 播放魔法svga
|
||||||
|
if (msg.obj == null) return;
|
||||||
|
MagicReceivedInfo explodeSvga = (MagicReceivedInfo) msg.obj;
|
||||||
|
String animationUrl = giftV2View.getValidExplodeAnimationUrl(explodeSvga.getMagicId(),
|
||||||
|
explodeSvga.getExplodeAnim());
|
||||||
|
if (TextUtils.isEmpty(animationUrl)) return;
|
||||||
|
giftV2View.startSvgaAnimation(animationUrl, new SimpleParseCompletion() {
|
||||||
|
@Override
|
||||||
|
public void onComplete(SVGAVideoEntity svgaVideoEntity) {
|
||||||
|
GiftV2View giftV2View = mReference.get();
|
||||||
|
if (giftV2View == null) return;
|
||||||
|
giftV2View.cacheSvgaVideoItem(animationUrl, svgaVideoEntity);
|
||||||
|
SVGAImageView imageView = giftV2View.mMagicExplodeView;
|
||||||
|
SVGADrawable drawable = new SVGADrawable(svgaVideoEntity);
|
||||||
|
imageView.setLoops(1);
|
||||||
|
imageView.setImageDrawable(drawable);
|
||||||
|
imageView.setClearsAfterStop(true);
|
||||||
|
imageView.startAnimation();
|
||||||
|
imageView.setCallback(new SimpleSvgaCallback(giftV2View) {
|
||||||
|
@Override
|
||||||
|
public void onFinished() {
|
||||||
|
GiftV2View giftV2View = mReference.get();
|
||||||
|
if (giftV2View == null) return;
|
||||||
|
// 移除上一次播放的爆炸特效
|
||||||
|
giftV2View.mMagicReceivedInfos.remove(0);
|
||||||
|
int size = giftV2View.mMagicReceivedInfos.size();
|
||||||
|
if (size > 0) {
|
||||||
|
Message message = Message.obtain();
|
||||||
|
message.what = 1;
|
||||||
|
message.obj = giftV2View.mMagicReceivedInfos.get(0);
|
||||||
|
sendMessage(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static class SimpleSvgaCallback implements SVGACallback {
|
private static class SimpleSvgaCallback implements SVGACallback {
|
||||||
private SVGAImageView mImageView;
|
private SVGAImageView mImageView;
|
||||||
private WeakReference<GiftV2View> mReference;
|
private WeakReference<GiftV2View> mReference;
|
||||||
@@ -859,15 +870,6 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private SVGAVideoEntity popSvgaVideoItem(String url) {
|
|
||||||
return mSVGAVideoEntityMap.get(url);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void cacheSvgaVideoItem(String url, SVGAVideoEntity videoEntity) {
|
|
||||||
mSVGAVideoEntityMap.put(url, videoEntity);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private static class SimpleParseCompletion implements SVGAParser.ParseCompletion {
|
private static class SimpleParseCompletion implements SVGAParser.ParseCompletion {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -673,7 +673,8 @@ public class RoomEffectView extends FrameLayout {
|
|||||||
&& userInfo.getCarInfo() != null
|
&& userInfo.getCarInfo() != null
|
||||||
&& userInfo.getCarInfo().isUsing()
|
&& userInfo.getCarInfo().isUsing()
|
||||||
&& userInfo.getCarInfo().getStatus() == CarInfo.STATUS_USER_CAN_USE) {
|
&& userInfo.getCarInfo().getStatus() == CarInfo.STATUS_USER_CAN_USE) {
|
||||||
if (AvRoomDataManager.get().mIsNeedGiftEffect) {
|
if (AvRoomDataManager.get().mIsNeedGiftEffect &&
|
||||||
|
!AvRoomDataManager.get().isGamePlaying(AuthModel.get().getCurrentUid())) {
|
||||||
mCarEffectList.add(userInfo.getCarInfo().getEffect());
|
mCarEffectList.add(userInfo.getCarInfo().getEffect());
|
||||||
}
|
}
|
||||||
// 非贵族人员,进来后要播放座驾动画
|
// 非贵族人员,进来后要播放座驾动画
|
||||||
@@ -702,7 +703,8 @@ public class RoomEffectView extends FrameLayout {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
if (TextUtils.isEmpty(effect)) return;
|
if (TextUtils.isEmpty(effect)) return;
|
||||||
if (AvRoomDataManager.get().mIsNeedGiftEffect) {
|
if (AvRoomDataManager.get().mIsNeedGiftEffect &&
|
||||||
|
!AvRoomDataManager.get().isGamePlaying(AuthModel.get().getCurrentUid())) {
|
||||||
mCarEffectList.add(effect);
|
mCarEffectList.add(effect);
|
||||||
}
|
}
|
||||||
if (!binding.roomCarSvga.isAnimating() && !isSvgaPlaying) {
|
if (!binding.roomCarSvga.isAnimating() && !isSvgaPlaying) {
|
||||||
@@ -719,7 +721,10 @@ public class RoomEffectView extends FrameLayout {
|
|||||||
*/
|
*/
|
||||||
private void playCarSvagEnterRoom(String effect) {
|
private void playCarSvagEnterRoom(String effect) {
|
||||||
if (TextUtils.isEmpty(effect)) return;
|
if (TextUtils.isEmpty(effect)) return;
|
||||||
if (!AvRoomDataManager.get().mIsNeedGiftEffect) return;
|
if (!AvRoomDataManager.get().mIsNeedGiftEffect ||
|
||||||
|
AvRoomDataManager.get().isGamePlaying(AuthModel.get().getCurrentUid())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
isSvgaPlaying = true;
|
isSvgaPlaying = true;
|
||||||
try {
|
try {
|
||||||
SVGAParser.Companion.shareParser().decodeFromURL(new URL(effect),
|
SVGAParser.Companion.shareParser().decodeFromURL(new URL(effect),
|
||||||
@@ -767,8 +772,8 @@ public class RoomEffectView extends FrameLayout {
|
|||||||
private void showRoomPKNotify(ChatRoomMessage chatRoomMessage) {
|
private void showRoomPKNotify(ChatRoomMessage chatRoomMessage) {
|
||||||
RoomPkBean roomPkBean = ((RoomPKAttachment) chatRoomMessage.getAttachment()).getRoomPkBean();
|
RoomPkBean roomPkBean = ((RoomPKAttachment) chatRoomMessage.getAttachment()).getRoomPkBean();
|
||||||
View rootView = LayoutInflater.from(mContext).inflate(R.layout.layout_room_pk_notify, null);
|
View rootView = LayoutInflater.from(mContext).inflate(R.layout.layout_room_pk_notify, null);
|
||||||
((TextView) rootView.findViewById(R.id.tv_title_left)).setText(StringExtensionKt.subAndReplaceDot(roomPkBean.getWinTitle(),7));
|
((TextView) rootView.findViewById(R.id.tv_title_left)).setText(StringExtensionKt.subAndReplaceDot(roomPkBean.getWinTitle(), 7));
|
||||||
((TextView) rootView.findViewById(R.id.tv_title_right)).setText(StringExtensionKt.subAndReplaceDot(roomPkBean.getFailTitle(),7));
|
((TextView) rootView.findViewById(R.id.tv_title_right)).setText(StringExtensionKt.subAndReplaceDot(roomPkBean.getFailTitle(), 7));
|
||||||
((TextView) rootView.findViewById(R.id.tv_win_text)).setText(roomPkBean.getMsg());
|
((TextView) rootView.findViewById(R.id.tv_win_text)).setText(roomPkBean.getMsg());
|
||||||
ImageLoadUtils.loadImage(getContext(), roomPkBean.getWinAvatar(), rootView.findViewById(R.id.iv_avatar_left));
|
ImageLoadUtils.loadImage(getContext(), roomPkBean.getWinAvatar(), rootView.findViewById(R.id.iv_avatar_left));
|
||||||
ImageLoadUtils.loadImage(getContext(), roomPkBean.getFailAvatar(), rootView.findViewById(R.id.iv_avatar_right));
|
ImageLoadUtils.loadImage(getContext(), roomPkBean.getFailAvatar(), rootView.findViewById(R.id.iv_avatar_right));
|
||||||
|
@@ -621,7 +621,7 @@ public final class AvRoomDataManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取坑上没人且没上锁且最大6个坑位的位置
|
* 当前房间是否正在游戏中
|
||||||
*/
|
*/
|
||||||
public boolean isGamePlaying() {
|
public boolean isGamePlaying() {
|
||||||
if (!isOpenGame()) return false;
|
if (!isOpenGame()) return false;
|
||||||
@@ -638,13 +638,21 @@ public final class AvRoomDataManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取坑上没人且没上锁且最大6个坑位的位置
|
* 是否正在游戏中
|
||||||
|
*/
|
||||||
|
public boolean isGamePlaying(long uid) {
|
||||||
|
return isGamePlaying(AvRoomDataManager.get().getMicPosition(uid));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否正在游戏中
|
||||||
*/
|
*/
|
||||||
public boolean isGamePlaying(int micPosition) {
|
public boolean isGamePlaying(int micPosition) {
|
||||||
if (!isOpenGame()) return false;
|
if (!isOpenGame()) return false;
|
||||||
if (mMicQueueMemberMap != null && mMicQueueMemberMap.size() >= 6) {
|
if (mMicQueueMemberMap != null && mMicQueueMemberMap.size() >= 6) {
|
||||||
RoomQueueInfo roomQueueInfo = mMicQueueMemberMap.get(micPosition);
|
RoomQueueInfo roomQueueInfo = mMicQueueMemberMap.get(micPosition);
|
||||||
return roomQueueInfo!=null &&
|
return roomQueueInfo != null &&
|
||||||
roomQueueInfo.mChatRoomMember != null &&
|
roomQueueInfo.mChatRoomMember != null &&
|
||||||
roomQueueInfo.mChatRoomMember.getGameStatus() == GameStatus.STATUS_PLAYING;
|
roomQueueInfo.mChatRoomMember.getGameStatus() == GameStatus.STATUS_PLAYING;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user