升星活动脚本修改提交

yuanshuai 2022-01-22 16:20:41 +08:00
parent c532cad640
commit bb15b379ea
3 changed files with 137 additions and 25 deletions

View File

@ -1592,11 +1592,11 @@ public class ActivityLogic implements IEventHandler{
Map<Integer, ActivityMission> activityMissionMap = user.getActivityManager().getActivityMissionMap();
ActivityMission activityMission = activityMissionMap.get(activityId);
///ChoiceRewardId存的是已经选择的英雄id 一期只能选一次
if(activityMission==null||activityMission.getV()>0){
throw new ErrorCodeException(ErrorCode.HANDLE_FAILED);
}
// if(activityMission==null||activityMission.getV()>0){
// throw new ErrorCodeException(ErrorCode.HANDLE_FAILED);
// }
activityMission.setV(heroTemId);
Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(), heroTemId, 1));
Poster.getPoster().dispatchEvent(new SelectHeroUpStarEvent(user.getId(), heroTemId));
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.UP_STAR_ACTIVITY_SELECT_RESPONSE_VALUE,null,true);
}
//扭转乾坤

View File

@ -1,59 +1,77 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.HeroUpStarEvent;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.*;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.ToolsUtil;
import config.SActivityRewardConfig;
import config.SGlobalActivity;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import java.util.ArrayList;
import java.util.Map;
import java.util.*;
public class HeroUpStarActivity extends AbstractActivity {
public HeroUpStarActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, HeroUpStarEvent.class);
Poster.getPoster().listenEvent(this, FiveStarGetEvent.class);
Poster.getPoster().listenEvent(this, SelectHeroUpStarEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof HeroUpStarEvent))
int uid = 0;
int heroTid = 0;
if (event instanceof HeroUpStarEvent) {
heroTid = ((HeroUpStarEvent) event).getHeroTid();
uid = ((HeroUpStarEvent) event).getUid();
}
else if (event instanceof FiveStarGetEvent){
heroTid = ((FiveStarGetEvent) event).getHeroid();
uid = ((FiveStarGetEvent) event).getUid();
}else if(event instanceof SelectHeroUpStarEvent) {
heroTid = ((SelectHeroUpStarEvent) event).getHeroTid();
User user = UserManager.getUser(((SelectHeroUpStarEvent) event).getUid());
selectHeroUpdateMission(user,heroTid);
return;
HeroUpStarEvent heroUpStarEvent = (HeroUpStarEvent) event;
if (heroUpStarEvent.getStar()==0){
}else{
return;
}
User user = UserManager.getUser(heroUpStarEvent.getUid());
User user = UserManager.getUser(uid);
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
if( null == activityMission){
return;
}
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
if (heroUpStarEvent.getStar()==1){
selectHeroUpdateMission(activityProgressInfoMap,heroUpStarEvent.getHeroTid());
}else{
for (SActivityRewardConfig sActivityRewardConfig : SActivityRewardConfig.getsActivityRewardConfigByActivityId(id)) {
if (heroUpStarEvent.getHeroTid() == sActivityRewardConfig.getValues()[0][0] && heroUpStarEvent.getStar() == sActivityRewardConfig.getValues()[0][1]) {
ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(sActivityRewardConfig.getId(), null);
if (null == activityProgressInfo)
continue;
activityProgressInfo.setProgrss(activityProgressInfo.getProgrss() + 1);
activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo);
List<SActivityRewardConfig> list = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
int maxstar = user.getHeroManager().getHeroStarMap().get(heroTid);
for (SActivityRewardConfig sActivityRewardConfig : list) {
if (sActivityRewardConfig.getValues()[0][0] == heroTid && maxstar >= sActivityRewardConfig.getValues()[0][1]) {
ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(sActivityRewardConfig.getId(), null);
if (null != activityProgressInfo && activityProgressInfo.getState()<1) {
activityProgressInfo.setState(1);
}else{
continue;
}
activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo);
}
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
}
@Override
@ -66,13 +84,84 @@ public class HeroUpStarActivity extends AbstractActivity {
return true;
}
public void selectHeroUpdateMission( Map<Integer, ActivityProgressInfo> activityProgressInfoMap, int heroTId) throws Exception
///选择要升星的英雄
public void selectHeroUpdateMission(User user, int heroTId) throws Exception
{
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
Map<Integer, ActivityProgressInfo> activityProgressInfoMap=activityMission.getActivityMissionMap();
for (SActivityRewardConfig rewardConfig : SActivityRewardConfig.getsActivityRewardConfigByActivityId(id)) {
if (rewardConfig.getValues()[0][0]!=heroTId&&activityProgressInfoMap.containsKey(rewardConfig.getId())){
activityProgressInfoMap.remove(rewardConfig.getId());
}
}
Integer maxstar = user.getHeroManager().getHeroStarMap().get(heroTId);
if(maxstar != null){
for (Map.Entry<Integer, ActivityProgressInfo> progressInfoEntry : activityProgressInfoMap.entrySet()) {
SActivityRewardConfig sActivityRewardConfig=SActivityRewardConfig.getsActivityRewardConfigByMissionId(progressInfoEntry.getKey());
if (maxstar.intValue() >= sActivityRewardConfig.getValues()[0][1]) {
ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(sActivityRewardConfig.getId(), null);
if (null == activityProgressInfo)
continue;
if(activityProgressInfo.getState()<1){
activityProgressInfo.setState(1);
}
activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo);
}
}
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
}
@Override
public boolean takeReward(ISession session, int missionId) throws Exception {
PlayerInfoProto.TakeActivityRewardResponse build = null;
User user = UserManager.getUser(session.getUid());
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(id)) {
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.get(missionId);
if (activityProgressInfo == null || activityProgressInfo.getState() == 2) {
throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取"));
}
activityProgressInfo.setState(2);
SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
if(sActivityRewardConfig==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
sendActivityProgress(session, activityMission, null);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sActivityRewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD);
build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
return true;
}
@Override
public Set<Integer> getCloseGoods(User user){
HashSet<Integer> set = new HashSet<>();
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
if (mission == null){
return set;
}
// 活动奖励条件
List<SActivityRewardConfig> rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
for (SActivityRewardConfig rewardConfig : rewardConfigs) {
Map<Integer, ActivityProgressInfo> map = mission.getActivityMissionMap();
ActivityProgressInfo progressInfo = map.get(rewardConfig.getId());
// 页签不存在或者状态不为可领取状态
if (progressInfo == null || progressInfo.getState() != 1){
int goodsId = rewardConfig.getValues()[2][0];
set.add(goodsId);
break;
}
}
return set;
}
}

View File

@ -0,0 +1,23 @@
package com.ljsd.jieling.logic.activity.event;
/**
*
*/
public class SelectHeroUpStarEvent implements IEvent {
private int uid;
private int heroTid;
public SelectHeroUpStarEvent(int uid, int heroTid) {
this.uid = uid;
this.heroTid = heroTid;
}
public int getUid() {
return uid;
}
public int getHeroTid() {
return heroTid;
}
}