升星活动

mengchengzhen 2021-06-22 16:30:58 +08:00
parent 9baf176021
commit 04001f09b6
3 changed files with 80 additions and 16 deletions

View File

@ -1,43 +1,57 @@
package com.ljsd.jieling.logic.activity; 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.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo; import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.HeroUpStarEvent; import com.ljsd.jieling.logic.activity.event.*;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SActivityRewardConfig; import config.SActivityRewardConfig;
import config.SGlobalActivity; import config.SGlobalActivity;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
public class HeroStarActivity extends AbstractActivity { public class HeroStarActivity extends AbstractActivity {
private int heroId;
public HeroStarActivity(int id) { public HeroStarActivity(int id) {
super(id); super(id);
Poster.getPoster().listenEvent(this, HeroUpStarEvent.class); Poster.getPoster().listenEvent(this, HeroUpStarEvent.class);
Poster.getPoster().listenEvent(this, FiveStarGetEvent.class);
} }
@Override @Override
public void onEvent(IEvent event) throws Exception { public void onEvent(IEvent event) throws Exception {
if (!(event instanceof HeroUpStarEvent)) User user = null;
return; if(event instanceof FiveStarGetEvent){
HeroUpStarEvent heroUpStarEvent = (HeroUpStarEvent) event; FiveStarGetEvent fiveStarGetEvent = (FiveStarGetEvent)event;
User user = UserManager.getUser(heroUpStarEvent.getUid()); if(heroId != fiveStarGetEvent.getHeroid())
return;
user = UserManager.getUser(fiveStarGetEvent.getUid());
}else if(event instanceof HeroUpStarEvent){
HeroUpStarEvent heroUpStarEvent = (HeroUpStarEvent) event;
if(heroUpStarEvent.getHeroTid() != heroId){
return;
}
user = UserManager.getUser(heroUpStarEvent.getUid());
}
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
if( null == activityMission){ if( null == activityMission){
return; return;
} }
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap(); Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
List<SActivityRewardConfig> list = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); List<SActivityRewardConfig> list = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
int heroId = list.get(0).getValues()[0][0];
if(heroUpStarEvent.getHeroTid() != heroId){
return;
}
int maxstar = user.getHeroManager().getHeroHandBook().get(heroId); int maxstar = user.getHeroManager().getHeroHandBook().get(heroId);
for (SActivityRewardConfig sActivityRewardConfig : list) { for (SActivityRewardConfig sActivityRewardConfig : list) {
if (maxstar >= sActivityRewardConfig.getValues()[0][1]) { if (maxstar >= sActivityRewardConfig.getValues()[0][1]) {
@ -71,11 +85,12 @@ public class HeroStarActivity extends AbstractActivity {
} }
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap(); Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
List<SActivityRewardConfig> list = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); List<SActivityRewardConfig> list = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
int heroId = list.get(0).getValues()[0][0]; heroId = list.get(0).getValues()[0][0];
Integer maxstar = user.getHeroManager().getHeroHandBook().get(heroId); Integer maxstar = user.getHeroManager().getHeroHandBook().get(heroId);
if(maxstar == null){ if(maxstar == null){
return; return;
} }
for (SActivityRewardConfig sActivityRewardConfig : list) { for (SActivityRewardConfig sActivityRewardConfig : list) {
if (maxstar.intValue() >= sActivityRewardConfig.getValues()[0][1]) { if (maxstar.intValue() >= sActivityRewardConfig.getValues()[0][1]) {
ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(sActivityRewardConfig.getId(), null); ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(sActivityRewardConfig.getId(), null);
@ -89,4 +104,30 @@ public class HeroStarActivity extends AbstractActivity {
} }
} }
@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;
}
} }

View File

@ -0,0 +1,18 @@
package com.ljsd.jieling.logic.activity.event;
public class FiveStarGetEvent implements IEvent {
private int uid;
private int heroid;
public FiveStarGetEvent(int uid,int heroid){
this.heroid = heroid;
}
public int getHeroid() {
return heroid;
}
public int getUid() {
return uid;
}
}

View File

@ -20,10 +20,7 @@ import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.ActivityType; import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.activity.event.HeroFiveStarGetEvent; import com.ljsd.jieling.logic.activity.event.*;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.UseItemEvent;
import com.ljsd.jieling.logic.activity.event.UserLevelEvent;
import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.hero.HeroLogic;
@ -1262,6 +1259,7 @@ public class ItemUtil {
SItem sItem = SItem.getsItemMap().get(entry.getKey()); SItem sItem = SItem.getsItemMap().get(entry.getKey());
extraDropAop(user,dropBuilder,sItem); extraDropAop(user,dropBuilder,sItem);
} }
fiveStarEvent(user,entry.getKey());
if(reason != BIReason.HERO_RANDOM){ if(reason != BIReason.HERO_RANDOM){
fiveStarPushByCombine(user,entry.getKey(),count); fiveStarPushByCombine(user,entry.getKey(),count);
} }
@ -1728,4 +1726,11 @@ public class ItemUtil {
} }
} }
public static void fiveStarEvent(User user,int itemId){
SCHero scHero = SCHero.getsCHero().get(itemId);
if(scHero != null && scHero.getStar()==5){
Poster.getPoster().dispatchEvent(new FiveStarGetEvent(user.getId(),itemId));
}
}
} }