限时抽卡

back_recharge
lvxinran 2019-12-09 17:10:23 +08:00
parent d9c2104c8c
commit 0d19b9d141
10 changed files with 114 additions and 17 deletions

View File

@ -234,7 +234,7 @@ public class GlobalDataManaager implements IManager {
new UserLevelEventHandler(); new UserLevelEventHandler();
new RemoveEventHeroHandler(); new RemoveEventHeroHandler();
new FightMainEventHandler(); new FightMainEventHandler();
ChampionshipLogic.whenStart(); // ChampionshipLogic.whenStart();
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("e",e); LOGGER.error("e",e);
} }

View File

@ -5,10 +5,21 @@ import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.activity.event.IEvent; import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.RandomCardEvent; import com.ljsd.jieling.logic.activity.event.RandomCardEvent;
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.rank.RankContext; import com.ljsd.jieling.logic.rank.RankContext;
import com.ljsd.jieling.logic.rank.RankEnum; import com.ljsd.jieling.logic.rank.RankEnum;
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import config.SActivityRewardConfig;
import config.SCHero;
import util.TimeUtils;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Stream;
/** /**
* @author lvxinran * @author lvxinran
@ -36,16 +47,27 @@ public class LimitRandomCardActivity extends AbstractActivity {
scoreById=0; scoreById=0;
} }
randomRank.addRank(cardEvent.getUid(),scoreById+cardEvent.getScore()); randomRank.addRank(cardEvent.getUid(),scoreById+cardEvent.getScore());
Predicate<int[]> pre = a-> (SCHero.getHeroByPieceId(a[0])!=null&&SCHero.getHeroByPieceId(a[0]).getNatural()>=13);
} //
Consumer<int[]> consumer = a->RankContext.getRankEnum(RankEnum.RANDOM_CARD_PERFECT_RANK.getType()).addRank(cardEvent.getUid(), TimeUtils.now()/1000,a[0]);
@Override Stream.of(cardEvent.getHeros()).filter(pre).forEach(consumer);
public boolean takeReward(ISession session, int missionId) throws Exception { update(UserManager.getUser(cardEvent.getUid()),cardEvent.getScore());
return super.takeReward(session, missionId);
} }
@Override @Override
public void onActivityEnd() throws Exception { public void onActivityEnd() throws Exception {
RedisUtil.getInstence().del(RedisKey.RANDOM_CARD_RANK); RedisUtil.getInstence().del(RedisKey.RANDOM_CARD_RANK);
} }
@Override
void updateProgressWithUser(User user, ActivityMission activityMission, int count) {
activityMission.setValue(activityMission.getValue()+count);
}
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
User user = UserManager.getUser(session.getUid());
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
return sActivityRewardConfig.getValues()[0][0]<=activityMission.getValue();
}
} }

View File

@ -9,11 +9,13 @@ public class RandomCardEvent implements IEvent {
private int uid; private int uid;
private int type; private int type;
private int score; private int score;
private int[][] heros;
public RandomCardEvent(int uid,int type, int score) { public RandomCardEvent(int uid,int type, int score,int[][] heros) {
this.uid = uid; this.uid = uid;
this.type = type; this.type = type;
this.score = score; this.score = score;
this.heros = heros;
} }
public int getType() { public int getType() {
@ -39,4 +41,12 @@ public class RandomCardEvent implements IEvent {
public void setUid(int uid) { public void setUid(int uid) {
this.uid = uid; this.uid = uid;
} }
public int[][] getHeros() {
return heros;
}
public void setHeros(int[][] heros) {
this.heros = heros;
}
} }

View File

@ -293,7 +293,7 @@ public class HeroLogic{
dropHeroAndItem[j++] = tenTimesMustGetItem[i]; dropHeroAndItem[j++] = tenTimesMustGetItem[i];
} }
} }
Poster.getPoster().dispatchEvent(new RandomCardEvent(uid,sLotterySetting.getLotteryType(),10*sLotterySetting.getPerCount())); Poster.getPoster().dispatchEvent(new RandomCardEvent(uid,sLotterySetting.getLotteryType(),SSpecialConfig.getIntegerValue(SSpecialConfig.TIME_LIMIT_RECRUITMENT_INTEGRAL)*sLotterySetting.getPerCount(),dropHeroAndItem));
CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, dropHeroAndItem,BIReason.HERO_RANDOM); CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, dropHeroAndItem,BIReason.HERO_RANDOM);
builder.setDrop(drop); builder.setDrop(drop);
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.HERO_RAND_RESPONSE_VALUE, builder.build(), true); MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.HERO_RAND_RESPONSE_VALUE, builder.build(), true);

View File

@ -19,7 +19,7 @@ public enum RankEnum {
MAIN_LEVEL_RANK(3,RedisKey.MAIN_LEVEL_RANK, MainLevelRank::new),//param1:通关关卡Id param2:无 param3:无 MAIN_LEVEL_RANK(3,RedisKey.MAIN_LEVEL_RANK, MainLevelRank::new),//param1:通关关卡Id param2:无 param3:无
MONSTER_ATTACK_RANK(4,RedisKey.MONSTER_ATTACK_RANK,MonsterAttackRank::new),//param1:兽潮层数 param2:无 param3:无 MONSTER_ATTACK_RANK(4,RedisKey.MONSTER_ATTACK_RANK,MonsterAttackRank::new),//param1:兽潮层数 param2:无 param3:无
RANDOM_CARD_RANK(10,RedisKey.RANDOM_CARD_RANK, RandomCardRank::new),//param1:抽取积分 param2:无 param3:无 RANDOM_CARD_RANK(10,RedisKey.RANDOM_CARD_RANK, RandomCardRank::new),//param1:抽取积分 param2:无 param3:无
RANDOM_CARD_PERFECT_RANK(11,RedisKey.RANDOM_CARD_PERFECT_RANK,RandomCardPerfectRank::new) RANDOM_CARD_PERFECT_RANK(11,RedisKey.RANDOM_CARD_PERFECT_RANK,RandomCardPerfectRank::new)//param1:时间 param2:英雄tempId param3:uid
; ;
private int type; private int type;
private String redisKey; private String redisKey;

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.rank.rankImpl;
import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.dao.GuilidManager;
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.logic.rank.IRank; import com.ljsd.jieling.logic.rank.IRank;
@ -100,6 +101,7 @@ public abstract class AbstractRank implements IRank {
.setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame()) .setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame())
.setLevel(everyUser.getPlayerInfoManager().getLevel()) .setLevel(everyUser.getPlayerInfoManager().getLevel())
.setRankInfo(everyRankInfo) .setRankInfo(everyRankInfo)
.setGuildName(GuilidManager.guildInfoMap.get(everyUser.getPlayerInfoManager().getGuildId()).getName())
.build(); .build();
builder.addRanks(everyRank); builder.addRanks(everyRank);
} }

View File

@ -1,9 +1,11 @@
package com.ljsd.jieling.logic.rank.rankImpl; package com.ljsd.jieling.logic.rank.rankImpl;
import com.google.gson.Gson;
import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.db.redis.RedisUtil;
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.logic.rank.rankKey.RandomCardSpecialKey;
import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.PlayerInfoProto; import com.ljsd.jieling.protocols.PlayerInfoProto;
import org.springframework.data.redis.core.ZSetOperations; import org.springframework.data.redis.core.ZSetOperations;
@ -23,17 +25,26 @@ public class RandomCardPerfectRank extends AbstractRank {
@Override @Override
public void addRank(int uid, double... data) { public void addRank(int uid, double... data) {
String key = RedisKey.getKey(redisKey,"",false); String key = RedisKey.getKey(redisKey,"",false);
RedisUtil.getInstence().zsetAddOne(key, UUID.randomUUID().toString(), getScore(data)); double[] doubles = new double[3];
System.arraycopy(data, 0, doubles, 0, data.length);
doubles[2] = uid;
// data[0]+"_"+data[1]+"_"+RedisUtil.getInstence().incrementZsetScore()
Gson gson = new Gson();
String heroKey = gson.toJson(new RandomCardSpecialKey(uid, Double.valueOf(data[1]).intValue(), RedisUtil.getInstence().incr("incr_Card", 1)));
RedisUtil.getInstence().zsetAddOne(key, heroKey, getScore(doubles));
} }
@Override @Override
protected void getOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception { protected void getOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception {
User everyUser = UserManager.getUser(Double.valueOf(getParam2(data.getScore())).intValue(), true); Gson gson = new Gson();
String value = data.getValue();
RandomCardSpecialKey randomCardSpecialKey = gson.fromJson(value, RandomCardSpecialKey.class);
User everyUser = UserManager.getUser(randomCardSpecialKey.getUid(), true);
CommonProto.RankInfo everyRankInfo = CommonProto.RankInfo.newBuilder() CommonProto.RankInfo everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(index) .setRank(index)
.setParam1(getParam1(data.getScore())) .setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore())) .setParam2(randomCardSpecialKey.getHeroId())
.setParam3(getParam3(data.getScore())) .setParam3(0)
.build(); .build();
CommonProto.UserRank everyRank = CommonProto.UserRank.newBuilder() CommonProto.UserRank everyRank = CommonProto.UserRank.newBuilder()
.setUid(everyUser.getId()) .setUid(everyUser.getId())
@ -45,14 +56,13 @@ public class RandomCardPerfectRank extends AbstractRank {
.build(); .build();
builder.addRanks(everyRank); builder.addRanks(everyRank);
} }
@Override @Override
public int[] getDataByScore(double score) { public int[] getDataByScore(double score) {
return new int[0]; return new int[]{Double.valueOf(score).intValue()};
} }
@Override @Override
public double getScore(double... data) { public double getScore(double... data) {
return data[0]+data[1]+data[2]; return data[0];
} }
} }

View File

@ -0,0 +1,42 @@
package com.ljsd.jieling.logic.rank.rankKey;
/**
* @author lvxinran
* @date 2019/12/9
* @discribe
*/
public class RandomCardSpecialKey {
private int uid;
private int heroId;
private long version;
public void setUid(int uid) {
this.uid = uid;
}
public void setHeroId(int heroId) {
this.heroId = heroId;
}
public void setVersion(long version) {
this.version = version;
}
public RandomCardSpecialKey(int uid, int heroId, long version) {
this.uid = uid;
this.heroId = heroId;
this.version = version;
}
public int getUid() {
return uid;
}
public int getHeroId() {
return heroId;
}
public long getVersion() {
return version;
}
}

View File

@ -59,6 +59,9 @@ public class SCHero implements BaseConfig{
private Map<Integer, Map<Integer, ConsumeMaterialInfo>> consumeMaterialInfoOfPositionByStar; private Map<Integer, Map<Integer, ConsumeMaterialInfo>> consumeMaterialInfoOfPositionByStar;
private static Map<Integer,SCHero> piecesMap;
public static class ConsumeMaterialInfo{ public static class ConsumeMaterialInfo{
private int groupID; private int groupID;
private int nums; private int nums;
@ -150,8 +153,15 @@ public class SCHero implements BaseConfig{
} }
sCHero = integerSCHeroMap; sCHero = integerSCHeroMap;
piecesMap = new HashMap<>();
for(Map.Entry<Integer,SCHero> hero:sCHero.entrySet()){
piecesMap.put(hero.getValue().getPiecesId(),hero.getValue());
}
} }
public static SCHero getHeroByPieceId(int piecesId){
return piecesMap.get(piecesId);
}
public Map<Integer, ConsumeMaterialInfo> getConsumeMaterialInfoOfPositionByStar(int star) { public Map<Integer, ConsumeMaterialInfo> getConsumeMaterialInfoOfPositionByStar(int star) {
return consumeMaterialInfoOfPositionByStar.get(star); return consumeMaterialInfoOfPositionByStar.get(star);

View File

@ -50,6 +50,7 @@ public class SSpecialConfig implements BaseConfig {
public static final String SUNLONG_INTEGRAL = "Sunlong_Integral";//孙龙的宝藏每日积分礼包 public static final String SUNLONG_INTEGRAL = "Sunlong_Integral";//孙龙的宝藏每日积分礼包
public static final String SUNLONG_REWARD = "Sunlong_Reward";//孙龙的宝藏礼包\ public static final String SUNLONG_REWARD = "Sunlong_Reward";//孙龙的宝藏礼包\
public static final String LAMP_TEXT_SPEED = "lamp_text_speed";//跑马灯速度 public static final String LAMP_TEXT_SPEED = "lamp_text_speed";//跑马灯速度
public static final String TIME_LIMIT_RECRUITMENT_INTEGRAL = "time_limit_recruitment_integral";//限时抽卡一次积分
@Override @Override
public void init() throws Exception { public void init() throws Exception {