升星活动

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;
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.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SActivityRewardConfig;
import config.SGlobalActivity;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import java.util.List;
import java.util.Map;
public class HeroStarActivity extends AbstractActivity {
private int heroId;
public HeroStarActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, HeroUpStarEvent.class);
Poster.getPoster().listenEvent(this, FiveStarGetEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof HeroUpStarEvent))
return;
HeroUpStarEvent heroUpStarEvent = (HeroUpStarEvent) event;
User user = UserManager.getUser(heroUpStarEvent.getUid());
User user = null;
if(event instanceof FiveStarGetEvent){
FiveStarGetEvent fiveStarGetEvent = (FiveStarGetEvent)event;
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);
if( null == activityMission){
return;
}
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
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);
for (SActivityRewardConfig sActivityRewardConfig : list) {
if (maxstar >= sActivityRewardConfig.getValues()[0][1]) {
@ -71,11 +85,12 @@ public class HeroStarActivity extends AbstractActivity {
}
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
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);
if(maxstar == null){
return;
}
for (SActivityRewardConfig sActivityRewardConfig : list) {
if (maxstar.intValue() >= sActivityRewardConfig.getValues()[0][1]) {
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.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.activity.event.HeroFiveStarGetEvent;
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.activity.event.*;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
@ -1262,6 +1259,7 @@ public class ItemUtil {
SItem sItem = SItem.getsItemMap().get(entry.getKey());
extraDropAop(user,dropBuilder,sItem);
}
fiveStarEvent(user,entry.getKey());
if(reason != BIReason.HERO_RANDOM){
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));
}
}
}