Merge branch 'master' of 60.1.1.230:backend/jieling_server

back_recharge
wangyuan 2019-08-06 20:27:51 +08:00
commit 5855a00391
55 changed files with 1543 additions and 392 deletions

View File

@ -0,0 +1,71 @@
package com.ljsd.jieling.config;
import com.ljsd.jieling.logic.STableManager;
import com.ljsd.jieling.logic.Table;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Table(name = "ActivityRankingReward")
public class SActivityRankingReward implements BaseConfig {
private int id;
private int activityId;
private int minRank;
private int maxRank;
private int[][] rankingReward;
private static Map<Integer, SActivityRankingReward> sActivityRankingRewardMap;
private static Map<Integer, List<SActivityRankingReward>> sActivityRankingRewardMapByActivityId;
@Override
public void init() throws Exception {
sActivityRankingRewardMap = STableManager.getConfig(SActivityRankingReward.class);
Map<Integer, List<SActivityRankingReward>> integerListHashMap = new HashMap<>();
for (SActivityRankingReward sActivityRankingReward : sActivityRankingRewardMap.values()) {
int activityId = sActivityRankingReward.getActivityId();
if (!integerListHashMap.containsKey(activityId)) {
integerListHashMap.put(activityId, new ArrayList<>());
}
integerListHashMap.get(activityId).add(sActivityRankingReward);
}
}
public static Map<Integer, SActivityRankingReward> getsActivityRankingRewardMap() {
return sActivityRankingRewardMap;
}
public static List<SActivityRankingReward> getsActivityRankingRewardMapByActivityId(int Id) {
return sActivityRankingRewardMapByActivityId.get(Id);
}
public int getId() {
return id;
}
public int getActivityId() {
return activityId;
}
public int getMinRank() {
return minRank;
}
public int getMaxRank() {
return maxRank;
}
public int[][] getRankingReward() {
return rankingReward;
}
}

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.config;
import com.ljsd.jieling.logic.STableManager;
import com.ljsd.jieling.logic.Table;
import com.ljsd.jieling.logic.activity.ActivityType;
import java.util.ArrayList;
import java.util.HashMap;
@ -23,6 +24,7 @@ public class SActivityRewardConfig implements BaseConfig {
private static Map<Integer, List<SActivityRewardConfig>> sActivityRewardConfigListMap;
private static Map<Integer, Integer> rechargeDaySum = new HashMap<>();//连续充值天数
@Override
public void init() throws Exception {
@ -37,8 +39,11 @@ public class SActivityRewardConfig implements BaseConfig {
}
sActivityRewardConfigMap = config;
sActivityRewardConfigListMap = sActivityRewardConfigListMapTmp;
}
sActivityRewardConfigListMap.get(ActivityType.RECHARGE_SUM_DAY).forEach(sActivityRewardConfig ->
rechargeDaySum.put(sActivityRewardConfig.getValues()[0][1], sActivityRewardConfig.getId()));
}
public static SActivityRewardConfig getsActivityRewardConfigByMissionId(int missionId) {
@ -49,6 +54,10 @@ public class SActivityRewardConfig implements BaseConfig {
return sActivityRewardConfigListMap.get(activityId);
}
public static Map<Integer, Integer> getRechargeDaySum() {
return rechargeDaySum;
}
public int getId() {
return id;
}

View File

@ -101,8 +101,6 @@ public class SGameSetting implements BaseConfig {
private Map<Integer,int[]> itemRecoveryMap;
private static SGameSetting gameSetting;
@Override
@ -289,4 +287,12 @@ public class SGameSetting implements BaseConfig {
public void setItemRecoveryMap(Map<Integer, int[]> itemRecoveryMap) {
this.itemRecoveryMap = itemRecoveryMap;
}
public int getShowRank() {
return showRank;
}
public void setShowRank(int showRank) {
showRank = showRank;
}
}

View File

@ -0,0 +1,48 @@
package com.ljsd.jieling.config;
import com.ljsd.jieling.logic.STableManager;
import com.ljsd.jieling.logic.Table;
import java.util.Map;
@Table(name = "SignInConfig")
public class SSignInConfig implements BaseConfig {
private int id;
private int month;
private int day;
private int[] reward;
private static Map<Integer, SSignInConfig> sSignInConfigMap;
@Override
public void init() throws Exception {
sSignInConfigMap = STableManager.getConfig(SSignInConfig.class);
}
public static Map<Integer, SSignInConfig> getsSignInConfigMap() {
return sSignInConfigMap;
}
public int getId() {
return id;
}
public int getMonth() {
return month;
}
public int getDay() {
return day;
}
public int[] getreward() {
return reward;
}
}

View File

@ -109,6 +109,7 @@ public class RedisKey {
public static final String TOWER_RANK = "TOWER_RANK";
public static final String FORCE_RANK = "FORCE_RANK";
public static final String EXPERT_RANK = "EXPERT_RANK";
public static final String FAMILY_ID = "FAMILY_ID";

View File

@ -0,0 +1,23 @@
package com.ljsd.jieling.handler;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.protocols.PlayerInfoProto;
import org.springframework.stereotype.Component;
@Component
public class ExpertRankHandler extends BaseHandler {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.GETF_EXPERT_RANK_INFO_REQUEST;
}
@Override
public void process(ISession iSession, PacketNetData netData) throws Exception {
byte[] bytes = netData.parseClientProtoNetData();
PlayerInfoProto.GetExpertInfoRequest getExpertInfoRequest = PlayerInfoProto.GetExpertInfoRequest.parseFrom(bytes);
ActivityLogic.getInstance().getExpertRank(iSession,getExpertInfoRequest.getActiviteId());
}
}

View File

@ -121,6 +121,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
.addAllGoodsTypeDuration(goodsTypeDurations)
.setHadBuyTreasure(playerInfoManager.getHadBuyTreasure())
.setTreasureScore(playerInfoManager.getTreasureScore())
.setSignInInfo(CommonProto.SignInInfo.newBuilder().setDays(playerInfoManager.getSign()+1).setState(playerInfoManager.getSignTotay()).build())
.build();
try {
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true);

View File

@ -0,0 +1,60 @@
package com.ljsd.jieling.handler;
import com.ljsd.jieling.config.SSignInConfig;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.protocols.PlayerInfoProto;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import org.springframework.stereotype.Component;
import java.util.Calendar;
@Component
public class SignInHandler extends BaseHandler {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.SIGN_IN_REQUEST;
}
@Override
public void process(ISession iSession, PacketNetData netData) throws Exception {
byte[] bytes = netData.parseClientProtoNetData();
PlayerInfoProto.SignInRequest signInRequest = PlayerInfoProto.SignInRequest.parseFrom(bytes);
int index = signInRequest.getDayIndex();
SSignInConfig sign = SSignInConfig.getsSignInConfigMap().get(index);
//check cfg
if (sign == null) {
MessageUtil.sendErrorResponse(iSession, 0, MessageTypeProto.MessageType.SIGN_IN_RESPONSE_VALUE, "cfg null");
return;
}
Calendar cale = Calendar.getInstance();
int month = cale.get(Calendar.MONTH) + 1;
if (sign.getMonth() != month) {
return;
}
User user = UserManager.getUser(iSession.getUid());
if (sign.getDay() != (user.getPlayerInfoManager().getSign() + 1)) {
MessageUtil.sendErrorResponse(iSession, 0, MessageTypeProto.MessageType.SIGN_IN_RESPONSE_VALUE, "day out0findex");
return;
}
user.getPlayerInfoManager().setSignTotay(1);
int[] reward = sign.getreward();
int[][] cost = new int[1][];
cost[0] = reward;
CommonProto.Drop.Builder drop = ItemUtil.drop(user, cost, BIReason.TAKE_ACTIVITY_REWARD);
PlayerInfoProto.SignInResponse build = PlayerInfoProto.SignInResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.SIGN_IN_RESPONSE_VALUE, build, true);
}
}

View File

@ -14,6 +14,8 @@ import com.ljsd.jieling.handler.mission.Mission;
import com.ljsd.jieling.ktbeans.KTGameType;
import com.ljsd.jieling.ktbeans.KtEventUtils;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.StoryEvent;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.CheckFight;
@ -181,13 +183,16 @@ public class MapLogic {
}
user.setMapManager(mapManager);
user.getUserMissionManager().onGameEvent(user,GameEvent.PlAY_STORY,SChallengeConfig.sChallengeConfigs.get(mapId).getType(),1);
Poster.getPoster().dispatchEvent(new StoryEvent(user.getId()));
} else if (mapManager.getCurMapId() != mapId) {
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "地图错误,应进入" + mapManager.getCurMapId());
return;
}
MapInfoProto.MapEnterResponse.Builder mapEnterResponse = MapInfoProto.MapEnterResponse.newBuilder();
SChallengeMapConfig sChallengeMapConfig = SChallengeMapConfig.integerSChallengeMapConfigMap.get(mapManager.getCurMapId());
mapEnterResponse.setCurXY(CellUtil.xy2Pos(sChallengeMapConfig.getPosition()[0],sChallengeMapConfig.getPosition()[1]));
if(type ==4){
mapManager.updateEndlessMapId(mapId);
List<TeamPosHeroInfo> teamPosForHero = user.getTeamPosManager().getTeamPosForHero().get(teamId);
for (int i = 0; i <teamPosForHero.size() ; i++) {
String endlessHeroId = teamPosForHero.get(i).getHeroId();
@ -195,8 +200,13 @@ public class MapLogic {
mapManager.addEndlessHero(teamPosForHero.get(i).getHeroId(),maxHp);
}
if(mapManager.getEndlessMapInfo().getCurCell()!=0){
mapManager.setCurXY(mapManager.getEndlessMapInfo().getCurCell());
if(mapManager.getEndlessMapInfo().getCurMapId()==mapId) {
mapEnterResponse.setCurXY(mapManager.getEndlessMapInfo().getCurCell());
}
}
mapManager.updateEndlessMapId(mapId);
EndlessMapInfo endlessMapInfo = mapManager.getEndlessMapInfo();
for(Map.Entry<Integer,Map<Integer,String>> entry :endlessMapInfo.getMapSign().entrySet()){
int curMapId = entry.getKey();
@ -238,14 +248,9 @@ public class MapLogic {
}
mapEnterResponse.addAllBuf(towerBuffs);
}
SChallengeMapConfig sChallengeMapConfig = SChallengeMapConfig.integerSChallengeMapConfigMap.get(mapManager.getCurMapId());
mapEnterResponse.setDieCount(mapManager.getDieCount());
mapEnterResponse.addAllMapList(cells);
if(type==4&&mapManager.getEndlessMapInfo().getCurCell()!=0){
mapEnterResponse.setCurXY(mapManager.getEndlessMapInfo().getCurCell());
}else{
mapEnterResponse.setCurXY(CellUtil.xy2Pos(sChallengeMapConfig.getPosition()[0],sChallengeMapConfig.getPosition()[1]));
}
mapEnterResponse.addAllWakeCells(mapManager.getWalkCells() == null ? new ArrayList<>() : mapManager.getWalkCells());
if (mapManager.getTemporaryItems() != null) {
mapEnterResponse.setTemporaryItems(CBean2Proto.getDrop(mapManager.getTemporaryItems()));
@ -1143,6 +1148,8 @@ public class MapLogic {
mapManager.updateEndlessFightCount(1+mapManager.getEndlessMapInfo().getFightCount());
}
if (resultCode == 0) {
//无尽副本复活消耗
reviveConsumeExecution(user);
// 失败需要等待n秒后复活所有英雄
int dieCount = user.getMapManager().getDieCount();
dieCount++;
@ -1357,20 +1364,8 @@ public class MapLogic {
}
mapManager.setLastFightResult(resultCode);
if (resultCode == 0) {
if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()==4){
mapManager.updateEndlessFightCount(mapManager.getEndlessMapInfo().getFightCount()+1);
//消耗行动力
int [][] cost = new int[1][];
int costId = SChallengeSetting.getChallengeSetting().getActionPowerId();
int costNum = SEndlessMapConfig.sEndlessMapConfigMap.get(mapManager.getCurMapId()).getDeathCost();
mapManager.updateEndlessConsumeExecution(mapManager.getEndlessMapInfo().getConsumeExecution()+costNum);
int [] cost1 = new int[]{costId,costNum};
cost[0] = cost1;
if(ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1)) {
costNum = user.getItemManager().getItem(costId).getItemNum();
ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1);
}
}
//无尽副本复活消耗
reviveConsumeExecution(user);
// 失败需要等待n秒后复活所有英雄
int dieCount = user.getMapManager().getDieCount();
dieCount++;
@ -2848,7 +2843,7 @@ public class MapLogic {
continue;
}
if(calHp!=entry.getValue().getMaxHp()){
int tempHp = calHp*entry.getValue().getCurHp()/entry.getValue().getMaxHp();
int tempHp = (int)(entry.getValue().getCurHp()/entry.getValue().getMaxHp()*1.0F*calHp);
endlessHeroInfo.put(entry.getKey(),new EndlessHero(calHp,tempHp));
calHp = tempHp;
}else{
@ -2981,4 +2976,30 @@ public class MapLogic {
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
}
/**
*
* @param user
* @throws Exception
*/
private void reviveConsumeExecution(User user) throws Exception {
MapManager mapManager = user.getMapManager();
if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()!=4){
return;
}
mapManager.updateEndlessFightCount(mapManager.getEndlessMapInfo().getFightCount()+1);
//消耗行动力
int [][] cost = new int[1][];
int costId = SChallengeSetting.getChallengeSetting().getActionPowerId();
int costNum = SEndlessMapConfig.sEndlessMapConfigMap.get(mapManager.getCurMapId()).getDeathCost();
mapManager.updateEndlessConsumeExecution(mapManager.getEndlessMapInfo().getConsumeExecution()+costNum);
int [] cost1 = new int[]{costId,costNum};
cost[0] = cost1;
if(!ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1)) {
costNum = user.getItemManager().getItem(costId).getItemNum();
cost1[1]= costNum;
cost[0] = cost1;
ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1);
}
}
}

View File

@ -15,13 +15,15 @@ public class FinishOptionsDifficultMapProcessor implements BaseMissionProcesor{
if(sChallengeConfig.getDifficultType()!=sAccomplishmentConfig.getValues()[1][0]){
return GlobalsDef.MAP_MISSION_RETURN;
}
int[] value = sAccomplishmentConfig.getValues()[0];
int[][] value = sAccomplishmentConfig.getValues();
missionValue = 0-missionValue;
for(int i = 0 ; i <value.length;i++){
if(eventId==value[i]){
for(int i = 0 ; i <value.length-1;i++){
for(int j =0;j<value[i].length;j++){
if(eventId==value[i][j]){
missionValue = missionValue | (2<<i);
}
}
}
if(missionValue+2>>(value.length+1)==1){
return 1;
}else{

View File

@ -13,18 +13,21 @@ public class KillMonsterAccProcessor implements BaseMissionProcesor{
int[][] configValues = sAccomplishmentConfig.getValues();
MapManager mapManager = user.getMapManager();
SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId());
if(sChallengeConfig.getDifficultType()!=configValues[0][0]){
return GlobalsDef.MAP_MISSION_RETURN;
}
if(missionValue==configValues[1][0]){
if(configValues[0][0]!=0 && sChallengeConfig.getDifficultType()!=configValues[0][0]){
return GlobalsDef.MAP_MISSION_RETURN;
}
if(configValues[0].length<2){
return GlobalsDef.MAP_MISSION_RETURN;
}
for(int i = 1 ; i <configValues.length;i++){
if(missionValue==configValues[1][0]){
missionValue = -1;
}
if(missionValue==-1){
return missionValue;
}
for(int i = 1 ; i <configValues[0].length;i++){
if(eventId!=configValues[0][i]){
return GlobalsDef.MAP_MISSION_RETURN;
continue;
}
missionValue++;
}

View File

@ -37,7 +37,14 @@ public class NotEventFinishEventDifficultMapProcessor implements BaseMissionProc
if(flag){
for(int i = 0 ; i < finishEvent.length;i++){
if(eventId==finishEvent[i]){
missionValue = -1;
if(missionValue<0){
if(missionValue==-1){
break;
}
missionValue = missionValue/2;
}else{
missionValue =0-1<<(configValues[1][1]-1);
}
}
}
}

View File

@ -12,8 +12,11 @@ import com.ljsd.jieling.core.HandlerLogicThread;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.handler.map.MapLogic;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.activity.ActivityTypeEnum;
import com.ljsd.jieling.logic.arena.ArenaLogic;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.RechargeInfo;
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
import com.ljsd.jieling.logic.dao.UserMissionManager;
import com.ljsd.jieling.logic.dao.root.GlobalSystemControl;
@ -253,6 +256,7 @@ public class GlobalDataManaager {
FriendLogic.getInstance().refreshState(session);
// MapLogic.getInstance().towerAutoReset(session,fBuilder);
if(fBuilder!=null){
fBuilder.setSignInInfo(CommonProto.SignInInfo.newBuilder().setDays(user.getPlayerInfoManager().getSign()+1).setState(user.getPlayerInfoManager().getSignTotay()).build());
user.getPlayerInfoManager().setLoginTime(TimeUtils.now());
Map<Integer, SDailyTasksConfig> config = SDailyTasksConfig.config;
int dailymissionType = GameMisionType.DAILYMISSION.getType();

View File

@ -5,12 +5,12 @@ import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.ktbeans.KtEventUtils;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.dao.ActivityManager;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
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.protocols.CommonProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
@ -22,20 +22,35 @@ import org.slf4j.LoggerFactory;
import java.util.*;
public abstract class AbstractActivity implements IActivity {
/**
*
*/
public abstract class AbstractActivity implements IActivity, IEventHandler {
static final Logger LOGGER = LoggerFactory.getLogger(AbstractActivity.class);
final int rewardResponseValue = MessageTypeProto.MessageType.TAKE_ACTIVITY_REWARD_RESPONSE_VALUE;
int id;
int id; //活动id
public AbstractActivity(int id) {
this.id = id;
}
@Override
public void onEvent(IEvent event)throws Exception {
}
@Override
public void initActivity(User user) throws Exception {
}
@Override
public void onResume(User user) throws Exception {
ActivityManager activityManager = user.getActivityManager();
activityManager.removeActivity(id);
activityManager.initAllActivityMission(id);
}
@Override
public void update(User user, int count) {
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
@ -44,7 +59,6 @@ public abstract class AbstractActivity implements IActivity {
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
}
void updateProgress(User user, ActivityMission activityMission, int count) {
@ -92,12 +106,11 @@ public abstract class AbstractActivity implements IActivity {
if (!takeRewardsProcess(session, sActivityRewardConfig, activityProgressInfo)) {
return false;
}
//upto client and db
//up miss
int[][] reward = sActivityRewardConfig.getReward();
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD);
activityProgressInfo.setState(ActivityType.HAD_TAKED);
activityMission.updateProgressInfo(missionId, activityProgressInfo);
checkAndSetProgress(activityMission,activityProgressInfo,sActivityRewardConfig,missionId);
//send
sendActivityProgress(session, activityMission, Collections.singleton(missionId));
KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, id, missionId);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
@ -105,8 +118,15 @@ public abstract class AbstractActivity implements IActivity {
return true;
}
void checkAndSetProgress(ActivityMission activityMission, ActivityProgressInfo activityProgressInfo, SActivityRewardConfig sActivityRewardConfig,int missionId) {
activityProgressInfo.setState(ActivityType.HAD_TAKED);
activityMission.updateProgressInfo(missionId, activityProgressInfo);
}
/**
* default get reward
* TODO value
*
*/
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
int[][] values = sActivityRewardConfig.getValues();
@ -119,6 +139,19 @@ public abstract class AbstractActivity implements IActivity {
return true;
}
/**
*
*/
boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
int[][] values = sActivityRewardConfig.getValues();
User user = UserManager.getUser(session.getUid());
int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue();
if (value < values[0][0]) {
MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not");
return false;
}
return true;
}
@Override
public void onActivityEnd() throws Exception {
@ -145,6 +178,7 @@ public abstract class AbstractActivity implements IActivity {
/**
*
*
* @param filterMissId miss
*/
void sendActivityProgress(ISession session, ActivityMission activityMission, Set<Integer> filterMissId) {
@ -154,4 +188,5 @@ public abstract class AbstractActivity implements IActivity {
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ACTIVITY_UPDATE_PROGRESS_INDICATION_VALUE, builder.build(), true);
}
}
}

View File

@ -31,13 +31,27 @@ import java.util.*;
public class ActivityLogic {
private static final Logger LOGGER = LoggerFactory.getLogger(ActivityLogic.class);
private ActivityLogic(){}
private ActivityLogic() {
}
private Set<Integer> openActivityIds = new HashSet<>();
private int secretBoxSeasonTimes = 0; //秘盒赛季
public void flushEveryDay(User user, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) {
public void flushEveryDay(User user, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) throws Exception {
//跟新签到天数
if (user.getPlayerInfoManager().getSignTotay() == 1) {
user.getPlayerInfoManager().setSign(user.getPlayerInfoManager().getSign() + 1);
user.getPlayerInfoManager().setSignTotay(0);
}
//更新每日充值
ActivityLogic.getInstance().resumeActivity(user, ActivityType.DAILY_RECHARGE);
//更新首日充值
user.getPlayerInfoManager().getRechargeInfo().setDailyFirst(0);
//更新累计充值天数
ActivityLogic.getInstance().resumeActivity(user, ActivityType.RECHARGE_SUM_DAY);
user.getPlayerInfoManager().setRechargedaily(0);
updateActivityMissionProgress(user, ActivityType.SevenLogin, 1);
upFivePlayerActivity(user, ActivityType.SevenLogin, fBuilder);
}
@ -64,9 +78,11 @@ public class ActivityLogic {
if (now < startTime) {
continue;
}
if(endTime!=0 && now>endTime && openActivityIds.contains(sGlobalActivity.getId())){
if (endTime != 0 && now > endTime) {
if (openActivityIds.contains(sGlobalActivity.getId())) {
openActivityIds.remove(sGlobalActivity.getId());
ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEnd();
}
continue;
}
openActivityIds.add(sGlobalActivity.getId());
@ -100,8 +116,7 @@ public class ActivityLogic {
ActivityManager activityManager = user.getActivityManager();
Map<Integer, SGlobalActivity> sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap();
for (Integer openActivityId : openActivityIds) {
boolean b = activityManager.initAllActivityMission(openActivityId);
if(!b){
if (!activityManager.initAllActivityMission(openActivityId)) {
continue;
}
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(openActivityId);
@ -182,7 +197,6 @@ public class ActivityLogic {
}
public void getAllActivityInfo(ISession session) throws Exception {
int uid = session.getUid();
User user = UserManager.getUser(uid);
@ -241,6 +255,28 @@ public class ActivityLogic {
public void updateActivityMissionProgress(User user, int activityType, int count) {
for (Integer id : getOpenActivityIdsByType(user, activityType)) {
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(id);
if (abstractActivity == null) {
continue;
}
abstractActivity.update(user, count);
}
}
public void resumeActivity(User user, int activityType) throws Exception {
for (Integer id : getOpenActivityIdsByType(user, activityType)) {
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(id);
if (abstractActivity == null) {
continue;
}
abstractActivity.onResume(user);
}
}
private Set<Integer> getOpenActivityIdsByType(User user, int activityType) {
Set<Integer> ids = new HashSet<>();
ActivityManager activityManager = user.getActivityManager();
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
for (Map.Entry<Integer, ActivityMission> item : activityMissionMap.entrySet()) {
@ -254,16 +290,10 @@ public class ActivityLogic {
if (targetActivityType != activityType) {
continue;
}
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(activityId);
if (abstractActivity == null) {
continue;
ids.add(activityId);
}
abstractActivity.update(user,count);
return ids;
}
}
public void upFivePlayerActivity(User user, int activityType, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) {
@ -289,6 +319,9 @@ public class ActivityLogic {
continue;
}
if (fBuilder == null) {
return;
}
long createTime = user.getPlayerInfoManager().getCreateTime();
int startTime = (int) (sGlobalActivity.getTimeLong(createTime, 1) / 1000);
int endTime = (int) (sGlobalActivity.getTimeLong(createTime, 2) / 1000);
@ -296,6 +329,7 @@ public class ActivityLogic {
fBuilder.addActivityInfo(CommonProto.ActivityInfo.newBuilder().setActivityId(activityId).addAllMission(missionInfos).setStartTime(startTime).setEndTime(endTime).setReallyOpen(activityMission.getOpenType()).build());
}
}
@ -481,6 +515,7 @@ public class ActivityLogic {
/**
*
*
* @param activityManager
*/
private ActivityMission blessInfoInit(ActivityManager activityManager, int activityId) {
@ -540,7 +575,6 @@ public class ActivityLogic {
}
int[] fixResult = MathUtils.randomFromWeightWithTaking(fixReward, fixRewardNum);
int[] legendResult = MathUtils.randomFromWeightWithTaking(legendReward, legendNum);
int[] supremeResult = MathUtils.randomFromWeightWithTaking(supremeReward, supremeNum);
@ -584,6 +618,7 @@ public class ActivityLogic {
activityManager.addActivity(activityId, activityMission);
return activityMission;
}
//云梦请求数据
public void blessInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
User user = UserManager.getUser(session.getUid());
@ -596,6 +631,7 @@ public class ActivityLogic {
// LOGGER.info("{},{},{}",response.getFixRewardList().toString(),response.getLegendRewardList().toString(),response.getSupremeRewardList().toString());
MessageUtil.sendMessage(session, 1, messageType.getNumber(), response.build(), true);
}
private PlayerInfoProto.blessResponse.Builder getBlessInfoResponse(ActivityMission activityMission) {
PlayerInfoProto.blessResponse.Builder response = PlayerInfoProto.blessResponse.newBuilder();
Map<Integer, ActivityProgressInfo> blessInfoMap = activityMission.getActivityProgressInfoMap();
@ -668,7 +704,8 @@ public class ActivityLogic {
for (Map.Entry<Integer, ActivityProgressInfo> entry : blessInfoMap.entrySet()) {
if (entry.getKey() != i) {
continue;
}if (i<BlessInfoConfig.REWARD_VIEW_START_ID){
}
if (i < BlessInfoConfig.REWARD_VIEW_START_ID) {
LOGGER.info("显示顺序是{}", entry.getKey());
CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder()
.setLocationId(i - BlessInfoConfig.START_CAPACITY)
@ -691,6 +728,7 @@ public class ActivityLogic {
response.setLastRefreshTime(blessInfoMap.get(BlessInfoConfig.LAST_REFRESH_TIME).getProgrss());
return response;
}
public void blessSaveOptionalReward(ISession session, int[] rewardIds, MessageTypeProto.MessageType messageType) throws Exception {
User user = UserManager.getUser(session.getUid());
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(SBlessingConfig.sBlessingConfig.getActivityId());
@ -715,6 +753,7 @@ public class ActivityLogic {
/**
*
*
* @param session
* @param locationId
* @param messageType
@ -819,6 +858,7 @@ public class ActivityLogic {
/**
*
*
* @param session
* @param messageType
* @throws Exception
@ -835,6 +875,7 @@ public class ActivityLogic {
MessageUtil.sendMessage(session, 1, messageType.getNumber(), res, true);
}
private ActivityMission blessRefresh(User user) {
ActivityManager activityManager = user.getActivityManager();
ActivityMission activityMission = activityManager.getActivityMissionMap().get(SBlessingConfig.sBlessingConfig.getActivityId());
@ -889,4 +930,49 @@ public class ActivityLogic {
}
/**
*
*/
public void getExpertRank(ISession session, int acitvityId) throws Exception {
int start = 0;
int maxSize = SGameSetting.getGameSetting().getShowRank();
List<CommonProto.ExpertInfo> expertInfos = new ArrayList<>(maxSize);
Set<ZSetOperations.TypedTuple<String>> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FORCE_RANK, Integer.toString(acitvityId), 0, maxSize - 1);
for (ZSetOperations.TypedTuple<String> item : rankInfo) {
String value = item.getValue();
int score = item.getScore().intValue();
int uid = Integer.parseInt(value);
User user = UserManager.getUser(uid);
PlayerManager playerInfoManager = user.getPlayerInfoManager();
CommonProto.ExpertInfo personInfoBuild = CommonProto.ExpertInfo.newBuilder()
.setName(playerInfoManager.getNickName())
.setScore(score)
.setRank(++start)
.build();
expertInfos.add(personInfoBuild);
}
if (rankInfo.size() > 2 * maxSize) {
//删除多余数据 预留一些 长度maxSize
String key = RedisKey.getKey(RedisKey.EXPERT_RANK, String.valueOf(acitvityId), false);
int size = RedisUtil.getInstence().getZsetSize(key);
RedisUtil.getInstence().removeZSetRangeByRank(key, maxSize, size);
}
int uid = session.getUid();
int score = RedisUtil.getInstence().getZSetScore(RedisKey.EXPERT_RANK, Integer.toString(acitvityId), Integer.toString(uid)).intValue();
int myRank = RedisUtil.getInstence().getZSetreverseRank(RedisKey.EXPERT_RANK, Integer.toString(acitvityId), Integer.toString(uid)).intValue();
PlayerInfoProto.GetExpertInfoResponse buildResponse = PlayerInfoProto.GetExpertInfoResponse.newBuilder()
.setMyRank(myRank)
.setMyScore(score)
.addAllExpert(expertInfos)
.build();
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.GETF_EXPERT_RANK_INFO_REQUEST_VALUE, buildResponse, true);
}
}

View File

@ -11,7 +11,6 @@ public interface ActivityType {
int OPEN_TYPE_SERVER = 3; // 活动开启类型:开服时间
int WILL_TAKE = 0; //未领取
int HAD_TAKED = 1; //已领取
int FINISH_TAKED = -1; //完美领取
@ -28,6 +27,19 @@ public interface ActivityType {
int SERVERHAPPY = 10; //七日狂欢
int FORCERANK = 11; //战力排行
int FORCESTANDARD = 12;//战力达标
int DAILY_RECHARGE = 13;//每日充值
int RECHARGE_SUM_DAY = 14;//累计充值天数
int SECURT_EXPERT = 16;// 秘境达人
int ARENA_EXPERT = 17;// 竞技达人
int UP_EXPERT = 18;// 进阶达人
int EQUIP_EXPERT = 19;// 装备达人
int GOLD_EXPERT = 20;// 点金达人
int COPY_EXPERT = 21;//副本达人
int STAMINA_EXPERT = 22;//体力达人
int SIGN_IN = 23;//累计签到
int RECHARGE_NUM = 24;//累计充值
// int EXCHANGEANDDROP = 15;//限时兑换活动

View File

@ -18,7 +18,19 @@ public enum ActivityTypeEnum {
LUCKYCAT(ActivityType.LUCKYCAT, LuckyCatActivity::new),
SERVERHAPPY(ActivityType.SERVERHAPPY, DefaultEmptyActivity::new),
FORCERANK(ActivityType.FORCERANK, ForceRankActivity::new),
FORCESTANDARD(ActivityType.FORCESTANDARD, ForceStandardActivity::new);
FORCESTANDARD(ActivityType.FORCESTANDARD, ForceStandardActivity::new),
DAILY_RECHARGE(ActivityType.DAILY_RECHARGE, DailyRechargeActivity::new),
RECHARGE_SUM(ActivityType.RECHARGE_SUM_DAY, RechargeSumDayActivity::new),
SECURT_EXPERT(ActivityType.SECURT_EXPERT, SecretExpectRankActivity::new),
ARENA_EXPERT(ActivityType.ARENA_EXPERT, AreanaExpectRankActivity::new),
UP_EXPERT(ActivityType.UP_EXPERT, HeroUpExpectRankActivity::new),
EQUIP_EXPERT(ActivityType.EQUIP_EXPERT, EquipExpectRankActivity::new),
GOLD_EXPERT(ActivityType.GOLD_EXPERT, GoldExpectRankActivity::new),
COPY_EXPERT(ActivityType.COPY_EXPERT, CopyExpectRankActivity::new),
STAMINA_EXPERT(ActivityType.STAMINA_EXPERT, StaminaExpectRankActivity::new),
SIGN_IN(ActivityType.SIGN_IN, SignInSumActivity::new),
RECHARGE_NUM(ActivityType.RECHARGE_NUM, RechargeSumActivity::new),
;
private int type;
private Function<Integer, AbstractActivity> toActivityFunction;
private static HashMap<Integer, AbstractActivity> acticityCache = new HashMap<>();
@ -40,35 +52,43 @@ public enum ActivityTypeEnum {
public static AbstractActivity getActicityType(int id) {
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
switch (sGlobalActivity.getType()) {
case ActivityType.OnlineReward:
return ONLINEREWARD.toActivity(id);
case ActivityType.SevenLogin:
return SEVENLOGIN.toActivity(id);
case ActivityType.ChapterReward:
return CHAPTERREWARD.toActivity(id);
case ActivityType.FirstRecharge:
return FIRSTRECHARGE.toActivity(id);
case ActivityType.RechargeTotal:
return RECHARGETOTAL.toActivity(id);
case ActivityType.GrowthFund:
return GROWTHFUND.toActivity(id);
case ActivityType.BLESSACTIVITY:
return BLESSACTIVITY.toActivity(id);
case ActivityType.TREASURE:
return TREASUREACTIVITY.toActivity(id);
case ActivityType.LUCKYCAT:
return LUCKYCAT.toActivity(id);
case ActivityType.FORCERANK:
return FORCERANK.toActivity(id);
case ActivityType.FORCESTANDARD:
return FORCESTANDARD.toActivity(id);
case ActivityType.SERVERHAPPY:
return SERVERHAPPY.toActivity(id);
default:
return null;
for (ActivityTypeEnum activityType:ActivityTypeEnum.values()) {
if(activityType.getType()==sGlobalActivity.getType()){
return activityType.toActivity(id);
}
}
return null;
// switch (sGlobalActivity.getType()) {
// case ActivityType.OnlineReward:
// return ONLINEREWARD.toActivity(id);
// case ActivityType.SevenLogin:
// return SEVENLOGIN.toActivity(id);
// case ActivityType.ChapterReward:
// return CHAPTERREWARD.toActivity(id);
// case ActivityType.FirstRecharge:
// return FIRSTRECHARGE.toActivity(id);
// case ActivityType.RechargeTotal:
// return RECHARGETOTAL.toActivity(id);
// case ActivityType.GrowthFund:
// return GROWTHFUND.toActivity(id);
// case ActivityType.BLESSACTIVITY:
// return BLESSACTIVITY.toActivity(id);
// case ActivityType.TREASURE:
// return TREASUREACTIVITY.toActivity(id);
// case ActivityType.LUCKYCAT:
// return LUCKYCAT.toActivity(id);
// case ActivityType.FORCERANK:
// return FORCERANK.toActivity(id);
// case ActivityType.FORCESTANDARD:
// return FORCESTANDARD.toActivity(id);
// case ActivityType.DAILY_RECHARGE:
// return DAILY_RECHARGE.toActivity(id);
// case ActivityType.RECHARGE_SUM:
// return RECHARGE_SUM.toActivity(id);
// default:
// return null;
// }
}
public int getType() {
return type;

View File

@ -0,0 +1,23 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.logic.activity.event.ArenaChallengeEvent;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.UserManager;
class AreanaExpectRankActivity extends ExpectRankActivity {
public AreanaExpectRankActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, ArenaChallengeEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof ArenaChallengeEvent))
return;
update(UserManager.getUser(((ArenaChallengeEvent) event).getUid()), 1);
}
}

View File

@ -0,0 +1,23 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.StoryEvent;
import com.ljsd.jieling.logic.dao.UserManager;
class CopyExpectRankActivity extends ExpectRankActivity {
public CopyExpectRankActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, StoryEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof StoryEvent))
return;
update(UserManager.getUser(((StoryEvent) event).getUid()), 1);
}
}

View File

@ -0,0 +1,27 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
import com.ljsd.jieling.network.session.ISession;
/**
*
*/
class DailyRechargeActivity extends AbstractActivity {
public DailyRechargeActivity(int id) {
super(id);
}
@Override
void updateProgress(ActivityMission activityMission, int count) {
activityMission.setValue(count + activityMission.getValue());
}
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
return checkValue(session, sActivityRewardConfig, activityProgressInfo);
}
}

View File

@ -0,0 +1,33 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.config.SEquipConfig;
import com.ljsd.jieling.logic.activity.event.EquipEvent;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.UserManager;
class EquipExpectRankActivity extends ExpectRankActivity {
public EquipExpectRankActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, EquipEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof EquipEvent))
return;
SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).get(0);
if (sActivityRewardConfig == null)
return;
int type = sActivityRewardConfig.getValues()[0][0];
SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(((EquipEvent) event).getEquipId());
if (type != sEquipConfig.getQuality())
return;
update(UserManager.getUser(((EquipEvent) event).getUid()), 1);
}
}

View File

@ -0,0 +1,107 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SActivityRankingReward;
import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.config.SErrorCodeEerverConfig;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.TimeUtils;
import org.springframework.data.redis.core.ZSetOperations;
import java.util.*;
class ExpectRankActivity extends AbstractActivity {
public ExpectRankActivity(int id) {
super(id);
}
@Override
void updateProgress(User user, ActivityMission activityMission, int count) {
activityMission.setValue(count + activityMission.getValue());
String key = RedisKey.getKey(RedisKey.EXPERT_RANK, String.valueOf(id), false);
RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), count);
}
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
return checkValue(session, sActivityRewardConfig, activityProgressInfo);
}
/**
*
*/
boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
int[][] values = sActivityRewardConfig.getValues();
User user = UserManager.getUser(session.getUid());
int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue();
if (value < values[1][0]) {
MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not");
return false;
}
return true;
}
@Override
public void onActivityEnd() throws Exception {
List<SActivityRankingReward> sActivityRankingReward = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id);
int maxRank = 0;
Map<Integer, Integer> rank2miss = new HashMap<>();
for (SActivityRankingReward sActivityRankingReward1 : sActivityRankingReward) {
maxRank = Math.max(maxRank, sActivityRankingReward1.getMaxRank());
for (Integer rank : getRankSet(sActivityRankingReward1.getMinRank(), sActivityRankingReward1.getMaxRank())) {
rank2miss.put(rank, sActivityRankingReward1.getId());
}
}
Set<ZSetOperations.TypedTuple<String>> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.EXPERT_RANK, Integer.toString(id), 0, maxRank - 1);
int rank = 1;
int nowTime = (int) (TimeUtils.now() / 1000);
for (ZSetOperations.TypedTuple<String> item : rankInfo) {
String value = item.getValue();
int uid = Integer.parseInt(value);
User user = UserManager.getUser(uid);
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) {
continue;
}
int missionId = rank2miss.get(rank++);
//check value
SActivityRankingReward sActivityRankingReward1 = SActivityRankingReward.getsActivityRankingRewardMap().get(missionId);
//sendmail
String content = SErrorCodeEerverConfig.getI18NMessage("powerrank_activity_title");
String title = SErrorCodeEerverConfig.getI18NMessage("powerrank_activity_txt", new Object[]{rank});
String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward());
MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
}
}
private Set<Integer> getRankSet(int start, int end) {
Set<Integer> set = new HashSet<>();
if (start > end) {
return set;
}
for (int i = start; i <= end; i++) {
set.add(i);
}
return set;
}
}

View File

@ -65,7 +65,7 @@ class ForceRankActivity extends AbstractActivity {
}
}
Set<ZSetOperations.TypedTuple<String>> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FORCE_RANK, Integer.toString(id), 0, maxRank);
Set<ZSetOperations.TypedTuple<String>> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FORCE_RANK, Integer.toString(id), 0, maxRank-1);
int rank = 1;
int nowTime = (int) (TimeUtils.now() / 1000);
for (ZSetOperations.TypedTuple<String> item : rankInfo) {
@ -89,7 +89,7 @@ class ForceRankActivity extends AbstractActivity {
continue;
}
int value2 = values[0][2];
int missionProgress = activityProgressInfo.getProgrss();
int missionProgress = activityMission.getValue();
if (missionProgress < value2) {
continue;
}

View File

@ -3,10 +3,8 @@ package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
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.MessageUtil;
class ForceStandardActivity extends AbstractActivity {
@ -22,14 +20,7 @@ class ForceStandardActivity extends AbstractActivity {
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
int[][] values = sActivityRewardConfig.getValues();
User user = UserManager.getUser(session.getUid());
int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue();
if (value < values[0][0]) {
MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not");
return false;
}
return true;
return checkValue(session, sActivityRewardConfig, activityProgressInfo);
}
@Override

View File

@ -0,0 +1,22 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.logic.activity.event.GoldEvent;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.UserManager;
class GoldExpectRankActivity extends ExpectRankActivity {
public GoldExpectRankActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, GoldEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof GoldEvent))
return;
update(UserManager.getUser(((GoldEvent) event).getUid()), 1);
}
}

View File

@ -0,0 +1,49 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
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.ActivityMission;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.HeroManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
class HeroUpExpectRankActivity extends ExpectRankActivity {
public HeroUpExpectRankActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, HeroUpStarEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof HeroUpExpectRankActivity))
return;
User user = UserManager.getUser(((HeroUpStarEvent) event).getUid());
HeroManager heroManager = user.getHeroManager();
SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).get(0);
if(sActivityRewardConfig==null)
return;
int count = 0;
for (Hero targetHero:heroManager.getHeroMap().values()) {
if(targetHero.getStar()>=sActivityRewardConfig.getValues()[0][0]){
count++;
}
}
update(UserManager.getUser(((HeroUpStarEvent) event).getUid()), count);
}
@Override
void updateProgress(User user, ActivityMission activityMission, int count) {
activityMission.setValue(count+activityMission.getValue());
String key = RedisKey.getKey(RedisKey.EXPERT_RANK, String.valueOf(id), false);
RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), count);
}
}

View File

@ -19,6 +19,11 @@ public interface IActivity {
*/
void initActivity(User user) throws Exception;
/**
*
*/
void onResume(User user)throws Exception;
/**
*
*/
@ -31,6 +36,10 @@ public interface IActivity {
*/
boolean takeReward(ISession session, int missionId) throws Exception;
/**
*
* @throws Exception
*/
void onActivityEnd() throws Exception;
List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(ActivityMission activityMission, Set<Integer> filter);

View File

@ -0,0 +1,10 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.logic.activity.event.IEvent;
public interface IEventHandler {
void onEvent(IEvent event) throws Exception;
}

View File

@ -41,7 +41,7 @@ public class LuckyCatActivity extends AbstractActivity {
@Override
void updateProgress(ActivityMission activityMission, int count) {
activityMission.setValue(count);
activityMission.setValue(count + activityMission.getValue());
}
@Override

View File

@ -0,0 +1,27 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
import com.ljsd.jieling.network.session.ISession;
/**
* Created by zsx on 2019/8/5 19:20
*/
class RechargeSumActivity extends AbstractActivity {
public RechargeSumActivity(int id) {
super(id);
}
@Override
void updateProgress(ActivityMission activityMission, int count) {
activityMission.setValue(count);
}
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
return checkValue(session, sActivityRewardConfig, activityProgressInfo);
}
}

View File

@ -0,0 +1,65 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.logic.dao.ActivityManager;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
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.MessageUtil;
import java.util.Map;
import java.util.TreeMap;
class RechargeSumDayActivity extends AbstractActivity {
public RechargeSumDayActivity(int id) {
super(id);
}
@Override
public void onResume(User user) throws Exception {
ActivityManager activityManager = user.getActivityManager();
ActivityMission activityMission = activityManager.getActivityMissionMap().get(id);
activityMission.setValue(0);
int missionId = SActivityRewardConfig.getRechargeDaySum().get(activityMission.getValue() + 1);
if (user.getPlayerInfoManager().getRechargedaily() > SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId).getValues()[0][0]) {
activityMission.setValue(activityMission.getValue() + 1);
}
}
@Override
void updateProgress(ActivityMission activityMission, int count) {
int missionId = SActivityRewardConfig.getRechargeDaySum().get(activityMission.getValue() + 1);
ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId);
if (activityProgressInfo == null || activityProgressInfo.getProgrss() == 1) {
return;
}
if (count > activityProgressInfo.getProgrss()) {
activityProgressInfo.setProgrss(1);
}
}
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
return checkValue(session, sActivityRewardConfig, activityProgressInfo);
}
/**
*
*/
boolean checkValue(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
int[][] values = sActivityRewardConfig.getValues();
User user = UserManager.getUser(session.getUid());
int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getValue()+1;
if (value < values[0][1]) {
MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "value illegality");
return false;
}
return true;
}
}

View File

@ -0,0 +1,23 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SecretEvent;
import com.ljsd.jieling.logic.dao.UserManager;
class SecretExpectRankActivity extends ExpectRankActivity {
public SecretExpectRankActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, SecretEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof SecretEvent))
return;
update(UserManager.getUser(((SecretEvent) event).getUid()), 1);
}
}

View File

@ -0,0 +1,20 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.logic.dao.ActivityMission;
/**
*
*/
@Deprecated
class SignInSumActivity extends AbstractActivity {
public SignInSumActivity(int id) {
super(id);
}
@Override
void updateProgress(ActivityMission activityMission, int count) {
activityMission.setValue(count + activityMission.getValue());
}
}

View File

@ -0,0 +1,24 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.UseItemEvent;
import com.ljsd.jieling.logic.dao.UserManager;
class StaminaExpectRankActivity extends ExpectRankActivity {
public StaminaExpectRankActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, UseItemEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof UseItemEvent))
return;
int changeNum = ((UseItemEvent) event).getUseItemMap().getOrDefault(Global.STAMINA, 0);
update(UserManager.getUser(((UseItemEvent) event).getUseId()), changeNum);
}
}

View File

@ -0,0 +1,23 @@
package com.ljsd.jieling.logic.activity.event;
import java.util.Map;
public class AddItemEvent implements IEvent {
private int useId;
Map<Integer, Integer> useItemMap;
public AddItemEvent(int useId, Map<Integer, Integer> useItemMap) {
this.useId = useId;
this.useItemMap = useItemMap;
}
public Map<Integer, Integer> getUseItemMap() {
return useItemMap;
}
public int getUseId() {
return useId;
}
}

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,5 @@
package com.ljsd.jieling.logic.activity.event;
public interface IEvent {
}

View File

@ -0,0 +1,53 @@
package com.ljsd.jieling.logic.activity.event;
import com.ljsd.jieling.logic.activity.IEventHandler;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/**
*
* TODO
* 线
*
*/
public class Poster {
public static Poster getPoster() {
return poster;
}
static Poster poster = new Poster();
private Poster() {
}
private Map<Class<? extends IEvent>, Set<IEventHandler>> listenMap = new HashMap<>();
private Set<IEventHandler> getListeners(IEvent e) {
return listenMap.get(e.getClass());
}
public <T extends IEvent> boolean listenEvent(IEventHandler eh, Class<T> c) {
Set<IEventHandler> ehs = listenMap.get(c);
if (ehs == null) {
ehs = new HashSet<>();
listenMap.put(c, ehs);
}
return ehs.add(eh);
}
public void dispatchEvent(IEvent e) {
final Set<IEventHandler> ehs = getListeners(e);
if (ehs != null) {
for (IEventHandler eh : ehs) {
try {
eh.onEvent(e);
}catch (Exception e1){
}
}
}
}
}

View File

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

View File

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

View File

@ -0,0 +1,23 @@
package com.ljsd.jieling.logic.activity.event;
import java.util.Map;
public class UseItemEvent implements IEvent {
private int useId;
Map<Integer, Integer> useItemMap;
public UseItemEvent(int useId, Map<Integer, Integer> useItemMap) {
this.useId = useId;
this.useItemMap = useItemMap;
}
public Map<Integer, Integer> getUseItemMap() {
return useItemMap;
}
public int getUseId() {
return useId;
}
}

View File

@ -15,6 +15,8 @@ import com.ljsd.jieling.ktbeans.KTGameType;
import com.ljsd.jieling.ktbeans.KtEventUtils;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.ArenaChallengeEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.CheckFight;
@ -206,6 +208,7 @@ public class ArenaLogic {
//组战斗数据
ArenaInfoProto.ArenaChallengeResponse build = builder.setMyScoreChange(myscoreChange).setDefScoreChange(defScoreChange).addAllArenaEnemys(getArenaEnemyList(arenaManager.getArenaEnemies())).build();
user.getUserMissionManager().onGameEvent(user, GameEvent.ARENA_CHALLENGE,fightResult,myscoreChange + myscore);
Poster.getPoster().dispatchEvent(new ArenaChallengeEvent(user.getId()));
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ARENA_CHALLENGE_RESPONSE_VALUE,build,true);
KtEventUtils.onKtEvent(user, ParamEventBean.UserGameType,KTGameType.ARENA.getIndex(),challengeUid);
}

View File

@ -32,7 +32,7 @@ public class ActivityMission extends MongoBase {
openType=0;
}
activityState = ActivityType.OPEN_STATE;
value=0;
return true;
}
@ -42,6 +42,7 @@ public class ActivityMission extends MongoBase {
activityProgressInfoMap.put(missionId, new ActivityProgressInfo(0,0));
}
openType=1;
value=0;
activityState = ActivityType.OPEN_STATE;
}

View File

@ -3,6 +3,8 @@ package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.config.SEquipConfig;
import com.ljsd.jieling.db.mongo.MongoKey;
import com.ljsd.jieling.logic.activity.event.EquipEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent;
@ -29,6 +31,7 @@ public class EquipManager extends MongoBase {
equipMap.put(equip.getId(),equip);
addEquipHandBook(equip.getEquipId());
user.getUserMissionManager().onGameEvent(user, GameEvent.GET_EQUIP,equip.getEquipId());
Poster.getPoster().dispatchEvent(new EquipEvent(user.getId(),equip.getEquipId()));
}
public void remove(String equipId){

View File

@ -11,6 +11,7 @@ import com.ljsd.jieling.db.mongo.MongoKey;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.util.MathUtils;
import org.springframework.data.annotation.Transient;
import java.util.HashMap;
import java.util.HashSet;
@ -73,6 +74,13 @@ public class PlayerManager extends MongoBase {
private int guildId ;// 公会id
private int sign;//月签到天数
private int signTotay;//今天是否签到
@Transient
private int rechargedaily;
public PlayerManager(){
this.setRootCollection(User._COLLECTION_NAME);
}
@ -405,4 +413,34 @@ public class PlayerManager extends MongoBase {
updateString("guildId", guildId);
this.guildId = guildId;
}
public int getSign() {
return sign;
}
public void setSign(int sign) {
updateString("sign", sign);
this.sign = sign;
}
public void setSignTotay(int signTotay) {
updateString("signTotay", signTotay);
this.signTotay = signTotay;
}
public int getSignTotay() {
return signTotay;
}
public int getRechargedaily() {
return rechargedaily;
}
public void setRechargedaily(int rechargedaily) {
this.rechargedaily = rechargedaily;
}
public void addRechargedaily(int rechargedaily) {
this.rechargedaily += rechargedaily;
}
}

View File

@ -13,6 +13,7 @@ public class RechargeInfo extends MongoBase{
private int isFirst;
private long createTime;
private int hadBuyFound;
private int isDayFirst;
private Map<Integer,Long> levelBagMap = new HashMap<>();
@ -79,6 +80,12 @@ public class RechargeInfo extends MongoBase{
isFirst = first;
}
public void setDailyFirst(int first) {
updateString("isFirst",first);
isDayFirst = first;
}
public void setCreateTime(long createTime) {
updateString("createTime",createTime);
this.createTime = createTime;
@ -120,6 +127,10 @@ public class RechargeInfo extends MongoBase{
return isFirst;
}
public int getIsDayFirst() {
return isDayFirst;
}
public int getHadBuyFound() {
return hadBuyFound;
}

View File

@ -13,6 +13,8 @@ import com.ljsd.jieling.ktbeans.KTGameType;
import com.ljsd.jieling.ktbeans.KtEventUtils;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SecretEvent;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.dao.UserManager;
@ -370,6 +372,7 @@ public class CombatLogic {
}
adventureFastReward = getAdventureFastReward(user, SGameSetting.getGameSetting().getAdventureFastBattle());
user.getUserMissionManager().onGameEvent(user,GameEvent.PlAY_STORY,9999,1);
Poster.getPoster().dispatchEvent(new SecretEvent(user.getId()));
}
FightInfoProto.TakeAventureRewardResponse build = FightInfoProto.TakeAventureRewardResponse.newBuilder().setDrop(adventureFastReward.get(1)).setRandomDrop(adventureFastReward.get(2)).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ADVENTURE_REWARD_RESPONSE_VALUE,build,true);

View File

@ -12,6 +12,8 @@ import com.ljsd.jieling.ktbeans.KtEventUtils;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.activity.event.HeroUpStarEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.dao.UserManager;
@ -625,6 +627,7 @@ public class HeroLogic {
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,"");
return;
}
Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId()));
//删除hero
recyleHeroBySystem(user,removeHeroIds);
targetHero.upStar( 1 );

View File

@ -220,6 +220,7 @@ public class PlayerLogic {
user.getPlayerInfoManager().setMaxForce(teamForce);
user.getUserMissionManager().onGameEvent(user,GameEvent.USER_FORCE_CHANGE);
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FORCERANK,teamForce);
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FORCESTANDARD,teamForce);
}
}

View File

@ -145,6 +145,7 @@ public class BuyGoodsLogic {
String content = SErrorCodeEerverConfig.getI18NMessage("recharge_first_txt");
MailLogic.getInstance().sendMail(user.getId(),title,content,ItemUtil.getMailReward(sActivityRewardConfig.getReward()),nowTime, Global.MAIL_EFFECTIVE_TIME);
}
if(length>baseReward.length){
int[][] result = new int[length][];
int i=0;
@ -171,8 +172,13 @@ public class BuyGoodsLogic {
if(sRechargeCommodityConfig.getAccumulativeRecharge() == 1){
int saveAmt = rechargeInfo.getSaveAmt();
rechargeInfo.setSaveAmt(price+saveAmt);
user.getPlayerInfoManager().addRechargedaily(price);
//TODO 用事件分发
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RechargeTotal,rechargeInfo.getSaveAmt());
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,rechargeInfo.getSaveAmt());
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.LUCKYCAT,price);
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.DAILY_RECHARGE,price);
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_NUM,rechargeInfo.getSaveAmt());
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_SUM_DAY, user.getPlayerInfoManager().getRechargedaily());
}
buyGoodsTimes.put(goodsId,buyCount);

View File

@ -7,6 +7,8 @@ import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.ktbeans.KtEventUtils;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.GoldEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.StoreInfo;
import com.ljsd.jieling.logic.dao.StoreManager;
@ -280,6 +282,9 @@ public class StoreLogic {
if(SStoreTypeConfig.getsStoreTypeConfigMap().get(storeId).getStoreType() != StoreType.GIFT_STORE.getType()){
user.getUserMissionManager().onGameEvent(user, GameEvent.BUY_MATERIAL,sStoreConfig.getGoods()[0][0],itemNum);
}
if(itemId==10015){
Poster.getPoster().dispatchEvent(new GoldEvent(user.getId()));
}
PlayerInfoProto.BuyStoreItemResponse builder = PlayerInfoProto.BuyStoreItemResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(iSession, 1,msgId, builder, true);

View File

@ -11,6 +11,8 @@ import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.handler.map.TemporaryItems;
import com.ljsd.jieling.ktbeans.KtEventUtils;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.UseItemEvent;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
@ -688,6 +690,7 @@ public class ItemUtil {
MessageUtil.sendBagIndication(user.getId(),1,sendTemToFront);
}
user.getUserMissionManager().onGameEvent(user,GameEvent.CONSUMER_MATERIAL,useItemMap);
Poster.getPoster().dispatchEvent(new UseItemEvent(user.getId(),useItemMap));
}