新版升星活动脚本提交

yuanshuai 2022-01-20 18:36:25 +08:00
parent c03ae4a02f
commit 2594a30e6a
6 changed files with 133 additions and 1 deletions

View File

@ -0,0 +1,26 @@
package com.ljsd.jieling.handler.activity;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.network.session.ISession;
import org.springframework.stereotype.Component;
import rpc.protocols.ActivityProto;
import rpc.protocols.MessageTypeProto;
/**
* @author lvxinran
* @date 2020/11/11
* @discribe
*/
@Component
public class UpStarActivitySelectRequestHandler extends BaseHandler<ActivityProto.UpStarActivitySelectRequest>{
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.UP_STAR_ACTIVITY_SELECT_REQUEST;
}
@Override
public void processWithProto(ISession iSession, ActivityProto.UpStarActivitySelectRequest proto) throws Exception {
ActivityLogic.getInstance().upStarActivitySelectHero(iSession,proto.getActivityId(),proto.getSelectId());
}
}

View File

@ -1576,6 +1576,29 @@ public class ActivityLogic implements IEventHandler{
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.SPECICAL_MONSTER_CHOOSE_RESPONSE_VALUE,null,true);
}
/**
*
* @param session
* @param activityId
* @param heroTemId
* @throws Exception
*/
public void upStarActivitySelectHero(ISession session,int activityId,int heroTemId) throws Exception{
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
if(activity==null){
throw new ErrorCodeException(ErrorCode.HANDLE_FAILED);
}
User user = UserManager.getUser(session.getUid());
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);
}
activityMission.setV(heroTemId);
Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(), heroTemId, 1));
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.UP_STAR_ACTIVITY_SELECT_RESPONSE_VALUE,null,true);
}
//扭转乾坤
public void goodLuckRandom(ISession session, int activityId, MessageTypeProto.MessageType messageType) throws Exception {

View File

@ -112,6 +112,7 @@ public interface ActivityType {
int SPECIAL_MONSTER_GIFT_ACTIVITY = 101;//灵兽礼包
int NEW_PLAYER_SHOP = 91; // 新人商城
int HERO_UP_STAR_ACTIVITY=94;//限时升星活动
int NEW_GENERAL_ATTACK = 200;//新将来袭

View File

@ -99,7 +99,8 @@ public enum ActivityTypeEnum {
DAILY_PREFERENTIAL_GIFT(ActivityType.DAILY_PREFERENTIAL_GIFT,DailyPreferentialGiftActivity::new),
SUMMON_TREASURE(ActivityType.SUMMON_TREASURE,SummonTreasureActivity::new),//招募秘宝
NEW_PLAYER_SHOP(ActivityType.NEW_PLAYER_SHOP, NewPlayerShopActivity::new),
NEW_DAILY_RECHARGE(ActivityType.NEW_DAILY_RECHARGE, RechargeRewardActivity::new)
NEW_DAILY_RECHARGE(ActivityType.NEW_DAILY_RECHARGE, RechargeRewardActivity::new),
HERO_UP_STAR_ACTIVITY(ActivityType.HERO_UP_STAR_ACTIVITY,HeroUpStarActivity::new)
;
private int type;

View File

@ -0,0 +1,78 @@
package com.ljsd.jieling.logic.activity;
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.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.ToolsUtil;
import config.SActivityRewardConfig;
import config.SGlobalActivity;
import java.util.ArrayList;
import java.util.Map;
public class HeroUpStarActivity extends AbstractActivity {
public HeroUpStarActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, HeroUpStarEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof HeroUpStarEvent))
return;
HeroUpStarEvent heroUpStarEvent = (HeroUpStarEvent) event;
if (heroUpStarEvent.getStar()==0){
return;
}
User user = UserManager.getUser(heroUpStarEvent.getUid());
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);
}
}
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
}
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
int[][] values = sActivityRewardConfig.getValues();
int missionProgress = activityProgressInfo.getProgrss();
if (missionProgress < values[1][0]) {
return false;
}
return true;
}
public void selectHeroUpdateMission( Map<Integer, ActivityProgressInfo> activityProgressInfoMap, int heroTId) throws Exception
{
for (SActivityRewardConfig rewardConfig : SActivityRewardConfig.getsActivityRewardConfigByActivityId(id)) {
if (rewardConfig.getValues()[0][0]!=heroTId&&activityProgressInfoMap.containsKey(rewardConfig.getId())){
activityProgressInfoMap.remove(rewardConfig.getId());
}
}
}
}

View File

@ -161,6 +161,9 @@ public class CrossServiceLogic {
if(bol && player != null){
return player;
}
if (true) {
return null;
}
User user = PlayerLogic.getInstance().getUserByRpc(uid);
if (user == null) {
return null;